자격증/SQLD

SQLD 정규화 1NF 2NF 3NF BCNF 구분법

공감(공부하는감자) 2026. 7. 1. 11:44

안녕하세요, 공부하는 감자입니다 🥔

SQLD 1과목에서 정규화 문제를 만나면 고민할 시간이 없어요. 10~15초 안에 답을 정하고 넘어가야 하는 유형입니다.

그게 가능한 이유는 정규화가 사실상 암기 네 줄로 끝나는 주제이기 때문이에요. 쿼리 결과를 추적할 필요도 없으니, 투자 시간 대비 점수 효율로는 SQLD 전체에서 최상위권입니다.

그 네 줄은 각 단계의 제거 대상이에요.

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

저는 "원자값, 부분, 이행, 결정자" 이렇게 주문처럼 외웠습니다.

왜 이 한 문제가 중요하냐면

1과목은 10문항 중 4개 미만이면 과락이에요. 그런데 정규화가 매회 1~2문제 나옵니다.

과락선이 4문제인 시험에서 거저 주는 1~2문제를 놓치면 그만큼 위험해지는 거죠. 보기에서 정규형 조건을 설명하고 "몇 NF 위반인가?"를 묻는 정형화된 패턴이라, 외우기만 하면 무조건 맞는 문제입니다.

단계별로 예시 하나씩만

각 단계는 "직전 단계 만족 + 추가 조건" 구조예요.

1NF — 한 칸에 값 하나

회원ID 이름 관심분야
M01 박감자 주식, 부동산, 코인

관심분야 한 칸에 값이 세 개 들어 있으면 1NF 위반입니다. 행을 나눠서 한 칸에 하나씩 담으면 해결돼요.

회원ID 이름 관심분야
M01 박감자 주식
M01 박감자 부동산
M01 박감자 코인

이렇게 한 칸에 값이 하나씩이면 1NF 만족입니다.

2NF — 기본키 일부에만 매달린 속성 제거

기본키가 {주문번호, 상품코드}인 주문상세 테이블을 봅시다.

주문번호 상품코드 상품명 수량
1001 P01 키보드 2
1001 P02 마우스 1

상품명은 상품코드만 알면 정해집니다. 주문번호는 필요 없어요.

이렇게 복합키의 일부에만 종속된 게 부분 함수 종속이고, 2NF 위반입니다. 주문상세{주문번호, 상품코드, 수량}와 상품{상품코드, 상품명}으로 분리하면 해결.

3NF — 키 → A → B 사슬 끊기

이번엔 부서 정보가 붙어 있는 사원 테이블이에요.

사번 부서코드 부서명
E10 D1 영업팀
E11 D1 영업팀

사번 → 부서코드 → 부서명. 부서명이 키에 직접 종속된 게 아니라 부서코드를 거쳐 종속돼 있죠.

이게 이행 함수 종속입니다. 사원{사번, 부서코드}와 부서{부서코드, 부서명}으로 쪼개면 3NF.

BCNF — 결정자가 후보키가 아니면 위반

수강 테이블에서 "강사 한 명은 강좌 하나만 담당, 수강생은 강좌당 강사 한 명"이라는 조건이 있다고 해요.

수강생 강좌 강사
101 SQL입문 김강사
102 SQL입문 김강사

여기서 강사 → 강좌라는 함수 종속이 있는데, 강사는 후보키가 아닙니다. 3NF는 만족해도 BCNF 위반이에요.

수강{수강생, 강사}와 담당{강사, 강좌}으로 분리합니다.

BCNF는 3NF의 깐깐한 버전이라고 보면 됩니다. 대부분 테이블은 3NF면 BCNF도 자동 만족인데, 복합 후보키가 얽히면 예외가 생겨요.

같이 외워야 하는 것: 이상 현상

정규화의 목적이 이상 현상(Anomaly) 제거라서, 연계 문제가 같이 나옵니다.

  • 삽입 이상 — 새 데이터를 넣으려는데 관계없는 데이터까지 요구됨
  • 갱신 이상 — 중복 데이터 중 일부만 수정돼서 불일치 발생
  • 삭제 이상 — 행 하나 지웠는데 다른 정보까지 같이 사라짐

그리고 함정 하나. 정규화가 무조건 좋은 게 아니에요.

테이블이 쪼개지니 JOIN이 늘고 조회 성능이 떨어집니다. 그래서 실무에선 일부러 역정규화를 하기도 하고, 시험에서 "정규화의 단점"을 묻는 보기도 가끔 등장합니다.

풀이 순서를 기계화하세요

  1. 테이블 보면 기본키·후보키부터 식별
  2. 각 속성이 키에 어떻게 종속되는지 화살표 그리기
  3. 부분 종속이 보이면 2NF 위반, 거쳐 가는 종속이면 3NF 위반
  4. "몇 NF인가?" 문제는 1NF부터 순서대로 체크
  5. 헷갈리면 제거 대상 순서(반복 그룹 → 부분 → 이행 → 결정자)로 보기 소거

자주 틀리는 포인트는 후보키 정의예요. 후보키는 유일성과 최소성을 둘 다 만족해야 합니다.

유일성만 있는 건 슈퍼키예요. 이 구분을 묻는 보기가 종종 섞여 나옵니다.

암기가 됐다 싶으면 실제 기출 유형으로 확인해보세요. 저는 문어CBT 모의고사로 1과목만 빠르게 점검했는데, 무료라서 정규화 유형 감 잡는 용도로는 충분했습니다.

 

SQLD·정처기·컴활·ADsP 무료 CBT 모의고사

기출 변형 문제, 자동 채점, 회차별 실력 추적까지 가입 없이 바로 풀어보세요.

sqldpass.com

네 줄 암기, 화살표 그리기, 순서대로 체크. 이 세 가지면 정규화 문제는 시험장에서 제일 빨리 끝나는 문제가 됩니다.