1. 第一范式
要求任何一张表必须有主键,每一个字段的原子性不可再分。
最核心,最重要的范式,所有表的设计都需要满足。
必须有主键,并且每一个字段都是原子性不可再分。
以上学生表,满足第一范式吗?
不满足
- 没有主键。
- 联系方式可以分为邮箱地址和电话
2. 第二范式
建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。
分析以上的表是否满足第一范式?
不满足:没有主键
修改:
学生编号+教师编号,两个字段联合起来做主键,复合主键。
上述表满足第二范式吗?
不满足
“张三” 依赖 1001,“王老师” 依赖 001,产生了部分依赖
产生部分依赖的缺点:
数据冗余、空间浪费
张三重复了、王老师重复了
修改:
口诀:
多对多,三张表,关系表两个外键!!!!!!
3. 第三范式
建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。
分析以上表是否满足第一范式?
满足:有主键。
分析以上表是否满足第二范式?
满足:因为主键不是复合主键,没有产生部分依赖。主键是单一主键。
分析以上表是否满足第三范式?
不满足:产生了传递依赖
一年一班依赖 01,01 依赖 1001,产生了传递依赖。
不符合第三范式的要求。产生了数据的冗余。
修改:
口诀:
一对多,两张表,多的表加外键!!!!!!