我有几个实体,可以有多种关系。
例如,我有以下权利:
在entity_type表中描述了我项目中的所有实体(例如新闻帖子,博客帖子,消息,帐户,所有内容) Entity_type表只有id和name字段,name字段描述了可用性的模型类名
标签实体只有id和name。它是独立实体,稍后使用tag_assignment实体
映射到其他实体标记赋值实体具有id,tag_id,entity_type_id和entity_id。 Entity_type_id描述了我可以在其中找到实体,entity_id指定表中的实体。
所以我想将以下组合的foreig键从一列到多表:
是否可以制作这个组合键?我的意思是如果我从entity_type表中删除一行,如果我要删除/更新其他表中的一行,如果我要删除帐户,只会删除具有帐户外键的tag_assignments。
答案 0 :(得分:1)
您应该通过提取名为entity
的表来规范化您的数据库。该表的概念类似于OOP中的抽象类。您可能在数据库中拥有的news_post
,account
和其他实体都应引用entity
表。通过这种方式,您可以使用共同的特定位置引用您现在或将来可能拥有的任何实体。
此外,您可能希望熟悉EAV model。这可能有助于您解决类似的设计问题。