我为系统设计关系数据库,该系统存储零售商的某些类型的产品,零售商和供应商的信息。
一些供应商销售相同的产品 - 但是,他们没有标识产品的标准,这意味着供应商A可能拥有ID为618261的产品,相当于供应商B的产品007162
问题是,我不想为不同的供应商多次存储相同的产品。目前,我有以下表格:
等价
产品
这似乎是一个坏主意。每当将某些内容插入产品'
时有更聪明的方法吗?
答案 0 :(得分:1)
这不是一种罕见的情况,不同的供应商多次会为共同的产品拥有自己的SKU编号。此外,产品可能有不同的制造商,每个制造商都有自己的部件号。但让我们看一下供应商。
用简单的英语,供应商可能提供许多产品,许多供应商可能提供产品。通过交叉或交叉表维护这种多对多关系。如果您考虑一下,SKU编号不是产品实体或供应商实体的属性。相反,它是关系的一个属性。是的,关系可能与任何实体一样具有属性。
create table ProductSupplier(
ProductID int not null references Products( ID ),
SupplierID int not null references Suppliers( ID ),
UnitPrice currency not null,
SKU varchar
);
UnitPrice可能是每单位价格的列表,根据订购的数量而有所不同。因此,它可能会在另一个表格中 - 我在此处添加了它以显示其他供应商 - 产品关系属性。
再次用简单的英语,这个表格中的元组说“ SKU编号。