Рекомендации по структурированию системы комментариев - PullRequest
1 голос
/ 16 марта 2011

Я новичок в разработке базы данных, и я хотел бы создать систему комментариев с возможностью отвечать на комментарии пользователей и отображать потенциально все комментарии, сделанные пользователем.Кроме того, будет много страниц, каждая из которых будет иметь раздел для комментариев.

До сих пор я придумал два возможных дизайна базы данных для структурирования системы комментариев.Первый будет иметь таблицу для комментариев каждой страницы и таблицу для комментариев каждого пользователя.Таблица комментариев к странице будет иметь поля user_id и page_id для целей связывания таблиц.

Вторая потенциальная структура проекта состоит в том, чтобы иметь одну большую секционированную таблицу комментариев, в которой есть только поля comment_id и user_id для связывания таблицы.Я еще не думал о том, как подойти к функции ответа;Я хотел получить некоторую информацию о том, какой подход к проектированию, если таковой имеется, будет работать эффективно, прежде чем я решу эту проблему.

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Я бы выбрал две таблицы: одну для комментариев и другую для комментариев.Потоки комментариев выглядят примерно так:

id
/* Other bookkeeping things like created time and such */

и комментарии:

id
thread_id
user_id
comment
parent_id
/* Other bookkeeping stuff */

Затем присоедините ветку к странице, добавив столбец comment_thread_id в таблицу страниц.

Наличие отдельной отдельной ветки комментариев дает вам удобное место для добавления контроля доступа или аналогичных расширений в будущем, а также позволяет прикреплять цепочки комментариев к вещам.Присоединение потоков комментариев к странице, а не наоборот, позволяет легко добавлять потоки комментариев к другим объектам в вашей системе позже.

1 голос
/ 16 марта 2011
comments
   id
   user_id
   comment_text
   page_id
   parent_id

Используйте это, чтобы сохранить комментарий для страницы.parent_id - это комментарий, который является ответом на другой комментарий.Для комментария на странице parent_id будет нулевым (без родительского комментария), но для ответа parent_id будет отличным от нуля и будет идентификатором комментария, которому принадлежит ответ.

ДляНапример, у вас будут подобные данные

id user_id comment_text page_id parent_id
1  6         sdh          1       0          <-- comment on the page
2  9         gfdf         2       0          <-- another comment on other page
3  4         reply xzy    1       1          <-- reply to comment id 1 by user id 4 on page 1

Возможно, вы захотите иметь поля timestamp, flagged, deleted и т. д., которые могут помочь вам в сортировке, упорядочении, фильтрации, мониторинге и мягком удалениикомментарий.Вы можете группировать по странице, по пользователю, по родителю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...