我看到的许多表设计都有一个 id 列作为主键。例如一些 Logging 表中的 log_id,一些事件表中的 event_id 等等。该列将不依赖于任何其他表中的任何其他列,并且唯一标识该记录。从查找的角度来看,用于查找信息的列通常是表中也可以被索引的其他列(status/event_type/etc 等)。那么,有什么必要有这样一个 id 列来表示表中的记录呢?如果我要从日志表中删除这样的 id 列,并且可能改为使用复合键,我犯了什么罪?为什么在表中拥有如此独特的 id 列而在应用程序中不使用该列的情况如此普遍?希望听听专家的意见。:o
更新:谢谢大家的快速回复!首先,我想了解为什么在诸如审计表之类的表中使用代理键而不是复合键是如此普遍的做法(还有其他示例,但试图保持对话的重点)。在这样的表中,我可以通过事件、用户 ID 和时间戳的组合轻松识别唯一记录。我在网上研究的大多数设计仍然使用诸如 event_id 之类的键。如果有任何真正的原因,我试图理解为什么会这样?事实上,这是否意味着消耗不必要的数据库存储空间?