Хранение сообщений и комментариев в отдельных таблицах или вместе - PullRequest
0 голосов
/ 08 января 2019

Мне было интересно, что было бы лучше, хранить мои комментарии в моей таблице сообщений или иметь собственную таблицу?

В моей таблице сообщений есть только идентификатор, идентификатор пользователя, URL-адрес изображения и описание сообщения. Я соединяю таблицу сообщений с моей таблицей пользователей, чтобы получить имя автора.

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

Если бы я хранил комментарии в таблице постов, мне не пришлось бы делать отдельный вызов API для их сбора.

Спасибо, хотелось бы услышать ваши идеи.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете добавить столбец id_parent рядом с вашим id, имеющим те же свойства, за исключением AUTO_INCREMENT и DEFAULT, равным 0.

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

Это будет работать в случае, если вы не будете ограничивать новый столбец FOREIGN KEYS. Вы можете установить INDEX, если вам требуется быстрее искать все сообщения с ответами.

Это также даст вам возможность цитировать посты поверх постов без постов без необходимости создавать новые таблицы и осуществлять поиск по всему миру. Возможно, ему не хватает нормализации, но это сэкономит вам время и усилия при сложности.

0 голосов
/ 08 января 2019

Если вы используете реляционную базу данных, то правильным способом является использование нормализация и нормальные формы . Это означает, что вы должны создать две отдельные таблицы: сообщения и комментарии

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