[pgsql-jp: 27754] Re: 継承を使った標準化の是非

Mashiki mashiki @ yanah.com
2002年 10月 26日 (土) 02:05:34 JST


 Mashikiです。

きしださん、ご無沙汰してます。

>
>> ・テーブル設計に通常の継承を使いたい場合、多重継承
>>  となるがそのことはなにか問題を生じないか
>
>普通に継承しても、継承の継承になるだけだと思いますが。
>多重継承したときに菱形の継承になってしまうという話なら、ほとんどの場合ど
>ちらかの基テーブルには更新日などを持たせる必要がないはずなので、設計次第
>だと思います。やっぱり菱形の多重継承にならざるをえないというときにはどう
>なるか知りません。それより多重継承ってできましたっけ?

確かに親を素直に継承すれば、多重継承にはならず、必要なフィールドも
そろいますね。多重継承が必要なのは親が、アブストラクト?でかつ標準化
テーブルを引き継いでないときだけですね。

多重継承の可/不可はCreateテーブルの

http://www.postgresql.jp/document/pg721doc/reference/sql-createtable.htm

の定義を見るとl

CREATE TABLE -- 新しいテーブルの定義
Synopsis
CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
    { column_name data_type [ DEFAULT default_expr ] [ column_constraint 
[, ... ] ]
    | table_constraint }  [, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]

となっており、構文上INHERITSのあとに複数の親テーブルを指定することが
可能なように見えます。


>> どなたか、このようなことを実際に試してみた方はいらっ
>> しゃいませんか。これは駄目という意見も歓迎です。
>
>実務で使ったわけではないのですが、更新日を自動処理しようと思って、大元の
>テーブルの更新日をトリガーで更新するようにしても、継承先を更新したときに
>トリガーが走らなかったので、全テーブルに更新日をつけるということ自体をや
>めたことがあります。
>昔のバージョン(たぶん6.5.3)で、本気でやろうと思ったわけではないので、実
>はできるのかもしれません。

 人に聞くより自ら人柱になって検証せい!と言う意見もあると思いますが、
中途半端なテストデータで結果に白黒つけられるわけでなく、ずるずると
やりたいな〜、できるかなあ〜と悩んでしまっています。



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