본문 바로가기
Infra & Security Eng/Database Engineering

PK와 FK 개념, PK, FK 설정 원리, 테이블 분리와 부모-자식 관계 (1:N), 까마귀 발(Crow's Foot) 기호의 해석

by 엔지니어 E 2026. 3. 24.
반응형

 

PK와 FK

1. Primary Key(PK, 기본키): 테이블에서 각 행을 구별할 수 있는 유일한 신분증 번호. 중복될 수 없고, 비어있어도 안된다 
2. Foreign key(FK, 외래키): 다른 테이블의 PK를 빌려와서 두 테이블을 연결하는 고리이다

 

PK(PRIMARY KEY) 설정 원리 

데이터베이스 상자(테이블)에 들어오는 모든 줄(데이터)는 서로 중복되지 않는 고유한 번호를 가져야 한다. 그래야 컴퓨터가 특정 데이터를 오차 없이 찾아낼 수 있기 때문이다 

1. 영수증 테이블의 PK: 한 상점에서 발행한 수많은 영수증 중 특정 영수증을 딱 하나만 골라내기 위해 사용한다. 날짜나 금액은 중복될 수 있지만, 영수증 번호는 절대 중복되지 않도록 설계한다

2. 영수증_품목 테이블의 PK: 한 영수증 안에 적힌 여러 품목 중 첫 번째 줄, 두 번째 줄을 구분하기 위한 순번이다. 영수증 번호가 같더라도 이 순번이 다르면 서로 다른 줄로 인식된다

영수증 PK: 수많은 종이 영수증들 사이에서 겹치지 않게 사용함
항목번호 PK: 한 장의 영수증 안에 적힌 여러 줄의 물건들 사이에서 겹치지 않기 위해 사용함

* 공급 받는 사람 기준: 영수증번호는 PK가 될 수 X
* 공급자 기준: 영수증 번호는 PK가 될 수 O

 

FK(FOREIGN KEY) 설정 원리 

외래키는 두 테이블 간의 **데이터 무결성(Data Integrity)**을 유지하기 위한 기술적 제약 조건이다

1. 참조 규칙: 자식 테이블의 특정 컬럼이 부모 테이블의 PK(기본키) 컬럼 값을 반드시 참조하도록 강제한다
2. 물리적 일치: 부모의 PK와 자식의 FK는 데이터 타입(예: INT, VARCHAR)과 길이가 완벽히 일치해야 물리적 연결이 가능하다
3. 존재 증명: 자식 테이블에 데이터를 입력할 때, 입력하려는 FK 값이 부모 테이블의 PK 리스트에 있는지 실시간으로 검증한다. 없는 값은 입력 자체가 차단된다

 

테이블 분리와 부모-자식 관계 (1:N)


1(부모)의 역할:
고유한 식별값(PK)을 가지며, 여러 번 반복될 수 없는 '기준 데이터'를 보유한다 (절대 중복되지 X)



N(자식)의 역할: 부모의 PK를 FK로 가져와 저장한다. 동일한 부모 PK를 가진 행이 여러 개 존재할 수 있으므로 '상세 데이터'를 담당한다

분리 이유: 하나의 영수증에 품목이 늘어날 때마다 업체명, 날짜 등의 공통 정보가 중복 저장되는 것을 막기 위해, 공통 정보는 '부모'에 한 번만 쓰고 상세 내역은 '자식'에 행 단위로 추가한다

 

까마귀 발(Crow's Foot) 기호의 해석

선 끝에 붙은 기호는 데이터의 최솟값과 최댓값을 나타내는 수량 규칙이다


ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ