“Опровержения” и “Комментарии” - Две DB-таблицы или одна?
-
20-08-2019 - |
Вопрос
Я работаю над проектом для друга и столкнулся с трудным решением.Проект состоит из эссе, каждое из которых может быть оспорено, а также прокомментировано.Дело в том, что только один человек может оспорить эссе, и тогда все остальные будут заблокированы и смогут только комментировать.
Опровержения могут содержать только два ответа, 2000 слов для первого и 500 слов для второго.На этом этапе больше никаких опровержений - остальная часть обсуждения происходит в комментариях (фиксированная длина n символов, в отличие от опровержений), если зрители считают, что тема не была исчерпана.
Поэтому я изначально решил, что опровержения и комментарии структурно одно и то же, и я бы просто добавил логическое поле в свою таблицу комментариев, чтобы указать, является ли комментарий_rebuttal .Но я чувствую себя немного неуверенно в этом направлении.
Что бы коллектив-вы предложили?Каждое эссе может обсуждаться только двумя людьми, и оба могут выступить только по 2 раза.Очень похоже на комментарии, но отдельно.
Решение
Таким образом, у меня, вероятно, была бы таблица для "бесед" с полями для идентификатора пользователя на постере эссе, единственного респондента (изначально нулевого) и, вероятно, названия или аннотации.Другая таблица будет содержать "эссе" с полями для идентификатора пользователя эссе или опровержения, идентификатора беседы, тела сообщения и количества сообщений, чтобы привести их в порядок.Наконец, у меня была бы таблица "комментарии" с идентификаторами пользователей постеров комментариев, идентификаторами essayID для привязки их к публикациям эссе, идентификаторами commentId для перевода их в режим потока (если это уместно) и, конечно, телом комментария.
Другие советы
Ну, трудно сказать, не зная больше об этой системе.Но я бы сказал, судя по тому, что вы пишете, да, опровержения и комментарии похожи и должны быть сведены в единую таблицу.
Мой девиз всегда таков:Если вы сомневаетесь, используйте самый простой метод.Который здесь явно представляет собой единую таблицу.
Если позже окажется, что отдельные таблицы более полезны, вы всегда можете провести рефакторинг.
Если комментарии и опровержения имеют разную максимальную длину и разные ограничения на то, сколько их может быть в эссе, то для меня они звучат совсем по-разному.Ваша схема станет понятнее, если вы создадите две таблицы для объектов с разными ограничениями и установите разные ограничения на столбцы и ссылки.