정규화(Normalization)란?
데이터베이스를 설계할 때 데이터 중복과 이상현상(삭제, 삽입, 갱신 문제)을 방지하기 위해 테이블을 체계적으로 분해하는 과정입니다.
정규화를 통해 데이터의 일관성과 무결성을 유지할 수 있죠.
정규화가 필요한 이유
1️⃣ 삭제 이상(Deletion Anomaly)
데이터 삭제 시, 의도치 않게 다른 정보도 함께 삭제되는 문제
예) 학생의 수강 정보를 삭제했더니 학생 이름까지 함께 사라짐
2️⃣ 삽입 이상(Insertion Anomaly)
일부 정보만 입력하려는데, 테이블 구조상 다른 정보도 강제로 입력해야 하는 문제
예) 학생의 학번과 이름만 등록하려는데 수강과목 정보도 넣어야 저장 가능
3️⃣ 갱신 이상(Update Anomaly)
데이터 일부를 수정했는데, 같은 정보가 여러 군데 있어 모두 갱신해야 하는 문제
예) 학생 이름을 변경하려는데 다른 테이블에도 같은 정보가 중복되어 있음
함수적 종속성 (Functional Dependency, FD)
정규화의 핵심은 함수적 종속성 개념을 파악하는 것입니다.
함수적 종속성 정의
X 값이 정해지면 Y 값이 반드시 정해질 때 Y는 X에 함수적 종속이라고 합니다.
공식으로 표현하면
예)
학번 → 이름 (학번이 같으면 이름도 같아야 함)
FD 다이어그램
속성 간 함수적 종속 관계를 시각적으로 표현한 그림.
→ 어떤 속성이 다른 속성 값을 결정하는지 쉽게 확인 가능
정규형 (Normal Form)
테이블이 어떤 수준까지 정규화됐는지 나타내는 기준이 정규형입니다.
제3정규형 (3NF)
-
모든 속성이 기본키에 함수적으로 종속
-
그리고 전이적 함수 종속(Transitive Dependency) 관계가 없을 때
전이적 함수 종속 예)
학번 → 교수번호, 교수번호 → 소속학과 → 학번 → 소속학과 (간접 종속)
보이스-코드 정규형 (BCNF)
3NF보다 더 엄격한 조건
모든 함수적 종속에서 결정자 X는 후보키여야 함
BCNF가 아니면 데이터 중복 및 표현력 제한 문제가 발생할 수 있습니다.
무손실 분해 (Lossless Decomposition)
정규화를 위해 테이블을 분해하더라도 원래의 데이터를 다시 정확하게 복원할 수 있어야 합니다.
이걸 무손실 분해라고 합니다.
공식으로 표현하면
여기서
는 자연 조인(Natural Join) 의미-
유손실 분해 : 데이터가 누락되거나 중복되어 원래 테이블 복원이 안 됨
-
무손실 분해 : 언제든 조인해서 원래 테이블 복원 가능
종속성 유지 분해 (Dependency Preserving Decomposition)
테이블을 분해했을 때,
원래 존재하던 모든 함수적 종속성(FD)을 유지할 수 있어야 합니다.
만약 종속성을 잃으면
데이터 정확성 검증과 무결성 제약을 유지하기 어려워집니다.
종속성 유지 방법
-
모든 FD를 분해된 테이블에서 복원 가능해야 함
-
일반적으로 3NF까지 정규화하면 종속성 유지 가능하지만
BCNF까지 가면 종속성이 일부 사라질 위험 있음
이럴 땐 BCNF 대신 3NF에서 정규화를 멈추는 게 차선책
데이터베이스 정규화 설계 목표
최적의 데이터베이스 설계는 아래 3가지를 달성하는 것
목표 | 설명 |
---|---|
무손실 분해 | 데이터 복원 가능 |
종속성 유지 | 데이터 간 관계(FD) 유지 |
가능한 한 BCNF 만족 | 데이터 중복 최소화 |
※ 현실에 따라 3NF에서 설계 종료하는 것도 전략!
중요 내용 정리
구분 | 설명 |
---|---|
정규화 | 데이터 중복과 이상현상 방지 |
함수적 종속성 | X 값 → Y 값 결정 |
3NF | 전이적 종속성 제거 |
BCNF | 모든 결정자가 후보키 |
무손실 분해 | 데이터 복원 가능 |
종속성 유지 분해 | FD 유지 가능 |
객관식 3문제 + 정답과 해설
Q1. 정규화가 필요한 이유로 옳지 않은 것은?
① 데이터 중복 방지
② 삽입 이상 방지
③ 프로세스 속도 향상
④ 갱신 이상 방지
정답: ③
해설: 정규화는 데이터 이상현상 예방이 목적. 속도 향상은 직접 목표 아님.
Q2. 다음 중 보이스-코드 정규형(BCNF)의 조건으로 옳은 것은?
① 모든 함수적 종속의 결정자가 후보키
② 전이적 함수 종속 제거
③ 모든 속성 값이 원자값
④ 삽입이상 방지
정답: ①
해설: BCNF 조건은 모든 FD의 결정자가 후보키.
Q3. 무손실 분해란 무엇인가?
① 데이터를 삭제하지 못하는 현상
② 분해된 테이블로부터 원래 테이블 복원이 가능한 것
③ 데이터 이상현상 발생
④ 모든 테이블이 BCNF를 만족하는 것
정답: ②
해설: 무손실 분해는 테이블을 다시 원상복구할 수 있어야 함.