データベースモデルでクラステーブル継承関係を介して継承をモデル化する場合、...
1)各レコードの特定のサブパイプを識別する属性(2つのサブチップのブール値、さらにサブチップの文字列)を含めますか?
2)すべての可能なサブタイプの説明を含むテーブルへの外部キーとしてこのIDを含めますか?
3)上記のどれも、必要な数回のサブテーブルでの「試行錯誤」ルックアップに依存していますか?
データベースモデルでクラステーブル継承関係を介して継承をモデル化する場合、...
1)各レコードの特定のサブパイプを識別する属性(2つのサブチップのブール値、さらにサブチップの文字列)を含めますか?
2)すべての可能なサブタイプの説明を含むテーブルへの外部キーとしてこのIDを含めますか?
3)上記のどれも、必要な数回のサブテーブルでの「試行錯誤」ルックアップに依存していますか?
ほとんどの場合、1つの列が弁別子列であるクラス階層モデルごとのテーブルを使用することをお勧めします(1.ソリューション)。多くのサブタイプが必要なために2番目のテーブルが本当に必要な場合は、多くのデータが冗長でnullになると思われるため、テーブルをいくつかのテーブルに分割する必要があります。
サブクラスモデルごとのテーブルもあり、共有データを含むマスターテーブルと、サブクラスの子テーブル(完全に正規化されたデータ)がありますが、NHibernateなどのORMツールを使用する場合を除いて、この種のデータの操作は困難です。
これらの場合、サブクラスの数は通常事前にわかっているため(BillingDetails-> CreditCard、BankAccountなど)、解決している状況の具体例を教えてください。