Как установить связь между таблицами?

#sql #database-design

Вопрос:

Я хочу создать веб-приложение для публикации отзывов. Как показано на рисунке, есть три таблицы: Пользователь, Друзья и таблица отзывов. Пользователи могут добавлять друзей, и эти друзья могут писать отзывы так же, как и пользователи. Какие отношения мы должны установить в этом случае? Если есть хороший способ сделать это, пожалуйста, скажите мне, является ли соотношение между пользователями и отзывами 1:n, но должно ли оно быть 1:n для друзей?

введите описание изображения здесь

Спасибо.

Комментарии:

1. Пользователь и Друг-это одно и то же существо, Человек. Они должны храниться в одной таблице. Один человек может быть другом для нескольких человек, и наоборот, у человека может быть несколько друзей, поэтому соотношение равно M:N (многие ко многим), которое нуждается в дополнительной таблице смежности.

Ответ №1:

За вашими столами уже установились прекрасные отношения. И да, таблица друзей и отзывов будет иметь отношение 1:n к таблице пользователей.

Логическое Объяснение:

Для каждой записи в таблице пользователей может быть несколько записей в таблице друзей или отзывов. Но для каждой записи в friends идентификатор пользователя внешнего ключа будет указывать только на одну запись в User, следовательно, 1:n

Техническое Объяснение:

Вы добавили внешние ключи из таблицы Отзывов и друзей со ссылкой на пользователя, т. е. Идентификатор пользователя. Это реализация отношений 1:n, в которых первичный ключ является внешним ключом для многих сторон.

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

Комментарии:

1. Спасибо, что ответили! Наличие этих трех полей в таблице «Друзья» также автоматически создает связь между таблицей «Друзья» и таблицей «Обзор»? Наличие этих трех полей в таблице «Друзья» также автоматически создает связь между таблицей «друзья» и таблицей «обзор»?

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