정규화는 정규형 이름을 순서대로 외우는 단원이 아닙니다. 먼저 어떤 속성이 어떤 속성을 결정하는지 화살표로 적고, 그 결정자가 후보키인지 확인해야 합니다. 함수 종속을 제대로 표시하면 부분 종속과 이행 종속도 눈에 보입니다.
후보키와 함수 종속을 먼저 표시합니다
X → Y는 같은 X 값에 대해 Y 값이 하나로 정해진다는 뜻입니다. 문제의 행 몇 개만 보고 우연히 값이 같다고 종속을 만들지 말고, 제시된 업무 규칙과 속성 의미를 확인하세요. 후보키가 복합키라면 어느 비주요 속성이 키 전체가 아닌 일부에만 의존하는지도 표시합니다.
- 후보키행을 유일하게 식별하는 최소 속성 집합을 찾는다.
- 결정자화살표 왼쪽에서 다른 값을 정하는 속성을 표시한다.
- 종속자결정자에 따라 값이 정해지는 속성을 묶는다.
- 위반부분·이행 종속 또는 후보키가 아닌 결정자를 찾는다.
각 정규형은 제거하려는 종속을 기준으로 구분합니다
삽입·삭제·갱신 이상은 중복된 사실에서 시작됩니다
한 테이블에 서로 다른 사실이 반복 저장되면 한 값을 고칠 때 여러 행을 함께 바꿔야 하거나, 다른 사실 없이는 새 정보를 넣지 못하거나, 한 행을 지우면서 필요한 정보까지 사라질 수 있습니다.
분해 뒤에도 원래 정보와 제약을 확인합니다
정규화는 열을 무조건 잘게 나누는 작업이 아닙니다. 어떤 종속을 제거하려고 테이블을 분리하는지 설명하고, 공통 속성을 통해 원래 정보를 잘못된 추가 행 없이 복원할 수 있는지 확인해야 합니다. 문제에서 함수 종속 보존까지 요구하면 분해된 릴레이션에서 원래 제약을 검사할 수 있는지도 따로 봅니다.
답안은 정규형 이름보다 위반 근거를 먼저 보여줍니다
“제2정규형이 아니다”로 끝내지 말고 “복합 후보키의 일부에 비주요 속성이 의존하므로 부분 함수 종속이 존재한다”처럼 쓰세요. 분해 결과를 요구하면 새 릴레이션의 속성과 키도 함께 제시해야 채점 가능한 답이 됩니다.
정규화와 SQL 결과 추적은 별도 기술이지만 데이터의 구조를 눈에 보이게 만든다는 점은 같습니다. 이어서 NULL·JOIN·GROUP BY SQL 공부법도 확인해보세요.