위키득계정 ↗
기술

외래 키

외래 키기술
영문명
Foreign key
주요 기능
참조 관계의 유효성 검사
참조 대상
기본 키 또는 적절한 고유 키
관계 범위
다른 테이블 또는 같은 테이블
외래 키는 테이블의 열이나 열 묶음이 참조 대상의 키와 연결되도록 하는 제약이다. 존재하지 않는 대상을 가리키는 기록이 생기지 않게 하여 관계형 데이터의 참조 무결성을 유지한다.

존재하는 대상을 가리키기

대출 기록에 소장본 번호를 넣었는데 그 번호의 책이 소장 목록에 없다면 기록을 해석하기 어렵다. 외래 키는 대출 기록의 번호가 참조할 수 있는 소장본인지 검사하는 데 쓰인다.

외래 키는 열 이름을 비슷하게 맞춘다고 생기지 않는다. 실제 제약으로 정의해야 데이터베이스가 삽입과 변경 때 관계를 검사한다. 프로그램에서 관례로만 연결하는 방식과 구분된다.

기본 키만 참조하는 것은 아니다

참조 대상에는 행을 고유하게 구별할 수 있는 키가 필요하다. 따라서 외래 키는 보통 기본 키나 고유 제약이 있는 열을 참조한다. 허용되는 정확한 조건은 사용하는 데이터베이스에 따라 다르다.

한 테이블 안에서 자기 자신을 참조할 수도 있다. 분류 항목의 상위 분류 번호가 같은 테이블의 분류 번호를 가리키는 구조가 한 예다. 다만 외래 키만으로 관계의 순환까지 자동으로 막아 주지는 않는다.

대상을 지우거나 바꾸면

참조받는 행을 삭제할 때는 관련 행을 어떻게 처리할지 정해야 한다. 삭제를 막거나, 연결된 행도 삭제하거나, 참조 값을 비우는 방식 등이 있다. 어떤 처리가 맞는지는 데이터의 의미에 달려 있다.

연쇄 삭제를 선택하면 하나의 삭제가 여러 기록에 영향을 줄 수 있다. 단순히 오류를 피하기 위해 고르는 옵션이 아니라 어떤 기록을 함께 없애도 되는지 결정하는 규칙으로 다뤄야 한다.

비어 있는 참조와 필수 관계

참조 값이 반드시 있어야 하는지와 외래 키의 유효성은 다른 조건이다. 선택적인 관계에서는 비어 있는 참조를 허용할 수 있다. 필수 관계라면 NULL을 허용하지 않는 제약도 함께 필요하다. 여러 열로 구성된 외래 키에서는 NULL 처리 방식까지 살펴야 한다.

관련 문서

기본 키 / 데이터 무결성 / 관계형 데이터베이스 / 데이터 모델