【问题标题】:3rd Normal Form Algorithm第三范式算法
【发布时间】: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 -> AA -> B 的所有关系V -> B

这让我想到了我的问题。在我看来,我没有什么可删除的,这意味着对于 FN3,我将拥有上述关系描述的 4 个表。但是常识告诉我我应该主要只有两张桌子 R1(#name,street,city,zip)R2(city,region)。我可以删除以下 2 个关系: S,C -> ZZ -> C ? (我有N -> S,CS,C -> ZZ - > 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


【解决方案1】:

不,您不能在不丢失信息的情况下删除这些关系。再举个例子,你最终会得到N -> C,它会丢弃你的大部分属性。

问题是您将所有-> 关系视为平等,但事实并非如此。也许N -> S,C,R,Z 是1:1 关系,但C -> R 是many:1 关系(一个地区有许多城市),Z -> C 是1:many 关系(一个邮政编码有许多城市)。

使用不同的符号来表示这些其他关系,例如C =} RZ {= C。然后规范化你的表关系。

【讨论】:

  • 我明白了,老实说,我没有想到这一点。谢谢你的回答!
  • @LucianTarna 这个答案没有意义。例如,在表中保存的函数依赖“Z->C”意味着给定的 Z 属性值总是与一个 C 属性值一起出现。
猜你喜欢
  • 2013-12-13
  • 2021-11-21
  • 2017-05-27
  • 1970-01-01
  • 2015-09-08
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多