【发布时间】:2010-12-18 18:41:57
【问题描述】:
如果我不需要主键,我是否应该不向数据库添加主键?
【问题讨论】:
-
几乎没有不需要主键的情况。基本上,如果一个表没有主键,它就不是一个表——它只是一堆数据。
-
这可能与您的问题无关,但我确实需要问:您为什么不觉得自己需要一个?
-
您能否向我们提供有关您正在处理的情况的更多信息?主键并不总是必要的,但如果我们知道您想要做什么,我们可能会给您一些更好的建议。
-
您能否解释一下您认为您可能不需要 pkey 的原因?我真的想不出有什么理由忽略它。即使是单表数据模型也需要一个 pkey 来唯一标识一行。
-
我有 Murph 建议的日志表。当您有可能相同但同时发生的事件时(特别是如果使用 SMALLDATETIME),您使用什么作为主键,为什么? PK 不是性能所必需的(聚集索引与 PK 没有任何关系),如果您也不需要查找任何内容......在这种情况下,我使用索引视图来提供聚合统计信息,但是我认为没有理由定义 PK。我同意,尽管在大多数情况下,您确实需要主键,而在大多数情况下,您认为不需要主键,但实际上确实需要。
标签: sql database-design primary-key normalization