对数据库三大范式的理解

        首先,要明确一个概念,范式的提出到逐步精进,从第一范式到第三范式,甚至于BCNF范式,逐步优化是为了解决插入异常、删除异常以及改善数据冗余的。

        第范式:符合第一范式的要求,即数据表的属性值均是不可再分的值。

        举例:

        学生表(学号,姓名,班级)

        学生表中的属性均是不可再分的属性,即该表符合第一范式。绝大对数情况下,第一范式很容易满足。

        第范式:消除了非主属性对候选键的部分函数依赖,即非主属性完全依赖于主键。(联合主键也不行)

        举例;

        学生表(学号,姓名,班级,课程号,课程名,成绩)

        学生表中,学号为主键,课程名和成绩依赖于学号和课程号,此时的学号和课程号组成了联合主键,该表不符合第二范式。

        修正为三张表:

        学生表(学号,姓名,班级)

        课程表(课程号,课程名)

        成绩表(学号课程号,成绩)

        范式:消除了非主属性对候选键的传递函数依赖。

        举例

        学号,姓名,班级,系号,系名称,系所在位置)

        这张表里存在非主属性对候选键的传递函数依赖,即学号-->系号-->(系名称,系所在位置)。

        修正为两张表:

        学生表(学号,姓名,班级,系号

        系信息表(系号,系名称,系所在位置)

        以上就是我对三大范式的初步理解,欢迎诸君共同探讨。

你可能感兴趣的:(数据库,database,数据库系统)