[数据库] 4.5 关系模式设计之规范化形式





4.5 关系模式设计之规范化形式

  • 基本内容
    • 关系的第1NF和第2NF
    • 关系的第3NF和Boyce-Codd NF
    • 多值依赖及其公理定理
    • 关系的第4NF
  • 重点与难点
    • 一组概念:1NF, 2NF, 3NF, BCNF, 4NF;多值依赖
    • 熟练应用数据库设计的规范化形式,判断数据库设计的正确性及可 能存在的问题

目录

4.5.1 关系的第1范式和第2范式

  • 关系的1NF

    • 若关系模式 R(U)R(U) 中关系的每个分量都是不可分的数据项(值、原子),则称 R(U)R(U) 属于第一范式,记为:R(U)1NFR(U) \in1NF

    • 1NF要求关系中不 能有复合属性、多 值属性及其组合

      示例:不符合1NF的:

      [数据库] 4.5 关系模式设计之规范化形式

    • 不符合1NF的处理

      示例:Star(name,address(street,city))Star( name, address(street, city))

      Star(name,address)Star( name, address) 或者Starname,street,city)Star(name, street, city)

      将复合属性处理为简单属性;将多值属性与关键字单独组成一新的关系

  • 关系的2NF

    • R(U)1NFR(U) \in 1NFUU 中的每一非主属性完全函数依赖于候选键,则称 R(U)R(U) 属于第二范式,记为:R(U)2NFR(U) \in 2NF

    • 第2范式消除了非主属性对候选键的部分依赖

    • 示例:

      R(S#,SN,SD,CN,G)R(S\#, SN, SD, CN, G)

      其中,S#:,SN:,SD:,CN:,G:S\#:学号, SN:姓名, SD:班级, CN:课程, G:成绩

      函数依赖:S#SN,S#SD,{S#,CN}GS\# \rightarrow SN, S\# \rightarrow SD, \{S\#, CN\} \rightarrow G

      候选键:{S#,CN}\{S\#,CN\} ,非主属性:SNSNSDSD

      因为:{S#,CN}p{SNSD}\{S\#, CN\} \rightarrow^{p} \{SN、SD\} ,(S#{SN,SD}S\# \rightarrow \{SN, SD\}) 所以 RR 不属于 2NF2NF

      将其分解为 R1(S#,SN,SD),R2(S#,CN,G)R1(S\#, SN, SD), R2(S\#, CN, G), 则 R12NFR22NFR1 \in 2NF,R2 \in 2NF

目录




4.5.2 关系的第3范式和Boyce-Codd范式

  • 关系的3NF

    • R(UF)2NFR(U,F) \in 2NFRR 中不存在这样的情况:候选键 XX,属性组 YUY \subseteq U和非主属性 AA, 且 A∉X,A∉Y,Y⊄X,Y↛XA \not\in X, A \not\in Y , Y \not\subset X, Y \not\rightarrow X,使得 XYYAX \rightarrow Y,Y \rightarrow A 成立。满足以上条件则称 R(U)R(U)属于第三范式,记为:R(U)3NFR(U) \in 3NF

    • 第3范式消除了非主属性对候选键的传递依赖

    • 示例

      • 示例1

        Store(Sid,Pid,Did,Mgr)Store(Sid,Pid,Did,Mgr)

        其中,Sid:,Pid:,Did:,Mgr:Sid:商店, Pid:商品, Did:经营部,Mgr:经理

        函数依赖:{Sid,Pid}Did,{Sid,Did}Mgr\{Sid, Pid\} \rightarrow Did, \{Sid, Did\} \rightarrow Mgr

        候选键:{Sid,Pid}\{Sid,Pid\} ,非主属性:MgrMgr

        因为:{Sid,Pid}Did,{Sid,Did}Mgr\{Sid, Pid\} \rightarrow Did, \{Sid, Did\} \rightarrow Mgr,所以 RR 不属于 3NF3NF。 将其分解为 R1(Sid,Pid,Did),R2(Sid,Did,Mgr)R1(Sid,Pid,Did),R2(Sid,Did,Mgr), 则 R13NFR23NFR1 \in 3NF,R2 \in 3NF

      • 示例2

        学生(学号,系号,系主任)

        候选键:fU学号 \rightarrow^{f} U; 非主属性:系主任

        传递依赖:学号 \rightarrow 系号,系号 \rightarrow 系主任

        无部分依赖

        \Rightarrow 满足第2NF但不满足第3NF

    • 关系模式分解成 3NF

      • 示例

        R(A,B,C,D,E,F,G)R(A,B,C,D,E, F, G), 函数依赖集合 {AB,AC,CD,CE,EFG}\{A \rightarrow B, A \rightarrow C, C \rightarrow D, C \rightarrow E, E \rightarrow FG \}

        候选键:AA, 有传递依赖,RR 不满足 3NF

      • 分解规则

        将每一个函数依赖单独组成一个关系

        ρ={R1(A,B),R2(A,C),R3(C,D),R4(C,E),R5(E,F,G))}\rho = \{R1(A, B), R2(A, C), R3(C, D), R4(C, E), R5(E, F, G))\}

        可以看出:每一个模式都属于 3NF

        也可以合并一些关系:ρ={R12(A,B,C),R34(C,D,E),R5(E,F,G)}\rho = \{R12(A,B,C), R34(C,D,E), R5(E, F, G)\}

  • 关系的BCNF

    • R(UF)1NFR(U,F) \in 1NF, 若对于任何 XYFX \rightarrow Y \in F (或 XAFX \rightarrow A \in F), 当 Y⊄XY \not\subset X (或 A⊄XA \not\subset X)时, X必含有候选键,则称 R(U)R(U) 属于 Boyce-Codd 范式,记为:R(U)BCNFR(U) \in BCNF

    • 示例

      邮编(城市, 街道, 邮政编码)

      函数依赖:{,}\{城市, 街道\} \rightarrow 邮政编码 ; 邮政编码 \rightarrow 城市

      候选键: {,}fU\{城市, 街道\} \rightarrow^{f} U

      因不含候选键:邮政编码 \rightarrow 城市;所以不满足BCNF

      因无传递依赖,所以满足第3范式;

    • [定理]若 R(U,F)BCNFR(U,F) \rightarrow BCNF, 则 R(U,F)3NFR(U,F) \in 3NF

      有传递依赖的或者说不满足3NF的,也一定不满足BCNF

      [数据库] 4.5 关系模式设计之规范化形式
    • 关系模式分解成BCNF

      • 示例

        R(A,B,C,D,E,F,G)R(A,B,C,D,E, F, G), 函数依赖集合 {AB,AC,CD,CE,EFG}\{A \rightarrow B, A \rightarrow C, C \rightarrow D, C \rightarrow E, E \rightarrow FG \}

        候选键:AA; 有不依赖于候选键的其他函数依赖,RR不满足BCNFBCNF

      • 分解规则

        将左侧不含候选键的函数依赖单独组成一个关系, 将包含候选键的组成一关系

        ρ={R1(C,D),R2(C,E),R3(E,F,G),R4(A,B,C)}\rho = \{R1(C,D), R2(C,E), R3(E,F,G), R4(A,B,C)\}

        可以看出:R1BCNF,R2BCNF,R3BCNF,R4BCNFR1 \in BCNF, R2 \in BCNF, R3 \in BCNF, R4 \in BCNF

        也可以将 R1R1R2R2 合并 ρ={R12(C,D,E),R3(E,F,G),R4(A,B,C)}\rho = \{R12(C,D,E), R3(E,F,G),R4(A,B,C)\}

目录




4.5.3 多值依赖

  • 多值依赖定义

    R(U)R(U) 中, 设 X,YUX, Y \subset U, 若对于 R(U)R(U) 的任一关系 rr, 若元组 tr,sr,t[X]=s[X]t \in r, s \in r, t[X] = s[X], 则必有 ur,vru \in r, v \in r 使得:

    • u[X]=v[X]=t[X]=s[X]u[X]=v[X]=t[X]=s[X]
    • u[Y]=t[Y]u[Y]=t[Y]u[UXY]=s[UXY]u[U-X-Y] = s[U-X-Y]
    • v[Y]=s[Y]v[Y]=s[Y]v[UXY]=t[UXY]v[U-X-Y] = t[U-X-Y]

    均成立,则称 YY 多值依赖于 XX , 或说 XX 多值决定 YY , 记作 XYX \rightarrow \rightarrow Y

  • 多值函数的特性

    • 直观地,对于 XX 给定值,YY 有一组值与之对应 (0或n个) 且这组 YY 值不以任何方式与 UXYU-X-Y 中属性值相联系,有 XYX \rightarrow \rightarrow Y
    • 若交换 t,st, sYY 值而得到的新元组仍在r中,则 XYX \rightarrow Y
    • X,YX, Y 不必不相交,u,vu,v 可以与 t,st,s 相同。
    • 函数依赖是多值依赖的特例。
    • Z=UXYZ=U-X-Y ,有 XZX \rightarrow \rightarrow Z, 若 Z=Z=∅, 则必有 XYX \rightarrow \rightarrow Y
  • 示例

    R={C,T,H,R,S,G}R = \{ 课程名C, 教师名T, 上课时间H, 教室R, 学生名S, 成绩G\},则有:

    CHR,THRC \rightarrow \rightarrow HR, T \rightarrow \rightarrow HR,但不存在 CHC \rightarrow \rightarrow HCRC \rightarrow \rightarrow R

    说明:同一门课程或同一教师对同一批学生可以在不同时间不同地点上课。

目录




4.5.4 关于多值依赖的公理

  • 多值依赖的Armstrong公理

    R(U),X,YUR(U), X, Y \subseteq U, 对于 R(U)R(U) 的任一关系 rr, 有以下规则:

    • [A4] 多值依赖互补律(Complementation)或对称性:

      XYX \rightarrow \rightarrow Y, 则 XUXYX \rightarrow \rightarrow U - X - Y

    • [A5] 多值依赖增广律(Augmentation):

      XYX \rightarrow \rightarrow YVWV \subseteq W, 则 WXVYWX \rightarrow \rightarrow VY

      注意:此条与A2规则是相似的:XYX \rightarrow YVWV \rightarrow W,则 WXVYWX \rightarrow VY

    • [A6] 多值依赖传递律(Transtivity):

      XY,YZX \rightarrow \rightarrow Y, Y \rightarrow \rightarrow Z, 则 XZYX \rightarrow \rightarrow Z - Y

      注意:此条比A3规则限制要强:XYYZX \rightarrow Y,Y \rightarrow Z,则 XZX \rightarrow Z。多值依赖不存在这种规则,即: XYYZX \rightarrow \rightarrow Y,Y \rightarrow \rightarrow Z,则 XZX \rightarrow \rightarrow Z不一定成立,

      例如 CHR,HRHC \rightarrow \rightarrow HR, HR \rightarrow \rightarrow H 但是 CC 不能多值决定 HH

    • [A7] 若 XY,X \rightarrow Y,XYX \rightarrow \rightarrow Y

    • [A8] 若 XYZYX \rightarrow \rightarrow Y,Z \subseteq Y 且对于某个与 YY 不相交的 WWWZ,WY=W \rightarrow Z, W \cap Y=∅, 则有 XZX \rightarrow Z

  • 多职以来的Armstrong公里证明

    [数据库] 4.5 关系模式设计之规范化形式

    [数据库] 4.5 关系模式设计之规范化形式

  • 关于多值依赖的推论

    [引理7]:由Armstrong’s Axioms可推出如下结论。

    • 多值依赖合并律(Union Rule):

      XYX \rightarrow \rightarrow YXZX \rightarrow \rightarrow Z, 则 XYZX \rightarrow \rightarrow YZ

    • 多值依赖伪传递律(Pseudo Transitivity):

      XYX \rightarrow \rightarrow YWYZWY \rightarrow \rightarrow Z,则 XZWYX \rightarrow \rightarrow Z - WY

    • 混合伪传递律:若 XY,XYZX \rightarrow \rightarrow Y, XY \rightarrow Z, 则 XZYX \rightarrow Z \rightarrow Y

    • 多值依赖分解律(Decomposition Rule):

      XYXZX \rightarrow \rightarrow Y,X \rightarrow \rightarrow ZXYZ,XZY,XYZX \rightarrow \rightarrow Y - Z, X \rightarrow \rightarrow Z-Y, X \rightarrow \rightarrow Y \cap Z

    证明:(略)

目录




4.5.5 关系的第4范式和弱第4范式

  • 关系的4NF

    R(U)1NF,DR(U) \in 1NF, D是其上的一组依赖(函数依赖,多值依赖),对任意 XYDX \rightarrow \rightarrow Y \in D, 若 YY \not= ∅,Y⊄X,XYUY \not\subset X, XY \not= U,必有 XX 为超键,则称 R(U)R(U) 满足第四范 式,记为:R(U)4NFR(U) \in 4NF

    • 第四范式消除了非主属性对候选键以外属性的多值依赖
    • 如果有多值依 赖,则一定依赖于候选键
  • 定理

    • [定理] 若 R4NFR \in 4NF, 则必有 RBCNFR \in BCNF

      证明:设 R4NFR \in 4NF, 对 RR 上的任何 XYYXX \rightarrow Y,Y - X \not=∅ ,

      (1) 当 XY=UXY = U 时,XUXX \rightarrow U,X必为超键。

      (2) 当 XYUXY \not= U 时,因 XYX \rightarrow Y,有 XYX \rightarrow \rightarrow Y,由第四范式定义 XX 必为超键,再由BCNF定义知RBCNFR \in BCNF

    • [定理] 若RR上仅存在函数依赖,则若有 RBCNFR \in BCNF 即有 R4NFR \in 4NF, 反之,若 R4NFR \in 4NF,也有 RBCNFR \in BCNF

  • 关系的W4NF

    R(U)3NFR(U) \in 3NF, 若 RR 上的任何互补多值依赖 XY(XYU,YXX \rightarrow Y(XY \not= U, Y-X \not=))X(RXY)X \rightarrow \rightarrow (R - X - Y) 中必有一个是函数依赖,则称 RR 是弱第四范式的,记为 RW4NFR \in W4NF

    注:W4NF不一定是BCNF, 反之亦然

目录




4.5.6 总结

[数据库] 4.5 关系模式设计之规范化形式

目录