我想在数据库表中存储评论回复。 我有一张表来存储评论:
comment_id comment_par_id, comment_from comment_text comment date ....
新评论的par_id = 0,而回复时par_id设置为评论ID。
嵌套只是一个层次。对回复的回复也具有相同的父ID。
这是存储回复的最佳方式吗?
我查看了一些建议创建单独的表来存储回复的文章。 然后有一个映射列将注释指向主表。
另一个替代方法是创建第三个表来存储映射,如:
reply_id comment_id
哪种方式最好?
无论如何,我只运行一个查询来返回给定评论的回复。 它是运行最多的查询,必须快速运行,因为我们在注释表中有数百万行。
答案 0 :(得分:1)
如果我理解你的话,你有一个“原始帖子”,有一套回复?与StackOverflow的工作原理类似,初始问题是一组答案吗?如果是这种情况,有几个选择。可以选择使用支持不同“类型”记录的单个表。这种选择的好处是只需要一个表,但它也有一个更模糊的缺点。必须知道多种类型的记录存储在这样的表中,使其更加混乱。
更好的选择是为记录的每个“类型”设置多个表。这消除了歧义,同时增加了复杂性。从不同的角度来看,类似记录的不同“类型”通常具有不同的数据,即使某些数据是相同的。通过使用单独的表,更容易为每种类型的注释添加不同的特征(原始与回复),而不必采用各种奇怪的方式来存储和引用单表系统中的额外“唯一”数据
答案 1 :(得分:0)
这是一个(评论)到许多(回复)关系,所以你应该使用两个表,回复表外键到评论表。
答案 2 :(得分:0)
由于它类似于StackOverflow,请查看Schema。查看帖子和评论表。
http://sqlserverpedia.com/wiki/Understanding_the_StackOverflow_Database_Schema