我是否需要在多个表中继承外键?

时间:2014-01-16 16:25:00

标签: mysql sql foreign-keys foreign-key-relationship

我在MySQL数据库中有许多表。它们的定义如下:

机构

  • AgencyID
  • AgencyName

单位

  • OrgID
  • OrgName
  • Agencies_AgencyID(与Agency表的一对多关系)

位置

  • LocationID
  • LOCATIONNAME
  • Orgs_OrgID(与Orgs表的一对多关系)
  • Orgs_Agencies_AgencyID(继承关系)

问题:我是否需要在Locations表中包含Orgs_Agencies_AgencyID列?与代理商表的关系已经在组织表中建立。

如果我创建另一个链接到Locations表的表,该怎么办?我需要继承LocationID - 我是否还需要继承OrgID和AgencyID?或者可以从早期的表中交叉引用它们吗?

谢谢,如果你能提供帮助..

1 个答案:

答案 0 :(得分:1)

  

我是否需要在中包含Orgs_Agencies_AgencyID列   地点表?

除非作为优化,否则您不需要包含Locations.Orgs_Agencies_AgencyID

如果您计划使用所有三个表格运行查询,则只需使用Orgs.Agencies_AgencyID,而无法在地理位置中使用Locations.Orgs_Agencies_AgencyID

此外,地点信息表存在问题:

1)您可能需要规范化Locations表,如下所示:

位置

  • LocationID
  • LOCATIONNAME

Organization_Locations

  • LocationID
  • Orgs_OrgID(与Orgs表的一对多关系)

2)现在你的桌子就是:

  • 1个位置分配给1个组织。
  • 如果为两个组织(例如联合办事处)分配了相同的位置,则您有重复的行。