Mail
 ナビゲーション リンクのスキップ

11.スーパータイプ・サブタイプ

★オブジェクト指向

「オブジェクト指向」という言葉が使われ始めてから、何年ぐらい立つでしょうか?
現在プログラムの開発に使用されている主流の言語は、殆どがオブジェクト指向を取り入れています。
JavaやC++の他にも、.NETでは、本来「非オブジェクト指向言語」であるCやBASICにオブジェクト指向の要素を取り入れています。
データベースも例外ではありません。
オブジェクト指向の考え方の一つに「継承」・「汎化」という考え方があり、それを取り入れたデータベースもあります。
これは、どのような時に有効なのでしょうか?

★スーパータイプ・サブタイプ

例えば作曲家テーブルとソリストテーブルを、比較してみましょう。

作曲家テーブルとソリストテーブル

ソリストテーブルに楽器の情報がある以外は、全く同じです。
ここで氏名の入力文字数をデータベース全体で変更するとします。
作曲家テーブルとソリストテーブルの、両方に同じような変更が必要です。

「継承」・「汎化」の考え方を取り入れると、どのようになるでしょうか?
作曲家テーブルとソリストテーブルを汎化したテーブル、「人間テーブル」を作成し、作曲家テーブルとソリストテーブルは、人間テーブルから継承して作成します。

人間テーブル

氏名の入力文字数をデータベース全体で変更したい場合、人間テーブルを変更するだけで、作曲家テーブルとソリストテーブルへの変更は、必要ありません。
テーブルが2つですと、それほどメリットは感じないかもしれませんが、似たテーブルが多ければ多いほど、メリットは大きくなります。
このとき、人間テーブルのようなテーブルをスーパータイプ、そこから継承して作成した作曲家テーブルとソリストテーブルをサブタイプと呼びます。
「オブジェクト指向」を取り入れたデータベースを使用する場合は、データモデリングの際に、スーパータイプ・サブタイプを意識すると、メリットがあるかもしれません。