2017-01-09 3 views
1

나는 이것이 간단한 문제라는 것을 알고 있지만, 나는 스스로를 돕기위한 모범을 찾을 수 없다는 것을 발견했다. The PID is the primary key for PersonER 모델을 관계형 모델에 기본 키를 두 번 사용하여 매핑

내 ER 모델에서 "사람"은 "befriended_with"노드를 통해 다른 "사람"과 친구가 될 수 있습니다. 테이블에서 사람을 찾는 방법을 상상할 수는 있지만 "befriended_with"테이블에 문제가 있습니다. 이 경우, 기본 키 PID가 차례로 삽입되고 두 사람을 함께 연결하기 위해 PID로 다시 가정해야합니다.

Person 

PID | Name 
---- | ----- 
01 | X 
02 | Y 

befriended_with 

PID | PID 
---- | ----- 
01 | 02 

그러나 나는 이것이 이렇게 작동 할 수 있다고 상상할 수 없습니다. 이것을 보통 어떻게 구현합니까?

답변

1

열의 이름은 중요하지 않습니다. 이 열의 값이 같은 정렬/종류/유형의 항목을 식별 할 때 두 개의 다른 테이블에서 동일한 이름을 사용하는 것은 니모닉만큼 편리합니다. (특히 NATURAL JOIN 또는 USING을 통해 쿼리 할 때).하지만 동일한 테이블의 열에 다른 이름을 지정하십시오. (SQL 쿼리 결과에 중복 된 이름을 수 있습니다.)

--PID identifies a person named NAME 
Person(pid, name) 
-- person PID has befriended FID 
-- FK pid REFERENCES Person (pid) 
-- FK fid REFERENCES Person (pid) 
Befriended_with(pid, fid) 

우리는 FK (외래 키)를 선언 열 목록의 값이 다른 열 목록의 값으로 표시해야하는 경우. 응급실 다이어그램에있는 관계/연상 다이아몬드의 참여 라인은 FK의 열에 해당합니다.