Как построить отношения между «пользователем» и «его комментарием»? - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я пишу блог, чтобы получить опыт работы с php (я создал MVC-Framework), поэтому я все еще новичок в этом.

У меня есть две таблицы, важные для этого вопроса:

user(id, username, password, registrated)

comments(id, content, post_id, comment_author, date, editedAt, editedBy)

В comments -таблице comment_author еще не связано с идентификатором пользователя, потому что я не был уверен, какна самом деле это сделать.

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

comment_author имеет username в нем на данный момент,но я знаю, что мне нужен id (если пользователь будет удален, и кто-то еще зарегистрируется с этим именем пользователя, комментарий будет его).

Как мне теперь структурировать таблицы?

1.) comments_author_id в comments -таблице, id в user в качестве внешнего ключа:

В этом случае у меня будет id комментарияавтор в comments -таблице, но user не будет знать о комментариях, которые он написал.Если я хочу показать последние комментарии пользователя в своем профиле, могу ли я получить их с помощью запроса inner-join, тогда?

2.) Создайте новую таблицу user_comments(id, user_id, comment_id)

В этом случае user и comments не будут знать об их авторе / комментариях.

Также у меня есть 'editedBy', в котором указано имя пользователя последнего редактирующего пользователя.Могу ли я как-то связать его с именем пользователя в users -таблице или я должен также связать его с id?

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

Пожалуйста, также дайте мне знать, если мне нужно предоставить какую-либо дополнительную информацию или изменить что-то для лучшего понимания.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Имеет смысл перейти к первому варианту.

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

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

0 голосов
/ 11 февраля 2019

Лучший способ - создать новую таблицу user_comments(id, user_id, comment_id).И если вы хотите отслеживать каждое измененное / редактировать комментарий или сообщение, будет лучше, если вы создадите другую таблицу для этого, и если пользователь сможет редактировать только тогда, я думаю, что лучше editedBy поля не создавать.Структура полностью зависит от того, каким видом отслеживания вы хотите быть.

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