首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >第三范式算法

第三范式算法
EN

Stack Overflow用户
提问于 2015-06-05 17:01:52
回答 1查看 112关注 0票数 2

我先举一个例子来回答我的问题。

假设我们有具有以下属性的表入口:

代码语言:javascript
运行
复制
-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) 

属性之间的关系如下

代码语言:javascript
运行
复制
N -> S,C,R,Z   
C -> R  
S,C,R -> Z  
Z -> C  

我用以下规则消除冗余状态:如果是A1 ...Ai ... An -> T,也有:{A1...An}/Ai -> Ai,那么Ai在第一个关系中是冗余的。

因此,我们有:

代码语言:javascript
运行
复制
 N-> S,C  
 C -> R  
 S,C -> Z  
 Z -> C 

现在,我必须删除所有的关系V -> B,在这里我已经有V -> AA -> B

这就引出了我的问题。在我看来,我没有什么要删除的,这意味着,对于FN3,我将拥有上述关系所描述的4个表。然而,常识告诉我,我应该只有两个表,主要是R1(#name,street,city,zip) R2(city,region)。我可以删除以下两个关系:S,C -> ZZ -> C?(我有N -> S,CS,C -> ZZ - > C,所以在我看来,我已经删除了前2.)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 22:24:30

不,你不能在不失去信息的情况下删除这些关系。为了进一步了解您的示例,您将得到N -> C,它删除了大部分属性。

问题是,您将所有->关系视为平等,但它们不是。N -> S,C,R,Z可能是1:1关系,但C -> R是多:1关系(一个地区的许多城市),Z -> C是1:多关系(一个邮政编码有多个城市)。

使用不同的符号来表示这些其他关系,如C =} RZ {= C。然后让你的桌子关系正常化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30672040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档