再帰SQL
Javaやモデリングを検索すると、2chのスレッドにたどり着いてしまうのだが、面白い記事を見つけた。
「部品表から、未来のある時点での在庫の推移・過不足を見たいが、どのようなデータモデリングとSQLを使えばよいのか?」という質問に対し、「再帰SQLを使うしかないだろう」という答えがあり、下記のリンクが張られていた。
オブジェクト指向、Javaを取り入れた新しい業界標準「SQL99」詳細解説 (共通表式 WITH句/再帰SQL)
共通表式は、外部結合等でFROM句にあるサブクエリを何度も使わざるを得ない時に使った経験があるので知っていたが、再帰SQLについては知らなかった。
上記HPの例題を読むと、「部品構成表から、自転車を構成する全部品と各部品の所要数の一覧を作る」時のSQLが再帰SQLとして書かれている。
更に、「パリからサンフランシスコまでの乗り継ぎのある経路のうち、最少費用の経路を探す」ためにも再帰SQLを使っている。
こんな問題の解決に再帰SQLを使うんだなーと感心した。(感心してはいけないが)
この方法は、MSProjectで作ったスケジュール表のリソース平準化のアルゴリズムにも使われているのだろうか?
クリティカルパスの検索や工数最適化にもこのアルゴリズムは使えるのではないか?
再帰SQLを使えば、最短経路検索の問題が全て解けてしまうのでは?と思ってしまうが、無限ループの問題とかあるみたい。
上記の記事には、再帰SQLの他に、渡辺さんの本「生産管理・原価管理システムのためのデータモデリング」に載っている「LLCを使ってシングルレベル展開して最後の階層まで集計する」アルゴリズムが回答されていた。
LLC(ローレベルコード)の意味は、「ある部品が部品構成表でどれくらい最下位にあるかを示す位置」なのだが、恥ずかしながら僕もLLCの使い道がよく分かっていなかった。
渡辺さんの本にある「MRPの所要量計算アルゴリズム」は理解し切れていないけれど、再帰SQLのアルゴリズムと似ている感じがするのだが、正しいだろうか? もう少し考えよう。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- Redmine、DOA、PM理論。点だった知識が“世界の見え方”に変わる瞬間(2026.05.23)
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「モデリング」カテゴリの記事
- リプレースとアーキテクチャモダナイゼーシヨンの違いの本質は何なのか?(2026.04.08)
- すり合わせの優位性は健在か?日本の製造業が直面するPLM活用とMBSEソフトウェア運用の理想と現実(2026.03.29)
- アーキテクチャモダナイゼーションにおけるAMETチームの役割と責任範囲は何か(2026.03.23)
- アーキテクチャモダナイゼーションとはそもそも何なのか?(2026.03.22)
- 自動車の組込ソフトウェア開発が難しい理由は3つある(2026.02.23)
「プロジェクトマネジメント」カテゴリの記事
- なぜCCPMは挫折する?経営者の理想と現場の挫折をLycheeRedmineが解決する #redmine(2026.06.30)
- 製造業DXを支える工程管理とは?Redmineの大規模プロジェクト階層化における課題:プロジェクトツリーの設定継承と関連チケット制限の壁(2026.06.27)
- Redmine × AIがプロジェクト管理を変える:祝・Redmine20周年!RedmineJapan Vol.5の司会を全うして見えた「AI連携」と「製造業マネジメント」の未来 #RedmineJapan(2026.06.27)
- プロセスには「学習のループ」が必要だ(2026.06.20)
- JTCの壁を壊す「Redmine参謀本部」という戦略~現場の職人気質を活かす組織論(2026.05.19)


コメント
ローレベルコードの使用目的は主に二つです
一番重要な目的は,所要量計算(あるいは原価計算)を行う品目の順序を決定するというものです(P175を参照).所要量計算を行うためには,親品目からの所要量の総計が必要なので,すべての親品目の所要量計算が完了しなければ該当品目の計算を行うことができません.品目ごとに付けられているローレベルコードの昇順で計算すれば(ただしMRPの計算の単位が品目だけという前提においてですが),かならず親品目の計算が完了した順序で計算できる,というわけです.
次にもう一つよく使われるのが,部品構成のループのチェックです.ループについてはP124の図2を参照してください.このチェックは非常に重いものなのですが,ローレベルコードの振り直しが必要でないような場合はチェックする必要がありません.
投稿: yuuntim | 2005/07/14 20:57