zoukankan      html  css  js  c++  java
  • 数据库设计的三大范式通俗解释

    一、三大范式通俗解释:

    (1)简单归纳:

      第一范式(1NF):字段不可分;
      第二范式(2NF):有主键,非主键字段依赖主键;
      第三范式(3NF):非主键字段不能相互依赖。

    (2)解释:

      1NF:原子性。 字段不可再分,否则就不是关系数据库;;
      2NF:唯一性 。一个表只说明一个事物;
      3NF:每列都与主键有直接关系,不存在传递依赖。

    二、例子说明

      (1)不符合第一字段的例子

                                                                                 表:字段1, 字段2(字段2.1,字段2.2), 字段3

    字段2可以拆分成字段2.1和字段2.2,不符合第一范式。

      (2)不符合第二范式的例子 

                                                                                表:学号, 姓名, 年龄, 课程名称, 成绩, 学分 

    这个表明显说明了两个事务:学生信息, 课程信息。

      1)存在以下问题:

                                   a、数据冗余:每条记录都含有相同信息; 
                                   b、删除异常:删除所有学生成绩,就把课程信息全删除了; 
                                   c、插入异常:学生未选课,无法记录进数据库; 
                                   d、更新异常:调整课程学分,所有行都调整。
      2)修正:
                                   学生表:学号, 姓名, 年龄 

                                   课程表:课程名称,学分     

                                   选课关系表:学号, 课程名称, 成绩


      (3)不符合第二范式的例子 


                                                                             表:学号, 姓名, 年龄, 所在学院, 学院联系电话

    其中关键字为单一关键字"学号"。存在依赖传递::(学号) → (所在学院) → (学院联系电话) 。

      1)存在问题::
          a、数据冗余:有重复值; 
          b、更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 
          c、删除异常 
      2)修正: 
                          学生表:学号, 姓名, 年龄, 所在学院;
                          学院表:学院, 电话 


    整理自:https://www.zhihu.com/question/24696366


  • 相关阅读:
    几种常用的曲线
    0188. Best Time to Buy and Sell Stock IV (H)
    0074. Search a 2D Matrix (M)
    0189. Rotate Array (E)
    0148. Sort List (M)
    0859. Buddy Strings (E)
    0316. Remove Duplicate Letters (M)
    0452. Minimum Number of Arrows to Burst Balloons (M)
    0449. Serialize and Deserialize BST (M)
    0704. Binary Search (E)
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7407468.html
Copyright © 2011-2022 走看看