[pgsql-jp: 34291] Re: テーブルに登録された関数の実行について

Akinori FUJII showten24 @ yahoo.co.jp
2004年 11月 18日 (木) 20:46:51 JST


藤井です

今度のご質問であれば、解決の可能性もあるように思います。
一番簡単なのは、以下のようなFUNCTIONを実行することだと思います。
 レコードごとに
 1. 種別で余命処理と寿命判定処理を選択し
 2. 選択した処理で余命処理と寿命判定を行い
 3. 寿命の場合は寿命処理を行う

この方法は、余命や寿命の方法が追加・変更になるとその都度FUNCTIONを改修しなけ
ればなりませんから、鳥居さんの要件を満たせていないことになります。

ただ、鳥居さんが最初検討されていた方法もその都度FUNCTIONを追加・変更しなけれ
ばならいと思うのですが、その点は如何でしょうか。

FUNCTIONを追加変更する程度の改修であれば、許容範囲だったりしますでしょうか?

--- Noriyuki TORII <torii @ nn.iij4u.or.jp> からのメッセージ:
>  鳥居です.
> 
> ->From: Akinori FUJII <showten24 @ yahoo.co.jp>
>  ->Subject: [pgsql-jp: 34289] Re: テーブルに登録された関数の実行について
>  ->Date: Thu, 18 Nov 2004 16:51:37 +0900 (JST)
>  ->Message-ID: <20041118075137.7197.qmail @ web1008.mail.yahoo.co.jp>
> 
> 藤井さん> 鳥居さん、こんにちは。
> 藤井さん> 藤井と申します。
> 
>  こんにちは.
> 
> 藤井さん>
> かなり難しい問題に取り組んでおられるようですが、そもそもこの問題に至った経
緯
> 藤井さん>
> などを教えていただければ、他に解決策をご提示できるかもしれません。
> 藤井さん> 
> 藤井さん> 他に解決策があるのかないのかについてはご興味ないですか?
> 
> 
>  このようなことを考えることになった理由ですが, だいたい以下のような
> ところです.
> 
> 1) 今回実装しようとしているシステムでは,
> データベース上で保持するレコードに
>  ある種の寿命のようなものが存在する.
> 
> 2) 各レコードは幾つかの種別に分類され, それぞれ異なった方法で寿命が設定
>  されている. また, この種別は今後増えることが予想される.
>  例えば次のような感じです.
> 
>  ex) 第1類のレコードは x年y月z日 まで有効
>  第2類のレコードは 最後に参照されてから60日有効
>  第3類のレコードは 50回参照されるまでの間有効
> 
> 3) 種別ごとに寿命の設定方法が異なることもあり, レコードには寿命を
>  直接示すような属性値が含まれない.
> 
>  こういう状況で, レコードの種別を問わずに寿命の判定や, 余命の更新を行う
> 仕組みを用意したいと考えています.
> 
> 
> そこで種別毎にレコードの現在の属性値を元に寿命判定や余命算出を行う関数を
> 作成して処理関数一覧テーブルに登録しておき, レコードの種別に応じて適切な
> 関数を引っ張ってきて実行できればよいのではないかと考え,
> 先のメールのような
> 質問をさせていただきました.
> 
>  最悪, データベースでは各レコードに種別の情報のみを持ち, 処理は全て
> データベース外部のプログラムで実装するというという選択もありますが
> 各レコードがまだ生きているかどうかさえデータベース上で判定できない
> ようではあまりにあまりなのと, レコード種別が増える度にプログラムを
> 更新しなければならないのでそれはできれば避けたいと考えています.
> 
>  データベース内である程度完結した方法で実装できるなら, おっしゃられる
> ようにこれ以外の方法もぜひ検討したいと思っています.
> ---
> torii @ nn.iij4u.or.jp



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