第一范式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 | 小李 |