数据库的三大范式
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。
1.第一范式(1NF)
- 列不可再分:确保每一列的属性都是不可再分的属性。
学号 | 姓名 | 学校系别 |
---|---|---|
10010 | 王俊凯 | 北电表演系 |
第一范式必须保证其中每一字段必须是不可再分的最小单元,即确保每一列的原子性。
上例中学校系别可分为学校、系别,违反了第一范式。
正确例子:
学号 | 姓名 | 学校 | 系别 |
---|---|---|---|
10010 | 王俊凯 | 北电 | 表演系 |
2.第二范式(2NF)
- 在满足1NF的基础上,表中所有列都必须依赖主键,不能有任何一列与主键无关(即:一张表只描述一件事情)。消除表中无关的数据。
学号 | 姓名 | 学校 | 系别 |
---|---|---|---|
10010 | 王俊凯 | 北电 | 表演系 |
上述例子,学校、系别都与学号无关,违反了第二范式。
正确例子:
学号 | 姓名 |
---|---|
10010 | 王俊凯 |
学校 | 系别 |
---|---|
北电 | 表演系 |
3.第三范式(3NF)
- 在2NF基础上,消除传递依赖。
学号 | 姓名 | 系别 | 负责人 |
---|---|---|---|
10010 | 王俊凯 | 表演系 | 柳飘飘 |
系别依赖于学号,负责人依赖于系别,有传递依赖,违反第三范式。
正确例子:
学号 | 姓名 |
---|---|
10010 | 王俊凯 |
系别 | 负责人 |
---|---|
表演系 | 柳飘飘 |