サブタイプのテーブル実装パターン集
すべての(スーパータイプと)サブタイプを一つのテーブルで実装する
どのサブタイプかを表現するための区分(discriminator)カラムを持つ
アプリケーション側で処理の分岐を入れる
フレームワークでサポートがあることも多い
らしいlemonadern.icon
メリット
サブタイプをまたいだ操作がしやすい(性能問題につながりにくい)
デメリット
アプリケーション側に複雑さが移る
選定目安
サブタイプごとでのデータ属性の差異が少ない
サブタイプを横断した操作をすることが多い
サブタイプごとに別のテーブルを作る
スーパータイプの属性がある場合、各サブタイプに対応するテーブルで保持する
選定目安
サブタイプを横断して操作することがほとんどない
サブタイプ毎でデータ属性の差異が大きい
スーパータイプ・サブタイプそれぞれにテーブルを作る
論理モデルとの対応が大きい
選定目安
サブタイプ横断で操作するケースがそれなりにある
サブタイプごとの属性差異が大きい
すべてのサブタイプを結合して使うようなケースが(ほとんど)ない
これがあると性能問題に繋がりやすい
参考
特集1 イミュータブルデータモデルで始める実践データモデリング 業務の複雑さをシンプルに表現! これが一番くわしいlemonadern.icon