Answers:
在您的情况下,这些字段是自然键。
代理密钥:
代理键是没有“业务”含义的键,仅用于标识表中的记录。这样的键要么是数据库生成的(例如:SQL Server中的身份,Oracle中的Sequence,DB2 UDB中的Sequence / Identity等),要么是系统生成的值(例如通过模式中的表生成的值)。
自然键:
如果键代表的属性用于标识而与数据库模式无关,则键是自然的。这基本上意味着如果人们使用密钥,则密钥是自然的,例如:发票编号,税号,SSN等。
我更喜欢添加代理密钥来分离业务和数据库模型管理。另一个问题是在主键上使用聚簇索引和非聚簇索引。.如果您对表进行更改(非静态表,它具有高强度的插入或更新),则在非单调增加键上使用聚簇索引时,您将遇到性能问题。
复合键作为主键还会遇到索引大小问题,这可能会影响磁盘使用,io速度和备份。您可能想在这里查看Kimberly Tripp关于主键和聚集索引的帖子:http ://www.sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-again!.aspx
我也建议在这种情况下使用替代密钥,而不是自然密钥。