第一范式
确保每列保持原子性,每个属性都不可再分,无重复的列
第二范式
不能存在对主键的部分依赖,针对联合主键而言
用 ‘学号+课程’ 作为主键
姓名、门派、掌门部分依赖于学号,即姓名、门派、掌门都只由学号决定。
学号为1时,就对应张三,丐帮系,洪七公,而课程无论取站桩还是跑步并不影响。
应该拆成2个表:
把被部分依赖的部分主键单独拿出来作为一个独立的主键,形成一个表
第三范式
属性不依赖于其它非主属性
假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
但是却存在其他依赖关系:
(所在学院) → (学院地点, 学院电话)
所在学院 不是主键,但却确定了其他属性,应该把他单独拿出来作为独立主键形成一个表。
即把学生关系表分为如下两个表:
学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 地点, 电话)。