仅使用一个表来存储一种以上类型的关系,效率高吗?

时间:2019-01-07 06:41:41

标签: mysql database database-design

考虑一下,我有一个表名“ Post”,“ Post”可以有喜欢和评论等。因此,我想通过将实际关系存储在单独的摘要中来共享一个供评论和喜欢的表,例如Tables:-

    posts
      post_id
      post_description

然后创建一个关系表:-

    post_has_
      post_id
      user_id
      relation(string : "like", "comment", "shares") etc

因此,通过单个表,我们可以存储一个以上的关系,所有这些都可以由应用程序级别进行管理,而无需创建单独的表,我想知道这是个好主意,还是有人之前做过?任何权衡等吗?

2 个答案:

答案 0 :(得分:0)

听起来像您在考虑父子表的关系,因为一个帖子可能有多个喜欢和评论。

或者,如果您决定更进一步(疯狂的笑话),并且希望能够对评论发表评论,甚至对评论发表评论(即深入了解等级),那么您可能想以某种方式使用一张桌子可以处理所有可能性,例如:  帖子:       post_id       parent_post_id_if_applies       post_description       用户身份       关系(字符串:“原始”,“喜欢”,“评论”,“份额”)等

也许是一个级别字段,用于说明您的级别,例如1个原始帖子,2个有关原始帖子的视图或评论,3个有关#2的视图或评论等。

答案 1 :(得分:0)

很难具体说明,但是您显示的设计通常用于帖子和用户之间的“ many-to-many”关系。

在应用程序术语中可能意味着:“一个帖子可以属于多个不同的用户;每个用户可能具有不同的“关系”,。“一个用户可以创建多个帖子”。

这可能是正确的,也可能不是正确的-从您的问题中很难分辨出来。

如果您的意图是“一个用户可以创建多个帖子。每个帖子可以具有许多关系。一个帖子恰好属于一个用户。”,则应在您的帖子表中添加“ user_id”。