在sql server中存储和检索注释回复的最佳方法

在sql server中存储和检索注释回复的最佳方法,sql,sql-server,database-design,Sql,Sql Server,Database Design,我想在数据库表中存储评论回复。 我有一个表来存储评论: comment_id comment_par_id, comment_from comment_text comment date .... 新评论的par_id=0,而回复的par_id设置为回复到的评论id 嵌套只是一个层次。回复回复也具有相同的父id 这是存储回复的最佳方式吗 我看了一些文章,其中建议创建一个单独的表来存储回复。 然后有一个映射列指向主表中的注释 另一种替代方法是创建存储映射的第三个表,如: reply_id com

我想在数据库表中存储评论回复。 我有一个表来存储评论:

comment_id comment_par_id, comment_from comment_text comment date ....
新评论的par_id=0,而回复的par_id设置为回复到的评论id

嵌套只是一个层次。回复回复也具有相同的父id

这是存储回复的最佳方式吗

我看了一些文章,其中建议创建一个单独的表来存储回复。 然后有一个映射列指向主表中的注释

另一种替代方法是创建存储映射的第三个表,如:

reply_id comment_id
哪种方式最好

不管怎样,我只运行一个查询来返回给定评论的回复。
它是运行最快的查询,并且必须运行得很快,因为注释表中有数百万行。

它是一个一(注释)对多(回复)关系,因此您应该使用两个表,回复表外键为注释表。

它是一个一(注释)对多(回复)关系,所以您应该使用两个表,回复表外键输入到评论表。

如果我没弄错的话,你有一篇“原创文章”和一组回复吗?与StackOverflow的工作原理类似,有一个初始问题和一组答案?如果是这样的话,有几个选择。可以选择使用支持不同“类型”记录的单个表。这种选择的优点是只需要一个表,但是它也有更模糊的缺点。您必须知道,在这样一个表中存储了多种类型的记录,这使它更加混乱


更好的选择是为每种“类型”的记录创建多个表。这消除了歧义,同时增加了复杂性。从不同的角度来看,不同“类型”的类似记录往往具有不同的数据,即使其中一些数据是相同的。通过使用单独的表,可以更容易地为每种类型的评论(原始评论与回复评论)添加不同的特征,而不必在单个表系统中以各种奇怪的方式存储和引用额外的“唯一”数据。

如果我没听错的话,您有某种“原始帖子”和一组回复?与StackOverflow的工作原理类似,有一个初始问题和一组答案?如果是这样的话,有几个选择。可以选择使用支持不同“类型”记录的单个表。这种选择的优点是只需要一个表,但是它也有更模糊的缺点。您必须知道,在这样一个表中存储了多种类型的记录,这使它更加混乱


更好的选择是为每种“类型”的记录创建多个表。这消除了歧义,同时增加了复杂性。从不同的角度来看,不同“类型”的类似记录往往具有不同的数据,即使其中一些数据是相同的。通过使用单独的表,可以更容易地为每种类型的注释(原始注释与回复注释)添加不同的特征,而不必在单个表系统中使用各种奇怪的方式来存储和引用额外的“唯一”数据。

因为它类似于StackOverflow,请查看模式。查看Posts和Comments表


由于它类似于StackOverflow,请查看模式。查看Posts和Comments表


检查wordpress评论表,它的直截了当和良好。检查wordpress评论表,它的直截了当和良好。这就像Stackoverflow问题的答案一样,我将使用单独的表,通过外键关联。我会有一个原始帖子(问题)表和一个回复(答案)表。答案将通过ParentPostID(或QuestionID)外键与问题相关。它相当标准的数据库实践,就像问题的Stackoverflow答案一样,我会使用单独的表,通过外键关联。我会有一个原始帖子(问题)表和一个回复(答案)表。答案将通过ParentPostID(或QuestionID)外键与问题相关。这是相当标准的数据库实践。我希望相同评论的回复按顺序存储。reply#id comment#id reply#text 1 43这是reply#1 2 43这是reply#2 3 48这是reply#1 4 48这是reply#2然后在reples表上使用一个复合键,该键由commentID和replyi组成。我希望顺序存储相同评论的回复。回复id评论id回复文本143这是回复1243这是回复243这是回复243这是回复148这是回复1448这是回复2在回复表上使用复合键,由评论id和回复id组成。您的链接已失效。您的链接已失效。