더북(TheBook)

표에 명시되어 있지는 않지만 각 제조사(Manufacturer)는 두 가지 제품만 생산하고, 판매원은 해당 제조사의 모든 제품을 판매해야 한다는 것을 알 수 있다. 따라서 Sheila가 Ace의 제품을 팔기로 했다면 로우를 두 개(하나는 Ace의 Dicer, 다른 하나는 Ace의 Whomper) 새로 입력해야 한다. 이때 이 테이블의 데이터를 제대로 갱신하지 못하면 데이터 이상이 발생할 수 있다. 이런 오류를 피하려면 그림 1-10과 같이 테이블을 여러 개로 분할해야 한다.

▲ 그림 1-10 판매원 재고 데이터베이스의 스키마 다이어그램

 

이 모델을 사용하면 임의의 판매원이 판매할 모든 제품을 나열하기만 하면 된다. 그러고 나서 제품의 실제 제조사와 연결하고, SalespeopleManufacturersManufacturerProducts 테이블을 조인해 표 1-3과 같은 결과를 추출하면 임의의 판매원이 실제로 판매하는 제품을 알아낼 수 있다. 여기서 판매원은 해당 제조사가 제조한 모든 제품을 판매해야 한다는 비즈니스 규칙을 따른다는 점에 주목해야 한다. 하지만 현실적으로 판매원은 어느 한 제조사가 제작한 제품의 일부만 판매할 가능성이 크다. 그러면 표 1-3의 데이터는 더 이상 제4정규화를 위반하지 않는다. 이것은 더 높은 정규화 형식을 사용할 때가 왜 드문지 그 이유를 분명히 드러낸다. 즉, 우리가 사용하는 대부분의 비즈니스 규칙 때문에 데이터 모델은 더 높은 정규화 형식을 이미 만족하고 있는 셈이다.

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