관계형 데이터베이스에서 테이블과 컬럼은 다음 세 가지 기본 제약을 따른다.
이 세 가지를 동시에 만족시키려면, 일대다 관계의 외래 키는 반드시 N쪽에만 위치할 수밖에 없다.
1쪽인 team 에 외래 키를 두어 "소속 회원"을 표현하려고 할 때의 딜레마를 다시 보자.
| team_id | name | member_id |
|---|---|---|
| 1 | 개발팀 | 1 |
| 1 | 개발팀 | 2 |
team_id = 1 인 행은 하나만 있어야 한다.| team_id | name | member_id |
|---|---|---|
| 1 | 개발팀 | 1,2 (문자열로 저장) |
member_id 에 리스트를 넣게 된다.이처럼 1쪽에 외래 키를 두려는 모든 시도는 PK 유일성 또는 원자성을 깨뜨리게 된다. 즉, 관계형 데이터베이스의 기본 제약 안에서는 1쪽에 외래 키를 두는 정합한 해답이 존재하지 않는다.
반대로 N쪽인 member 테이블이 team_id 를 FK로 가지면, 세 가지 제약이 모두 자연스럽게 만족된다.