与SC相比,分解为三个关系模式后,数据的冗余度明 显降低。从而得出结论,一个好的关系模式应该具备 以下四个条件: 1.尽可能少的数据冗余。 2.没有插入异常 3.没有删除异常。 4.没有更新异常 UA++
16 ➢ 与SCD相比,分解为三个关系模式后,数据的冗余度明 显降低。从而得出结论,一个好的关系模式应该具备 以下四个条件: 1. 尽可能少的数据冗余。 2. 没有插入异常。 3. 没有删除异常。 4. 没有更新异常
>但是一个好的关系模式并不是在任何情况下都是最优 的,因此要以实际设计的目标出发进行设计,因此, 根据不同的要求将规范化分成若干级别 我们要设计的关系模式中的各属性是相互依赖、相互 制约的,这样才构成了一个结构严谨的整体。因此在 设计关模式时,必须从语义上分析这些依赖关系。 在此我们先讨论属性间的依赖关系,然后再讨论关系 规范化理论。 UA++
17 ➢ 但是一个好的关系模式并不是在任何情况下都是最优 的,因此要以实际设计的目标出发进行设计,因此, 根据不同的要求将规范化分成若干级别。 ➢ 我们要设计的关系模式中的各属性是相互依赖、相互 制约的,这样才构成了一个结构严谨的整体。因此在 设计关模式时,必须从语义上分析这些依赖关系。 ➢ 在此我们先讨论属性间的依赖关系,然后再讨论关系 规范化理论
53函数依赖 5.3.1函数依赖的定义 >函数依赖( Functional Dependency)是关系模式中 属性之间的一种逻辑依赖关系。下面给函数依赖的形 式化定义: 定义5.1设R(U)是属性集U上的关系模式,令X和Y 是U的子集。若对于R(U)的任意一个可能的关系r及r 中的任意两个元组t1和t2,总满足以下条件: 若t1[Ⅺ=t2[Ⅺ],则t1Y=t2[Y 则称X函数决定Y,或Y函数依赖于X,记作X→Y。我们 称X为决定因素,Y为依赖因素。 当Y不函数依赖于X时,记作:X→Y。 当X→Y且Y→X时,则记作:X>Y UA++
18 5.3 函数依赖 5.3.1 函数依赖的定义 ➢函数依赖(Functional Dependency)是关系模式中 属性之间的一种逻辑依赖关系。下面给函数依赖的形 式化定义: 定义5.1 设R(U)是属性集U上的关系模式,令X和Y 是U的子集。若对于R(U)的任意一个可能的关系r及r 中的任意两个元组t1和t2,总满足以下条件: 若t1[X]= t2[X],则t1[Y]= t2[Y] 则称X函数决定Y,或Y函数依赖于X,记作X→Y。我们 称X为决定因素,Y为依赖因素。 •当Y不函数依赖于X时,记作:X Y。 •当X→Y且Y→X时,则记作: X Y
例1:教材P104图5.2 例2:对于关系模式SCD U={SNO,SN,AGE,DEPT,MN,CNO, SCORE}U为属性集 F={SNO→SN,SNO→AGE,SNO→DEPT}F为函数依赖集 个SNO有多个 SCORE的值与其对应,SN0→ SCORE。 但是SCOE可以被(SN0,CN0)唯一地确定。所以可表 示为:(SN0,CNO)→SC0RE。 重要结论:(教材P105)函数依赖不可能从某个具体 的关系实例中推导出来,只能在关系实例中得到验证。 它是在数据库设计阶段产生,要求在关系模式上产生的 所有关系都必须成立的一种限制性规则。 问题提出:在设计数据库时除了给定的函数依赖集以外, 还需要考虑在关系模式上成立的其它所有的函数依赖 那么如何得到所有的函数依赖? U∩
19 例1:教材P104图5.2 例2:对于关系模式SCD U={SNO,SN,AGE,DEPT,MN,CNO,SCORE} U为属性集 F={SNO→SN,SNO→AGE,SNO→DEPT} F为函数依赖集 ➢一个SNO有多个SCORE的值与其对应,SNO SCORE。 ➢但是SCORE可以被(SNO,CNO)唯一地确定。所以可表 示为:(SNO,CNO)→SCORE。 ➢重要结论:(教材P105)函数依赖不可能从某个具体 的关系实例中推导出来,只能在关系实例中得到验证。 它是在数据库设计阶段产生,要求在关系模式上产生的 所有关系都必须成立的一种限制性规则。 ➢ 问题提出:在设计数据库时除了给定的函数依赖集以外, 还需要考虑在关系模式上成立的其它所有的函数依赖。 那么如何得到所有的函数依赖?
5.3.2函数依赖集的闭包 1、逻辑蕴涵 如果给定函数依赖集F,可以证明其他某些函数依赖也 成立,就称这些函数依赖被F逻辑蕴含。 2、闭包 令F为一个函数依赖集,F的闭包是指被F逻辑蕴含的所 有函数依赖的集合,记为F 问题提出:如何在给定函数依赖集F的情况下方便地 推导出它的闭包F? UA++
20 5.3.2 函数依赖集的闭包 1、逻辑蕴涵 如果给定函数依赖集F,可以证明其他某些函数依赖也 成立,就称这些函数依赖被F逻辑蕴含。 2、闭包 令F为一个函数依赖集,F的闭包是指被F逻辑蕴含的所 有函数依赖的集合,记为F + 。 ➢ 问题提出:如何在给定函数依赖集F的情况下方便地 推导出它的闭包F +?