有时,应用程序中的某些表每个表中只有一列。各个列中的记录数据是唯一的。例如:国家/地区名称表、产品名称表(例如,最长 60 个字符)、公司代码表(3 个字符长,由用户确定)、地址类型表(例如,帐单、交货)等
对于这样的表,由于记录是唯一的且不为空,从技术上讲,唯一的列可以用作主键。
所以我的问题是,使用该列作为表的主键是否足够好?或者,是否仍然需要添加另一列(country_id、product_id、company_id、addresstype_id)作为表的主键?为什么?
预先感谢您的任何建议。
最佳答案
使用代理键和复合键作为主键之间始终存在争议。使用复合主键总是会给数据库设计和应用程序带来一些复杂性。
认为您有另一个表需要与您的结果表(计费表)之间有直接关系。对于复合键场景,您的相关表中需要有 4 列才能与计费表连接。另一方面,如果您使用代理键,您将拥有一个身份列(简单),并且您可以对(country_id,product_id,company_id,addresstype_id)创建唯一约束
但很难说这种方法比另一种方法更好,因为它们都有优点和缺点。
您可以查看This了解更多信息
关于sql - Postgresql:一列表的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722834/