공통점이있다. 하나의 접근법은 여러분이 tyre
테이블에 두 개의 필드를 가지고있는 경로 일 것입니다. 체크 제약이 하나만 null이되도록 보장하고, 두 타이어가 모두 하나 뿐이며 유일한 한 부모.
또 다른 옵션은 예고편과 트럭을 하나의 테이블에 저장하고 트럭 또는 예고편인지 여부를 저장하는 Type
필드가있는 것입니다. 그러면 타이어 테이블에는 ID와 연결할 수있는 단일 필드 만 필요합니다. 이 메인 테이블. 이 테이블에 트럭 및 트레일러에있는 모든 열이 있는지 확인해야합니다.
또 다른 옵션은 상속을 사용하는 것입니다.이 방법은 단일 테이블 접근 방식과 비슷하지만 두 유형 또는 비공유 하위 사이에 겹치는 열이 많지 않은 경우 더 나은 접근 방법이 될 수 있습니다. 그래서 당신과 같이 테이블이 있습니다
차량 {VehicleID (PK), SharedColumn1, SharedColumn2}
트럭 {VehicleID (PK, FK [자동차]), TruckColumn1, TruckColumn2}
트레일러 {VehicleID (PK, FK [차량]) TrailerColumn1, TrailerColumn2}
타이어 {TyreID (PK), VehicleID (FK [Vehicl E), TryeColumn1}
TruckOnlyChild {ID (PK), VehicleID (FK [트럭])}
3 방법의 각각은 장단점의있다, 당신은 정말 우선적 인 선택 필요 너에게. 가치가있는 부분에 대해서는 개인적으로 제 요구 사항에 따라 두 번째 옵션 중 하나를 선택합니다. 속성이 충분하지 않은 경우 두 번째 옵션을 고려하지만 널 (NULL) 열이 많지 않고 EAV를 사용합니다.
나는 당신이 실세계에 대해 이야기하고 있다고 생각합니다. 권리 ? –