【发布时间】:2015-06-10 04:56:25
【问题描述】:
我将从一个例子开始回答我的问题。
假设我们有具有以下属性的表 Adress:
-Name(which also is the primary key, I will give this column the symbol N)
-Street(will have the symbol S)
-City(will have the symbol C)
-Region(will have the symbol R)
-Zip_Code(will have the symbol Z)
属性之间给出如下关系
N -> S,C,R,Z
C -> R
S,C,R -> Z
Z -> C
我使用以下规则消除了多余的状态:
如果A1 ...Ai ... An -> T 还有:{A1...An}/Ai -> Ai 然后Ai 在第一个关系中是多余的。
因此我们有:
N-> S,C
C -> R
S,C -> Z
Z -> C
现在,我必须删除我已经拥有V -> A 和A -> B 的所有关系V -> B。
这让我想到了我的问题。在我看来,我没有什么可删除的,这意味着对于 FN3,我将拥有上述关系描述的 4 个表。但是常识告诉我我应该主要只有两张桌子
R1(#name,street,city,zip)R2(city,region)。我可以删除以下 2 个关系:
S,C -> Z 和 Z -> C ? (我有N -> S,C 和S,C -> Z 和Z - > C 所以在我看来我去N -> S,C -> Z -> C 我已经有所以删除前2...)
【问题讨论】:
-
1.这些不是“关系”,它们是功能依赖,涉及表中的属性。 2. 请引用或参考您(认为您)正在遵循的程序。 3. 你误会了。例如,您不应该为剩下的每一行制作一个表格。
-
我在网上找不到。它在我的国家的名字是 AIDF,它决定了 A 的关闭......这就是我所能提供的,除了你不会理解的语言的图片
-
1.您可以使用您自己的语言来提供您使用的步骤以及如何应用它们。 2. 找不到?通过“闭包范式”或您的标题“第三范式算法”? PS:你的文字没有英文版吗?
-
没有英文版。但我会翻译它。第 1 步:有 A1..Ai...An -> Z 如果存在关系 A1.....An\Ai -> Ai 那么你可以推断出重写第一个: A1..Ai- 1 Ai+1 ... An -> Z。例如:F -> N 和 F,N,P -> T 然后我们将其写为: F,P -> T。第二步:将左边相同公式的关系分组。例如: f1:N-> G, f2:N -> T, f3:H -> K 变为 R1{f1,f2} R2{f3} 。步骤 3:重新组合关系:如果您有 X->Y 和 Y ->X 然后将它们放在同一组中。例如:我有 f4: G -> N。所以 R1{f1,f2} R2{f3} R3{f4} 并应用规则: R1{f1,f2,f4} R2{f3} 。完成
标签: database algorithm normalization