首页 > 编程知识 正文

不满足第一范式的例子,数据库三大范式解析

时间:2023-05-03 12:01:25 阅读:168154 作者:4920

第一范式(1NF ) :各列为不可分割的原子数据项(意思是各项目不可分割,可以如下表所示进行分割,所以它也不能成为第一范式) )

分割后的情况

(那是第一范式的转变) )。

第二模式:基于1NF,非代码属性必须完全依赖于候选代码(基于1NF消除非主属性对主代码的部分函数依赖) )。

几个重要概念:

1 .函数依赖: ab,如果根据a属性(属性组)的值可以确定唯一的b属性的值,则b依赖于a

例如,学校号码---姓名(学校号码、课程名称属性组) -分数

2 .完全函数依赖:如果aba是属性组,则b属性值的确定必须依赖于a属性组中的所有属性值

例如: (学校编号、课程名称)分数

3 .对某些函数的依赖:如果aba是属性组,则b属性值的确定只需要依赖于a属性组中的一些属性值。 第二范式就是消除这一点)

例如: (学号、课程名称)名称

4 .传递函数依存性:根据ab,bca属性(属性组)的值可以决定唯一的b属性的值,进而根据b属性)属性组)的值可以唯一决定c属性的值时,称为c传递依存于a

例如学号---系名、系名---系部长

5 .代码:在一个表中,如果一个属性或属性组是完全依赖于所有其他属性(非主属性)的函数,则该属性组称为该表的代码。 (在上表中,由学校编号和课程名称构成的属性组是代码。)

例如,该表中的代码是(学校号码、课程名称) )

主属性:代码中的所有属性

非主属性:除代码外的所有属性

上表显示代码为(学校编号、课程名称),但部分依赖于名称、系名、系主任为代码)主属性,这不符合第二范式,因此分割如下

第一个表是(学校号码、课程名称),第二个表是(学校号码)。 它们完全依赖,因此符合第二范式。

第三范式(3NF ) :基于2NF,任何非主要属性不依赖于其他非主要属性(基于第二范式消除传输依赖) )。

注意看第二范式的学生表,因为系主任依赖于院系名称(系主任),所以不符合第三范式

继续分割

这样符合第三范式……

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。