SQL范式设计

六种范式

从低到高分别是: 1NF(第一范式), 2NF(第二范式), 3NF(第三范式), BCNF(巴斯-科德范式), 4NF(第四范式), 5NF(又称完美范式).

数据库的范式设计越高阶, 冗余度越低. 高阶的范式一定符合低阶范式的要求. 

一般使用 3NF.

1NF: 数据库表中的任何属性都是原子性的, 不可再分. 

2NF: 数据表里的非主属性都要和这个数据表的候选键有完全依赖关系. 

3NF: 在满足 2NF 的同时, 数据表中的非属性与候选键不存在传递依赖性. 

范式的定义会使用到主键和候选键(均可唯一标识元组) 数据库中的键由一个或者多个属性组成. 

超键: 唯一标识元组的属性集.

候选键: 如果超键不包括多余的属性, 那么这个超键就是候选键.

主键: 用户可以从候选键中选择一个作为主键.

外键: 如果数据表R1中的某属性集不是R1的主键, 而是另一个数据表R2的主键, 那么这个属性集就是数据表R1的外键.

主属性: 包含在任一候选键中的属性称为主属性.

非主属性: 与主属性相对, 指的是不包含在任何一个候选键中的属性. 

通常将候选键称之为"码", 主键称为"主码".

你可能感兴趣的:(SQL范式设计)