再帰SQL
Javaやモデリングを検索すると、2chのスレッドにたどり着いてしまうのだが、面白い記事を見つけた。
「部品表から、未来のある時点での在庫の推移・過不足を見たいが、どのようなデータモデリングとSQLを使えばよいのか?」という質問に対し、「再帰SQLを使うしかないだろう」という答えがあり、下記のリンクが張られていた。
オブジェクト指向、Javaを取り入れた新しい業界標準「SQL99」詳細解説 (共通表式 WITH句/再帰SQL)
共通表式は、外部結合等でFROM句にあるサブクエリを何度も使わざるを得ない時に使った経験があるので知っていたが、再帰SQLについては知らなかった。
上記HPの例題を読むと、「部品構成表から、自転車を構成する全部品と各部品の所要数の一覧を作る」時のSQLが再帰SQLとして書かれている。
更に、「パリからサンフランシスコまでの乗り継ぎのある経路のうち、最少費用の経路を探す」ためにも再帰SQLを使っている。
こんな問題の解決に再帰SQLを使うんだなーと感心した。(感心してはいけないが)
この方法は、MSProjectで作ったスケジュール表のリソース平準化のアルゴリズムにも使われているのだろうか?
クリティカルパスの検索や工数最適化にもこのアルゴリズムは使えるのではないか?
再帰SQLを使えば、最短経路検索の問題が全て解けてしまうのでは?と思ってしまうが、無限ループの問題とかあるみたい。
上記の記事には、再帰SQLの他に、渡辺さんの本「生産管理・原価管理システムのためのデータモデリング」に載っている「LLCを使ってシングルレベル展開して最後の階層まで集計する」アルゴリズムが回答されていた。
LLC(ローレベルコード)の意味は、「ある部品が部品構成表でどれくらい最下位にあるかを示す位置」なのだが、恥ずかしながら僕もLLCの使い道がよく分かっていなかった。
渡辺さんの本にある「MRPの所要量計算アルゴリズム」は理解し切れていないけれど、再帰SQLのアルゴリズムと似ている感じがするのだが、正しいだろうか? もう少し考えよう。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「モデリング」カテゴリの記事
- 「システム開発・刷新のためのデータモデル大全」を読み直した感想~親子頻出アンチパターンは初心者モデラーに多い(2024.08.31)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- アーキテクチャ量子の考え方はソフトウェア工学に物理学アプローチを適用したアイデアではないか(2024.02.12)
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
コメント
ローレベルコードの使用目的は主に二つです
一番重要な目的は,所要量計算(あるいは原価計算)を行う品目の順序を決定するというものです(P175を参照).所要量計算を行うためには,親品目からの所要量の総計が必要なので,すべての親品目の所要量計算が完了しなければ該当品目の計算を行うことができません.品目ごとに付けられているローレベルコードの昇順で計算すれば(ただしMRPの計算の単位が品目だけという前提においてですが),かならず親品目の計算が完了した順序で計算できる,というわけです.
次にもう一つよく使われるのが,部品構成のループのチェックです.ループについてはP124の図2を参照してください.このチェックは非常に重いものなのですが,ローレベルコードの振り直しが必要でないような場合はチェックする必要がありません.
投稿: yuuntim | 2005/07/14 20:57