数据库设计三范式理解
从数据库理论上讲,一共有8种范式(normal form),分别是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。但是常见的是:1NF,2NF,3NF三个范式。
1.1 第一范式(1NF)
第一范式(1NF):符合1NF的关系中的每个属性都不可再分。第一范式强调的是属性的原子性,不可再分。
例子:
上面的表格中,“电话 ”列就违反了第一范式,因为“电话”列可以继续拆分,分成“手机”和“固定电话”。
1.2 第二范式(2NF)
第二范式(2NF):满足第一范式的要求并且每个非主关键字属性完全函数依赖于主关键字的关系。
第二范式适用于具有合成关键字的关系,即主关键字由两个或两个以上的属性构成。主关键字仅包含一个属性的关系已经至少是2NF的。
例子:
上面的数据表示一个房屋租赁的记录表,其中主键由“承租人”和“房屋编号”组成,而“房屋所在地”不是完全依赖于主键,而是部分依赖于主键,“房屋所在地”依赖于“房屋编号”,所以上面的数据表是不符合2NF的。
1.3 第三范式(3NF)
第三范式(3NF):满足第一范式和第二范式的要求并且所有非主关键字属性都不传递依赖于主关键字的关系。
例子:
上面的数据表中,主键是“学号”,但是“大学类型”不是直接依赖于主键“学号”,“大学类型”依赖于“大学”,然后“大学”依赖于“学号”,因此存在传递依赖的情况,因此上表不符合3NF。
2.参考文献
《数据库系统:设计、实现与管理(基础篇)》
[英] 托马斯·康诺利(Thomas Connolly),卡洛琳·贝格(Carolyn Begg) 著,宁洪 译
《如何解释关系数据库的第一第二第三范式?》刘慰的回答
https://www.zhihu.com/question/24696366/answer/29189700