더북(TheBook)

BETTER WAY 8 제3정규화로도 부족하다면 더 정규화하자

흔히 떠도는 이야기 중 하나는 대부분의 애플리케이션은 제3정규화(Third Normal Form, 3NF)로 충분하다는 것이다. 많은 실무자가 ‘일반적으로 제3정규화면 충분하다’, ‘일단 최대한 정규화한 후 애플리케이션이 제대로 돌아갈 때까지 역정규화하라’는 경구만 듣고 재인용한다. 이런 경구는 더 높은 정규화에는 더 많은 수정이 필요하다는 것을 암시한다. 사실 대부분의 데이터 모델에서 이미 제3정규화를 거친 엔터티는 더 높은 수준의 정규화를 만족할 가능성이 크다. 실제로 오늘날 많은 데이터베이스에서 무수한 참조 테이블이 이미 제5정규화, 심지어 제6정규화까지 도달해 있는데도 사람들은 이를 제3정규화로 칭한다. 따라서 제3정규화를 거친 테이블이지만 더 높은 정규화를 위반하는 경우를 찾아야 한다. 드물기는 하지만 분명히 존재하는 상황이므로 해당 테이블이 제3정규화를 만족하는 것처럼 보이더라도 데이터 이상 현상을 일으키는 설계 실수를 쉽게 저지를 수 있다.

제3정규화로 설계했지만, 한 테이블이 다른 테이블 두 개 이상과 관계를 맺는다면 더 높은 정규화 형식을 위반할 수 있으므로 주의해야 한다. 특히 다대다 관계가 둘 이상일 때는 더욱 주의해야 한다. 테이블에 더 높은 정규화 형식을 위반할 수 있는 복합키가 있을 때도 마찬가지다. 대리키를 사용하고 대리키 대신 자연키를 분석할 때는 각별히 주의가 필요하다. 이어지는 예제를 보면 이것을 명확하게 이해할 수 있을 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.