2015-01-12 8 views
0

나는 USERS와 FRIENDSHIPS라는 두 개의 테이블을 가지고 있는데, FRIENDSHIPS 테이블에있는 사용자들 간의 우정을 기록하는 것이 필요하다. 나는 USERS 테이블에서 기본 사용자에 대해 두 개의 외래 키를 사용하고 다른 사용자에게는 그가 친구 인 두 개의 외래 키를 사용해야한다고 생각한다. 방금 학습을 시작 했으므로 어느 정도 Workbench를 사용하는 것으로 알고 있습니다. 내 질문은 동일한 테이블에서 두 개의 외래 키를 설정하는 방법입니다.한 테이블에서 두 개의 외래 키를 설정하는 방법은 무엇입니까?

답변

1

잘못된 방식으로 외래 키가 표시됩니다.

"사용자"는 여러 "우정"(0, 하나 이상)을 가질 수 있지만 "우정"은 오직 두 개의 "사용자"와 관련 될 수 있습니다.

이 두 개의 열이 from_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 

to_userid 명명 된 가정, 귀하의 "우정"테이블에 두 개의 제약 조건을 추가, 당신은 "사용자에게 외부 키를 추가하지 않습니다 "테이블. 외부 키는 하위 테이블에서 상위 테이블을 가리켜 야합니다. 예를 들어

:이 테이블의 내용에 따르면

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를) 두 친구가있다. 그리고 Paul (id=3)에게는 한 친구 Paul (그 자신, id=3)

이 있습니다.
관련 문제