在我的数据库中,我有不同的实体,如todos
, events
,discussions
等。
每个实体都可以有tags
, comments
,files
和其他相关项目。
现在我要设计这些表之间的关系,我想我必须从以下两种可能的解决方案中进行选择:
1. 分离的关系表
所以我将创建todos_tags
, events_tags
, discussions_tags
, todos_comments
, events_comments
,discussions_comments
等表。
2.常用关系表
我将只创建这些表:related_tags
、related_comments
、related_files
等,其结构如下:
相关标签
entity
(event|discussion|todo|etc. - 作为枚举或 tinyint (1|2|3|etc.))entity_id
tag_id
我应该使用哪种设计?
可能你会说:视情况而定,我认为这是正确的。
我的情况大部分时间(可能 70%+)我只需要查询其中一个实体(事件、讨论或待办事项),但在某些情况下,我需要它们都在同一个查询中(包括事件、讨论、待办事项)例如具有指定的标签)。在这种情况下,如果我使用单独的关系表,我将不得不在 3+ 表上进行联合(在我的情况下它可以是 5+ 表)。
每个表中的行数不会超过 1000-2000 行(事件、讨论、待办事项);
正确的方法是什么?对此有哪些个人经验?