我们这样做会打破 3NF 吗?

问题描述 投票:0回答:1

我有一张表,其中保存了每个学生喜欢与谁互动的偏好:

学生证 学生姓名 偏好1 偏好2 偏好3
1 abc 定义 xyz
2 定义 abc xyz
3 abc 定义 xyz
4 xyz abc 定义

每个学生都列出了他们对合作伙伴的偏好。这种偏好不应该重复,显然他们不能与自己合作。这个表违反了3NF吗?

chatgpt 说:

不,该模型不遵循第三范式(3NF),因为它引入了 Student 模型中属性之间的传递依赖关系。

我们来分析一下模型:

Preference3、Preference2、Preference3:这些属性代表首选的游戏/工作伙伴的 ID。然而,这些属性引入了传递依赖性,因为它们相互依赖。例如,如果我们想要更新或删除首选合作伙伴,我们可能需要更新学生表中的多个字段。因此,这违反了第三范式(3NF)。

我不确定这是否正确。有人可以解释一下吗?

database normalization database-normalization
1个回答
0
投票

我建议您通过添加外键约束来创建以下结构,然后该结构成为“一对多关系”,因为一个学生可以有多种偏好:

学生桌: |学生证 |学生姓名 | | -------- | -------------- | | 1|约翰| | 2|玛丽| | 3|布莱恩|

学生偏好表 |学生证 |偏好 | | -------- | -------------- | | 1|数学| | 1|科学| | 1|文学家 | | 2|数学 | | 2|英语 | | 2|理念 |

© www.soinside.com 2019 - 2024. All rights reserved.