第一范式INF
每一个属性都是原子性的。
有一张学生表:student
sid | name | adress |
---|---|---|
20132000355 | 张三 | 家庭:北京;工作:广州 |
这个是不符合第一范式的:address可以分为家庭地址和工作地址。
第二范式2NF
每一行可以唯一区分
sid | name |
---|---|
20132000355 | 张三 |
20132000355 | 李四 |
sid不能唯一确定一行.
应该将sid设为主键,不可重复
第三范式3NF
并且表中的列不存在对非主键列的传递依赖
学号 | 姓名 | 性别 | 班级编号 | 班主任 |
---|---|---|---|---|
10001 | 张三 | 男 | 0001 | 小王 |
10002 | 李四 | 男 | 0001 | 小王 |
10003 | 王五 | 男 | 0002 | 小李 |
10004 | 张小三 | 男 | 0002 | 小李 |
班主任依赖于班级编号,班级编号依赖于学号,存在传递依赖。
将上表拆分成两张表,将班级编号(外键)设置成另一张表的主键
班级编号 | 班主任 |
---|---|
0001 | 小王 |
002 | 小李 |