web-dev-qa-db-ja.com

リレーショナルデータベースで継承モデリングを行う方法

私の質問は、リレーショナルデータベースシステムの継承モデリングに関するものです。正規データモデルがあり、製品テーブルから特定の属性を継承する製品の価格設定に関連するいくつかのフィールドがあり、MySQLリレーショナルデータベースなどでこの継承をモデル化したいと考えています。

「リレーショナルデータベースで継承モデリングをどのように実行できますか?」

ありがとう。

31
Rachel

Martin Fowlerは、彼の著書「Patterns of Enterprise Application Architecture」でこの点について詳しく説明しています。この本を入手して調べてください。

  1. 単一テーブルの継承
  2. クラステーブルの継承
  3. コンクリートテーブルの継承

ウェブサイトはあなたにいくつかの考えを与えるべきです。 inheritance mappers のセクションもお読みください。さまざまなアプローチにはそれぞれ長所と短所があるため、慎重に選択してください。

36
RichardOD

いくつかのアイデアのためにこれらの記事を見てください:

リレーショナルデータベースへのオブジェクトのマッピング

O/Rマッピングでの継承

9
Todd Stout

リレーショナルデータベースはオブジェクト(つまり、継承)を扱いません-それらは関係を扱います。あなたが本当に求めているのは、オブジェクト構造をデータベースにマッピングする方法です。その答えは、「ORMレイヤーに依存する」です。

詳細については、 リレーショナルデータベースへのオブジェクトのマッピング:O/Rマッピングの詳細 の記事をご覧ください。使用しているソフトウェアスタックを教えていただければ、より的確な回答が得られるでしょう。

3
ChssPly76

本を読むのではなく、いくつかのWeb記事を見たいだけであれば、次のサイトでグーグルの優れた記事を見つけることができます。

Generalization Specialization Relational Modeling

Gen-specパターンは、継承がOOP環境で行うのと同じ理由の多くをカバーしています。

ググるなら

Generalization Specialization Object Modeling

まったく新しい記事のバッチが得られます。そのほとんどは継承について明示的に言及しています。

Infoタグの下の次のタグ class-table-inheritance に要約されている設計手法があります。これにより、Wordの「拡張」の奇妙な使用を許可する場合は、サブクラステーブルを使用してクラステーブルを「拡張」できます。いくつかの作業が含まれていますが、それだけの価値があります。

2
Walter Mitty

「データベース管理の実際的な問題」の第6章は、おそらく興味深い読み物です。

他のすべての章と同じように、おそらくそれらはあなたの質問に直接関係していません。

1
Erwin Smout