【发布时间】:2014-12-29 00:17:44
【问题描述】:
目前在我的数据库课程中,我们正在讨论关系模型和规范化等。我已经轻松回答了作业中的每一个问题,但这个问题让我陷入了困境:
- 如果表没有候选键,那么设计表的一般做法是什么?
这里没有没有候选键的表的示例。上面的问题是我的全部,我觉得这太模糊了。
我的第一个想法是找到任何决定因素(即使它们不是候选键)并创建一个具有这些功能依赖的新表,但我什至不知道表中存在任何功能依赖.有没有可能的答案?
【问题讨论】:
-
为什么有人会投票结束这个问题?
-
显然,它太宽泛了。很可能还有另一个问题,这是重复的。一个严肃的问题是重新评估表格的内容;为什么没有候选键?它持有什么数据?您确定没有办法区分表面上相同的行——也许是基于记录数据的时间?
-
@JonathanLeffler 我不知道。这就是为什么我很困惑。没有具体的例子可以看,所以也许你刚才提到的所有事情以及安德鲁的答案都是我的教授正在寻找的。不是如何修复它,而是可以采取哪些步骤来修复它?我将不得不问他在寻找什么,但我认为这是一个很好的问题,可以作为规范化讨论的一部分带到这里。
-
后备方案是添加某种“身份”列,但这并不理想。检查数据并理解其含义至关重要。我认为是 Codd 指出“说两遍并不能使事情变得更真实”。表中的行是对真理的断言;有两行说同一件事是两次断言同一件事。行之间必须有一些差异 - 否则您不会同时插入两者。那么这两行的区别是什么?
-
这就是我感到困惑的原因。假设我们的表是至少第一范式,我无法想象它没有候选键。但这是可能的。
标签: database relational-database normalization database-normalization