如果我不需要主键,我应该不向数据库添加一个主键?是否可以不使用主键当我不需要一个
回答
主键唯一标识表中的一行。
索引和/或聚集的事实是一个物理实现问题,与逻辑设计无关。
您需要一张表来表达意义。
如果你不需要主键,那么不要使用主键。我通常需要主键,所以我通常使用它们。如果你有相关的表,你可能需要主键和外键。
+1 short and sweet :) – James 2009-11-20 15:33:00
是的,但只是在同样的意义上,如果你不打算在事故中不使用安全带是可以的。也就是说,在需要时付出很大的利益是很小的代价,即使你认为你不需要它,未来也会有机会。不同的是你很多更可能需要一个主键比进入车祸。
你也应该知道,如果你不这样做的话,某些数据库系统会为你创建一个主键,所以你不会在引擎中发生什么。
我不同意。我拒绝佩戴安全带,因为它们阻止我充分接触到我的啤酒。 但我永远不会创建没有PK的表。 – 2009-11-20 16:11:29
@Rev奇闻趣事,你需要的是一个更具战略意义的啤酒持有者。来吧2010年。 – JeffO 2010-03-08 17:56:54
你确实需要一个主键。你现在还不知道。
我曾经以为我不需要主键或者...现在我知道更好。 – MiseryIndex 2009-11-20 16:07:10
+1因为这最准确地反映了现实。我可以看到一个可能不需要一个但很少的情况。 – Murph 2009-11-20 16:10:45
除了当你不需要主键时,你现在知道它。但这是一个不寻常的例子。更好地发挥它安全和错误的赞成PK。 – MarkPflug 2010-11-08 19:20:50
我不知道。我已经使用了几个表格,其中只有一行和一列。将始终只是单行和单列。没有外键关系。
为什么我要在这个主键上?
为什么会有一个表? – 2009-11-20 16:44:09
你需要存储一条信息?像系统宽泛的偏好?每个人都需要这些数据,但是你不想为了获得那一块数据而创建一个全新的东西。 – ElGringoGrande 2009-11-20 20:12:22
啊。但是你确实想在这个表上使用主键。还有一个检查约束将主键限制为单个值。因为否则,你会在6个月后回来,发现有人为你添加了另一行,你的应用程序正在拾取哪一个是任意的... – 2010-03-04 15:46:54
主键主要是正式定义来帮助参考完整性,但是如果表格非常小或者不可能包含唯一数据,那么这是一个不必要的开销。 在表上定义索引通常可以用来暗示主键而不用正式声明。 但是,您应该考虑定义主键对于开发人员和架构生成或SQL开发工具非常有用,因为让元数据有助于理解,并且一些工具依靠此来正确定义模型中的主键/外键关系。
那么......
关系型数据库中的每个表都需要一个主键。正如已经指出的那样,主键是唯一标识记录的数据...如果您有一个连接两个不同表的NM表,但您可以唯一地识别出一个“ID”字段,那么您可能会失去一个“ID”字段通过您加入的两列中的值来确定记录。 (复合主键)
有一个表没有主键是针对第一范式,并没有任何的关系数据库
不,除非你能找到,“这个数据库的例子会做如果table_x没有主键,则工作得更好。“
如果不需要性能,数据完整性和规范化,您可以进行永不使用主键的争论,可能不需要安全性和备份/恢复功能,但最终,您会将您的大男孩裤子并加入数据库实现的真实世界
是的,一个表应该总是有一个主键...除非你不需要唯一地标识它中的记录(我喜欢做出绝对的语句,并立即与之矛盾)
什么时候你不需要唯一地标识表中的记录?几乎从不,我之前做过这样的事情,比如审计日志表。或删除,并不会受到任何限制。基本上结构化的日志。
你应该总是有一个主键,即使它只是在ID上。也许NoSQL是你所追求的(只是问)?
这很大程度上取决于你如何确定你不需要。如果您有一丝怀疑,请添加一个 - 稍后您会感谢您。一种指标,如果您存储的数据可能与您的数据库中的其他数据有关联。
我能想到的一种用例是一种日志类型的表格,您可以在其中简单地转存一个条目(以便稍后正确处理它们)。如果您要存储足够的数据以过滤出相关的消息(如日期),那么您可能不需要主键。当然,为此使用RDBMS是值得怀疑的。
- 1. 我是否需要一个简单的表中的主键?
- 2. 我可以不需要使用Vue吗?
- 3. 当我们不需要我们的表的主键?
- 4. 我的表不需要主键,我应该使用它吗?
- 5. 是否可以使用React和打字稿一起使用而不需要transpiling
- 6. 我是否需要知道PHP,使自举一个WordPress主题?
- 7. 我是否需要WCF如果我可以使用ASP.net Web API
- 8. 是否需要主键? (6NF实现)
- 9. 此表是否需要新的主键?
- 10. RedBean是否需要“id”主键?
- 11. 我是否需要为每个表定义一个新的主键字段?
- 12. 在doctrine2中是否可以有一个不是主键的自动增量列?
- 13. 是否有可能使一个函数自我意识,而不需要外部
- 14. 我是否需要使用substr()来调出一个目录或者我可以使用另一个代码?
- 15. 您需要使用theme.appcompat主题 - 但我是,不是吗?
- 16. 我是否需要在一个表上删除一个外键以删除另一个使用oracle的行?
- 17. 当我使用app.add_url_rule时,是否需要命名这个url?
- 18. 当我们可以通过主键唯一识别一个元组时,为什么需要superkey?
- 19. 我们是否需要为主键指定“not null”? Oracle/SQL
- 20. 我们是否需要将主键添加到多列索引?
- 21. 我们是否总是需要使用async关键字?
- 22. 不知道我是否需要一个互斥体
- 23. 不确定我是否需要一个组或其他东西
- 24. 我需要一个按键代码,它可以正常工作
- 25. 当不级联字段时,您是否需要使用@Transient?
- 26. 我们是否需要引用另外两个表的表上的主键?
- 27. 使用Eclipse读取JSON文件,我需要一个库还是不需要
- 28. 我是否需要填写外键值?
- 29. 唯一键可以用作主键,那么我们为什么要保留另一个主键?
- 30. 当我使用Apache Tiles时,是否需要使用XHTML?
几乎没有任何情况下您不需要主键。基本上,如果表没有主键,它不是表 - 它只是一堆数据。 – 2009-11-20 15:33:00
它可能与您的问题没有关系,但我确实需要问:*您为什么不觉得您需要一个?* – 2009-11-20 15:33:03
您能否向我们提供有关您正在处理的情况的更多信息?主键并不总是必要的,但如果我们知道你在做什么,我们可能会给你一些更好的建议。 – TLiebe 2009-11-20 15:34:21