在名称列PK中创建ID而不是ID?

问题描述 投票:-1回答:1

最近,我被要求检查数据库结构,并提出可能更专业地描述数据库的更改。我正在查看表格脚本,并遇到了开发人员创建的表格,但以非常奇怪的方式(至少对我而言)。他没有创建任何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并将其用作主键,并将其用作子表中的外键,因为这对我来说似乎是更专业的方法。

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

sql postgresql
1个回答
1
投票

制造商与零件号之间可能存在多对多关系。因此,对于我来说,这看起来像一个联接表,它解决了多个制造商具有相同零件编号的问题。从某种意义上来说,Manufacturer_number是制造商ID。我希望Manufacturer_number是另一个表中的PK,跟踪每个制造商的详细信息。

长话短说,如果上述内容实际上是该表的目的,我认为不会有问题。

© www.soinside.com 2019 - 2024. All rights reserved.