C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 標準値からの上限、下限を動的に求めたい


(過去ログ 38 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■19470 / inTopicNo.1)  標準値からの上限、下限を動的に求めたい
  
□投稿者/ Mr.T (249回)-(2008/05/23(Fri) 14:43:23)

分類:[データベース全般] 

Mr.Tです、こんにちは。
#タイトルつけるの難しいよ

DB:SQLServer2005 Express

DBのテーブル設計についての質問です。

一つのViewがあります。
このViewのカラムは次のような項目になっています。

製品CD,テスト項目,上限値,下限値,標準値

テスト項目、製品CDに紐付く標準値というものを利用して、テスト項目毎に決められた計算式を使い
上限値、下限値の値を計算しなおさなくてはなりません。

更に、標準値というのは製品の中から標準品としたもの計測されたものであるため、
標準品が変更されてしまう可能性もあります。
(つまり標準品は履歴がある。最新の標準品をここでは毎回利用するものとしてます)
なので、計算結果の値を計算項目ごとに保持することもできません。

テスト項目毎の計算式は、例えば
・標準値の(+-)20%が上限、下限であったり
・標準値以下(下限はない)であったり
・更には標準値を利用せず、一定値の範囲内、
というものまであります。
#つまりは、てんでばらばら。ただし、四則演算以外の計算はない。

これを動的に計算するためには、計算式そのものを文字列のようにしてテスト項目に持っておくほか、
手はないでしょうか?

計算式をそのまま持っておくとなると、中の計算式の整合性をいちいちチェックして考えなくては
ならないし、扱いも結構面倒な気がします。

こういうものはDB上どう管理したら良いのか、アドバイスをいただけないでしょうか。


引用返信 編集キー/
■19471 / inTopicNo.2)  Re[1]: 標準値からの上限、下限を動的に求めたい
□投稿者/ はつね (738回)-(2008/05/23(Fri) 14:56:21)
はつね さんの Web サイト
No19470 (Mr.T さん) に返信
> これを動的に計算するためには、計算式そのものを文字列のようにしてテスト項目に
> 持っておくほか、手はないでしょうか?

計算式そのものを文字列として持っていると、その文字列から計算できる処理系でしか
使えなくなってしまいます(SQLに埋め込むときに使うという手もあるのですが)。

係数など数値以外の部分、つまり計算式パターンが少ないのであれば、係数はマスタ化しておいて
SQL Serverだったら計算列(ってありましたよね?)、OracleだったらBefore Triggerにして
あげて自動計算するようにしてあげるといいように思えます。

引用返信 編集キー/
■19490 / inTopicNo.3)  Re[2]: 標準値からの上限、下限を動的に求めたい
□投稿者/ Mr.T (251回)-(2008/05/23(Fri) 17:40:43)
> 係数など数値以外の部分、つまり計算式パターンが少ないのであれば、係数はマスタ化しておいて
> SQL Serverだったら計算列(ってありましたよね?)、OracleだったらBefore Triggerにして
> あげて自動計算するようにしてあげるといいように思えます。

計算列だと自前の列しか使えないとは思ったけど、ここに関数(Create Functionでつくるやつね)を
突っ込めるなら、必要なパラメータを渡せば、いけるかな?

計算列A =>Function([標準値],[テスト項目],'上限なのか、下限なのかの値')
みたいにすれば、その中で計算すりゃいい...ということだな。

で、Functionの中では、テスト項目に対応した分岐をすればいい、と。

なんとかなるかな?
ちょっとやってみます。
引用返信 編集キー/
■19506 / inTopicNo.4)  Re[3]: 標準値からの上限、下限を動的に求めたい
□投稿者/ Mr.T (252回)-(2008/05/23(Fri) 23:25:34)
とりあえず、うまくいきそうなので、一旦閉めておきます。
各テスト項目に対する計算式が変わったらどうすんねん、とかもあるんですが
現在確認中。

ありがとうございました。

No19490 (Mr.T さん) に返信
>>係数など数値以外の部分、つまり計算式パターンが少ないのであれば、係数はマスタ化しておいて
>>SQL Serverだったら計算列(ってありましたよね?)、OracleだったらBefore Triggerにして
>>あげて自動計算するようにしてあげるといいように思えます。
>
> 計算列だと自前の列しか使えないとは思ったけど、ここに関数(Create Functionでつくるやつね)を
> 突っ込めるなら、必要なパラメータを渡せば、いけるかな?
>
> 計算列A =>Function([標準値],[テスト項目],'上限なのか、下限なのかの値')
> みたいにすれば、その中で計算すりゃいい...ということだな。
>
> で、Functionの中では、テスト項目に対応した分岐をすればいい、と。
>
> なんとかなるかな?
> ちょっとやってみます。

引用返信 編集キー/
■19507 / inTopicNo.5)  Re[4]: 標準値からの上限、下限を動的に求めたい
□投稿者/ Mr.T (253回)-(2008/05/23(Fri) 23:26:04)
閉め忘れた。

No19506 (Mr.T さん) に返信
> とりあえず、うまくいきそうなので、一旦閉めておきます。
> 各テスト項目に対する計算式が変わったらどうすんねん、とかもあるんですが
> 現在確認中。
>
> ありがとうございました。
>
> ■No19490 (Mr.T さん) に返信
> >>係数など数値以外の部分、つまり計算式パターンが少ないのであれば、係数はマスタ化しておいて
> >>SQL Serverだったら計算列(ってありましたよね?)、OracleだったらBefore Triggerにして
> >>あげて自動計算するようにしてあげるといいように思えます。
>>
>>計算列だと自前の列しか使えないとは思ったけど、ここに関数(Create Functionでつくるやつね)を
>>突っ込めるなら、必要なパラメータを渡せば、いけるかな?
>>
>>計算列A =>Function([標準値],[テスト項目],'上限なのか、下限なのかの値')
>>みたいにすれば、その中で計算すりゃいい...ということだな。
>>
>>で、Functionの中では、テスト項目に対応した分岐をすればいい、と。
>>
>>なんとかなるかな?
>>ちょっとやってみます。
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -