【发布时间】:2022-01-22 15:14:13
【问题描述】:
我设计了复杂的数据库(自学),但在学校参加了我的第一个官方数据库课程;最近我被分配设计一个 2NF 的数据库模式。
我一直在使用格式如下的表格:
其中STDNTNMBR 对于所有条目必须是唯一的并且SSN 对于所有条目必须是唯一的(不一定是两者的组合)。从本质上讲,STDNTNMBR 和 SSN 都是表的主键。
乍一看,这个表似乎并不属于 2NF,因为非主属性 FIRSTNAME 是部分依赖的,因为它可以依赖于 STDNTNMBR 或依赖于 SSN。
我的问题是:我怎样才能把这张表转换成2NF?
拥有另一个将STDNTNMBR 映射到SSN 的表是没有意义的,例如:
这种类型的关系必须是一对一的,其中StudentSsn.SSN 是主键,StudentSsn.STDNTNMBR 是Student.STDNTNBMR 的外键。
虽然这个提议的解决方案并不完全干净,但它在技术上是 2NF 吗?
还是我完全偏离了轨道?
非常感谢任何帮助!
【问题讨论】:
-
请提出 1 个(具体研究非重复)问题。 PS“是部分依赖的,因为它可以依赖于STDNTNMBR或依赖于SSN”那个“因为”是错误的。完整地写下你的推理,包括技术术语的定义。 PS您的“我的问题是”问题是常见问题解答。请在考虑发布之前阅读手册/参考和谷歌任何错误消息以及您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定名称/字符串/数字、“site:stackoverflow.com”和标签;阅读许多答案。反映你的研究。 How to AskHelp center
-
您的“我有这些 FD”(和 CK)没有意义。 “这些都是持有的FD”?--不可能。 “这些都是持有的不平凡的FD”?--不可能。 “这些是一些持有的FD”?--问题无法回答。找出什么是 cover 以及应用特定定义/规则/算法的确切条件。要确定 CK 和 NF,我们必须得到构成掩护的 FD。有时是最小的封面。并且必须给出所有属性的集合。 See this answer. PS PK 在关系模型和 SQL 中意味着不同的东西。
标签: database schema primary-key database-normalization