標準パターン(排他的サブタイプ)
概念データモデル
関係スキーマ
サブタイプはスーパータイプより1文字下げて記述します。
1 2 3 4 |
スーパータイプ コード,サブ区分 サブタイプ1 コード,サブ1属性... サブタイプ2 コード,サブ2属性... サブタイプ3 コード,サブ3属性... |
特徴
「主キー」はスーパータイプとサブタイプで同一
上記例でいえば「コード」と「サブコード1」、「サブコード2」、「サブコード3」は同一です。名称は変えても良いですが原則同じ名前にします。
スーパータイプの主キー以外の属性はサブタイプに継承される。
主キー以外はサブタイプには記述しないがスーパータイプが持っているキーは全てサブタイプに存在することになります。
サブタイプの主キー以外の属性はサブタイプ特有になる。
スーパータイプにサブタイプを識別するための属性を持たせます。
スーパータイプには主キー以外の属性にサブタイプを識別するための区分を持たせます。上記例で言えば「サブ区分」です。こうすることでどちらかのサブタイプにしか属することができないデータ(排他的サブタイプ)となります。
共存的サブタイプ
概念データモデル
関係スキーマ
1 2 3 |
スーパータイプ コード,サブ1フラグ,サブ2フラグ サブタイプ1 コード,サブ1属性... サブタイプ2 コード,サブ2属性... |
特徴
スーパータイプにサブタイプごとのフラグを持たせる。
スーパータイプには主キー以外の属性にサブタイプごとにON/OFFのフラグを持たせます。上記例で言えば「サブフラグ1」、「サブフラグ2」です。こうすることでどちらのサブタイプにしか属するデータ(共存的サブタイプ)となります。
包括関係になる場合もある。
下記のようにスーパータイプとサブタイプが1:1になっていれば包括関係にあると呼べます。基本的には共存的サブタイプの一種とみなして問題ありません。
同一のサブタイプ
関係スキーマ
1 2 3 |
スーパータイプ コード サブタイプ1 コード,属性1,属性2 サブタイプ2 コード,属性1,属性2 |
上記例のようにサブタイプ1とサブタイプ2が全く同じ属性を持っていたとします。それでも別々のサブタイプとして定義することはあります。例えば、「商品スーパータイプ」と「特売商品サブタイプ」、「在庫商品サブタイプ」があったとして属性が全く同じだったとしてもテーブル間のリレーションが全く異なっていたりする場合もあるのであえて別サブタイプとする場合があります。これを同一のサブタイプと呼びます。
完全、不完全
完全
どこかのサブタイプに含む場合は「完全なサブタイプ」と呼びます。例えば、「乗り物スーパータイプ」と「自転車サブタイプ」、「自動車サブタイプ」があった場合に「自転車」は「自転車サブタイプ」に属するので完全なサブタイプであると言えます。
不完全
どこのサブタイプにも属さない場合は「不完全なサブタイプ」と呼びます。例えば、「乗り物スーパータイプ」と「自転車サブタイプ」、「自動車サブタイプ」があった場合に「バイク」はどこにも属さないない不完全であると言えます。
この記事へのコメントはありません。