더북(TheBook)

회사에서 판매하는 모든 제품을 나열하면서 각 제품의 세부 데이터와 모든 속성을 추출할 때도 비슷한 문제가 일어난다. 예를 들어 목재회사에는 목재의 길이, 높이, 너비, 나무의 유형을 저장한 제품 테이블이 있을 것이다. 결국 이 회사는 목재를 판매하기 때문이다. 하지만 회사가 다양한 제품을 판매하는 소매점일 때, 아주 가끔 사용하는 컬럼 몇 개를 추가하는 것은 좋은 선택으로 보이지 않는다. 그렇다고 제품 카테고리별로 테이블을 만들어 각 카테고리에 해당하는 데이터를 모두 저장하지도 않을 것이다. 이런 상황에서는 XML이나 JSON 문서를 저장할 수 있는 Attribute 컬럼을 생성하는 것이 더 나을 수도 있다. 이것은 관계형 테이블에 있는 제품의 속성을 노출하도록 규정하는 비즈니스 규칙이 없을 때는 문제가 되지 않는다. 하지만 임의의 속성을 질의할 수 있어야 할 때는 ProductAttributes 테이블을 생성해서 컬럼을 로우로 변환한 후 Products 테이블에 있는 제품과 연결해야 목표를 달성할 수 있을 것이다. 코드 1-12는 이 테이블에서 가능한 설계를 보여 준다.

 

 

 

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