Engineering Note

[Database] 외래키(Foreign Key) 본문

Computer Science/Database

[Database] 외래키(Foreign Key)

Software Engineer Kim 2025. 12. 26. 13:09

외래키(Foreign Key)

외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다. 다른 말로, 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다. 기본키가 아니더라도 투플을 구분할 수 있는 키라면 외래키로 사용할 수 있다.

외래키는 릴레이션간의 관계를 맺어줄 때 사용한다.

 

 

인터넷 쇼핑몰 데이터베이스를 통해 알아 보는 외래키

고객 릴레이션

고객(고객아이디(PK), 고객이름, 나이, 등급, 직업, 적립급)

 

 

주문 릴레이션

주문(주문번호(PK), 주문고객(FK, 고객아이디), 조문제품, 수량, 단가, 주문일자)

 

주문릴레이션의 주문 고객 속성이 고객 릴레이션의 고객아이디의 속성을 참조하고 있고, 주문고객 속성은 외래키이다. 이렇게 외래키를 통해 고객 릴레이션과 주문 릴레이션이 관계를 맺어, 주문 릴레이션의 튜플과 연관성이 있는 고객 릴레이션의 튜플을 연결시킬 수 있다. 이때 주문 릴레이션처럼, 외래키를 가진 릴레이션을 참조하는 릴레이션이라하고, 고객 릴레이션 같이 기본키를 가진 릴레이션을 '참조되는 릴레이션'이라고 한다.

 

 

학생 상담 데이터베이스를 통해 알아보는 외래키

학생 릴레이션

학생(학번(PK), 이름, 학년)

 

상담 릴레이션

상담(학번(FK), 담당교사(FK), 상담일자, 내용)

 

교사 릴레이션

교사(교사번호(PK), 이름)

 

3개의 릴레이션은 외래키를 이용해 서로의 관계를 표현하고 있다. 상담릴레이션의 학번 속성은 학생 릴레이션의 기본키인 학번 속성을 참조하는 외래키이고, 담당교사 속성은 교사 릴레이션의 기본키인 교사번호 속성을 참조하는 외래키다. 그리고 상담 릴레이션의 기본키는 두 외래키인 학번과 담당교사 속성의 조합으로 구성되어 있다. 이처럼 하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있다. 또, 외래키를 기본키로 구성할 수도 있다.

 

 

기본키와 외래키가 함께 정의된 릴레이션(자기 자신이 속한 릴레이션이 기본키를 외래키로 참조)

고객 릴레이션

고객아이디 고객이름 나이 등급 직업 적립금 추천고객
appple 김현준 20 gold 학생 1000 orange
banana           orange
carrot           apple
orage           null

 

위 고객 릴레이션은 고객아이디 속성이 기본키다. 그리고 추천고객 속성은 추천한 고객의 아이디를 의미하므로 같은 길레이션의 고객아이디, 즉 기본키를 참조하는 외래키다. 이처럼 고객 릴레이션은 기본키와 외래키가 하나의 릴레이션에서 표현되며, 이것은 고객 릴레이션이 자신과 관계를 맺고 있음을 의미한다.

 

 

참고 자료 : 데이터베이스 개론(김연희, 한빛아카데미)

Comments