关系数据库设计相关知识汇总(二)

  1. 第三范式出现的原因
    BCNF是一种很严格的范式,为了容易获得保持依赖的分解,我们考虑一种比较弱的范式,就是第三范式

  2. 第三范式
    具有函数依赖集F的关系模式R属于第三范式的条件是: 对于F+中所有形如a→b的函数依赖(其中a,b都是R的属性),三个条件中至少有一个成立:
    ①a→b是一个平凡的函数依赖
    ②a是R的一个超码
    ③b-a中的每个属性C都包含于R的候选码中(每个C可以包含于不同的候选码中)

  3. 逻辑蕴涵
    给定关系模式r®,如果r®的每一个满足F的实例也满足f,则R上的函数依赖f被r上的函数依赖集F逻辑蕴涵

  4. F+的再定义
    F+是函数依赖集F的闭包,是被F逻辑蕴涵的所有函数依赖的集合。

  5. Armstrong公理
    用处: 寻找逻辑蕴涵的函数依赖
    自反律:若a是一个属性集且b是a的子集,则a→b成立。
    增补律:若a→b成立且c为一个属性集,则ca→cb成立。
    传递律:若a→b和b→c成立,则a→c成立。
    这三条公理是完备的,对于给定的函数依赖集F,利用它们可以产生全部F+。

  6. 三个附加规则
    简化的公理,可以由Armstrong公理证明。
    合并律:若a→b和a→c成立,则a→bc成立
    分解律:若a→bc成立,则a→b和a→c成立
    伪传递律:若a→b和cb→d成立,则ac→d成立

  7. 计算F+的伪代码
    F+ = F
    repeat
    for each F+中的函数依赖f 在f上应用自反律和增补律,将结果加入到F+中
    for each F+中一对函数依赖f1和f2 if f1和f2可以使用传递律结合起来 将结果加入到F+中
    until F+不再变化

  8. 属性集的闭包
    令a是R的一个属性集,我们将函数依赖集F下被a函数确定的所有属性的集合称为F下a的闭包。(函数确定: 函数依赖a→b 读作 a函数确定b)

  9. 计算a+的伪代码
    result = a;
    repeat
    for each F中的函数依赖b→c do
    begin
    if b是result的子集
    then result = result 并 c;
    until result 不变

  10. 属性集闭包的用途
    ①判断a是否为超码: 检查a+是否包含R中所有属性
    ②检查函数依赖a→b是否成立: 检查 b是否是a+的子集
    ③计算F+: 对R中任意属性集c,对任意c+的子集d,输出一个函数依赖c→d

猜你喜欢

转载自blog.csdn.net/m0_46664771/article/details/106072664