首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >4NF分解后新关系的主键

4NF分解后新关系的主键
EN

Stack Overflow用户
提问于 2012-04-23 05:06:07
回答 1查看 750关注 0票数 1

假设我有一个表R,其属性为ABC,其中A是主键。假设我有多值依赖项B->-> C。我将表R分解为两个新表R1R2,其中R1有属性AB和key AR2具有属性BCR2的主键是什么?

我认为答案应该是:由于4NF要求每个MVD的左边应该是一个超级键,那么在新的表中,键将是B,尽管整个属性集也可以是一个超级键(尽管这是一个微不足道的属性,但在4NF分解中这并不重要)。所以,这是我的猜测。

根据Catcall的优秀建议,由于B的多值依赖性,生成的R2表将有许多行具有重复的值。键的替代选项是C本身以及B和C。如果C->B持有,则c可以是主键,在这种情况下,C可以作为主键。因此,在这种情况下,唯一的键是B,c。有人能检查我的推理是否正确吗?

EN

回答 1

Stack Overflow用户

发布于 2012-09-05 10:33:54

如果我没听错的话,你有:

A -> B

B ->-> C

这意味着,对于A的每一个值,只有一个B的值,而对于B的每个值,有许多的C值。

分解后使(A,B)成为R1的超键,(B,C)成为R2的超键。

因此,到目前为止,理由是正确的。然而,我不认为你能在现实世界中结束。如果您正在设计数据库,您还需要问以下问题:

  1. 是真的吗?C -> B如果是,C将是您的主键,(B,C)将是超级密钥。
  2. 是真的吗?C ->-> B,如果是这样的话,那么实际上在另外两个实体之间有许多连接。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10275080

复制
相关文章

相似问题

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