정규화 단계별 정리

TJK·2025년 8월 22일

정규화 단계별 정리

정규화(Normalization)는 데이터베이스의 중복을 제거하고 데이터의 일관성과 무결성을 보장하기 위해 테이블을 구조화하는 과정입니다.


1정규형 (1NF: First Normal Form)

핵심 개념

테이블의 모든 속성(컬럼)은 원자값(Atomic Value)만을 가져야 합니다. 즉, 하나의 컬럼에 콤마(,) 등으로 구분된 여러 개의 값이 들어가면 안 됩니다.

  • 위반 예시: 한 컬럼에 '수학, 영어, 과학'처럼 여러 값이 저장된 경우
  • 시험 출제 포인트: '원자성 위반', '한 컬럼에 여러 값' 이라는 키워드가 나오면 1NF입니다.
  • 암기 팁: "1NF는 쪼개야 한다 (원자성)"

2정규형 (2NF: Second Normal Form)

핵심 개념

1NF를 만족하고, 기본키의 전체가 아닌 일부에만 종속된 속성(부분 함수 종속)이 없어야 합니다. 주로 복합키를 가진 테이블에서 발생하는 문제입니다.

  • 위반 예시: 복합키 (학생ID, 과목ID)에서 학생이름학생ID에만 종속된 경우
  • 시험 출제 포인트: '부분 함수 종속', '복합키의 일부 종속' 이라는 키워드가 나오면 2NF입니다.
  • 암기 팁: "2NF는 부분 종속 제거"

3정규형 (3NF: Third Normal Form)

핵심 개념

2NF를 만족하고, 키가 아닌 속성 간의 종속(이행 함수 종속)이 없어야 합니다. 즉, 기본키 → 속성1 → 속성2와 같은 종속 구조가 있으면 안 됩니다.

  • 위반 예시: 학생ID → 학과ID, 그리고 학과ID → 학과이름인 경우
  • 시험 출제 포인트: '이행 함수 종속', 'A → B → C' 와 같은 구조가 나오면 3NF입니다.
  • 암기 팁: "3NF는 이행 종속 제거"

반정규화 (De-normalization)

핵심 개념

성능 향상을 위해 정규화 규칙을 의도적으로 위반하여 데이터 중복을 허용하는 기법입니다. 정규화는 중복 제거에 유리하지만 JOIN 연산이 많아져 성능이 저하될 수 있습니다. 이를 해결하기 위한 전략입니다.

  • 주요 기법:
    1. 테이블 병합: 자주 사용하는 테이블을 합쳐 JOIN 횟수를 줄입니다.
    2. 중복 속성 추가: 계산이 필요한 값을 미리 저장해 SELECT 시 연산을 줄입니다.
  • 시험 출제 포인트: '성능 향상', 'JOIN 감소', '데이터 중복 허용' 이라는 키워드가 나오면 반정규화입니다.
  • 암기 팁: "정규화는 안정성, 반정규화는 성능"

정규화 단계 간 관계 (★★★★★)

  • 상위 정규형을 만족하면, 그 하위 정규형은 모두 만족합니다.
  • 3NF 만족 → 2NF, 1NF도 자동 만족
  • 2NF 만족 → 1NF도 자동 만족
  • 시험 팁: "3정규형을 만족하면 1정규형과 2정규형도 만족한다."와 같은 지문은 항상 참입니다.

정규화 핵심 요약

단계핵심 키워드위반 예시
1NF원자성 (Atomic)한 컬럼에 여러 값(콤마)
2NF부분 함수 종속복합키의 일부에만 종속
3NF이행 함수 종속A → B → C 구조
반정규화성능 향상중복 데이터 허용

SQLD 시험 단축키 (시험 직전 필독!)

  • 1NF = 원자성
  • 2NF = 부분 종속
  • 3NF = 이행 종속
  • nNF를 만족하면 n-1NF도 만족한다.
  • JOIN 과다로 인한 성능 문제 해결 → 반정규화

실전 기출 문제 스타일

1. 한 컬럼에 여러 값이 들어가 있는 경우 위반되는 정규형은?
① 1NF
② 2NF
③ 3NF
④ 반정규화

2. 복합키의 일부에만 종속된 속성이 존재한다면 위반되는 정규형은?
① 1NF
② 2NF
③ 3NF
④ 반정규화

3. 다음 관계에서 위반되는 정규형은?
학생ID → 학과ID, 학과ID → 학과이름
① 1NF
② 2NF
③ 3NF
④ 반정규화

4. 데이터 중복을 허용하여 조회 성능을 높이는 기법은?
① 정규화
② 반정규화
③ 집계 함수
④ 부분 종속

5. 3정규형을 만족하는 테이블은 1정규형과 2정규형도 만족한다. → 이 문장이 올바른지 판단하시오.


정답 및 해설

  • 문제 1 정답: ① (1NF)
    • 해설: 한 컬럼에 여러 값이 있다는 것은 원자성을 위반한 것입니다. 이는 1정규형의 기본 규칙입니다.
  • 문제 2 정답: ② (2NF)
    • 해설: 복합키의 일부에 종속된 속성은 부분 함수 종속이며, 이는 2정규형을 위반합니다.
  • 문제 3 정답: ③ (3NF)
    • 해설: 학생ID를 통해 학과ID를 알 수 있고, 학과ID를 통해 학과이름을 알 수 있습니다. 이는 이행 함수 종속의 전형적인 예시로, 3정규형을 위반합니다.
  • 문제 4 정답: ② (반정규화)
    • 해설: 정규화는 중복을 제거하지만, 반정규화는 성능을 위해 의도적으로 중복을 허용하는 기법입니다.
  • 문제 5 정답: O
    • 해설: 정규화는 단계별로 누적되는 개념입니다. 상위 정규형은 하위 정규형의 모든 조건을 만족하기 때문에 이 문장은 옳습니다.
profile
Hello world!

0개의 댓글