Скажем, у нас есть таблица с комментариями пользователей. Комментарии первого уровня имеют ссылку на статью, к которой они присоединены. Комментарии более глубокого уровня не имеют этой ссылки дизайном, но у них есть ссылка на, он - родительский комментарий.
Для этой структуры базы данных - каков был бы самый эффективный способ выбрать все комментарии для данной статьи и затем представить его в формате HTML? (Давайте предположим, что у нас есть приблизительно 200 комментариев первого уровня и deepiest уровня 20),
Я обычно рекомендую дизайн под названием Closure Table .
См. Пример в моем ответе на Какой самый эффективный / элегантный способ преобразовать плоскую таблицу в дерево?
Я также разработал эту презентацию: Модели для иерархических данных с SQL и PHP . Я разработал приложение PHP, которое визуализирует дерево за 0,3 секунды из набора иерархических данных с 490 тыс. Узлов.
Я писал о Closure Table здесь: Рендеринг деревьев с Closure Table .
Я написал главу о различных стратегиях для иерархических данных в своей книге SQL-антипаттерны: избегая ловушек программирования баз данных .
Для наиболее эффективного способа Quassnoi написал серию статей на эту тему.
Я предлагаю вам прочитать первую статью и адаптировать примеры для работы с вашей конкретной таблицей, но суть в том, чтобы сделать функцию, которая может перебирать строки, которые вам нужно получить. Вероятно, вам также нужен уровень (глубина в иерархии), поэтому вторая статья, вероятно, тоже актуальна.
Другие статьи могут быть полезны, если вам нужно сделать другие типы запросов к вашим данным. У него также есть статья Adjacency list vs. nested sets: MySQL, в которой он сравнивает высоко оптимизированные запросы как для модели смежности, так и для модели вложенных множеств.