我有一个我设计的评论系统,它的工作没有任何嵌套。现在我想让人们直接回复评论,而不是那个页面上的一般内容。所以我想在我的数据库中添加一个指向父ID的父id列。
现在下一步(我正在寻找一个很好的方法来解决这个问题)。是查询数据库中的所有注释(嵌套而不是)所有注释都基于它们的常用“事物id”然后以正确的顺序显示它们,以便嵌套的注释正确连接到它们的父项...是否有任何有效的方法一起订购所有这些评论,以便我不必开始使用递归和东西进行奇怪的查询调用?所有评论还有一个时间戳以及一些其他不相关的数据。
感谢您的任何建议
答案 0 :(得分:3)
有一个名为“嵌套集”的概念。基本上,每个评论和文章都有两列,指定其子项集的“开始”和“结束”。每个评论都有一个完全在父项集合中的开始和结束,并且兄弟姐妹之间没有重叠 - 两个集合重叠的唯一时间是,当一个完全在另一个集合中时(即:如果一个项目是子项目)另一个)。
Article
/-----(1, 12)----\
Comment Comment
/---(2, 5) /--(6, 11)--\
Comment Comment Comment
(3, 4) (7, 8) (9, 10)
当您对特定商品进行查询时,您会查找具有匹配商品ID的每个商品,其商品ID位于商品的集合中。那将检索所有孩子和他们所有的孩子,等等。按开头或结尾对它们进行排序,注释甚至应该按顺序显示 - 您可以与另一个端点进行比较,以判断一个是否是另一个的子项。 (如果您按开始排序,并且此项目的结尾小于前一个项目,那么您有一个子项目。)
缺点是,每条评论都需要更新这些集合。这很简单,但可能很慢。为了在(7,8)下添加另一个项目,例如:
您插入的评论之后的评论越多,当然,更新速度越慢。
坚持......聊聊谷歌...