4-1. 관계형 DB의 세 가지 기본 제약

관계형 데이터베이스에서 테이블과 컬럼은 다음 세 가지 기본 제약을 따른다.

  1. 기본 키(PK)는 유일하다.
  2. 외래 키(FK)는 단일 행만 참조한다.
  3. 컬럼은 원자적(Atomic)이어야 한다.

이 세 가지를 동시에 만족시키려면, 일대다 관계의 외래 키는 반드시 N쪽에만 위치할 수밖에 없다.

4-2. 왜 1쪽에는 외래 키를 둘 수 없는가?

1쪽인 team 에 외래 키를 두어 "소속 회원"을 표현하려고 할 때의 딜레마를 다시 보자.

상황 1: 여러 행으로 나누기

team_id name member_id
1 개발팀 1
1 개발팀 2

상황 2: 하나의 컬럼에 여러 값 넣기

team_id name member_id
1 개발팀 1,2 (문자열로 저장)

이처럼 1쪽에 외래 키를 두려는 모든 시도는 PK 유일성 또는 원자성을 깨뜨리게 된다. 즉, 관계형 데이터베이스의 기본 제약 안에서는 1쪽에 외래 키를 두는 정합한 해답이 존재하지 않는다.

4-3. N쪽에 외래 키를 둘 때의 일관성

반대로 N쪽인 member 테이블이 team_id 를 FK로 가지면, 세 가지 제약이 모두 자연스럽게 만족된다.