데이터베이스-09
테이블 구조 설정
테이블 구조 정제
• 부분집합 테이블
• 어떤 테이블의 일부 필드는 항상 비어있게 되는 경우
• 위 예에서 만약 아이템이 ‘책’인 경우, 보증만료기간 (warranty expiration date)나, 제조업체 (manufacturer), 모델의 필드에 값을 갖지 않는다
• 만약, 아이템이 ‘텔레비젼’인 경우, publisher, author, ISBN 필드에 값을 갖지 않게 된다
테이블 구조 정제
• 부분집합 테이블
• 공간의 낭비문제 뿐만 아니라, 인식의 문제
• 일부러 비워져있는건지, 아니면 누락된 것인지, 실수로 삭제된 것인지…
• Inventory 테이블이 정확히 하나의 대상만을 표현하고 있는가?
• 보통 공백 필드가 많은 테이블은 두 가지 이상의 대상을 표현하는 경우가 많음
• 앞의 예에서
• Item name, item description, current value 는 어떤 형태의 물건이 되었던 가지게 되는 속성
• 따라서 테이블이 두 개 이상의 대상을 표현하고 있다고 봐야하고, 그에 따라 두 개 이상의 다른 테이블로는 분리하는 것이 좋은 표현으로 보임
• 더 좋은 방법은 없는가?
테이블 구조 정제
• 부분집합 테이블
• Item이 책이든지, 텔레비젼이든지 inventory (재고) 라는 범주에 속 한다
• 이런 경우에는 부분집합 테이블을 만드는 것이 테이블을 완전히 분리하는 것보다 효과적이다
• 만약, inventory 테이블이 장비(equipment)와 책(book)이라는 두 대상을 위한 것이라면, 장비와 책은 재고라는 범주에 종속 (subordinate) 된다라고 한다
• 부분집합 테이블은 종속되는 대상별로 생성한다 => 종속 테이블
테이블 구조 정제
• 부분집합 테이블
• 장비의 종속 테이블 -> manufacturer, model, warranty expiration date
• 책 종속 테이블 -> publisher, author, ISBN, category
• Item name은 두 테이블에 모두 포함 -> inventory 테이
블과의 관계를 설정
테이블 구조 정제
• 부분집합 테이블
테이블 구조 정제
• 식별하지 못했던 부분집합 테이블
• 자기도 모르게 생성된 부분집합 테이블
• 많은 공통 필드를 갖게 된다 -> 중복필드