六种范式
从低到高分别是: 1NF(第一范式), 2NF(第二范式), 3NF(第三范式), BCNF(巴斯-科德范式), 4NF(第四范式), 5NF(又称完美范式).
数据库的范式设计越高阶, 冗余度越低. 高阶的范式一定符合低阶范式的要求.
一般使用 3NF.
1NF: 数据库表中的任何属性都是原子性的, 不可再分.
2NF: 数据表里的非主属性都要和这个数据表的候选键有完全依赖关系.
3NF: 在满足 2NF 的同时, 数据表中的非属性与候选键不存在传递依赖性.
键
范式的定义会使用到主键和候选键(均可唯一标识元组) 数据库中的键由一个或者多个属性组成.
超键: 唯一标识元组的属性集.
候选键: 如果超键不包括多余的属性, 那么这个超键就是候选键.
主键: 用户可以从候选键中选择一个作为主键.
外键: 如果数据表R1中的某属性集不是R1的主键, 而是另一个数据表R2的主键, 那么这个属性集就是数据表R1的外键.
主属性: 包含在任一候选键中的属性称为主属性.
非主属性: 与主属性相对, 指的是不包含在任何一个候选键中的属性.
通常将候选键称之为"码", 主键称为"主码".