🐒求候选键:

  • 出现在函数依赖(FD)左边的,或者没出现在 FD 中的属性一定是主属性。(组成候选键的属性都叫主属性)
  • 出现在函数依赖右边的属性一定是非主属性。(不是主属性即为非主属性)
  • 如果一个出现在函数依赖左边的属性它的闭包包含了所有的属性,则它是唯一候选键
例:

设关系模式 \(R(ABCDEG),F = \{A → D,E → D,D → B,CD → A\}\)

求 R 的候选键:

可得 C、E、G 一定是主属性,这时分别求它们的闭包,发现:C+ = {C}; E+ = {EDB};都 ≠ U。但是:CE+ = {CEDBA}, 那么 CEG 就是 R 的候选键,相应的,C、E、G 都是主属性。

🖊 判断范式步骤

以上面的题为例

  1. 先求 \(F_{min}\)
  2. 再求出候选键
    CEG
  3. 每个 FD 的左部都是超键——BCNF
    FD 中没有左部包含 CEG 的依赖,故 R 不是 BCNF
  4. 每一个属性都不依赖于其它非主属性——3NF
    C、E、G 是主属性,FD 中有 A → D,D → B,CD → A;这些都依赖于非主属性,故 R 不是 3NF
  5. 每一个非主属性都完全依赖于 R 的候选键——2NF
    可知非主属性 A、B、D, FD 中有 E → D,由于 E ⊂ CEG,所以非主属性 D 不完全依赖于 CEG,故 R 不是 2NF
  6. 否则是 1NF

上面例题可以判断,应该是 1NF。

👫完全函数依赖:

对于函数依赖 W → A,如果还有 X ⊂ W (X 是 W 中的一个属性(真子集))使得 X → A 成立,那么 W → A 就是一个局部依赖;否则 W → A 为完全依赖。

👶 第一范式(1NF)

定义:
  • 关系模式 R 的所有属性都是不可分的原子属性,则 R 是 1NF。属性不可拆。

👨第二范式(2NF)

定义:
  • 若关系模式 R 是 1NF,并且每个非主属性都完全依赖于 R 的候选键,则 R 是 2NF

👴第三范式(3NF)

定义:
  • 关系模式 R 是 2NF,且每个非主属性都不传递依赖于 R 的候选键

  • 百度上有一句对第 3NF 非常经典的解释:“简而言之,第三范式就是每一个属性都不依赖于其它非主属性。”

👪BCNF范式

定义:
  • 若关系模式 R 是 1NF,并且每个属性都不传递依赖于 R 的候选键,则 R 是 BCNF。
  • 还有这个等价定义:对 FD 中每个非平凡的 X → Y(非平凡表示:Y ∉ X),都有 X 是 R 的超键。
  • 常用的判断方式是:每一个属性都依赖于超键,则 R 是 BCNF。

📚例题

判断下列关系模式的范式:

  1. R1(ABC), F={AB→C}
    候选键:AB,FD 的左部都是超键(包含 AB),故为 BCNF。
  2. R2(ABC), F={A→B,A→C}
    候选键:A,FD 的左部都是超键,故为 BCNF。
  3. R3(ABC), F={AC→B,B→C}
    候选键:AC,左部不都是超键,不是 BCNF;C 依赖于非主属性 B,不是 3NF;每个非主属性完全依赖于 AC,故为 2NF。
  4. R4(ABCD), F={AB→C,B→D}
    候选键:AB,可知不是 BCNF;每一个属性都不依赖于非主属性,故为 3NF。
  5. R5(ABC), F={A→BC,B→A,B→C}
    候选键:A、B;左部都是超键(包含 A、B),故为 BCNF。
  6. R6(ABC), F={A→B,B→C,C→A}
    候选键:A、B、C;左部都是超键(包含 A、B、C),故为 BCNF。

📕做完了,来一大碗宽面!🍜

06-20 07:19