首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将关系转换为BCNF

将关系转换为BCNF
EN

Stack Overflow用户
提问于 2021-04-06 07:16:13
回答 1查看 49关注 0票数 0

关系R= {C,SN,OD,CH,CL,I,S,Y,D,RM,NS}。

以下函数依赖关系成立:

{C} -> {OD,CH,CL}

{C,SN,S,Y} -> {D,RM,NS,I}

{RM,D,S,Y} -> {I,C,SN}

我需要将其转换为BCNF。

我将其分为两个子关系R1 = {C,OD,CH,CL}和R2={C,S,Y,D,RM,SN,I,NS}

现在我可以看到R1在BCNF中,但我不确定R2。这来自于{C,SN,S,Y} -> {D,RM,NS,I}的想法,因此似乎一些非关键属性决定了关键字的一部分。但是非键属性也需要S,Y,它们是键属性,所以我不确定BCNF规则是否成立。

那么R2在BCNF中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 16:33:52

假设您给出的函数依赖项覆盖了R的所有函数依赖项,则该关系的候选键是{C, S, SN, Y}{D, RM, S, Y}。这可以通过计算两组属性的闭包来检查,其中包含R的所有属性,而通过从中删除任何属性而获得的闭包并不包含所有属性。

您的分解在BCNF中,而R2在BCNF中。事实上,R2的依赖关系的封面是:

代码语言:javascript
复制
{D, RM, S, Y} -> {C, I, SN}
{C, S, SN, Y} -> {D, NS, RM}

我们可以看到,在这两者中,行列式都是一个候选关键字。

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

https://stackoverflow.com/questions/66960881

复制
相关文章

相似问题

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