首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当函数依赖是循环时会发生什么?

当函数依赖是循环时会发生什么?
EN

Stack Overflow用户
提问于 2012-02-24 01:39:15
回答 1查看 2.4K关注 0票数 0

我正在尝试将以下关系分解为3NF:

代码语言:javascript
复制
A -> BCD
BC -> DE
C -> D
D -> A

所以我去掉了冗余,得到了规范的封面:

代码语言:javascript
复制
A -> BC
B -> E
C -> D
D -> A

现在我正在尝试将其分解为3NF。

我应该分解成r1(A, B, C) r2(B, D), r3(C, D)吗。那我该怎么处理D -> A呢?

事实是A -> B -> D -> A把我甩了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-09 02:45:28

给定的

代码语言:javascript
复制
A -> BCD
BC -> DE
C -> D
D -> A

为了获得规范覆盖,我们首先从BC->DE中删除D:

代码语言:javascript
复制
A -> BC
BC -> E
C -> D
D -> A

接下来,我们观察到C->D,D->A,A->BC,如果我们知道B->E,那么我们也知道C->E。因此,

代码语言:javascript
复制
A -> BC
B -> E
C -> D
D -> A

3NF分解的工作原理如下:

1)为规范封面中的每个依赖项创建表

代码语言:javascript
复制
R1(A,B,C) R2(B,E) R3(C,D) R4(A,D)

2)确定R的候选键。如果步骤1的表中没有候选键,则添加一个仅包含候选键属性的新表。

这里A是一个候选键,它包含在R1 (和R4)中,所以不应该添加新的表。

3)如果存在一个表,它的属性是另一个表的属性子集,则删除“包含”表。

这不适用,因此3NF分解保持不变。

如你所见,循环依赖不是问题。

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

https://stackoverflow.com/questions/9418210

复制
相关文章

相似问题

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