首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么才能把这一切正常化给BCNF呢?

我怎么才能把这一切正常化给BCNF呢?
EN

Stack Overflow用户
提问于 2017-04-08 14:26:26
回答 1查看 103关注 0票数 1

关系是

代码语言:javascript
运行
复制
 Student(StdNo,StdName,appointNo,timing,advisor)

而功能依赖者是:

代码语言:javascript
运行
复制
   StdNo->StdName
   StdNo,appointNo->Timing,advisor
   Timing->appointNo

通过正常化到2NF,我得到:

代码语言:javascript
运行
复制
   R1(stdNo,appointNo,Timing,advisor)
   R2(stdNo,StdName)

我认为这已经在3NF中了。但我很难减少到BCNF。

对于BCNF,我认为R1关系违反了BCNF的时序-> appointNo,并且时序不是超级密钥。我怎样才能减少到BCNF?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-08 16:22:28

您正确地认为R1R2中的分解是在3NF中,而不是在BCNF中,因为您指定的原因(timing → appointNo违反了正常形式)。

因此,您应该在R2R4(StdNo, advisor, timing)中对其进行分解,最后的分解是R1, R3, R4

请注意,通过这种分解,依赖关系StdNo,appointNo → timing,advisor不会被保留。

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

https://stackoverflow.com/questions/43295273

复制
相关文章

相似问题

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