什么是规范封面,封闭和无关属性?

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 ? A
  • C+应该是AC(属性的闭包总是包含自己)
  • G+是的G,看看第二颗子弹的原因

要计算规范封面,请遵循此算法.您需要查看功能依赖项列表:

  1. 左减少:尝试删除箭头左侧的所有属性,这些属性不是创建相同闭包所必需的.为了得到第一个例子,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}.
  2. 现在你为右手做同样的事情.请注意,如果需要,可以在此处删除所有属性,最后使用空集.作为一个例子,看看B ? F:关闭BABCDEF.如果你F从函数依赖项中删除了最后的函数依赖项B ? ?,你仍然可以获得与B之前相同的闭包.对其他FD重复此操作.你应该最终得到{B ??, B ? E, C F ? D, C ? A, B ??, C E ? F, C D ? B, B ? C, G ??}.
  3. 删除表单的所有FD X ? ?.你结束了{B ? E, C F ? D, C ? A, C E ? F, C D ? B, B ? C}.
  4. 将所有具有相同左侧箭头的FD组合在一起,从而形成规范的封面{B ? C E, C F ? D, C ? A, C E ? F, C D ? B}.

对于超级密钥:请参阅此SO答案