- 締切済み
SQLの解析資料の作り方
仕事のメンテナンスで他の人が作ったSQLの解析を 多く行うのですが、複雑なSQLや10以上のテーブルを 結合して何をどうしているかを、解析した以外の人間が 一目で見て分かるような資料をどのように作ったらいいか 困っています。 何か良い表現方法やまとめかたをご存知の方がいらっしゃったら 教えていただきたいです。 現在は、どのテーブルからどの結合条件でどの抽出条件で などのまとめかたで記述をしているのですが、ぱっと見 わかりづらく、伝わりにくいので解析後時間がたってしまうと わけがわからなくなり困っております。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
なるほど、今ある資産から遡って資料を作ろうとしているのですね。 既にシステムがある、しかし仕様書がないというふざけた昔のシステム作りのせいで。 それは、そのシステムや機能がどういうものなのかというのは全く理解する事はできないと思います。 それに携わったことがあり、全てを知り尽くしている人がいなければ。 大体、初めっからちゃんと設計書を起こしていないプログラムについて 完璧な設計書を後から作成できるはずがありません。 あなたがやれるのは、『既にあるプログラムを日本語に翻訳するだけ』です。 つまり、 1.あれする 2.これする 3.Aの場合A1のSQLをながし、5.項以降の処理を続行する。 4.Bの場合B1のSQLをながし、5.項以降の処理を続行する。 5.それする 6.どれする と処理を羅列することしか出来ませんよね? どういう理由でそのSQLを流さなければならないのかまで把握することは不可能です。 テーブル項目の意味もわからなければ、それは更に加速されるでしょう。 削除フラグ、とかユーザーIDとか、まぁ、多少想像がつくところは あるかもしれませんが、あくまで想像であって、本当にイメージしている 動作をするかは分からないはずです。 こんなのはどうでしょうか? 1.機能毎にSQL一覧を作り、各SQLはユニークな名称がつけられている。 (機能に振られている機能ID、テーブル名や連番などを利用して勝手に採番) 2.機能毎に処理内容を記載し、その中でSQLを利用するならば、 『「SQL一覧.~(1.で採番したユニークな名称)」のSQLを発行する』などとする。 条件があるなら、表形式で P1 なになに P2 あれこれ とかしてやる。 そんな感じでやれば、SQL自体の解析は一切不要で、、それを流してるんですよ ってのがわかります。 SQLだけなら、ソースから簡単にひっぱってこれますよね。 条件のところは実際何が使われているのかは調べないといけないかもですが・・。 こういった作業は、理解しながら進めるというより、既に記されている内容を 日本語にして書き出すだけの作業になります。 考える必要があるのは、プログラム内での変数の使われ方くらいですきっと。 なぜそれを今するかというと、昔のシステム作りがずさんで、今しわ寄せがきているのでしょう。 もしくはただの勉強がてら、ってやつですね。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
どういった仕様で、何をしたい為にどういう手順で何をしようとしているのか、 それを行う為には何が必要なのか、 これをちゃんと順を追って資料化されているのなら誰でも分かると思います。 解析ではなく、しっかり文書化・図式化などがされていないのではないでしょうか。 また、それを理解しようする為には、テーブルの各項目が何を意味しているのかも 予め理解していないといけません。
お礼
どうもありがとうございます。 わからない霧の中で人がわかるような資料をつくるのは 無理ですよね。 何をしたいのかがわからない(教えられていない。 というより、仕事を頼んだ人もわかっていないので 聞いても答えてもらえないのです。) ままずっとこの作業をしています。 仕様はわからず、現在あるプログラムが仕様で テーブルもER図は無く整理もされていません。 その仕様が正しいのか正しくないのかはどうでもよくて ただ、プログラムを解析して仕様をまとめろというのが 仕事になっています。 なんだか作業内容がすじが通っていない気がするのですが なので、SQLを解析しても頭にすっとはいってこないのかもしれないです。 やり方をかえてみようと思います。 どうもありがとうございました。
お礼
おつきあい頂き感謝致します。 業務の内容も全くわからないのに、このSQLは正しいのか それも判断しながら仕様をまとめろということ自体 この作業を頼まれた時点うまくいかないなといういやぁな 予感はしていたのですが・・・。その通りになってしまいました。 プログラムの解析は前後関係を見てなんとかなるのですが DBの内容、使われ方が全く霧の中のためSQLの妥当性 など全く判断がつかず困っていました。少しでも 私の困っている内容、それに対しての丁寧な対処方法 とても心強く拝見しました。 明日から対応してみたいと思います。 本当にどうもありがとうございました。