在我的数据库中,我有不同的实体,如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_idtag_id
我应该使用哪种设计?
可能你会说:视情况而定,我认为这是正确的。
我的情况大部分时间(可能 70%+)我只需要查询其中一个实体(事件、讨论或待办事项),但在某些情况下,我需要它们都在同一个查询中(包括事件、讨论、待办事项)例如具有指定的标签)。在这种情况下,如果我使用单独的关系表,我将不得不在 3+ 表上进行联合(在我的情况下它可以是 5+ 表)。
每个表中的行数不会超过 1000-2000 行(事件、讨论、待办事项);
正确的方法是什么?对此有哪些个人经验?