mysql - 从数据库中获取节点树以进行进一步渲染的最佳做法是什么?

标签 mysql hierarchical-data threaded-comments

假设我们有一个包含用户评论的表格。第一级评论引用了它们所附的文章。更深层次的评论在设计上没有这个引用,但它们有一个对其父评论的引用。

对于这个数据库结构——获取给定文章的所有评论然后以 html 格式呈现它的最有效方法是什么? (假设我们有大约 200 个一级评论和 20 个最深级别的评论)

最佳答案

我通常推荐一种叫做Closure Table的设计。

参见我对 What is the most efficient/elegant way to parse a flat table into a tree? 的回答中的示例

我还设计了这个演示文稿:Models for Hierarchical Data with SQL and PHP .我开发了一个 PHP 应用程序,可在 0.3 秒内从具有 49 万个节点的分层数据集合中渲染一棵树。

我在这里写了关于闭包表的博客:Rendering Trees with Closure Table .

我在我的书 SQL Antipatterns Volume 1: Avoiding the Pitfalls of Database Programming 中写了一章关于分层数据的不同策略.

关于mysql - 从数据库中获取节点树以进行进一步渲染的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258559/

相关文章:

java - 为什么 Netbeans 在 MySQL 数据库连接的 createStatement() 中显示错误?

php - fatal error : Nesting level too deep - recursive dependency?

mysql - 如何创建MySQL分层递归查询

java - 在 Java 中表示线程注释的最有效数据结构?

PHP MySQL、页面嵌套/线程注释、LIMIT 10 OFFSET 等

mysql - 如何从 mysql 数据库中提取数据并使用 yii-framework 将它们绘制在 highcharts 中

sql - 为什么我应该使用一张 table 而不是两张 table ?

javascript - angular.js 分层模型 : grandchildren not working

php - 如何使用 1 或 2 个查询构建线程评论?

mysql - SQL - 表之间的关系