定义mysql表关系

时间:2016-09-28 14:18:33

标签: mysql

我有多个名为DrugProd,PlasticProd,FoodProd的表,每个表都有自己的一组属性。我有另一个名为ProdLot的表。我希望此表中的行属性引用三个表之一中的行(ID)。在ProdLot表的一行中识别表和ID的最佳方法是什么。 ProdLot表有其他列,如名称,批次中的项目数等。 谢谢。 吉里什

2 个答案:

答案 0 :(得分:0)

最好的方法是向ProdLot添加三列:

  • DrugProdId这是一个外键,引用DrugProd(Id)

  • PlasticProdId这是一个外键,引用PlasticProd(Id)

  • FoodProdId这是一个外键,引用FoodProd(Id)

在这三个ID中,在任何给定时刻只允许一个非空。在ProdLot表定义中,您可以使用CHECK约束强制执行此操作。

这是最好的方法,因为它允许您的架构继续成为有效的关系数据库架构,其中仍然可以强制执行 参照完整性

答案 1 :(得分:0)

我喜欢识别以字母“fk”+ [表格名称]开头的外键。这样很明显该字段是外键。

因此,如果你在ProdLot中有一个外键引用DrugProd的主键,它可以被识别为以下名称之一:

  • fkDrugProd
  • FkDrugProd
  • fk_drug_prod
  • FK_DRUG_PROD

另外,在DrugProd表中,我将主键命名为“id”+ [表名]。例如,选择以下选项之一:

  • idDrugProd
  • IdDrugProd
  • id_drug_prod
  • ID_DRUG_PROD

当您选择加入多个表时,此命名架构将帮助您避免名称冲突并快速识别主键和外键。