字段,外键,可以引用多个表

时间:2011-07-05 22:01:02

标签: php mysql doctrine-orm polymorphic-associations

我正在为内联网开发一个社交网络,我遇到了一个问题[?]。我将实体 用户 商家 作为网络的主要实体。

  

注意:商家不一定与用户建立关系。

遵循这个想法,我有一个表,用户可以创建业务,有一个问题,如何在此表中创建作者字段?

我做了以下操作,创建了一个表 type ,其中包含以下数据:

 id | name
  1   user
  2   business

我的表分组就像这样:

 id
 name
 description
 tid (FK -> type.id)
 author (INT)

因此,如果的tid等于1,则表示作者指的是用户,如果它的tid等于2,则表示到业务

您对此实施有何看法?它是正确的? 我该怎么做才能改善它?

我正在使用PHP 5.3.6(Zend Framework和Doctrine2)+ MySQL 5.1。

2 个答案:

答案 0 :(得分:2)

按要求:

这个术语是“多态的”。 Bill Karwin有一个很好的答案,我目前无法找到它。从数据库设计的角度来看,我被告知逻辑模型术语是一个“弧”关系。无论哪种方式,除了支持多位作者之外,我认为您发布的内容没有任何问题。

答案 1 :(得分:1)

关于这一点的坏处是,如果你这样做,就不能使用外键约束来检查和验证你的数据。

我建议改用2个表。一个用于存储用户和组之间的关系,另一个用于存储业务和组之间的关系。

这将允许您在删除组或业务或用户时使用所有fk好处,例如已删除的级联。