如果我希望用户能够对存储在不同表中的内容发表评论,那么最好的方法是什么?
通过为每种内容类型的评论创建一个附加表。例如;
或者,使用一个表进行注释,并使用多个连接表。例如;
或者,只需将每个表的外键添加到注释表中?
如果我希望用户能够对存储在不同表中的内容发表评论,那么最好的方法是什么?
通过为每种内容类型的评论创建一个附加表。例如;
或者,使用一个表进行注释,并使用多个连接表。例如;
或者,只需将每个表的外键添加到注释表中?
我只需将每个表的外键添加到单个注释表中。如果这三者的评论格式相同,从长远来看,这将使您的事情变得更容易。值得一提的是,这意味着评论表中必须有可以为空的外键。
只有当页面的评论与帖子的评论不同时,才会使用您描述的第一种方法。否则,只有一个评论表要简单得多。
仅当您希望在多个页面上发布相同的评论(我怀疑您是否想要)时,才需要中间的表格。这称为多对多关系,但您描述的是一对多(一页、帖子或个人资料可以有很多评论)
由于您不打算让多个页面/帖子/用户配置文件共享一个“评论”,因此最后一种方法并未完全标准化。它将允许数据异常和冗余。
第一个更正确,也更快。
我个人会选择第一种方式,因为它更简单。但如果您最终倾向于第二种设计,则不需要“has_comments”表。而是在评论表中放置一个 fk 列和另一个具有 type_id 的列,其中包含评论是否属于页面、帖子等类型。
我认为第一个选项是正确的方法。第二种方法感觉像是为了规范化而进行规范化的情况。问问自己:“我从第二种方法中得到什么?”。答案是在页面、帖子和 user_profiles 之间共享相同的评论。但实际上它们并不完全相同(您可能希望分别存储页面评论、帖子评论和用户个人资料评论)。所以你收获不大。
使用带有外键的选项 1。它将为您节省更多的麻烦。