假设您有一个汇总表,该汇总表只有一行(存储一行关于另一个表的统计信息)。在这种情况下,我正在使用InnoDB,以便我可以更新它以及它意味着包含事务性摘要的表。我应该让这个表有一个主键吗?如果是这样,那么,只是一个总是等于1的tinyint?
答案 0 :(得分:3)
InnoDB
将为您创建一个隐藏的主键。
有时可以更轻松地访问此密钥,如
INSERT
...
ON DUPLICATE KEY UPDATE
可用于更新此表,无论它是否已有值。
是的,只需使用常量1
。
答案 1 :(得分:2)
我认为你应该,你不知道将来你是否可以使用相同的表来存储其他表的统计数据,这似乎是store'em的好地方,那么你需要识别每一行桌子。
答案 2 :(得分:1)
我会在其上放置一个标识列(我不知道InnoDB的等价物是什么)。这样做无害,如果您需要,可以更容易地选择或删除特定行。
答案 3 :(得分:1)
鉴于大多数其他答案都是“不,你不需要答案”,我将提供魔鬼的辩护答案。
主键约束可确保您不会在应用约束的列中获取具有重复值的行。你说你希望这个表有一行,那么为什么不会你声明约束?它可以帮助防止重复,这是你想要的。
答案 4 :(得分:0)
在这样的情况下,我从不打扰。 PK用于区分其他记录,在这种情况下没有。
答案 5 :(得分:0)
如果您计划扩展此表怎么办?定义一个键可能会有所帮助。同样,这只是一种意见,而不是你的必要条件。
答案 6 :(得分:0)
我现在不介绍PK。如果您决定将此表用于其他记录,只需重构并添加一个新行(正如您可能需要的那样)(过早优化)。添加这样的PK还有一个原因:如果你使用的框架在没有标识记录的PK的情况下无法更新记录。