数据库范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。它是英国人E.F.Codd在上个世纪70年代提出关系数据库模型后总结出来的。目前有迹可寻的共用8种范式,依次是1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式,第二范式,第三范式。
一个低一级范式的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合,这种过程叫做规范化。
- 第一范式(1NF):强调的是列的原子性,即列不能够再分成其它几列。
- 第二范式(2NF):首先是1NF,另外包含两部分内容,一是表必须有一个主键,二是没有包含在主键中的列必须完全依赖于主键,而不能依赖于主键的一部分。
- 第三范式(3NF):首先是2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。
第二范式和第三范式的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是传递依赖于主键。