다중값 속성 변환
전화번호처럼 여러 값을 가질 수 있는 속성은 한 컬럼에 모으지 않고, 부모 PK를 포함한 별도 테이블의 여러 행으로 푼다.
ER 모델: 회원 1명에 전화번호 여러 개 원본 개념
회원
PK id = 7
02-123-4567 집
031-222-3333 회사
010-7777-8888 휴대폰
한 회원이 여러 전화번호를 가지므로, 전화번호는 단일 컬럼 하나로 끝나지 않습니다.
관계 모델: 자식 테이블로 분리 변환 결과
변환 규칙
users.id를 user_phones.user_id로 복사해 부모를 가리킵니다.
전화번호 하나당 행 하나를 만들고, 종류는 type 컬럼에 둡니다.
users
id | name | email 7 | Kim | kim@example.com
user_phones
user_id phone type
7 02-123-4567 집
7 031-222-3333 회사
7 010-7777-8888 휴대폰
FK 포함
원래 개체의 PK를 들고 와서 어느 회원의 번호인지 잃지 않습니다.
중복 방지
보통 (user_id, phone)을 PK로 두어 번호 단위를 고유하게 만듭니다.