PostgreSQL:具有一列的表的主键

时间:2019-02-16 12:01:17

标签: sql postgresql database-design

有时,应用程序中有某些表,每个表中只有一列。各个列中的记录数据是唯一的。例如:用于国家/地区名称的表格,用于产品名称的表格(例如,最多60个字符),用于公司代码的表格(由用户确定的3个字符长),用于地址类型的表格(例如,帐单,交付)等。

对于这样的表,由于记录是唯一的而不是空的,因此从技术上讲,唯一的列可以用作主键。

所以我的问题是,将该列用作表的主键是否足够好?还是仍然需要添加另一列(country_id,product_id,company_id,addresstype_id)作为表的主键?为什么?

预先感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

在使用代理键和复合键作为主键之间总是存在争议。使用复合主键总是会给数据库设计和应用程序带来一些复杂性。

认为您还有另一个表,该表需要在结果表(计费表)之间具有直接关系。对于组合关键方案,您需要在相关表中具有4列才能与帐单表连接。另一方面,如果您使用代理键,则将具有一个标识列(简单性),并且可以在(country_id, product_id, company_id, addresstype_id)

上创建唯一约束

,但是很难说这种方法比另一种更好,因为它们都有优点和缺点。

您可以检查This以获得更多信息