本文最后更新于2020-11-05,已超过 1年没有更新,如果文章内容、图片或者下载资源失效,请留言反馈,我会及时处理,谢谢!
温馨提示:本文共491个字,读完预计2分钟。
第N范式总是满足第N-1范式。
范式化设计的优点:一般能解决写入的性能问题,原因:1. 范式化设计不存在重复数据,因此修改时写入更少。 2. 范式化的表比较小,因此操作起来更快。
范式化设计的缺点:真正投入使用时一般查询至少需要join一次,稍复杂一点需要join三到四张表,因此范式化设计会让查询代价变高昂。
正确姿势是根据业务混合范式化和反范式化到设计中,做一定的折中。
第一范式(1NF)
列拆无可拆
不符合范式:
员工号 | 信息 |
---|---|
1029 | 汤米 28岁 |
符合范式:
员工号 | 姓名 | 年龄 |
---|---|---|
1029 | 汤米 | 28 |
第二范式(2NF)
抽出关系表
不符合范式:
员工号 | 姓名 | 年龄 | 绩效 |
---|---|---|---|
1029 | 汤米 | 28 | A |
符合范式:
员工号 | 姓名 | 年龄 |
---|---|---|
1029 | 汤米 | 28 |
员工号 | 绩效 |
---|---|
1029 | A |
第三范式(3NF)
关系不能存在传递
不符合范式:
员工号 | 姓名 | 年龄 |
---|---|---|
1029 | 汤米 | 28 |
员工号 | 绩效 | 奖励 |
---|---|---|
1029 | A | 一级 |
奖励 | 年终奖(月) | 期权(%) |
---|---|---|
一级 | 6 | 5 |
注:表二存在传递关系。奖励和绩效有直接关系,绩效和员工号有直接关系,但奖励和员工号并非直接关系而是传递关系。应该拆成两张关系表。
符合范式:
员工号 | 姓名 | 年龄 |
---|---|---|
1029 | 汤米 | 28 |
员工号 | 绩效 |
---|---|
1029 | A |
绩效 | 奖励 |
---|---|
A | 一级 |
奖励 | 年终奖(月) | 期权(%) |
---|---|---|
一级 | 6 | 5 |