【问题标题】:Satisfying 2NF with two primary keys?用两个主键满足 2NF?
【发布时间】: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


【解决方案1】:

它已经满足 2NF。

FirstName 不能部分依赖于候选键,因为两个候选键(StndtNmbr 和 SSN)各只有一列。

【讨论】:

  • 这个推理是不完整的,因为您没有提到您依赖 {} 不是决定因素。 (对单属性 CK 的依赖对于由 {} 确定的属性是不重要的,即每个元组中的值相同的属性。)无论如何,这个问题有一个常见的问题,它给出了一些 FD 和其他约束,但没有t 实际上说唯一的 FD 是它们给出的那些暗示的那些。
猜你喜欢
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 2020-06-11
  • 1970-01-01
  • 2020-11-17
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多