0

:핸드폰 청구서 모델링 : 단일 테이블 상속 또는 다형성 연관을 사용해야합니까? 내 도메인에서

  • 사용자가 많은 법안이
  • 법안이 많은 BillItems (따라서 사용자는 청구서를 통해 많은 BillItems가)
  • 모든 BillItem 중 하나입니다 :
    • 전화
    • SMS (텍스트 메시지)
    • MMS (멀티미디어 메시지)
    • 데이터 여기

는 (일부 공통) 각 BillItem의 재산입니다 :

alt text http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png

내 질문은 내가 단일 테이블 상속이 배치를 모델링해야하는지 여부 (즉, , "유형"열이있는 하나의 "bill_items"테이블) 또는 다형성 (각 BillItem 유형에 대해 별도의 테이블) 및 그 이유가 포함됩니다.

답변

2

이미 모든/대부분의 항목에 적용되지 않는 필드가 이미 있으므로 다형성 연관이 있습니다. STI는 많은 공간을 낭비 할 뿐이지 만 최적화를 무시하면 더 많은 필드가 필요할 때 디자인을 확장하는 가장 자연스러운 방법이기 때문에 테이블에 추가 할 수 있습니다.

다형성 연관은 모든 구현자가 따라야하는 계약만을 지정합니다. 이 경우 계약서는 항목이 청구 가능해야하며 각 항목 유형이 독립적으로 진화 할 수 있어야한다고 말합니다. 이러한 여러 클래스간에 공유 할 논리가 있다면 모듈로 변환하여 포함하는 것이 더 나을 수도 있습니다.