2016-01-14 3 views
1

У меня есть сайт со статьями (уникальный по articleID), каждый с комментариями, а комментарии могут отвечать на комментарии неопределенно долго. Как это реализовать и запросить в базе данных SQL? Должны ли комментарии иметь собственную таблицу и просто добавляться по строкам, независимо от того, насколько глубоки ответы? Каков стандартный подход к реализации этого в базе данных?Как реализовать раздел комментариев в базе данных

Пример:
Мои статьи (ID: 5)
Это текст моей статьи

Комментарии:
пользователя 10: Я ненавижу эту статью (User_ID : 10, Comment_ID: 1)
              User 21: Нет, это нормально. (User_ID: 21, Comment_ID: 4)
                                Пользователь 54: Вы должны быть сумасшедшим. (User_ID: 54, Comment_ID: 6)
                пользователя 76: Я ненавижу эту статью тоже (user_id: 76, Comment_ID: 12)
пользователя 23: Ничего себе эта статья плохая (User_ID: 23, Comment_ID: 2)

Если вкладка комментариев ле просто выглядеть следующим образом:
Comment_ID: 1
Комментарий: Я ненавижу эту статью
Дата: 1/1/2016
User_ID: 10
Reply_TO_ID: нуль


Comment_ID: 4
Комментарий: Нет , его хорошая статья.
Дата: 1/2/2016
User_ID: 21
Reply_TO_ID: 1

... а затем просто сделать запрос для каждого комментария, глядя на комментарии, которые имеют Reply_TO_ID совпадающее комментарий и сделать это рекурсивно ?

+3

Несколько способов решить эту проблему, но я думаю, что статья [Управление иерархическими данными в MySQL] (http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/) является хорошим началом. – GolezTrol

+0

Список прилавков https://en.wikipedia.org/wiki/Adjacency_list – Ejaz

ответ

0

Лучше создать две таблицы; один для комментариев и другой для ответов/ответов. articleID - общий ключ между комментариями и таблицей статей, а replay_id - общий ключ между таблицей ответов/ответа и таблицей комментариев.

Смежные вопросы