首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进展到3NF

进展到3NF
EN

Database Administration用户
提问于 2017-02-12 16:48:43
回答 1查看 65关注 0票数 0

我的关系是:

代码语言:javascript
复制
H = {A,B,C,D,E}
A -> C
{A,D} -> E
B -> C
{B,D} -> E
C -> B
E -> C

我必须把这个关系转换成3NF。候选密钥:{A,D}

第一步是最小化。在最小化中,我可以将{A,D} -> E从fds中删除。

代码语言:javascript
复制
H = {A,B,C,D,E}
A -> C
B -> C
{B,D} -> E
C -> B
E -> C

分解:

代码语言:javascript
复制
H1 = {A,C} with key A
H2 = {B,C} with key B and FD: B -> C
H3 = {B,D,E} with key {B,D}
H4 = {C,B}  with key C and FD: C ->B
H5 = {E,C} with key E
H6 = {A,D} with key A // added because one relation must contains key

当我看到H2和H4时,我感到很困惑。他们看起来几乎一样。那么,应该把两者合并成一个吗?为了得到一种关系:

H2 = {B,C} with keys {B},{C} and fds: B -> C, C -> B

由于relations H1H6有相同的键,我可以合并它们吗?

谢谢你的帮助

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-02-12 20:25:47

H2H4是完全相同的关系,因为属性的顺序并不重要。一般来说,综合算法要求,在第一阶段之后,您应该删除其他步骤中包含的所有关系。因此,第一个问题的答案是肯定的,当然,关系{B, C}有两个依赖项B → CC → B,以及两个候选键BC

另一方面,H1H6是不同的关系,不应该合并在一起(而且,它们没有相同的键,因为H1有键A,而H6有键{A, D} (并且没有依赖项))。

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

https://dba.stackexchange.com/questions/164104

复制
相关文章

相似问题

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