范式 (NF) 是用于将大型表格进行分解(decomposition)的一种方式。Lossless-Join Decomposition 无损分解。
-
求候选键
对于关系 R: {abcd},候选键指的是能唯一确定表中所有其他元素的属性组合。
参考:数据库期末速成之范式、闭包篇 推荐查看! -
函数依赖:例如 {A -> B},如果 A 能唯一确定 B,A 和 B 就存在函数依赖。
当某个属性组合能够推出关系中所有的元素时,它就被称为候选键。
- closure of F:
F^+函数的闭包. F+ is a superset of F
1NF(第一范式)Atonomic Domains and First Normal Form
如果关系中包含复合属性或多值属性,则它不符合第一范式。如果关系中每个属性都是单值属性,并且不可再分割,则符合第一范式。Domain is atomic if its elements are considered to be indivisible unites
- 例如:如果一个单元格中包含了多个电话号码,这就违反了第一范式。
属性不可再分,不能包含更多的属性,且属性之间不能有其他联系(如果可以再分,应使用实体表示)。
2NF(第二范式)
在 2NF 中,表中的每个非主键属性必须完全依赖于主键(SuperKey)。如果存在部分依赖关系,表不符合 2NF。
例如:
- {A -> C, AD -> B},其中 AD 是SuperKey,但 A -> C 是部分依赖,这违反了 2NF。
因此,主键必须完全决定非主键属性,消除部分依赖关系。
3NF(第三范式)
3NF 要求所有非主键属性只与主键相关,非主键属性之间应该相互独立。如果存在传递依赖,则违反 3NF。
BCNF:Boyce-Codd Normal Form (BCNF)
数据库期末速成之范式、闭包篇 说的更好,违反了3NF,就把它丢出去,但新主键保留在原R里
- 传递依赖:如 A -> B 且 B -> C,则 A -> C 是传递依赖。
范式判断规则:Rules for Decomposition Using Functional Dependencies
- 1NF:单元格中是否有重复项?(例如多值属性)
- 2NF:是否存在部分依赖?如果有,将其移除。
- 3NF:是否存在传递依赖?如果有,消除传递依赖。