备战软考数据库:8.5 关系模式的设计准则、函数依赖

4个非形式化的衡量准则:

  1. 关系模式的设计应尽可能只包含直接联系的属性
  2. 关系模式的设计应该尽可能使得相应关系中不出现插入、删除和修改等操作异常现象
  3. 关系模式的设计应该尽可能使得相应关系中避免放置经常为空值的属性
  4. 关系模式的设计应该尽可能使得关系的联接操作在作为主键或外键的属性上进行等值联接,并保证联接后不生成额外的元组

函数依赖(Functional Dependency)的定义

  • 设关系模式R(U)中,X,Y是属性集U的子集,函数依赖是一个形为Xrightarrow Y的命题:
    只要rR的当前关系,对于r中任意两个元组ts,都有t[X]=s[X]models{t[Y]=s[Y]},则称:
    FD~Xrightarrow Y在关系R(U)中成立。

函数依赖的闭包(Closure of Functional Dependency)

  • F是关系模式R上成立的函数依赖的集合,Xrightarrow Y是一个函数依赖.。若对于R中任意一个满足F的关系r均满足Xrightarrow Y,则称Fmodels Xrightarrow Y
  • F是函数依赖集,被F所蕴涵的函数依赖的全体构成的集合称为函数依赖集F的闭包F^{+},即:
    F^{+}=left{Xrightarrow Y|F models X rightarrow Yright}

函数依赖的推理规则

推理规则

  1. 自反性(reflexivity):
    Ysubseteq X subseteq U,则Xrightarrow YR上成立
  2. 增广性(augmentation):
    Xrightarrow YR上成立,且Zsubseteq U,则XZrightarrow YZR上成立
  3. 传递性(transitivity):
    Xrightarrow YYrightarrow ZR上成立,则Xrightarrow ZR上也成立
  4. 合并性(Union):
    left{Xrightarrow Y, Xrightarrow Zright}models Xrightarrow YZ
  5. 分解性(Decomposition):
    left{Xrightarrow Y, Zsubseteq Y}models Xrightarrow Zright
  6. 伪传递性:
    left{Xrightarrow Y, WY rightarrow Zright}models WXrightarrow Z
  7. 复合性(Composition):
    left{Xrightarrow Y, Wrightarrow Zright}models XWrightarrow YZ
  8. left{Xrightarrow Y, Wrightarrow Zright}models Xcup (W-Y)rightarrow YZ

阿姆斯特朗公理(Armstrong Axioms):

  1. 函数依赖推理规则1-3是正确的
  2. 依据前3条规则可以推理出4-8
  3. 如果A_1,A_2,dots,A_n是关系模式R的属性集,则Xrightarrow A_1,dots,A_n成立的充要条件为:Xrightarrow A_i ~(i=1,2,dots,n)成立

函数依赖与关键码的关系:

  • 设关系模式R的属性集是UXU的一个子集:
  • 如果Xrightarrow UR上成立,那么称XR的一个超键
  • 如果Xrightarrow UR上成立,但没有一个真子集X_1满足X_1rightarrow U,则称XR上的一个候选键。

属性集的闭包:

  • 定义:设F是属性集U上的函数依赖集,XU的子集,则相对于F的属性集X的闭包X^{+}是:从F出发,使用函数依赖推理规则所推出的所有满足Xrightarrow A的属性A的集合
    X^{+}=left{text{Attributes A}|Fmodels Xrightarrow Aright}
  • 定理:
    Xrightarrow Y能用函数依赖推理规则所推出的充要条件是Ysubseteq X^{+}

函数依赖集的最小依赖集:

  • 最小依赖集F_{text{min}}应该满足4个条件:
  1. ({F_{text{min}}}^{+}=F^+)
  2. F_{text{min}}每个函数依赖的右边都是单属性
  3. F_{text{min}}中没有冗余的函数依赖
  4. F_{text{min}}每个函数依赖的左边都没有冗余的属性

 

  • 从函数依赖集F计算出最小依赖集F_{text{min}}的方法:
  1. 根据推理规则的分解性,得到与F等价的函数依赖集GG满足条件2
  2. G中的每个函数依赖,都消除左边的冗余属性,使满足条件4
  3. 最后消除冗余的函数依赖,使满足条件3

Leave a Reply

Your email address will not be published. Required fields are marked *