- - PR -
容量計算のSQLロジックの質問(数学)
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-04-08 21:17
お世話になります。
デューンさん、platiniさん、コメントありがとうございます。 まず、あれは私のコビペーミスです。 50g(10g*5袋)+0.050kg(10g*5袋)+13袋(350g) から 50g(5g*10)+0.050*1000g(5g*10)+13(350g) に変換します。 それから、フリーテキストの話ですが、 実は、このロジックを実行する前に、ほかのSQL SERVER Functionがあり、あそこで、半角に変換したり、大文字を小文字にしたり、×、÷のような記号を*、/にしたりします。 で、 5g×13袋(65g) と 13袋×5g(65g) の話ですが、 5g×13袋(65g) これの13袋は全部65gという意味で、5g×65gで計算します。 13袋×5g(65g) 通常10g(5g×2袋)、そういう場合、(5g×2袋)は内訳で、無視します。 5g(65g)の場合、意味は分からないですね。そいう場合は、13×5gで計算してしまいます。 >なぜこれが計算できない!瑕疵だ! >と言われて、泥沼無限地獄にはまり込むような気がします。 今のところ、数字、小数点、+、×、(、)を仕様の前提条件として、設計しています。 本当フリーテキストの入力対応だったら、それは無理です。 | ||||||||||||
|
投稿日時: 2009-04-09 01:31
掲示板に出てきていない仕様がいろいろ眠ってそうですが
(最初のパターンにしても「仮に」と言われたので回答できずにいる方もいるのでは・・・) とりあえず私やplatiniさんが心配しているのは、 開発者の思い込みでパターンを絞ると手痛いしっぺ返しが返ってくることが多い という経験則からの老婆心だけです。 # 人の名前借りて言いきっちゃいました、platiniさん、すいません^^; [ メッセージ編集済み 編集者: デューン 編集日時 2009-04-09 01:32 ] | ||||||||||||
|
投稿日時: 2009-04-09 07:20
デューンさん コメントありがとうございます。 バターンが多いこと、想像でも思いつかないこと、など、すでに基本設計してくれた方にリクエストを上げています。 こっちは詳細設計を作るほうで、基本設計でそんなにいろんなバターンを考慮していないようで、PGに基本設計書のままを出すなんて、PG側も作れないですね。 基本設計を詳細設計に落とすときに、やはりPGの立場から考慮しなければいけないと思っています。それは正しいですよね? 今回のケースでは、基本設計範囲で、数字、小数点、+、×、括弧、という制約の前提で、詳細設計を落としています。 フリーテキストの場合、PGどころか、詳細設計も書けないと思いますね。 | ||||||||||||
|
投稿日時: 2009-04-09 11:06
入力の際にブロックするのがベターだと思ってます。
都合上それは無理なのだという前提として
私レベルが偉そうに言ってしまっていいのかわかりませんが、1技術者の意見としてご参考までに。 現場の流儀にもようるでしょうし、PGの立場でというのがどの範囲を想像されているのかわかりませんが、私の場合は何は実現できて、何は実現できないのかをはっきりさせて、リーダーやお客さんと相談したりします。 ある程度コードでの実現性は考慮しますが、まずは論理レベルでの実現性を考えますね・・・ 今回のケースなら各トークンの説明とか解決順とか無視される条件(内訳として無視する)とか たとえば 1.[数値]g または [数値]kg に続く開け括弧は、内訳として判断され対応する閉じ括弧まで無視される。 2.演算子に続く開け括弧は、対応する閉じ括弧まで処理される。 3.[数値]g , [数値]kg, 演算子 いずれでもない文字列に続く開け括弧は直前の文字列が内訳であると判断し、直前の文字列を無視し、閉じ括弧までを採用する。 など。 で、この段階ですでに 「3のケースで括弧内にgとかkgがないとどうなるの?」 「内訳の方が正しい場合はどうなるの?」 などの疑問が出てきてますね。
フリーテキストだから無理なのではなくて、 フリーテキストの場合なら「こういうのはすくえる。」「こういうのはすくえない(すくわない)のでこういう警告が出る。」「こういうのはエラーとして処理される。」というようなことを明記するのが設計だと思ってます。 (承認されるかどうかはまた別の問題として) # 何か起きたときに全責任が自分に振ってこないようにしておくことも考えておいてください。 # 上長に承認させるとかお客さんに承認させるとか。 | ||||||||||||
|
投稿日時: 2009-04-09 12:46
いえ、同感です。 なお、客先承認を取る場合は、 これこれこういう仕様で計算する。計算不能エラー相当パターンは以下の通り とやるより これこれこういう仕様で計算する。計算可能正常パターンは以下の通り。 以下以外のパターンは全てエラー扱い。 として承認を取るほうがよいかもしれないですね。 エラー相当パターンを明示して承認を受けるパターンだと、 列挙候補以外は全部計算可能とみなされ、 想像の限界枠内から漏れていたパターンで、しかし、 正常系と解釈できなくもないパターンが出現し、泥舟になりそう・・・。 | ||||||||||||
|
投稿日時: 2009-04-10 12:00
これは、わかります。
単位が変わります。長さで言うと、「長さを求めたいのに面積になった」状態です。 どうやって単位を戻しましょう? | ||||||||||||
|
投稿日時: 2009-04-12 16:57
こんにちは。Jittaさん 重量計算なので、重量以外の記号があったら、計算しない前提とします。 ですから、kg、gが付いている文字列のみ、処理していく感じですね。 | ||||||||||||
|
投稿日時: 2009-04-13 09:54
yangjiayiさん、こんにちは。
5×65gならわかるけど、5g×65gはわからないという意味ではないでしょうか? |