2012-12-18 51 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。這可能有助於解決類似的設計問題。

相關問題