0

我有几个实体,可以有多个关系。

例如,我有以下实体:

  1. 实体类型
  2. 标签
  3. tag_assignment
  4. news_post
  5. 帐户

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

标签实体只有 id 和 name。它是独立实体,稍后使用 tag_assignment 实体映射到其他实体

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

所以我想从一列到多张表制作以下组合外键:

  1. tag_assignment.entity_type_id => entity_type (id)
  2. tag_assignment.entity_id => news_post (id), account (id) 等

是否可以制作这个组合键?我的意思是如果我从 entity_type 表中删除一行来建立依赖关系,那么其他表中的所有内容都将被删除/更新,如果我要删除帐户,则只有具有帐户表外键的 tag_assignments 将被删除。

4

1 回答 1

1

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

在此处输入图像描述

此外,您可能想熟悉EAV 模型。这可能会帮助您解决类似的设计问题。

于 2012-12-18T05:37:10.580 回答