-
第三范式出现的原因
BCNF是一种很严格的范式,为了容易获得保持依赖的分解,我们考虑一种比较弱的范式,就是第三范式。 -
第三范式
具有函数依赖集F的关系模式R属于第三范式的条件是: 对于F+中所有形如a→b的函数依赖(其中a,b都是R的属性),三个条件中至少有一个成立:
①a→b是一个平凡的函数依赖
②a是R的一个超码
③b-a中的每个属性C都包含于R的候选码中(每个C可以包含于不同的候选码中) -
逻辑蕴涵
给定关系模式r®,如果r®的每一个满足F的实例也满足f,则R上的函数依赖f被r上的函数依赖集F逻辑蕴涵。 -
F+的再定义
F+是函数依赖集F的闭包,是被F逻辑蕴涵的所有函数依赖的集合。 -
Armstrong公理
用处: 寻找逻辑蕴涵的函数依赖
自反律:若a是一个属性集且b是a的子集,则a→b成立。
增补律:若a→b成立且c为一个属性集,则ca→cb成立。
传递律:若a→b和b→c成立,则a→c成立。
这三条公理是完备的,对于给定的函数依赖集F,利用它们可以产生全部F+。 -
三个附加规则
简化的公理,可以由Armstrong公理证明。
合并律:若a→b和a→c成立,则a→bc成立
分解律:若a→bc成立,则a→b和a→c成立
伪传递律:若a→b和cb→d成立,则ac→d成立 -
计算F+的伪代码
F+ = F
repeat
for each F+中的函数依赖f 在f上应用自反律和增补律,将结果加入到F+中
for each F+中一对函数依赖f1和f2 if f1和f2可以使用传递律结合起来 将结果加入到F+中
until F+不再变化 -
属性集的闭包
令a是R的一个属性集,我们将函数依赖集F下被a函数确定的所有属性的集合称为F下a的闭包。(函数确定: 函数依赖a→b 读作 a函数确定b) -
计算a+的伪代码
result = a;
repeat
for each F中的函数依赖b→c do
begin
if b是result的子集
then result = result 并 c;
until result 不变 -
属性集闭包的用途
①判断a是否为超码: 检查a+是否包含R中所有属性
②检查函数依赖a→b是否成立: 检查 b是否是a+的子集
③计算F+: 对R中任意属性集c,对任意c+的子集d,输出一个函数依赖c→d
关系数据库设计相关知识汇总(二)
最新推荐文章于 2021-02-24 16:05:49 发布