1

问题:

将 PERSON 关系放入 4NF 中

PERSON (Name, Sibling, Shoe_Size) 假设存在以下函数依赖:

名称 -->--> 兄弟姐妹

名称 --> Shoe_Size

.....................

我在 4NF 表格下面的正确版本是什么?仍然让我的头脑围绕规范化。

列出多值依赖项

名称 -->--> 兄弟姐妹

将多个依赖项拆分为自己的表

PERSON_2([PK]PersonName, Shoe_Size)

SIBLING([FK]PersonName, SiblingName)

第二步:列出功能依赖

PersonName -> (Shoe_Size, SiblingName)

第三步:列出初始候选键

人名

第七步:陈述最终表格并创建参考完整性约束

PERSON_2([PK]PersonName, Shoe_Size)

SIBLING([FK]PersonName, SiblingName)

..

WHERE SIBLING.PersonName 必须存在于 PERSON_2.PersonName 中。

4

1 回答 1

2

你唯一忘记的是约束

PERSON_2.PersonName 必须存在于 SIBLING 中。

否则,您生成的数据库设计不完全等同于原始设计。

(很多时候,这也表明您的原始设计一开始就不太适合解决手头的业务问题,但规范化理论并不关心原始设计的适应性。)

于 2013-09-07T22:35:49.240 回答