Zeno ZENO
Database / DB 기초 · 조회 3 · 좋아요 0

4. 데이터베이스 기본키(PK)와 외래키(FK) 개념 및 관계

테이블을 연결하는 핵심 열쇠인 기본키와 외래키의 개념을 이해하고, 이를 통해 데이터 무결성을 유지하는 실무 작동 흐름을 배웁니다.

1. 키(Key)와 관계(Relationship)의 정의

관계형 데이터베이스(RDBMS)에서 키(Key)는 테이블에서 원하는 행을 정확하게 찾아내거나, 서로 다른 테이블을 안전하게 연결하기 위해 사용하는 특별한 기준 열(Column)입니다.

관계(Relationship)는 이 키들을 활용하여 테이블과 테이블을 서로 연결해 놓은 상태를 말합니다. RDBMS는 이름 그대로 테이블 간의 '관계'를 조율하는 것이 가장 큰 특징입니다.


2. 키와 관계가 필요한 이유

모든 정보를 테이블 하나에 전부 다 넣으면 중복 데이터가 엄청나게 많아지고 관리가 불가능해집니다. 그래서 주제별로 테이블을 쪼개야 하는데, 이때 쪼개진 테이블들을 다시 정확하게 이어주는 고리가 필요합니다.

실제 개발에서 해결하는 문제

  • 유일한 데이터 식별: 동명이인이 있을 때 "회원번호 5번 회원"처럼 단 한 사람을 오차 없이 정확하게 지목할 수 있게 만듭니다.
  • 엉뚱한 데이터 삽입 방지: 가입하지도 않은 유령 회원이 쇼핑몰에서 상품을 주문하는 것과 같은 대형 데이터 오류를 원천 차단합니다.

3. 반드시 알아야 할 핵심 개념

  • 기본키 (Primary Key, PK): 테이블에서 각 행(Row)을 서로 구별할 수 있는 유일한 식별자입니다. 중복된 값을 가질 수 없으며, 비어있는 상태(NULL)도 절대 허용하지 않습니다. (예: 주민등록번호, 학번, 회원 고유번호)
  • 외래키 (Foreign Key, FK): 다른 테이블의 기본키를 그대로 참조하는 연결용 열입니다. 외래키를 통해 "이 주문은 어떤 회원이 한 것인가?"를 추적할 수 있습니다.
  • 참조 무결성 (Referential Integrity): 외래키 값은 반드시 참조하는 부모 테이블의 기본키에 존재하는 값이어야만 한다는 데이터 보호 규칙입니다.

4. 함께 알아야 하는 주변 기초 개념

  • 복합키 (Composite Key): 하나의 열만으로는 기본키를 만들 수 없을 때, 두 개 이상의 열을 합쳐서 만든 기본키입니다.
  • 대리키 (Surrogate Key): 데이터 자체에는 의미가 없지만, 식별을 편리하게 하기 위해 시스템이 자동으로 1, 2, 3... 순서대로 부여하는 인공적인 일련번호 키입니다.

5. 데이터 연결 처리 흐름

쇼핑몰에서 회원이 상품을 주문할 때 기본키와 외래키가 작동하는 단계별 과정입니다.

  1. 회원 생성 (PK 발급): '홍길동' 회원 가입 시 회원 테이블에 id: 10(PK)이라는 고유 번호가 자동으로 부여됩니다.
  2. 주문 발생: 홍길동 회원이 물건을 주문하면 주문 테이블에 새로운 가로줄(행)이 생성됩니다.
  3. 연결고리 저장 (FK 매칭): 주문 테이블의 customer_id(FK) 칸에 홍길동의 고유 번호인 10을 기록합니다.
  4. 검증 및 조회: 시스템이 두 테이블을 연결(JOIN)하면 "10번 회원의 이름은 홍길동이므로, 이 주문은 홍길동의 주문이다"라고 정확하게 인지하게 됩니다.

6. 테이블 간의 관계 구조 예시

고객(customers) 테이블과 주문(orders) 테이블이 기본키와 외래키로 연결된 모습입니다.

고객(customers) 테이블

id (★기본키) name
1 홍길동
2 이영희

주문(orders) 테이블

order_id (★기본키) product_name customer_id (☎외래키)
101 모니터 1
102 키보드 1

7. 예시 구조 설명

  • 기본키 역할: 고객 테이블의 id와 주문 테이블의 order_id는 각각 자기 테이블 안에서 절대로 중복되지 않는 고유한 번호(PK)입니다.
  • 외래키 연결: 주문 테이블의 customer_id는 고객 테이블의 id를 가리키는 외래키(FK)입니다.
  • 관계 파악: 주문 번호 101번과 102번은 customer_id가 모두 1입니다. 고객 테이블에서 id가 1인 사람은 홍길동이므로, 모니터와 키보드는 모두 홍길동이 주문했음을 명확히 알 수 있습니다. (이것이 실무에서 가장 자주 쓰는 1대N 관계입니다.)

8. 초보자가 자주 실수하는 데이터 삭제 오류

외래키로 엮여 있는 테이블 데이터를 마음대로 지우려고 하면 데이터베이스가 에러를 뱉으며 명령을 거부합니다. 이를 이해해야 실무 오류를 막을 수 있습니다.

자식 데이터가 있는데 부모를 지우는 경우

위 예시에서 홍길동(id: 1)이 주문한 내역이 주문 테이블에 아직 남아있는데, 고객 테이블에서 홍길동 데이터를 강제로 DELETE(삭제)하려고 하면 참조 무결성 제약조건 위배 에러가 발생합니다. 주인이 없는 고아 주문 데이터가 남는 것을 방지하기 위한 DB의 안전장치입니다.

※ 실무 해결책: 부모 데이터를 지울 때 연결된 자식 데이터도 함께 자동으로 지워지도록 옵션(ON DELETE CASCADE)을 걸거나, 자식 데이터의 FK 칸을 공백(SET NULL)으로 만들도록 설정하여 해결합니다.


9. 핵심 내용 요약

관계형 데이터베이스는 데이터를 쪼개어 보관한 뒤 필요할 때 합쳐서 봅니다. 이때 각 행의 고유 식별자인 기본키(PK)와 다른 테이블을 참조하는 외래키(FK)를 사용하여 데이터가 엉키지 않도록 규칙(참조 무결성)을 지키며 완벽한 연결 관계를 유지합니다.


10. 핵심 용어 정리

기본키(PK) = 테이블에서 각 행을 유일하게 식별할 수 있는 중복 없는 핵심 열

외래키(FK) = 다른 테이블의 기본키를 참조하여 테이블 간의 연결고리 역할을 하는 열

참조 무결성 = 외래키 값이 부모 테이블의 기본키에 반드시 존재해야만 하는 데이터 규칙

1대N 관계 = 한쪽 테이블의 데이터 하나가 다른 쪽 테이블의 여러 데이터와 연결되는 가장 흔한 DB 관계

복합키 = 두 개 이상의 열을 결합하여 하나의 기본키 역할을 하도록 만든 키

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'DB 기초' 카테고리의 다른 글

전체보기