当一个索引来自两个不同的表时,我们如何建立表关系?

时间:2013-06-15 18:03:40

标签: mysql relational-database entity-relationship

我有一个名为addresses的表,它存储来自这两个表peoplecompanies的N:N子信息。

因此,我创建了另一个名为address_links的表格,其中包含字段address_idcontact_id,以便联系人ID可以来自people或来自companies记录。

所以我需要另一个字段,通过创建记录,指向正确的表。但是,当我在查询列表中创建显示该地址所有者名称的查询时,我该怎么做才能自动化该解释?我尝试IF以便通过选择表来说明第三个字段,但它没有用。

解释注意:某个地址可能是不止一个人的住所或工作地点。

1 个答案:

答案 0 :(得分:2)

如果您需要链接到不同的表,那么通常您希望为每个表都有一个单独的链接表。这允许数据库强制执行参照完整性并消除对特殊if语句的需要,如果另一个开发人员在不必了解特殊实现细节的情况下查看数据库,它也使数据库更容易理解。

示例表(列):

 Addresses (AddressId, Address, City, State, Zip, ...)
 Persons (PersonId, FirstName, ...)
 Companies (CompanyId, Name, ...)

 AddressPersonLinks (AddressId, PersonId)
 AddressCompanyLinks (AddressId, CompanyId)