首页 > 解决方案 > 制作名称列PK是不好的做法而不是ID?

问题描述

我最近被要求检查数据库结构并提出可能更专业地描述数据库的更改。我正在浏览表格脚本并遇到了一个开发人员创建的表格,但以非常奇怪的方式(至少对我而言)。他没有创建任何 ID 列来唯一标识记录,而是将该name列设置为 PK 并在子表中引用它,这对我来说很奇怪,因为我以前从未使用过这种做法。

这是数据库的结构:

CREATE TABLE  egc_manufacturer 
(
     manufacturer_part_number varchar(500) not null,
     manufacturer_number varchar(500) not null,
     manufacturer_name varchar(500) default null,
     supplier_contact varchar(200) default null,
     supplier varchar(50) default null,
     insertion_timestamp timestamp(0) default current_timestamp,
     cmrt_supplier_contact varchar(200) default null,

     primary key (manufacturer_part_number, manufacturer_number)
);

我强调添加一列ManufacturerID并将其作为主键并将其用作子表中的外键,因为这对我来说似乎是更专业的方法。

我只是想知道我的建议是否真的会对设计产生一些影响,即使不会提高性能?我应该要求他们改变桌子设计还是让它改变?希望有人能解释一下。

标签: sqlpostgresql

解决方案


制造商和零件编号之间可能存在多对多关系。所以,这对我来说就像一个连接表,它解决了多个制造商具有相同部件号的问题。从某种意义上说,manufacturer_number 就是manufacturerID。我希望manufacturer_number 是另一个表中的PK,跟踪每个制造商的更详细信息。

长话短说,如果我上面描述的实际上是这张表的目的,我认为没有问题。


推荐阅读