Лучший способ хранить и получать ответы на комментарии на сервере SQL - PullRequest
1 голос
/ 04 сентября 2010

Я хочу хранить ответы на комментарии в таблице базы данных.У меня есть таблица для хранения комментариев:

comment_id comment_par_id, comment_from comment_text comment date ....

Новый комментарий имеет par_id = 0, а в ответах par_id установлен идентификатор комментария, на который он был получен.

Вложенность - это только один уровень,Ответ на ответ также имеет тот же родительский идентификатор.

Это лучший способ хранения ответов?

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

Другой альтернативой является создание третьей таблицы, в которой будет отображаться сопоставление, например:

reply_id comment_id

Какой путь лучше?

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

Ответы [ 3 ]

1 голос
/ 04 сентября 2010

Если я вас правильно понял, у вас есть какой-то "оригинальный пост" с набором ответов?Подобно тому, как работает StackOverflow, с первоначальным вопросом, с набором ответов?Если это так, есть несколько вариантов.Существует возможность использования одной таблицы, которая поддерживает разные «типы» записей.Преимущество этого выбора состоит в том, что требуется только одна таблица, однако он также имеет недостаток, заключающийся в большей неопределенности.Нужно знать, что в такой таблице хранятся записи нескольких типов, что делает ее более запутанной.

Лучшая альтернатива - иметь несколько таблиц для каждого «типа» записи.Это устраняет двусмысленность, добавляя сложности.С другой точки зрения, разные «типы» похожих записей часто имеют разные данные, даже если некоторые данные совпадают.Используя отдельные таблицы, легче добавлять отличительные черты к каждому типу комментария (оригинал или ответ), не прибегая к различным странным способам хранения и ссылки на дополнительные «уникальные» данные в системе с одной таблицей..

0 голосов
/ 05 августа 2011

Поскольку это похоже на StackOverflow, проверьте схему. Посмотрите на таблицу сообщений и комментариев.

http://sqlserverpedia.com/wiki/Understanding_the_StackOverflow_Database_Schema

0 голосов
/ 04 сентября 2010

Это отношение один (комментарий) ко многим (ответы), поэтому вы должны использовать две таблицы с внешней таблицей ответов, привязанной к таблице комментариев.

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