더 높은 정규화 형식을 위반하는지 분석할 때 사용할 수 있는 방법 중 하나는 바로 무손실 분할(Lossless Decomposition)이다. 테이블에 컬럼이 많으면 일련의 부분 집합으로 분할해야 한다. 이들 부분 집합에 대해 SELECT DISTINCT 문을 수행한 후 LEFT OUTER JOIN을 사용해 다시 조인한 결과가 원래 테이블 결과와 동일한지 확인한다. 분할한 테이블을 조인으로 재결합한 결과, 데이터 손실이 없다면 원본 테이블은 일부 정규화 형식을 위반한 것이므로 더 면밀히 조사해서 데이터 이상 문제를 일으키는지 파악해야 한다. 표 1-3 테이블을 분할해서 나타내면 표 1-5와 같다.
▼ 표 1-5 표 1-3을 분할한 테이블
판매원 |
제조사 |
Jay Ajurap |
Acme |
Jay Ajurap |
Ace |
Sheila Nyu |
A-Z Inc. |
제조사 |
제품 |
Acme |
Slicer |
Acme |
Dicer |
Ace |
Dicer |
Ace |
Whomper |
A-Z Inc. |
Slicer |
A-Z Inc. |
Whomper |