protasovseya
@protasovseya
Онлайн юридическая консультация

Как организовать схему БД?

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

По моему предположению, стоит создать ещё 2 таблицы: comment_question и comment_answer, в которые вынести связи.

Есть ли более грамотное решение?
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Что является более грамотным - довольно скользкая тема.
Более правильное академически - нормальные формы и т.п.?
На практике частенько приходится отходить от норм реляционной теории данных. Например, дублировать данные, чтобы местами избежать джойнов в запросах, которые будут выполняться очень часто.

Если комментарии и к вопросам и к ответам - одинаковая сущность, то я бы сделал их одной таблицей. И в ней 2 поля (помимо прочих):
question_id - связь с вопросом; всегда существует.
answer_id - связь с ответом; NULL если был прокомментирован именно вопрос.
Таким образом, мы можем запрашивать комментарии без необходимости джойнить таблицы, как ко всему вопросу и его ответам, так и отдельно к вопросу, и к конкретному ответу на вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@artemmityushov
Проще сделать единую таблицу вопросов и ответов где будет parent_id ссылка на вопрос, а комментарии будут уже внешним ключом к ней, и сразу решается проблема иерархии ответов, когда ответ на ответ внутри вопроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы