mysql范式

90 阅读1分钟

第一范式

确保每列保持原子性,每个属性都不可再分,无重复的列

image.png

第二范式

不能存在对主键的部分依赖,针对联合主键而言

image.png

用 ‘学号+课程’ 作为主键

姓名、门派、掌门部分依赖于学号,即姓名、门派、掌门都只由学号决定。
学号为1时,就对应张三,丐帮系,洪七公,而课程无论取站桩还是跑步并不影响。

应该拆成2个表:

image.png

image.png

把被部分依赖的部分主键单独拿出来作为一个独立的主键,形成一个表

第三范式

属性不依赖于其它非主属性

假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)

但是却存在其他依赖关系:
(所在学院) → (学院地点, 学院电话)

所在学院 不是主键,但却确定了其他属性,应该把他单独拿出来作为独立主键形成一个表。

即把学生关系表分为如下两个表:

学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 地点, 电话)。