Nik*_*ntz 2 database-design canonical-form relational-database database-schema functional-dependencies
我正在研究数据库概念,有3个概念我不明白.典型的封面,无关的功能依赖和封闭.我阅读了关于规范封面的定义,但我不了解它与3NF和BCNF的关系.规范覆盖的定义似乎是没有无关的属性,无关的属性意味着不改变函数依赖集的闭包的属性,而闭包是F所隐含的所有函数依赖的集合,一组函数依赖.
但所有这些都有点模糊,我既喜欢直观的定义,也喜欢如何计算
功能依赖我相信我理解它是什么,就像我们在表中有这些属性时表中的PK一样.
在数据库细化方面有一个相当广泛的答案- F(外来属性)的最小覆盖,但我发现很难阅读所有的集定义和代数,我宁愿用简单的英语定义.
例如,具有模式U = {A,B,C,D,E,F,G}和功能依赖性
AB→C
B→E
CF→D
C→A
B→F
CE→F
CD→B
B→C
闭包A +,B +,C +,D +,E +,F +是这样计算的吗?
A + = A.
B + = BCDEF
C + = A.
D + = D.
E + = E
F + = F.
?如果我没有弄错,那么BCDEFG是1NF/2NF中的超级密钥("全密钥"),但它是否最小(3NF)?
在闭包和规范封面的帮助下,还应该做些什么来将这个例子标准化为1NF,2NF和3NF?规范封面与最小封面相同吗?
我lösningen直到detta talsåharBCDEFG angetts som"prima attribut"och som"ickeprima"attribut men resonemanget saknas.
谢谢你的帮助
Luk*_*ker 11
我知道我已经迟到了,但也许有人会因为某些人而退缩.
我觉得你犯了一些错误:
对于闭包:
B+应该ABCDEF而不是BCDEF因为FDC ? AC+应该是AC(属性的闭包总是包含自己)G+是的G,看看第二颗子弹的原因要计算规范封面,请遵循此算法.您需要查看功能依赖项列表:
AB ? C你可以计算ABs闭包ABCDEF.然后你尝试删除A,最后结束B ? C.现在你只计算闭包B,这仍然是ABCDEF- >你可以删除A.在这一步结束时,你的FD应该是这样的{B ? C, B ? E, C F ? D, C ? A, B ? F, C E ? F, C D ? B, B ? C, G ? G}.B ? F:关闭B是ABCDEF.如果你F从函数依赖项中删除了最后的函数依赖项B ? ?,你仍然可以获得与B之前相同的闭包.对其他FD重复此操作.你应该最终得到{B ??, B ? E, C F ? D, C ? A, B ??, C E ? F, C D ? B, B ? C, G ??}.X ? ?.你结束了{B ? E, C F ? D, C ? A, C E ? F, C D ? B, B ? C}.{B ? C E, C F ? D, C ? A, C E ? F, C D ? B}.对于超级密钥:请参阅此SO答案