数据库复习——范式(Normal Form)

因为上课的时候一直在摸鱼没有听懂,所以复习的时候理解一下数据库中关于范式的相关知识点。涉及范式的定义,以及给定一个函数依赖集判断是那种范式的方法

范式

  迄今为止一共提出了 6 6 6 种范式,他们的关系是 5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5\rm{NF}\subset 4NF\subset BCNF\subset3NF\subset2NF\subset1NF 5NF4NFBCNF3NF2NF1NF,在这里我们只讨论后 4 4 4 个范式(不讨论 4 N F 4\rm NF 4NF 5 N F 5\rm NF 5NF)。

第一范式(1NF)

  这是关系型数据库最基本的要求。只要是关系型数据库中的关系(即没有“表中有表”等问题),那么它就是 1 N F \rm1NF 1NF

第二范式(2NF)

  定义:若 R ∈ 1 N F R\in1\rm NF R1NF,且每一个非主属性完全函数依赖于任何一个候选码,则 R ∈ 2 N F R\in\rm2NF R2NF。(定义太绕,建议看解读。)

非主属性:一个关系可能有很多候选码,在候选码里面的都是主属性;不在候选码里面的就是非主属性。比如关系 R ( A , B , C , D , E , F ) R(A,B,C,D,E,F) R(A,B,C,D,E,F) 3 3 3 个候选码 A B C \mathit{ABC} ABC C E \mathit{CE} CE D D D,那么主属性就是 A B C D E \mathit{ABCDE} ABCDE,非主属性就是 F F F

  解读:只要不存在非主属性对码的部分依赖,就属于第二范式。
  举一个不是第二范式的例子,关系 R ( A , B , C , D ) R(A,B,C,D) R(A,B,C,D) 里面,已知它的码是 A B \mathit{AB} AB,并且有函数依赖 B → D B\rightarrow D BD。由于不需要知道 A B AB AB,只需要知道其一部分 B B B 就可以得出非主属性 D D D,因此 R R R 不是第二范式。

第三范式(3NF)

  定义:设关系模式 R < U , F > ∈ 1 N F R<U,F>\in 1\rm NF R<U,F>∈1NF,若 R R R 中不存在这样的码 X X X,属性组 Y Y Y 及非主属性 Z ( Z ⊉ Y ) Z(Z\nsupseteq Y) Z(ZY) 使得 X → Y X\rightarrow Y XY Y → Z Y\rightarrow Z YZ 成立, Y ↛ X Y\nrightarrow X YX,则称 R ∈ 3 N F R\in3\rm NF R3NF

这里强调 Y ↛ X Y\nrightarrow X YX 是为了 Z Z Z X X X传递依赖成立。如果 Y → X Y\rightarrow X YX,那么 Z Z Z X X X 就是直接函数依赖

  解读:只要不存在非主属性对码的部分和传递依赖,就属于第三范式。实际上,只要消除了传递依赖,也就顺便消除了部分依赖,所以判定是不是 3 N F 3\rm NF 3NF 时只需看是否存在传递依赖就好了。
  举一个不是第三范式的例子,关系 R ( A , B , C ) R(A,B,C) R(A,B,C) 中,已知它的码是 A A A,存在函数依赖 F = { A → B , B → C , A → C } F=\{A\rightarrow B,B\rightarrow C,A\rightarrow C\} F={AB,BC,AC}。既然 A A A 能够决定 B B B,然后 B B B 又决定 C C C,那么就有 A → 传递 C A\xrightarrow{传递}C A传递 C,所以不是第三范式。

注意这个例子中, C C C 不是主属性。

BC范式(BCNF)

  定义:设关系模式 R < U , F > ∈ 1 N F R<U,F>\in1\rm NF R<U,F>∈1NF,若 R R R 中不存在这样的码 X X X,若 X → Y X\rightarrow Y XY Y ⊈ X Y\nsubseteq X YX X X X 必含有码,则 R ∈ B C N F R\in\rm BCNF RBCNF
  解读:只要所有函数依赖的决定因素都含有码,那么就是BC范式。
  举一个不是BC范式的例子,关系 R ( S , T , J ) R(S,T,J) R(S,T,J) 里面的候选码有 ( S , J ) (S,J) (S,J) ( S , T ) (S,T) (S,T),并且存在函数依赖 F = { ( S , J ) → T , ( S , T ) → J , T → J } F=\{(S,J)\rightarrow T,(S,T)\rightarrow J,T\rightarrow J\} F={(S,J)T,(S,T)J,TJ}。这个关系的决定因素 { ( S , J ) , ( S , T ) , T } \{(S,J),(S,T),T\} {(S,J),(S,T),T} 里面, T T T 是不含码的(虽然是候选码的一部分,但是没有完整包含候选码),所以它不是BC范式。


 各种范式之间的关系总结如下:

练习

1 1 1.指出下列关系模式最高是第几范式(不考虑 4 N F , 5 N F \rm4NF,5NF 4NF,5NF)?
( 1 ) (1) (1) R ( X , Y , Z ) , F = { X Y → Z } R(X,Y,Z),F=\{\mathit{XY}→Z\} R(X,Y,Z),F={XYZ},侯选码 X Y \mathit{XY} XY
( 2 ) (2) (2) R ( X , Y , Z ) , F = { Y → Z , X Z → Y } R(X,Y,Z),F=\{Y→Z, \mathit{XZ}→Y\} R(X,Y,Z),F={YZ,XZY},侯选码 X Y \mathit{XY} XY X Z \mathit{XZ} XZ
( 3 ) (3) (3) R ( X , Y , Z ) , F = { X → Y , X → Z } R(X,Y,Z),F=\{X→Y, X →Z\} R(X,Y,Z),F={XY,XZ},侯选码 X X X
( 4 ) (4) (4) R ( W , X , Y , Z ) F = { X → Z , W X → Y } R(W,X,Y,Z) F=\{X→Z, \mathit{WX}→Y\} R(W,X,Y,Z)F={XZ,WXY},候选码 W X \mathit{WX} WX

答案
( 1 ) (1) (1) 所有函数依赖的决定因素 { X Y } \{{XY}\} {XY} 都含有码 X Y \mathit{XY} XY,因此最高是 B C N F \rm BCNF BCNF
( 2 ) (2) (2) 没有非主属性,因此至少是 3 N F \rm 3NF 3NF。由于存在一个决定因素 Y Y Y 不含码,因而不是 B C N F \rm BCNF BCNF,所以最高是 3 N F \rm3NF 3NF

TIPS: 2 N F \rm2NF 2NF 3 N F \rm3NF 3NF 都是对非主属性作出要求,如果一个关系本身就没有非主属性,那么这些要求自然就是满足的,因此该关系至少是 3 N F \rm 3NF 3NF

( 3 ) (3) (3) ( 1 ) (1) (1),决定因素 { X } \{X\} {X} 都含有码 X X X,因而最高是 B C N F \rm BCNF BCNF
( 4 ) (4) (4) Z Z Z 是非主属性, Z Z Z 依赖于 X X X,然而 X X X 是候选码 W X \mathit{WX} WX 的子集。因此存在非主属性对码的部分函数依赖,不是 2 N F \rm 2NF 2NF,因此最高是 1 N F 1\rm NF 1NF


2 2 2.考虑关系模式 R ( A , B , C , D ) R(A,B,C,D) R(A,B,C,D),写出满足下列函数依赖时 R R R 的码,并给出 R R R 最高属于哪种范式?( 1 N F , 2 N F , 3 N F \rm1NF,2NF,3NF 1NF,2NF,3NF B C N F \rm BCNF BCNF
( 1 ) (1) (1) B → D , A B → C \mathit{B→D,AB→C} BD,ABC
( 2 ) (2) (2) A → B , A → C , D → A A →B,A →C, D →A AB,AC,DA
( 3 ) (3) (3) B C D → A , A → C \mathit{BCD}→A, A →C BCDA,AC
( 4 ) (4) (4) B → C , B → D , C D → A B→C, B→D,\mathit{CD}→A BC,BD,CDA
( 5 ) (5) (5) A B D → C \mathit{ABD}→C ABDC

答案

题号最高属于哪个范式
( 1 ) (1) (1) A B \mathit{AB} AB 1 N F \rm1NF 1NF
( 2 ) (2) (2) D {D} D 2 N F \rm2NF 2NF
( 3 ) (3) (3) B C D , A B D \mathit{BCD,ABD} BCD,ABD 3 N F \rm 3NF 3NF
( 4 ) (4) (4) B B B 2 N F \rm 2NF 2NF
( 5 ) (5) (5) A B D \mathit{ABD} ABD B C N F \rm BCNF BCNF
  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值