范式就是数据库表设计的规则, 这些规则也是口头协议!
这些都是说的, 你怎么设计都可以, 但是我们按这个范式来设计的表就是非常完美的
第一范式, 比第二范式简单, 第二范式比第三范式简单
第一范式不会满足第二范式, 第二范式不会满足第三范式
1. 第一范式, NF1, 字段的原子性
姓名
年龄
学科
教室
时间
张三峰
325
全栈
202
2017.4.18-2017.11.2
2. 第二范式, NF2, 消除部分依赖
不满足第二范式:
姓名
年龄
学科
教室
开始时间
结束时间
张三峰
325
全栈
202
2017.4.18
2017.11.2
消除它们的部份依赖
满足第二范式的设计:
ID
姓名
年龄
学科
教室
开始时间
结束时间
1
张三峰
325
全栈
202
2017.4.18
2017.11.2
这样就把字段的依赖,移动了ID上面。就是满足第二范式的要求!!
3.第三范式, NF3,消除传递依赖
不满足第三范式:
ID
姓名
年龄
学科
教室
开始时间
结束时间
1
张三峰
325
全栈
202
2017.4.18
2017.11.2
满足第三范式的设计:折表
ID
姓名
年龄
1
张三峰
325
ID
教室
1
202
ID
学科
开始时间
结束时间
1
全栈
2017.4.18
2017.11.2
再创建一个中间表, 把他们链接起来就可以了
第三范式就是把数据根据不同的类型进行了拆分, 非常的细致
4. 数据库设计逆范式
就是有的时候拆分的太细致了, 让连表产生了很多. 这个时间, 如果有一个字段经常被两个地方使用到, 我们就会把这个字段放在第二个表字段里面
ID
姓名
年龄
教室
1
张三峰
325
202
学科
教室
开始时间
结束时间
全栈
202
2017.4.18
2017.11.2
修改的内容的时候, 就会有多张表同时修改, 所以不要遗忘了任何一张表的内容