我正在设计一个记录产品库存交易的系统。某些产品类型需要按序列号记录项目以便可追溯,某些产品类型不对项目进行序列化。
在记录股票交易时,我可以看到以两种方式设计:1)由父级记录,然后在需要时链接到子表以获取序列号,或 2)由最细粒度的实体(父级本身或父级)记录父级和系列组合。
下面是一张阐明结构的图片。我想知道一个是否正常,另一个是否正常,或者它们是否都正常,这是一个基于系统和用户需求的偏好问题。
删除“串行捆绑id”的概念,并使用交易id作为外键:
create table transaction (
id int primary key,
product_id int not null references product,
quantity int not null
);
create table serial (
id int primary key,
transaction_id int not null references transaction,
quantity int not null
)
请注意,最佳做法是为所有表简单命名主键
id
。我们不会在其他列前添加表名称前缀,例如 transaction_quantity
,id 列也不例外。