2012-12-18 55 views
0

我有几个实体,可以有多个关系。一个列的多个表外键..是否有可能?

例如,我已经以下entitites:

  1. ENTITY_TYPE
  2. 标签
  3. tag_assignment
  4. news_post
  5. 帐户

在ENTITY_TYPE表中描述的所有实体,我在我的项目中(例如新闻帖子,博客文章,消息,帐户,所有内容) Entity_type表只有id和名称字段,名称字段描述了可用性的模型类名称

标记实体只是id和名称。它是独立实体,稍后通过tag_assignment实体映射到其他实体

标签分配实体具有id,tag_id,entity_type_id和entity_id。 Entity_type_id描述了我可以找到的实体,entity_id指定了表中的实体。

所以我想使下面结合foreig键从一列到多个表:

  1. tag_assignment.entity_type_id => ENTITY_TYPE(ID)
  2. tag_assignment.entity_id => news_post(ID),帐户( ID)等

是否有可能使这个组合键?我的意思是,如果从Entity_type表删除一行,如果要进行依赖关系,则所有内容都将在其他表中删除/更新,如果我将删除帐户,则只有具有外键到帐户表的tag_assignments将被删除。

回答

1

您应该通过提取名为entity的表来标准化数据库。该表的概念与OOP中的抽象类相似。 news_post,account和其他实体你可能在你的数据库中应该都引用entity表。通过这种方式,您可以引用任何您现在或将来可能拥有的公共特定位置的实体。你

enter image description here

可能还需要熟悉EAV model。这可能有助于解决类似的设计问题。

相关问题