我们有一个小型SQL SERVER 2000数据库,用于进口 - 交易商品并为其扩展新功能。我对实施正确的 PK - FK 关系感到困惑。
我们有三个表:
Contract (ContractID (PK), SupplierID (FK), ProductID(FK), Date, Quantity, Price )
SupplierInvoice ( SupplierInvoiceID (PK), ContractID (FK) , ImportID (FK) , InvoiceNo, Date,Quantity )
Import ( ImportID (PK) , Date )
Truck ( TruckID (PK), ImportID (FK), CustomerID (FK), Date, Quantity)
解释 :
这些是散装产品,没有包装,只有数量。
- 所有 PK 都是代理(自动增量)
- 一份合同可以有 0 到多张发票,一张发票可以只属于一份合同。(几天后 0 张发票将变为 1 张)
- 使用一对多发票,您可以进行 0 对 1 导入。(0 次进口将是 1 次,几天内只有一次)(许多发票意味着可能有部分合同结束和开始。)
- 数量:一份合同的总发票数量不能超过合同数量。我们构建触发器来控制它。进口数量与发票数量完全相同。
问题 :
- 这个模型(PK 和 FK 的)是否正确)?你怎么看?
- 进口后,我们将进口的货物装载到卡车上,因此我们应该输入要从哪个供应商装载的产品。如果我们开始
JOIN
从 Truck Table 到 Contract Table 进行查询,直到我们得到ProductID
,SupplierID
那么它是一个很长的查询。你怎么看? - 您如何看待数量控制?库存是使用报告上的计算字段计算的。
问题 1 和 2 对我们进一步推进非常重要。感谢您的帮助。