数据库 范式 Normalization Theory

144 阅读2分钟

范式 (NF) 是用于将大型表格进行分解(decomposition)的一种方式。Lossless-Join Decomposition 无损分解。image.png

  • 求候选键
    对于关系 R: {abcd},候选键指的是能唯一确定表中所有其他元素的属性组合。
    参考:数据库期末速成之范式、闭包篇 推荐查看!

  • 函数依赖:例如 {A -> B},如果 A 能唯一确定 B,A 和 B 就存在函数依赖。

image.png 当某个属性组合能够推出关系中所有的元素时,它就被称为候选键。

  • 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)

image.png

数据库期末速成之范式、闭包篇 说的更好,违反了3NF,就把它丢出去,但新主键保留在原R里

  • 传递依赖:如 A -> B 且 B -> C,则 A -> C 是传递依赖。

范式判断规则:Rules for Decomposition Using Functional Dependencies

  1. 1NF:单元格中是否有重复项?(例如多值属性)
  2. 2NF:是否存在部分依赖?如果有,将其移除。
  3. 3NF:是否存在传递依赖?如果有,消除传递依赖。