공든탑앱 열기

정규화와 이상 현상

정보처리기사 · 데이터베이스 설계 · 약 14분

쉽게 말하면

한 표에 이것저것 다 넣으면 같은 정보가 여러 번 들어가요. 그러면 하나를 고칠 때 다른 줄을 빠뜨리거나, 지우다가 필요한 정보까지 사라지는 문제(이상 현상)가 생겨요. 정규화는 표를 알맞게 쪼개서 이 문제를 없애는 과정이에요. 단계마다 없애는 것이 정해져 있어요. 1NF는 한 칸에 값 하나, 2NF는 부분 종속, 3NF는 이행 종속, BCNF는 결정자 문제를 없애요.

시험용 정의

정규화는 함수 종속을 기준으로 릴레이션을 분해해 데이터 중복과 이상 현상을 없애는 과정이다. 이상 현상은 삽입 이상(원치 않는 값까지 넣어야 함), 삭제 이상(필요한 값까지 지워짐), 갱신 이상(일부만 고쳐져 불일치)이다. 함수 종속 X → Y는 X 값이 Y 값을 결정한다는 뜻이다. 단계: 1NF(원자값) → 2NF(부분 함수 종속 제거, 완전 함수 종속) → 3NF(이행 함수 종속 제거) → BCNF(결정자이면서 후보키가 아닌 것 제거) → 4NF(다치 종속 제거) → 5NF(조인 종속 제거). 정규화는 무손실 분해여야 하며(다시 조인하면 원래대로) 논리적 설계 단계에서 한다. 성능을 위해 의도적으로 중복을 허용하는 것을 반정규화라 한다.

비유로 이해하기

엉킨 서랍 정리다. 한 칸에 물건 하나(1NF), 서랍 이름표에 딱 맞는 물건만(2NF), 다른 물건을 거쳐야만 의미가 있는 물건은 따로 서랍으로(3NF) 나눈다. 나누되 다시 꺼내 합치면 원래 모습이 돼야 한다(무손실 분해).

자세히

그림으로 보기: 정규화 단계

  1. 1NF모든 속성 값이 더 나눌 수 없는 원자값
  2. 2NF부분 함수 종속 제거(기본키 전체에 종속)
  3. 3NF이행 함수 종속 제거(A → B → C 끊기)
  4. BCNF결정자가 모두 후보키
  5. 4NF다치 종속 제거
  6. 5NF조인 종속 제거
외우는 말: 도·부·이·결·다·조 (도메인 원자값 → 부분 → 이행 → 결정자 → 다치 → 조인)

먼저 알아 둘 말

말뜻
함수 종속 X → YX 값이 정해지면 Y 값이 하나로 정해진다. X를 결정자, Y를 종속자라 한다
완전 함수 종속Y가 기본키 전체에 종속 (일부만으로는 결정 안 됨)
부분 함수 종속Y가 복합 기본키의 일부에만 종속
이행 함수 종속X → Y, Y → Z 이어서 X → Z가 성립
다치 종속A 하나에 B 값 여러 개가 대응 (A →→ B)
무손실 분해분해한 릴레이션을 조인하면 원래 릴레이션이 되는 분해

정규형 단계 (외우기: 도·부·이·결·다·조)

정규형없애는 것예
1NF도메인이 원자값이 아닌 것 (반복·다중값)전화번호 칸에 번호 2개 → 행 분리
2NF부분 함수 종속(학번, 과목코드) → 성적, 학번 → 이름: 이름을 학생 테이블로 분리
3NF이행 함수 종속학번 → 학과, 학과 → 학과장: 학과 테이블 분리
BCNF결정자이면서 후보키가 아닌 것모든 결정자가 후보키가 되게
4NF다치 종속독립적인 다중값 속성 분리
5NF조인 종속후보키를 통하지 않는 조인 종속 제거

이상 현상 예 (수강 표: 학번, 이름, 과목, 성적)

이상상황
삽입 이상과목을 아직 안 들은 신입생은 과목이 없어 등록할 수 없다
삭제 이상한 과목만 듣던 학생의 수강을 지우면 학생 이름까지 사라진다
갱신 이상이름을 바꿀 때 여러 행 중 일부만 바꿔 불일치

반정규화

조회 성능을 위해 정규화된 테이블을 다시 합치거나(병합), 나누거나(분할), 중복 컬럼·파생 컬럼을 추가하는 것. 데이터 일관성이 깨질 위험이 있어 정규화를 먼저 하고 꼭 필요할 때 한다.

기출에서 더 나온 것

말뜻
반정규화: 테이블 추가중복 테이블, 통계(집계) 테이블, 이력 테이블, 부분 테이블, 진행 테이블 추가 (빌드 테이블은 없음)
함수 종속 추론 규칙반사·증가·이행·결합(합집합)·분해·의사 이행 규칙 (암스트롱 공리)

시험에 이렇게 나와요

확인 문제

Q1. 한 칸에 여러 값이 들어 있는 표를 원자값만 갖도록 고치는 정규화 단계는?

  1. 제3정규형
  2. 제1정규형
  3. 제2정규형
  4. BCNF
정답 보기

2번 제1정규형

제1정규형(1NF)은 모든 속성의 도메인이 원자값만 갖게 한다. 반복 그룹·다중값 속성을 없앤다.

Q2. 2NF에서 3NF로 가기 위해 제거하는 것은?

  1. 다치 종속
  2. 원자값이 아닌 도메인
  3. 이행 함수 종속
  4. 부분 함수 종속
정답 보기

3번 이행 함수 종속

이행 함수 종속이다. 1NF는 원자값, 2NF는 부분 함수 종속 제거, BCNF는 결정자가 모두 후보키, 4NF는 다치 종속 제거다.

Q3. 릴레이션 R(A, B, C)에서 A → B, B → C가 성립할 때 A → C를 무엇이라 하는가?

  1. 완전 함수 종속
  2. 이행 함수 종속
  3. 다치 종속
  4. 부분 함수 종속
정답 보기

2번 이행 함수 종속

이행 함수 종속이다. A가 B를 거쳐 C를 결정한다. 3NF로 가려면 이것을 없앤다.

Q4. 결정자이면서 후보키가 아닌 것을 제거한 정규형은?

  1. BCNF
  2. 3NF
  3. 2NF
  4. 4NF
정답 보기

1번 BCNF

BCNF(보이스-코드 정규형)다. 모든 결정자가 후보키가 되게 한다. 3NF는 이행 종속을, 4NF는 다치 종속을 없앤다.

Q5. 정규화의 목적으로 거리가 먼 것은?

  1. 데이터 구조의 안정성
  2. 조회 시 조인 횟수 감소
  3. 데이터 중복 최소화
  4. 이상 현상 제거
정답 보기

2번 조회 시 조인 횟수 감소

정규화하면 테이블이 나뉘어 조인이 오히려 늘 수 있다.

헷갈리기 쉬운 O·X

2NF는 이행 함수 종속을 제거한 정규형이다.

정답 보기

X 2NF는 부분 함수 종속 제거.

삭제 이상은 튜플을 지울 때 필요한 다른 정보까지 함께 지워지는 현상이다.

정답 보기

O

정규화된 릴레이션은 분해 후 다시 조인해도 원래 정보가 손실되지 않아야 한다.

정답 보기

O 무손실 분해.

함께 보면 좋은 개념