У меня есть две таблицы ПОЛЬЗОВАТЕЛЕЙ И ДРУЗЕЙ, мне нужно записывать дружеские отношения между пользователями в таблице FRIENDSHIPS. Я думаю, что я должен использовать два внешних ключа из таблицы USERS для первого пользователя, а другой для пользователя, с которым он дружит. просто начал учиться, поэтому я знаю только, чтобы использовать Workbench в какой-то степени. Мой вопрос в том, как вы настраиваете два внешних ключа из одной таблицы?Как установить два внешних ключа из одной таблицы?
0
A
ответ
1
У вас есть внешние ключи, указывающие неправильный путь.
«Пользователь» может иметь несколько «дружбы» (ноль, один или несколько), но «дружба» может быть связана только с двумя «пользователями».
Добавьте два ограничения на вашем столе «Дружба», при условии, что ваши два столбца с именем from_userid
и to_userid
CONSTRAINT FK_friendship_from FOREIGN KEY (from_userid) REFERENCES user (id)
ON UPDATE CASCADE ON DELETE CASCADE
CONSTRAINT FK_friendship_to FOREIGN KEY (to_userid) REFERENCES user (id)
ON UPDATE CASCADE ON DELETE CASCADE
В случае, если это не было ясно, вы НЕ добавить внешний ключ «пользователь " Таблица. Внешние ключи должны указывать из дочерней таблицы в родительскую таблицу.
В качестве примера:
user
id name
-- ------
2 Peter
3 Paul
5 Mary
friendship
from_userid to_userid
----------- ---------
2 3
2 5
3 3
По содержанию этих таблиц, Питер (id=2
) есть два друга, Павла (id=3
) и Мэри (id=5
). А у Пола (id=3
) есть один друг Пол (сам, id=3
)