데스크톱 컴퓨터, 랩톱, 스위치, 라우터, 휴대폰 등과 같은 IT 하드웨어를 저장하는 인벤토리 데이터베이스를 구축하고 있습니다. 모든 장치가 단일 테이블에 저장되는 수퍼 타입 / 서브 타입 패턴과 특정 정보를 사용하고 있습니다. 하위 유형 테이블에 배치됩니다. 내 딜레마는 다음 두 가지 디자인 중에서 선택합니다.
상단 다이어그램에서 모든 장치는 공통 하위 유형을 공유합니다. 예를 들어 데스크톱 컴퓨터 및 랩톱에는 Device, NetworkDevice 테이블에 레코드가 있습니다. 스위치에는 Device, NetworkDevice에 레코드가 있습니다. 라우터에는 Device, NetworkDevice, WANDevice에 레코드가 있습니다. 위치를 추적하는 모든 장치는 위치에 레코드를 갖습니다. 이 설정에 대해 생각한 몇 가지 장단점 :
- 장점 : 호스트 이름 또는 LocationID와 같은 공통 필드를 기반으로 레코드를 선택하는 것이 더 쉽습니다.
- 장점 : null 필드가 없습니다.
- 단점 : 특정 장치에 대한 CRUD 작업에 포함되어야하는 테이블은 명확하지 않으며 향후 DBA와 혼동 될 수 있습니다.
하단 다이어그램에서 모든 장치에는 고유 한 하위 유형이 있습니다 (여기에 표시되지 않은 더 많은 장치 클래스가 있음). 이 상황에서는 어떤 테이블 레코드가 삽입되거나 선택되는지가 분명합니다. 데스크톱 컴퓨터와 랩톱은 컴퓨터 등에 사용됩니다.이 설정에 대해 생각한 장단점은 다음과 같습니다.
- 장점 : 하위 유형에 대한 CRUD 작업에 어떤 테이블을 사용할지 즉시 알 수 있습니다.
- 장점 : CRUD 작업에는 하나의 테이블 만 사용해야합니다.
- 단점 : 공통 하위 유형 필드를 기반으로 레코드를 선택하려면 모든 테이블을 결합해야합니다 (예 : 호스트 이름 또는 LocationID로 검색).
두 가지 상황에서 ClassDiscriminator 필드는 삽입 할 수있는 유형을 제어하기 위해 CHECK 제약 조건과 함께 사용하기 위해 하위 유형 테이블에 배치됩니다.
더 나은 디자인에 대한 권장 사항이 있습니까, 아니면 완전히 데이터베이스의 의도 된 목적에 의존하고 있습니까?
편집 : 내가 테이블 "NetworkDevice"의 중복 특성에 관한 특정 질문. 이 표는 호스트 이름 및 / 또는 IP 주소를 가진 모든 장치 (컴퓨터, 스위치 또는 라우터)에 대한 네트워크 정보를 보유하기위한 것입니다. 이 테이블의 겹치는 특성으로 인해 문제가 발생할 수 있습니까, 아니면 이런 식으로 구현해도됩니까?
입력하신 내용에 대해 미리 감사드립니다. 추가 정보가 필요한지 문의하십시오.