2015-01-12 3 views
0

У меня есть две таблицы ПОЛЬЗОВАТЕЛЕЙ И ДРУЗЕЙ, мне нужно записывать дружеские отношения между пользователями в таблице FRIENDSHIPS. Я думаю, что я должен использовать два внешних ключа из таблицы USERS для первого пользователя, а другой для пользователя, с которым он дружит. просто начал учиться, поэтому я знаю только, чтобы использовать Workbench в какой-то степени. Мой вопрос в том, как вы настраиваете два внешних ключа из одной таблицы?Как установить два внешних ключа из одной таблицы?

ответ

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)