数据库系统概论 第六章 关系数据理论

6.1 问题的提出

  • 一个关系模式是一个五元组 R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)
    其中:
    • R R R是关系名,是符号化的元组语义;
    • U U U是一组属性;
    • D D D是属性组 U U U来自的域;
    • D O M DOM DOM是属性到域的映射;
    • F F F是属性组U上的一组数据依赖。

  函数依赖是指类似于数学中的函数 y = f ( x ) y=f(x) y=f(x),自变量 x x x确定之后,相应的函数值 y y y也就唯一的确定了。

  若关系中的函数依赖存在某些不好的性质,则会造成以下些问题。如:
在这里插入图片描述

  • 1.数据冗余太大
    比如,每一个系的系主任姓名重复出现等。将浪费大量的存储空间。
  • 2.更新异常(Update Anomalies)
    由于数据冗余,当更新数据库中的数据时,必须要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。比如,某系更换系主任后,必须修改与该系学生有关的每一个元组。
  • 3.插入异常(Insertion Anomalies)
    如果一个系刚成立,尚无学生,就无法把这个系及其系主任的信息存入数据库。
  • 4.删除异常(Deletion Anomalies)
    如果某个系的学生全部毕业了,在删除该系学生信息的同时,这个系及其系主任的信息也全部丢弃了。

【解决方法】 将该模式拆分成三个关系模式
S ( S n o , S d e p t , S n o → S d e p t ) S C ( S n o , C n o , G r a d e , ( S n o , C n o ) → G r a d e ) D E P T ( S d e p t , M n a m e , S d e p t → M n a m e ) S(Sno,Sdept,Sno \rightarrow Sdept) \\ SC(Sno,Cno,Grade,(Sno,Cno) \rightarrow Grade) \\ DEPT(Sdept,Mname,Sdept\rightarrow Mname)\\ S(Sno,Sdept,SnoSdept)SC(Sno,Cno,Grade,(Sno,Cno)Grade)DEPT(Sdept,Mname,SdeptMname)


6.2 规范化

6.2.1 函数依赖

  • 定义6.1 R ( U ) R(U) R(U)是属性集 U U U上的关系模式。 X , Y X,Y X,Y U U U的子集。若对于 R ( U ) R(U) R(U)的任意一个可能的关系 r r r r r r中不可能存在两个元组在 X X X上的属性值相等,而在 Y Y Y上的属性值不等,则称 X X X函数确定 Y Y Y Y Y Y函数依赖于 X X X ,记作 X → Y X\rightarrow Y XY
  • 定义6.2 R ( U ) R(U) R(U)中,如果 X → Y X \rightarrow Y XY,并且对于 X X X的任何一个真子集 X ′ X' X,都有 X ′ ↛ Y X' \nrightarrow Y XY,则称 Y Y Y X X X完全函数依赖,记作 X → F Y X \stackrel{F}{\rightarrow} Y XFY
    X → Y X\rightarrow Y XY,但 Y Y Y不完全函数依赖于 X X X,则称 Y Y Y X X X部分函数依赖,记作 X → P Y X \stackrel{P}{\rightarrow} Y XPY
  • 定义6.3 R ( U ) R(U) R(U)中,如果 X → Y , Y ⊊ X , Y ↛ X , Y → Z X \rightarrow Y,Y \subsetneq X,Y \nrightarrow X,Y \rightarrow Z XY,YXYXYZ,则称** Z Z Z X X X传递函数依赖。记为 X → 传 递 Z X \stackrel{传递}{\rightarrow} Z XZ
  • X → Y , Y ⊊ X X\rightarrow Y,Y\subsetneq X XY,YX,,则称 X → Y X\rightarrow Y XY非平凡的函数依赖
  • X → Y , Y ⊆ X X\rightarrow Y,Y\subseteq X XY,YX,,则称 X → Y X\rightarrow Y XY平凡的函数依赖

6.2.2 码

  • 定义6.4 K K K R < U , F > R<U,F> R<U,F>中的属性或属性组合,若 K → F U K \stackrel{F}{\rightarrow} U KFU,则称 K K K R R R候选码(Candidate key)。若候选码多于一个,则选定其中的一个为主码(Primary key)。
      包含在任何一个候选码中的属性,称作主属性(Prime attribute)。不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码(All-key)。
  • 定义6.5 关系模式 R R R中属性或属性组 X X X并非R的码,但 X X X是另一个关系模式的码,则称 X X X R R R外部码(Foreign key),也称外码

6.2.3 范式

  关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称1NF。在第一范式中满足进一步要求的为第二范式,其余以此类推。


6.2.4 2NF

  • 定义6.6 R ∈ 1 N F R \in 1NF R1NF,且每一个非主属性完全函数依赖于码,则 R ∈ 2 N F R \in 2NF R2NF

  一个关系模式 R R R不属于 2 N F 2NF 2NF,就会产生以下几个问题:

  • 1.插入异常
  • 2.删除异常
  • 3.修改复杂

6.2.5 3NF

  • 定义6.7 关系模式 R < U , F > R<U,F> R<U,F>中若不存在这样的码 X X X,属性组 Y Y Y及非主属性 Z ( Z ⊊ Y ) Z(Z\subsetneq Y) ZZY)使得 X → Y , Y → Z X \rightarrow Y, Y\rightarrow Z XY,YZ成立, Y ↛ X Y \nrightarrow X YX,则称 R < U , F > ∈ 3 N F R<U,F> \in 3NF R<U,F>3NF
      由定义6.7可以证明,若 R ∈ 3 N F R\in 3NF R3NF,则每一个非主属性即不部分依赖于码也不传递依赖于码。

6.2.6 BCNF

  BCNF(Boyce Codd Normal Form)是由Boyce与Codd提出的,比上述的3NF又进了一步,通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。

  • 定义6.8 关系模式 R < U , F > ∈ 1 N F R<U,F> \in 1NF R<U,F>1NF。若 X → Y X \rightarrow Y XY Y ⊊ X Y \subsetneq X YX X X X必含有码,则 R < U , F > ∈ B C N F R<U,F> \in BCNF R<U,F>BCNF

  也就是说,关系模式 R < U , F > R<U,F> R<U,F>中,若每一个决定因素都包含码,则 R < U , F > ∈ B C N F R<U,F> \in BCNF R<U,F>BCNF

  由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:

  • 所有非主属性对每一个码都是完全函数依赖;
  • 所有的主属性对每一个不包含它的码,也是完全函数依赖;
  • 没有任何属性完全函数依赖于非码的任何一组属性。
  • 由于 R ∈ B C N F R \in BCNF RBCNF,按定义派出了任何属性对码的传递依赖与部份依赖,所以 R ∈ 3 N F R\in 3NF R3NF。但是若 R ∈ 3 N F R \in 3NF R3NF,则 R R R未必属于 B C N F BCNF BCNF

6.2.7 多值依赖

  • 定义6.9 R ( U ) R(U) R(U)是属性集 U U U上的一个关系模式。 X , Y , Z X,Y,Z X,Y,Z U U U的子集,并且 Z = U − X − Y Z = U - X - Y Z=UXY。关系模式 R ( U ) R(U) R(U)中多值依赖 X → → Y X \rightarrow\rightarrow Y XY成立,当且仅当对 R ( U ) R(U) R(U)的任一关系 r r r,给定的一对 ( x , z ) (x,z) (x,z)值,有一组 Y Y Y的值,这组值仅仅决定于 x x x值而与 z z z值无关。
    在这里插入图片描述
      例如,在关系模式Teaching中,对于一个 ( 物 理 , 光 学 原 理 ) (物理,光学原理) 有一组 T T T ∣ 李 勇 , 王 军 ∣ |李勇,王军| ,这组值仅仅决定于课程 C C C上的值(物理)。也就是说对于另一个 ( 物 理 , 普 通 物 理 学 ) (物理,普通物理学) 它对用的一组 T T T值仍是 ∣ 李 勇 , 王 军 ∣ |李勇,王军| ,尽管这时参考书B的值已经改变了。因此 T T T多值依赖于 C C C,即 T → → C T \rightarrow\rightarrow C TC

  • X → → Y X \rightarrow\rightarrow Y XY,而 Z Z Z为空,则称 X → → Y X \rightarrow\rightarrow Y XY平凡的多值依赖

多值依赖具有以下性质:

  • (1)多值依赖具有对称性。即若 X → → Y X\rightarrow\rightarrow Y XY,则 X → → Z X\rightarrow\rightarrow Z XZ,其中 Z = U − X − Y Z = U-X-Y Z=UXY
  • (2)多值依赖的传递性。即若 X → → Y , Y → → Z X\rightarrow\rightarrow Y,Y\rightarrow\rightarrow Z XY,YZ,则 X → → Z − Y X\rightarrow\rightarrow Z-Y XZY
  • (3)函数依赖可以看作是多值依赖的特殊情况。即若 X → Y X\rightarrow Y XY,则 X → → Y X\rightarrow\rightarrow Y XY
  • (4)若 X → → Y X\rightarrow\rightarrow Y XY X → → Z X\rightarrow\rightarrow Z XZ,则 X → → Y Z X\rightarrow\rightarrow YZ XYZ
  • (5)若若 X → → Y X\rightarrow\rightarrow Y XY X → → Z X\rightarrow\rightarrow Z XZ,则 X → → Y ∩ Z X\rightarrow\rightarrow Y\cap Z XYZ
  • (6)若若 X → → Y X\rightarrow\rightarrow Y XY X → → Z X\rightarrow\rightarrow Z XZ,则 X → → Y − Z , X → → Z − Y X\rightarrow\rightarrow Y-Z,X\rightarrow\rightarrow Z-Y XYZ,XZY

多值依赖与函数依赖的区别

  • (1)多值依赖的有效性与属性集的范围有关。
    X → → Y X\rightarrow\rightarrow Y XY U U U上成立,则在 W ( X Y ⊆ W ⊆ U ) W(XY \subseteq W \subseteq U) WXYWU上一定成立;反之则不然。
  • (2)若函数依赖 X → Y X\rightarrow Y XY R ( U ) R(U) R(U)上成立,则对于任何 Y ′ ⊂ Y Y' \subset Y YY均有 X → Y ′ X \rightarrow Y' XY成立。而多值依赖 X → → Y X\rightarrow\rightarrow Y XY若在 R ( U ) R(U) R(U)上成立,却不能断言对于任何 Y ′ ⊂ Y Y'\subset Y YY X → → Y ′ X\rightarrow\rightarrow Y' XY成立。

6.2.8 4NF

  • 定义6.10 关系模式 R < U , F > ∈ 1 N F R<U,F> \in 1NF R<U,F>1NF,如果对于 R R R的每个非平凡多值依赖 X → → Y ( Y ⊊ X ) X\rightarrow\rightarrow Y(Y\subsetneq X) XY(YX) X X X都含有码,则称 R < U , F > ∈ 4 N F R<U,F> \in 4NF R<U,F>4NF

6.2.9 规范化小结

在这里插入图片描述


6.3 数据依赖的公理系统

  • 定义6.11 对于满足一组函数依赖 F F F的关系模式 R < U , F > R<U,F> R<U,F>,其任何一个关系 r r r,若函数依赖 X → Y X\rightarrow Y XY都成立(即 r r r中任意两元组 t , s t,s t,s,若 t [ X ] = s [ X ] t[X] = s[X] t[X]=s[X],则 t [ Y ] = S [ Y ] t[Y] = S[Y] t[Y]=S[Y]),则称 F F F逻辑蕴含 X → Y X\rightarrow Y XY

Armstrong公理系统,设 U U U为属性集总体, F F F U U U上的一组函数依赖,于是有关系模式 R < U , F > R<U,F> R<U,F>。对 R < U , F > R<U,F> R<U,F>来说有以下的推理规则:

  • A1.自反律:若 Y ⊆ X ⊆ U Y \subseteq X \subseteq U YXU,则 X → Y X\rightarrow Y XY F F F所蕴含。
  • A2.增广律:若 X → Y X\rightarrow Y XY F F F所蕴含,且 Z ⊆ U Z \subseteq U ZU,则 X Z → Y Z XZ \rightarrow YZ XZYZ为F所蕴含。
  • A3.传递律:若 X → Y , Y → Z X\rightarrow Y,Y\rightarrow Z XY,YZ F F F所蕴含,则 X → Z X\rightarrow Z XZ F F F所蕴含。

  根据A1、A2、A3者3条推理规则可以得到下面三条很有用的推理规则:

  • 合并规则:由 X → Y , X → Z X\rightarrow Y,X\rightarrow Z XY,XZ,有 X → Y Z X\rightarrow YZ XYZ
  • 伪传递规则:由 X → Y , W Y → Z X\rightarrow Y,WY \rightarrow Z XY,WYZ,有 X W → Z XW\rightarrow Z XWZ
  • 分解规则:由 X → Y 及 Z ⊆ Y X\rightarrow Y及 Z\subseteq Y XYZY,由 X → Z X\rightarrow Z XZ

  Armstrong公理是有效的、完备的。Armstrong公理的有效性指的是:由 F F F出发根据Armstrong公理推导出来的每一个函数依赖一定在 F + F^+ F+中(如下定义);完备性是指 F + F^+ F+中的每一个函数依赖,必定可以由 F F F出发根据Armstrong公理推到出来。


  • 引理6.1 X → A 1 A 2 A . . . A k X\rightarrow A_1A_2A...A_k XA1A2A...Ak成立的充分必要条件是 X → A i X\rightarrow A_i XAi成立 ( i = 1 , 2 , . . . , k ) (i=1,2,...,k) (i=1,2,...,k)
  • 定义6.12 在关系模式 R < U , F > R<U,F> R<U,F>中为 F F F所逻辑蕴含的函数依赖的全体叫作 F F F的闭包,记为 F + F^+ F+
  • 定义6.13 F F F为属性集 U U U上的一组函数依赖, X , Y ⊆ U , X F + = { A ∣ X → A 能 由 F 根 据 A r m s t r o n g 公 理 导 出 } X,Y\subseteq U, X_F^+ = \{A|X\rightarrow A能由F根据Armstrong公理导出\} XYU,XF+={AXAFArmstrong} X F + X_F^+ XF+称为属性集 X X X关于函数依赖集 F F F的闭包
  • 引理6.2 F F F为属性集 U U U上的一组函数依赖, X , Y ⊆ U , X → Y X,Y\subseteq U,X\rightarrow Y X,YU,XY能由 F F F根据Armstrong公理导出的充分必要条件是 Y ⊆ X F + Y\subseteq X_F^+ YXF+

6.3.1 求属性集X在函数依赖集F上的闭包

算法6.1 求属性集 X ( X ⊆ U ) X(X\subseteq U) X(XU)关于 U U U上的函数依赖集 F F F的闭包 X F + X_F^+ XF+
输入 X , F X,F XF
输出 X F + X_F^+ XF+
步骤

  • 1.令 X ( 0 ) = X , i = 0 X^{(0)}=X,i = 0 X(0)=X,i=0
  • 2.求 B B B,这里 B = { A ∣ ( ∃ V ) ( ∃ W ) ( V → W ∈ F ∧ V ⊆ X ( i ) ∧ A ∈ W ) } B=\{A|(\exist V)(\exist W)(V\rightarrow W \in F \wedge V\subseteq X^{(i)} \wedge A \in W) \} B={A(V)(W)(VWFVX(i)AW)}
  • 3. X ( i + 1 ) = B ∪ X ( i ) X^{(i+1)} = B \cup X^{(i)} X(i+1)=BX(i)
  • 4.判断 X ( i + 1 ) = X ( i ) X^{(i+1)}=X^{(i)} X(i+1)=X(i)吗?
  • 5.若相等或 X ( i ) = U X^{(i)} = U X(i)=U,则 X ( i ) X^{(i)} X(i)就是 X F + X_F^+ XF+,算法终止
  • 6.若否,则 i = i + 1 i = i +1 i=i+1,返回第2步

  • 定义6.14 如果 G + = F + G^+ = F^+ G+=F+,就说函数依赖集 F F F覆盖 G G G F F F G G G的覆盖,或 G G G F F F的覆盖),或 F F F G G G等价。
  • 引理6.3 F + = G + F^+ = G^+ F+=G+的充分必要条件是 F ⊆ G + ∧ G ⊆ F + F\subseteq G^+ \wedge G\subseteq F^+ FG+GF+
  • 定义6.15 如果函数依赖集 F F F满足下列条件,则称 F F F为一个极小函数依赖集。亦称为最小依赖集最小覆盖
    • (1) F F F中任意函数依赖的右部仅含有一个属性。
    • (2) F F F中不存在这样的函数依赖 X → A X\rightarrow A XA,使得 F F F F − { X → A } F-\{X\rightarrow A\} F{XA}等价。
    • (3) F F F中不存在这样的函数依赖 X → A X\rightarrow A XA X X X由真子集 Z Z Z使得 F − { X → A } ∪ { Z → A } F-\{X\rightarrow A\}\cup \{Z\rightarrow A\} F{XA}{ZA} F F F等价。
  • 定理6.3 每一个函数依赖集 F F F均等价于一个极小函数依赖集 F m F_m Fm。此 F m F_m Fm称为 F F F的最小依赖集。

6.3.2 构造F的最小函数依赖集

这是定理6.3的证明。
【证】 这是一个构造性的证明,分三步对 F F F进行“极小化处理”,找出 F F F的一个最小依赖集来。

  • (1)逐一检查 F F F中个函数依赖 F D i : X → Y FD_i:X\rightarrow Y FDi:XY,若 Y = A 1 A 2 . . . A k , k > 2 Y = A_1A_2...A_k,k>2 Y=A1A2...Ak,k>2,则用 { X → A i ∣ i = 1 , 2 , . . . , k } \{X\rightarrow A_i|i=1,2,...,k\} {XAii=1,2,...,k}来取代 X → Y X\rightarrow Y XY
  • (2)逐一检查 F F F中个函数依赖 F D i : X → A FD_i:X\rightarrow A FDi:XA,令 G = F − { X → A } G=F-\{X\rightarrow A\} G=F{XA},若 A ∈ X G + A\in X_G^+ AXG+,则从 F F F中去掉此函数依赖(因为 F F F G G G等价的充要条件是 A ∈ X G + A\in X_G^+ AXG+)。
  • (3)逐一取出 F F F中的函数依赖 F D i : X → A FD_i:X\rightarrow A FDi:XA,设 X = B 1 B 2 . . . B m X = B_1B_2...B_m X=B1B2...Bm,逐一考察 B i ( i = 1 , 2 , . . . m ) B_i(i=1,2,...m) Bi(i=1,2,...m),若 A ∈ ( X − B i ) F + A \in (X-B_i)_F^+ A(XBi)F+,则以 X − B i X-B_i XBi取代 X X X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值