如果我不需要主键,我不应该在数据库中添加一个吗?
12 回答
你确实需要一个主键。你只是还不知道。
主键唯一标识表中的一行。
它被索引和/或聚集的事实是一个物理实现问题,与逻辑设计无关。
你需要一个表才有意义。
如果您不需要主键,则不要使用主键。我通常需要主键,所以我通常使用它们。如果您有相关的表,您可能需要主键和外键。
是的,但只是在同样的意义上,如果您不打算发生事故,可以不系安全带。也就是说,当你需要它时,付出很小的代价就能获得很大的好处,即使你认为你不需要它,你也很有可能在未来会用到它。不同之处在于,与发生车祸相比,您需要主键的可能性要大得多。
您还应该知道,如果您不这样做,某些数据库系统会为您创建主键,因此您不会在引擎中发生的事情上节省太多。
不,除非你能找到一个例子,“如果 table_x 没有主键,这个数据库会工作得更好。”
如果不需要性能、数据完整性和规范化,您可以争辩永远不要使用主键。可能不需要安全和备份/恢复功能,但最终,你穿上你的大男孩裤子,加入数据库实现的现实世界。
是的,一个表应该总是有一个主键......除非您不需要唯一标识其中的记录。(我喜欢做绝对的陈述并立即反驳它们)
什么时候不需要唯一标识表中的记录?几乎从不。我以前做过审计日志表之类的事情。不会更新或删除的数据,也不会以任何方式受到限制。本质上是结构化的日志记录。
主键总是有助于提高查询性能。因此,如果您需要使用“键”查询“外键”,或者用作查找,那么可以,创建一个外键。
我不知道。我使用了几个表,其中只有一行和一列。将始终只有一行和一列。没有外键关系。
我为什么要在上面放一个主键?
主键主要是为了帮助参考完整性而正式定义的,但是如果表非常小,或者不太可能包含唯一数据,那么这是不必要的开销。在表上定义索引通常可用于暗示主键,而无需正式声明主键。但是,您应该考虑到定义主键对于开发人员和模式生成或 SQL 开发工具很有用,因为元数据有助于理解,并且一些工具依赖于此来正确定义模型中的主键/外键关系。
好...
关系数据库中的每个表都需要一个主键。如前所述,主键是唯一标识记录的数据......
如果您有一个连接 2 个不同表的 NM 表,您可能会因为没有“ID”字段而侥幸,但您可以通过您连接的两个列的值来唯一地标识记录。(复合主键)
没有主键的表是违反第一范式的,与关系数据库无关
你应该总是有一个主键,即使它只是在 ID 上。也许 NoSQL 是您所追求的(只是问)?
这在很大程度上取决于你能确定你不需要一个。如果您有一点点疑问,请添加一个 - 您稍后会感谢自己。一个指标是您存储的数据是否可能在某一时刻与数据库中的其他数据相关。
我能想到的一个用例是一种记录类型的表,您只需在其中一个条目后转储(以便以后正确处理它们)。如果您要存储足够的数据来过滤掉相关消息(如日期),您可能不需要主键。当然,为此使用 RDBMS 是有问题的。