14

今日、私は約2つのデータベース設計継承アプローチについて研究しました。

  1. 単一テーブル継承
  2. クラステーブル継承

私の学生の意見では、単一テーブル継承は1つのテーブルしか使用しないため、他のアプローチよりもデータベースを小さくします。しかし、Bill Karwinによると、より好ましいアプローチはクラステーブル継承であると読みました。

単一テーブル継承の長所と短所は何ですか?その場合はそれを使用する必要がありますか?

4

2 に答える 2

20

私の学生の意見では、単一テーブル継承は、1つのテーブルしか使用しないため、他のアプローチよりもデータベースを小さくします。

必ずしも。階層のエンティティに共通の属性があまりない場合、これにより多くのnull列が生成され、多くのスペースが無駄になります。

しかし、私は、ビル・カーウィンによると、より好きなアプローチはクラステーブル継承であると読みました。

私見、単一の答えはありません。さまざまな戦略(階層ごとに1つのテーブル、具体的なクラスごとに1つのテーブル、クラスごとに1つのテーブル)にはすべての長所と短所があり、どちらを選択するかはコンテキストによって異なります。

単一テーブル継承の長所と短所、そしてどの場合にそれを使用しましたか?

この戦略は、null許容列の数を最小限に抑えることができる(そして、非正規化スキーマが長期的には問題にならないことをDBAに納得させる)限り、「ポリモーフィック」クエリ(結合や結合の必要なし)が必要な場合に役立ちます。 。

実際、リレーショナルデータベースへのオブジェクトのマッピング: Scott Ambler(ORMに関するリファレンスペーパーの著者)によるO / Rマッピングの詳細、特にセクション2.6戦略の比較を確認することをお勧めします。彼を言い換えても意味がありません。

シングルテーブル戦略の彼の要約:

利点:

  • シンプルなアプローチ。
  • 新しいクラスを簡単に追加できます。追加データ用に新しい列を追加するだけです。
  • 行のタイプを変更するだけでポリモーフィズムをサポートします。
  • データが1つのテーブルにあるため、データアクセスは高速です。
  • すべてのデータが1つのテーブルにあるため、アドホックレポートは非​​常に簡単です。

短所:

  • すべてのクラスが同じテーブルに直接結合されるため、クラス階層内の結合が増加します。1つのクラスの変更はテーブルに影響を与える可能性があり、それが階層内の他のクラスに影響を与える可能性があります。
  • データベースでスペースが無駄になる可能性があります。
  • タイプ間に大きな重複が存在する場合、タイプの表示は複雑になります。
  • テーブルは、大きな階層では急速に大きくなる可能性があります。

いつ使用するか:

  • これは、階層内のタイプ間にほとんどまたはまったく重複がない単純なクラス階層や浅いクラス階層に適した戦略です。

しかし、私は論文全体を読むことを強くお勧めします。

于 2010-05-31T23:47:13.707 に答える
1

単一テーブル継承は、サブクラスに多くの属性や他のクラスとの関連付けがない場合に適したアプローチです。そうしないと、テーブルはテーブルの一部のタプルにのみ意味のある属性でいっぱいになり、適切な「タイプ」のタプルの値のみが含まれていることを確認するために、すべての種類の制約を追加する必要があります。

また、サブクラスの1つのインスタンスのみを処理する必要があるすべてのクエリには、タイプ値に基づいてそれらを選択するための追加の句が必要になります。

于 2012-02-09T08:40:25.043 に答える