三楚白云生佛手,九江寒月照禅心。
——李日华《佛手岩》
第一范式,第二范式和第三范式的概念和具体实例学习。
下表中“5台电脑”不符合第一范式
| id | 商品 |
|---|---|
| 001 | 5台电脑 |
符合第一范式的表格设计如下
| id | 商品 | 数量 |
|---|---|---|
| 001 | 电脑 | 5 |
下表的主键是学号和课名,分数完全依赖于学号和课名,但姓名并不完全依赖于学号和课名(姓名依赖于学号,通过学号可以确定学生姓名)。
| 学号 | 姓名 | 系名 | 系主任 | 课名 | 分数 |
|---|---|---|---|---|---|
| 1022211101 | 李小明 | 经济系 | 王强 | 高等数学 | 95 |
| 1022211101 | 李小明 | 经济系 | 王强 | 大学英语 | 87 |
| 1022211101 | 李小明 | 经济系 | 王强 | 普通化学 | 76 |
| 1022211102 | 张莉莉 | 经济系 | 王强 | 高等数学 | 72 |
| 1022211102 | 张莉莉 | 经济系 | 王强 | 大学英语 | 98 |
| 1022211102 | 张莉莉 | 经济系 | 王强 | 普通化学 | 88 |
拆表如下,满足第二范式
| 学号 | 课名 | 分数 |
|---|---|---|
| 1022211101 | 高等数学 | 95 |
| 1022211101 | 大学英语 | 87 |
| 1022211101 | 普通化学 | 76 |
| 1022211102 | 高等数学 | 72 |
| 1022211102 | 大学英语 | 98 |
| 1022211102 | 普通化学 | 88 |
| 学号 | 姓名 | 系名 | 系主任 |
|---|---|---|---|
| 1022211101 | 李小明 | 经济系 | 王强 |
| 1022211102 | 张莉莉 | 经济系 | 王强 |
下表存在传递函数依赖:学号>系名>系主任,但是系主任推不出学号
| 学号 | 姓名 | 系名 | 系主任 |
|---|---|---|---|
| 1022211101 | 李小明 | 经济系 | 王强 |
| 1022211102 | 张莉莉 | 经济系 | 王强 |
再次拆表,满足第三范式
| 学号 | 姓名 | 系id |
|---|---|---|
| 1022211101 | 李小明 | 001 |
| 1022211102 | 张莉莉 | 001 |
| 系id | 系名 | 系主任 |
|---|---|---|
| 001 | 经济系 | 王强 |
三楚白云生佛手,九江寒月照禅心。出自明代李日华,三楚的云雾从佛手岩上缓缓升起,九江那皎洁的月光洒在我的身上,顿生禅意。“三楚”对“九江”,“白云”对“寒月”,“生佛手”对“照禅心”,对仗工整。
第一范式,第二范式,第三范式也是类似的作用,为的是让数据库架构更加整齐规范,方便管理,实际工作中应该以此为设计准则。