정규화는 정규형 이름을 순서대로 외우는 단원이 아닙니다. 먼저 어떤 속성이 어떤 속성을 결정하는지 화살표로 적고, 그 결정자가 후보키인지 확인해야 합니다. 함수 종속을 제대로 표시하면 부분 종속과 이행 종속도 눈에 보입니다.

후보키와 함수 종속을 먼저 표시합니다

X → Y는 같은 X 값에 대해 Y 값이 하나로 정해진다는 뜻입니다. 문제의 행 몇 개만 보고 우연히 값이 같다고 종속을 만들지 말고, 제시된 업무 규칙과 속성 의미를 확인하세요. 후보키가 복합키라면 어느 비주요 속성이 키 전체가 아닌 일부에만 의존하는지도 표시합니다.

종속성 표시 순서
  1. 후보키행을 유일하게 식별하는 최소 속성 집합을 찾는다.
  2. 결정자화살표 왼쪽에서 다른 값을 정하는 속성을 표시한다.
  3. 종속자결정자에 따라 값이 정해지는 속성을 묶는다.
  4. 위반부분·이행 종속 또는 후보키가 아닌 결정자를 찾는다.

각 정규형은 제거하려는 종속을 기준으로 구분합니다

정규형판정의 핵심
제1정규형각 속성값이 원자값이며 반복되는 값 묶음이 없는가
제2정규형제1정규형이고 비주요 속성의 부분 함수 종속이 없는가
제3정규형제2정규형이고 비주요 속성 사이의 이행 종속을 제거했는가
BCNF모든 비자명 함수 종속에서 결정자가 후보키인가

삽입·삭제·갱신 이상은 중복된 사실에서 시작됩니다

한 테이블에 서로 다른 사실이 반복 저장되면 한 값을 고칠 때 여러 행을 함께 바꿔야 하거나, 다른 사실 없이는 새 정보를 넣지 못하거나, 한 행을 지우면서 필요한 정보까지 사라질 수 있습니다.

이상판단 질문
삽입 이상원하지 않는 다른 정보가 없으면 필요한 사실을 등록할 수 없는가
삭제 이상한 행 삭제로 유지해야 할 다른 사실까지 사라지는가
갱신 이상중복된 값을 일부 행에서만 바꿔 불일치가 생기는가

분해 뒤에도 원래 정보와 제약을 확인합니다

정규화는 열을 무조건 잘게 나누는 작업이 아닙니다. 어떤 종속을 제거하려고 테이블을 분리하는지 설명하고, 공통 속성을 통해 원래 정보를 잘못된 추가 행 없이 복원할 수 있는지 확인해야 합니다. 문제에서 함수 종속 보존까지 요구하면 분해된 릴레이션에서 원래 제약을 검사할 수 있는지도 따로 봅니다.

후보키가 최소 속성 집합인가복합키의 일부에만 의존하는 속성이 있는가비주요 속성이 다른 비주요 속성을 결정하는가결정자가 후보키인지 확인했는가분해 목적을 종속과 연결했는가이상 현상을 구체적인 행 변화로 설명했는가

답안은 정규형 이름보다 위반 근거를 먼저 보여줍니다

“제2정규형이 아니다”로 끝내지 말고 “복합 후보키의 일부에 비주요 속성이 의존하므로 부분 함수 종속이 존재한다”처럼 쓰세요. 분해 결과를 요구하면 새 릴레이션의 속성과 키도 함께 제시해야 채점 가능한 답이 됩니다.

정규화와 SQL 결과 추적은 별도 기술이지만 데이터의 구조를 눈에 보이게 만든다는 점은 같습니다. 이어서 NULL·JOIN·GROUP BY SQL 공부법도 확인해보세요.