我有多个名为DrugProd,PlasticProd,FoodProd的表,每个表都有自己的一组属性。我有另一个名为ProdLot的表。我希望此表中的行属性引用三个表之一中的行(ID)。在ProdLot表的一行中识别表和ID的最佳方法是什么。 ProdLot表有其他列,如名称,批次中的项目数等。 谢谢。 吉里什
答案 0 :(得分:0)
最好的方法是向ProdLot
添加三列:
DrugProdId
这是一个外键,引用DrugProd(Id)
,
PlasticProdId
这是一个外键,引用PlasticProd(Id)
和
FoodProdId
这是一个外键,引用FoodProd(Id)
。
在这三个ID中,在任何给定时刻只允许一个非空。在ProdLot
表定义中,您可以使用CHECK
约束强制执行此操作。
这是最好的方法,因为它允许您的架构继续成为有效的关系数据库架构,其中仍然可以强制执行 参照完整性 。
答案 1 :(得分:0)
我喜欢识别以字母“fk”+ [表格名称]开头的外键。这样很明显该字段是外键。
因此,如果你在ProdLot中有一个外键引用DrugProd的主键,它可以被识别为以下名称之一:
另外,在DrugProd表中,我将主键命名为“id”+ [表名]。例如,选择以下选项之一:
当您选择加入多个表时,此命名架构将帮助您避免名称冲突并快速识别主键和外键。