三大范式
1NF
要求数据库表的每一列都是不可分割的原子数据项。
错误:
id | 地址 |
---|---|
1 | 广东省深圳市 |
2 | 广东省广州市 |
上面这个地址可以分为省、市,所以不符合第一范式
正确:
id | 省 | 市 |
---|---|---|
1 | 广东省 | 深圳市 |
2 | 广东省 | 广州市 |
2NF
在1NF基础上,非主属性对主码完全依赖
第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
错误:
订单号 | 商品号 | 数量 | 订单总额 |
---|---|---|---|
1 | 1 | 10 | 200 |
1 | 2 | 5 | 200 |
这里的是(订单号,商品号)联合主键。但是订单金额只跟订单号有关,不符合2NF
正确:
订单号 | 商品号 | 数量 |
---|---|---|
1 | 1 | 10 |
1 | 2 | 5 |
订单号 | 订单总额 |
---|---|
1 | 200 |
3NF
在2NF基础上,非主键信息不依赖于其它非主键
错误:
课程编号 | 课程名称 | 班主任名字 | 班主任性别 |
---|---|---|---|
1 | 数学 | 老王 | 男 |
这里虽然所有属性依赖主键,但是性别其实是直接依赖于班主任名字的
正确:
课程编号 | 课程名称 | 班主任名字 |
---|---|---|
1 | 数学 | 老王 |
班主任名字 | 班主任性别 |
---|---|
老王 | 男 |
github: https://github.com/Hikiy
作者:Hiki
创建日期:2018.09.05
更新日期:2018.09.05
(转载本站文章请注明作者和出处 Hiki)