26

私は symfony プロジェクトで Doctrine 1.2 を使用しており、スキーマで具象と列集約の継承タイプを混在させることを検討しています: 列集約を使用すると、親テーブルでクエリを実行して親レコードと子レコードの両方を取得できますが、具象継承を使用すると取得できますよりクリーンなスキーマ。さらに、ミックスは同じ継承チェーンになります。スキーマ ファイルはどのように記述しますか? 次のように?

A:

B:
  inheritance:
    extends: A
    type: concrete

C:
  inheritance:
    extends: B
    type: column_aggregation
    keyField:         type
    keyValue:         1

または、おそらく次のように:

A:

B:
  inheritance:
    extends: A
    type: concrete

C:
  inheritance:
    extends: B
    type: concrete
D:
  inheritance:
    extends: C
    type: column_aggregation
    keyField:         type
    keyValue:         1


E:
  inheritance:
    extends: C
    type: column_aggregation
    keyField:         type
    keyValue:         2

危険/注意事項はありますか?

4

1 に答える 1

1

円形の継承またはひし形の継承を回避する限り、問題はなく、これを使用できます。

循環継承(明らかに次のようになります

クラスAはBを拡張しますクラスBはAを拡張します

また

クラスAはCを拡張します

クラスBはAを拡張します

クラスCはAを拡張します

ひし形の継承はもう少し丸みを帯びています。次のような状態が発生したときに発生します

クラスA

クラスBはAを拡張します

クラスCはAを拡張します

クラスDはB、Cを拡張します

于 2011-04-29T13:23:34.093 に答える