0

私のドメインでは:

  • ユーザーは多くの請求書を持っています
  • Bills には多くの BillItems があります (したがって、Users には Bills を介して多くの BillItems があります)。
  • すべての BillItem は次のいずれかです。
    • 電話
    • SMS(テキストメッセージ)
    • MMS (マルチメディア メッセージ)
    • データ

個々の BillItem のプロパティは次のとおりです (一部は一般的です)。

代替テキスト http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png

私の質問は、単一テーブルの継承 (つまり、"type" 列を持つ 1 つの "bill_items" テーブル) またはポリモーフィズム (BillItem タイプごとに個別のテーブル) でこの配置をモデル化する必要があるかどうか、およびその理由です。

4

1 に答える 1

2

すべて/ほとんどのアイテムに適用されないフィールドがすでに十分にあるため、ポリモーフィックな関連付けを使用します。STI は多くのスペースを無駄にしますが、最適化を無視すると、より多くのフィールドが必要な場合にそのデザインを拡張する最も自然な方法は、それらをテーブルに追加することになるため、非常に厳格なデザインでもあります。

一方、ポリモーフィック アソシエーションは、すべての実装者が従わなければならない契約のみを指定します。この場合、コントラクトはアイテムが課金可能でなければならないとのみ述べており、個々のタイプのアイテムが独立して進化することを許可しています。これらの異なるクラス間で共有するロジックがある場合は、それをモジュールに変換して含める方がよい場合があります。

于 2010-04-14T04:32:10.033 に答える