我需要设计一个表,但对选择主键字段有点困惑。例如,我正在创建一个包含以下列的表学生
- ID - 唯一键并自动递增 1。
- 注册号码 - 表格中的号码是唯一的
- 姓名
- 注册日期
现在我的问题是:从上表中我们可以看到ID和RegistrationNumber都是唯一的,RegistrationNumber服务于商业目的,而ID用于与其他人引用该表。因此,在这两列中,我可以将哪一列作为主键。
从业务上下文来看,注册号应该是表的主键,但由于我在其他表事件中引用了 ID,所以我可以选择 ID 作为 PK..
请建议我哪一个应该合适。
提前致谢。
最佳答案
您应该为您的 PK 使用代理键。我建议您使用 ID
列作为 PK。
如果 RegistrationNumber
列必须是唯一的,您始终可以对其施加唯一约束
。
在此处阅读代理键:Surrogate vs. natural/business keys
关于Sql表设计-从唯一键与业务键中选择主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067470/