我知道这个问题已经被问过很多次了,但是请在这个例子中解释一下。
所以...我有 2 个表:用户和组
Users(ID, Name...)
Groups(ID, UserID[FK], GroupName)
每个用户在Groups表中可以有多个记录(组)。
好的,那么为什么我真的需要 Groups 表中的 ID 字段?
我做的每个 SQL 都是这样的:
SELECT * FROM Groups WHERE UserID = ...
此外,用户不能有重复的组,因此表中永远不会有 2 行。
那么,ID字段是干什么用的呢?
最佳答案
您不需要使用单个整数列作为主键 - 您可以将主键定义为 UserID
和 GroupName
。
为什么要使用主键?
根据您的 DBMS,表中的记录将按主键组织,从而使按该键的查找速度尽可能快。定义主键非常容易。对于所涉及的微小投资,您将获得性能和可扩展性的巨大提升。
几乎所有的 DBMS 都强制主键的唯一性。你说一个用户不能有同一个组两次。将主键定义为
UserID
和GroupName
,您可以在数据库级别(无需任何其他代码)保证该假设始终为真。
关于sql - 数据库表中有主键真的有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109557/