数据库复习——范式(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 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF,在这里我们只讨论后 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 R∈1NF,且每一个非主属性完全函数 依赖于任何一个候选码,则 R ∈ 2 N F R\in\rm2NF R∈2NF。(定义太绕,建议看解读。)

非主属性:一个关系可能有很多候选码,在候选码里面的都是主属性;不在候选码里面的就是非主属性。比如关系 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 B→D。由于不需要知道 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(Z⊉Y) 使得 X → Y X\rightarrow Y X→Y, Y → Z Y\rightarrow Z Y→Z 成立, Y ↛ X Y\nrightarrow X Y↛X,则称 R ∈ 3 N F R\in3\rm NF R∈3NF。

这里强调 Y ↛ X Y\nrightarrow X Y↛X 是为了 Z Z Z 对 X X X 的传递依赖 成立。如果 Y → X Y\rightarrow X Y→X,那么 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={A→B,B→C,A→C}。既然 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 X→Y 且 Y ⊈ X Y\nsubseteq X Y⊈X 时 X X X 必含有码,则 R ∈ B C N F R\in\rm BCNF R∈BCNF。

  解读 :只要所有函数依赖的决定因素都含有码,那么就是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,T→J}。这个关系的决定因素 { ( 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={XY→Z},侯选码 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={Y→Z,XZ→Y},侯选码 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={X→Y,X→Z},侯选码 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={X→Z,WX→Y},候选码 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} B→D,AB→C
( 2 ) (2) (2) A → B , A → C , D → A A →B,A →C, D →A A→B,A→C,D→A
( 3 ) (3) (3) B C D → A , A → C \mathit{BCD}→A, A →C BCD→A,A→C
( 4 ) (4) (4) B → C , B → D , C D → A B→C, B→D,\mathit{CD}→A B→C,B→D,CD→A
( 5 ) (5) (5) A B D → C \mathit{ABD}→C ABD→C

答案

题号 码 最高属于哪个范式
( 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
相关推荐
这个DBA有点耶4 小时前
从INDEX到JOIN_ORDER:MySQL 8.0 Hint语法体系与五类实战场景
数据库·mysql·架构
数字新视界4 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
梅菲塔亚4 小时前
博客_Redis入门到实战
数据库·redis·缓存
abcyuu4 小时前
用友 U8 Cloud 生产制造模块深度解析:从 BOM 建立到成本核算的技术实现
前端·数据库·制造
夜雪一千4 小时前
MySQL 的ID用什么数据类型更好?主键ID选型实战
数据库·mysql
蓝胖的四次元口袋4 小时前
Redis 知识梳理(3)
数据库·redis·缓存
一铭111994 小时前
海豹办公 1.9.15 跨端办公软件实践 文档兼容 Access 数据库与移动 WebView 排错
android·数据库·electron·开源软件·access
Lynne3094 小时前
TSN 在变电站自动化通信网络升级中的应用价值与技术挑战
服务器·网络·数据库
弈栈录5 小时前
用户、会话与消息表应该如何设计
数据库·后端
内存漫游5 小时前
Checkpoint 与 Crash Recovery:数据库恢复机制入门
数据库