SQLD2026년 4월 20일· 9 min read· 조회 2

SQLD 정규화 완전 정복 (1NF·2NF·3NF·BCNF 조건 차이)

SQLD 1과목 데이터 모델링에서 매회 출제되는 정규화 문제를 제거 대상 중심으로 정리했습니다. 과락 방어 핵심 주제입니다.

안녕하세요. 문어입니다 🐙


결론 먼저

SQLD 1과목 과락 방어의 핵심은 정규화 4단계(1NF → 2NF → 3NF → BCNF)의 제거 대상을 순서대로 외우는 것입니다.

  • 1NF: 반복 그룹(원자값 아닌 값) 제거
  • 2NF: 부분 함수 종속 제거
  • 3NF: 이행 함수 종속 제거
  • BCNF: 결정자가 후보키가 아닌 경우 제거

이 네 줄만 손으로 쓸 수 있으면 객관식에서 고를 수 있어요.


왜 정규화가 1과목 과락 방어의 핵심인가

SQLD 1과목은 10문항 중 4개 이상을 맞춰야 과락을 피합니다(40% 커트라인). 그런데 1과목 10문항 중 정규화 관련이 1–2문제 나와요. 이 한 문제를 놓치면 과락 위험이 커집니다.

다행히 정규화는 정의만 정확히 외우면 풀리는 단답형 패턴이에요. 보기에서 각 정규형의 조건을 설명하고 "몇 NF인가?" 또는 "다음 중 맞는 것은?" 형태로 나옵니다. 2과목 SQL처럼 쿼리 결과를 추적할 필요가 없어서 투자 대비 점수 효율이 제일 좋은 주제입니다.


정규화 4단계 조건

각 단계마다 "직전 단계를 만족한 상태에서 + 추가 조건"을 만족해야 해요.

1NF (제1정규형) — 원자값

모든 속성이 원자값(더 이상 나눌 수 없는 값)이어야 함.

위반 예시:

학번이름수강과목
101SQL, DB, OS

수강과목이 "SQL, DB, OS"처럼 여러 값을 담고 있으면 1NF 위반.

1NF 변환:

학번이름수강과목
101SQL
101DB
101OS

2NF (제2정규형) — 부분 함수 종속 제거

1NF + 기본키의 일부에만 종속되는 속성 제거.

위반 예시 (기본키 = {학번, 과목코드}):

학번과목코드과목명학점
101S01SQL95
101D02DB90

여기서 과목명과목코드에만 종속(학번은 필요 없음). 이게 부분 함수 종속.

2NF 변환 (테이블 분리):

수강 테이블: {학번, 과목코드, 학점} 과목 테이블: {과목코드, 과목명}

3NF (제3정규형) — 이행 함수 종속 제거

2NF + 기본키 → 속성A → 속성B 형태의 이행 종속 제거.

위반 예시:

학번학과코드학과명
101C01컴퓨터공학
102C01컴퓨터공학

학번 → 학과코드 → 학과명으로 이행 종속. 학과코드가 중간에 끼어있음.

3NF 변환:

학생 테이블: {학번, 학과코드} 학과 테이블: {학과코드, 학과명}

BCNF (보이스-코드 정규형) — 결정자가 후보키

3NF + 모든 결정자가 후보키여야 함.

위반 예시 (학생은 과목당 한 명의 교수만 수강):

학번과목교수
101SQL김교수
102SQL김교수

후보키: {학번, 과목}, {학번, 교수} 가정. 교수 → 과목 함수 종속이 있는데 교수는 후보키가 아님 → BCNF 위반.

BCNF 변환:

수강 테이블: {학번, 교수} 강의 테이블: {교수, 과목}

BCNF는 3NF의 엄격한 버전이라고 생각하면 돼요. 대부분의 테이블은 3NF만 만족해도 BCNF를 자동 만족하지만, 복합 후보키가 있으면 예외가 생깁니다.

정규화 암기 팁

순서대로 제거 대상만 외우세요.

단계제거 대상한 줄 정의
1NF반복 그룹모든 값이 원자값
2NF부분 함수 종속기본키 전체에 종속
3NF이행 함수 종속키 → A → B 금지
BCNF비후보키 결정자모든 결정자가 후보키

암기 주문: "1NF 원자값, 2NF 부분, 3NF 이행, BCNF 결정자"


자주 나오는 출제 유형

유형 1: 정규형 식별

"다음 테이블은 몇 NF인가?"

테이블 구조를 보고 각 단계 조건에 맞는지 차례로 체크.

유형 2: 제거 대상 매칭

"2NF의 제거 대상은?" ① 반복 그룹 ② 부분 함수 종속 ③ 이행 함수 종속 ④ 결정자

암기만 되어 있으면 10초 안에 답.

유형 3: 정규화 단계 순서

"올바른 정규화 순서는?"

1NF → 2NF → 3NF → BCNF 순서. 각 단계가 이전 단계를 만족해야 다음으로 감.

유형 4: 이상 현상(Anomaly) 연결

정규화는 이상 현상을 제거하기 위한 과정이에요.

  • 삽입 이상: 새 데이터 추가 시 불필요한 다른 데이터까지 요구
  • 갱신 이상: 중복된 데이터 수정 시 일부만 바뀌어 불일치
  • 삭제 이상: 데이터 삭제 시 연관 정보까지 사라짐

"3NF 정규화로 제거되는 이상은?" 같은 연계 문제도 나옵니다.


자주 하는 실수

1. "함수 종속"과 "결정자" 헷갈림

  • 함수 종속: A → B (A가 B를 결정)
  • 결정자: 화살표 왼쪽의 A

2. 후보키 식별 오류 후보키는 유일성 + 최소성. 두 조건 모두 만족해야 해요. 슈퍼키(유일성만)와 다름.

3. 정규화가 항상 좋다는 착각 정규화하면 테이블이 많아져서 JOIN이 늘어나고 성능이 떨어져요. 그래서 실무에선 3NF까지만 하고 일부러 역정규화(denormalization)하는 경우도 있습니다. 시험에선 "정규화의 장점"만 묻는 편이지만, "단점"도 가끔 나옵니다.

4. BCNF와 3NF 차이 암기 부실 3NF: 이행 종속 제거 → 대부분의 테이블은 여기까지만 하면 됨 BCNF: 비후보키 결정자 제거 → 3NF 중 일부만 BCNF 위반


시험장에서의 접근법

  1. 테이블 보면 기본키·후보키 먼저 식별
  2. 각 속성이 기본키에 어떻게 종속되는지 화살표 그리기
  3. 부분/이행 종속 있으면 위반 단계 확정
  4. "몇 NF?" 문제는 위에서부터 체크 (1NF → 2NF → 3NF 순서로 위반 여부)
  5. 보기 4개 중 애매하면 "제거 대상" 순서로 소거
정규화 문제는 대부분 10–15초 안에 답을 정해야 해요. 고민하지 말고 암기한 조건으로 바로 소거하세요.

정리

  • 1NF → 2NF → 3NF → BCNF 순서
  • 제거 대상: 반복 그룹 → 부분 종속 → 이행 종속 → 비후보키 결정자
  • 이상 현상(삽입/갱신/삭제)을 정규화로 제거
  • 1과목 10문항 중 1–2문제 안정적으로 확보 가능

SQLD 모의고사로 정규화 유형 풀어보기 →

직접 문제를 풀어보세요

매번 새로운 모의고사와 무한 풀이 모드로 실전 감각을 키울 수 있습니다.