[pgsql-jp: 36703] テーブルの継承

Katsunori SUZUKI suzuki.ktn @ ncos.nec.co.jp
2006年 2月 1日 (水) 17:50:39 JST


鈴木です。

>プログラミング言語の継承は定義上の継承なので親クラスの
>インスタンスが存在しなくても子クラスのインスタンスを
>生成できますが、データベースの場合は
>テーブル定義=プログラミング言語で言うところの定義+インスタンス生成
>なので、私が思っていたより遥かに親子関係が密で。

私の感覚では、
    テーブル定義≒クラス定義
    INSERT文≒インスタンス生成
と思っています。
(昔さわったことのある Object Oriented DBMS がそんな感じでした)


>解説記事では”どんな時に継承が有効か”まで言及しているものが
>なかなか無いのですが、どんなシーンで有効なんでしょうか?

PostgreSQL 文書の 5.8 に例が載っています。
「市」テーブルを継承して「州都」テーブルを定義すると、
    州都テーブルは小さく保てるし、
    州都を市として検索することもできる。
という例です。

でも、大抵は継承を使わなくても解決できるような気もします。
安直に州都かそうでないか区別する列を追加するとか、
継承によって追加したい属性を別の表に置いて join するとか。




pgsql-jp メーリングリストの案内