はじめに
このマニュアルは、CRUD Explorer バージョン 2.0.0.0について記しています。 
        CRUD Explorerは、PL/SQLや2WaySQLのSQLファイルからCRUDマトリックスを生成する機能を核とし、データベースアクセスを含むソースコードを分析するための 支援機能を多数提供します。
      大規模なシステムでは、数百にも及ぶのテーブル、プログラムから構成されており、煩雑なデータベースアクセス処理となりがちです。
      CRUD Explorerを利用すると、テーブルのライフサイクル(CRUD)に着目した分析が行え、仕様変更時の影響調査・問題発生時の原因箇所の特定等、通常時間がかかる作業を効率的に行うことが可能になります。 
      100%の解析結果を保証するものではありませんので、ご注意ください。
CRUD Explorerでできること
CRUD Explorerが提供する主な機能は以下の通りです。
      ・CRUDマトリックスの自動生成(テーブル単位及びカラム単位)
      ・テキストエディタとの連携(テーブルアクセス処理の該当箇所を開く)
      ・クエリ分析機能(クエリ構造をツリー表示、クエリ(SQL)の整形機能)
      ・クエリ内Grep
      ・CRUDサーチ(テーブル、カラムに対するアクセス処理の抽出)
      ・テーブル定義参照(Oracleからエクスポート可能)
動作環境 
      
      | 項目 | 説明 | 
|---|---|
| OS | 現時点で動作確認がとれているオペレーティングシステムは、以下の通りです。 ・Windows 7 (64bit) ・Windows XP (32bit) その他のOSについては、現時点では未検証ですが、.NET Framework4.0の要件を満たしているOSであれば動作するものと思います。 ぜひ掲示板に動作報告をお願いします。 | 
| .NET Framework | CRUD Explorerの動作には、.NET Framework 4.0が組み込まれている必要があります 。 必要に応じて.NET Framework 4.0を組み込んでください。Microsoftの以下のページより入手することができます。 http://www.microsoft.com/downloads/ja-jp/details.aspx?displaylang=ja&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7 | 
| ODP.NET | データベース接続機能を利用する場合に必須です。 | 
| 解像度 | 1024x768以上 | 
| メモリ | Windows7 2G以上推奨 WindowsXP 1G以上推奨 | 
動的SQLについて
CRUD Explorerでは、動的SQL部分についても解析対象とします。
      シングルクォート(')で囲まれた文字列部分を連結し、SQLと識別された場合、解析対象としています。
      動的SQLについては完全に解析することが難しいため、動作保証外とさせていただきます。
動作保証について
SQLの全ての構文に対応しているわけではなく、一般的な構文のみに対応しています。(ご要望が多い構文から順次対応していきます)
      そのため、完全な解析結果を保証するものではありません。
      事前に評価版とし試用していただき、解析精度について十分ご納得頂いた上でご利用・ご購入頂けますようお願い致します。
      一度に解析するソースファイル数は、300以下とさせて頂きます。また、表示可能なマトリックスは、100列以下とさせて頂きます。(システム的な制限は設けていませんが、概ね1000列を超えると、マトリックス表示でエラーが発生します。)
      カラムCRUD(カラム粒度のCRUDマトリックス)は動作保証外とさせていただきます。
      データベース接続機能(「テーブル定義インポート機能」、    「ストアドプロシージャエクスポート機能」)は、ODP.NETを使用してOracleデータベース    と接続します。    Oracleクライアント及びODP.NETがインストールされたコンピュータから使用することが    可能な機能となりますが、TNSの接続設定が必要等、クライアント環境に依存する部分が    多いことから、サポート対象外とさせて頂きます。    一般的な利用方法については、別途説明致します。)
サポートするソースファイルについて
・PL/SQL
        ・VIEWのDDL (VIEW単独のDDLファイルとして配置要) 
        ・Oracle Forms Developer(テキストとしてエクスポート要)
        ・SeasarプロジェクトのS2DaoやS2JDBCのSQLファイル(2WaySQL)
  
        OracleのPL/SQL言語に準じたソースファイルをサポートします。
        対応するSQLのバージョンはSQL92を基本としますが、全ての構文に対応しているわけではありません。
        文字コードはShift-JIS固定となりますので、Shift-JIS以外の場合は予めコード変換しておいてください。
        テーブル名・カラム名・予約後について、大文字小文字の区別は致しません。
        Oracle Forms Developerのソースコードは、内部的にはPL/SQLと同様となっているため、テキストファイルとしてエクスポートすることで、解析することが可能となります。
        VIEWのDDLについても解析可能であり、CREATE (OR REPLACE) VIEWで始まる構文は、VIEWとして識別されます。
        尚、正常にコンパイル可能なソースコードを前提としています。
        2WaySQLのSQLファイルは、全てリテラルが指定されていることを前提とします。リテラルが省略されている場合、正しく解析できない場合があります。
SQL解析の詳細
この仕様は、テーブルCRUD解析のみについての説明です。
        解析対象のSQL文は、SELECT、INSERT、UPDATE、DELETE、TRUNCATE文です。
      CREATE (OR REPLACE) VIEWで始まるものは、ビューとして識別します。
      ソースファイルから、SQLの開始位置を検索します。
        SQL文の開始からセミコロン(;)まで を1つのSQL文として解釈します。(ビューの場合は、スラッシュ(/)
までをSQL文として解釈します)
ソースファイル中のSQLが無くなるまで繰り返します。
      ソースファイル中のコメント部分、文字列部分のSQLは、解析対象とはしません。
      
      SQLの解析処理は、
      ・  集合演算子(UNION / UNION ALL / MINUS / INTERSECT)で分解
      ・サブクエリ(副問い合わせ)で分解
      を再帰的に繰り返し、サブクエリ単位で構文解析・CRUD分析を行います。
      
      サブクエリ単位の構文解析は以下の処理となっています。
      句で分解します。句として識別するものは、DELETE、FROM、GROUP BY、HAVING、INTO、INSERT、ORDER BY、SELECT、SET、TABLE、UPDATE、VALUES、WITH、WHERE句です。
      句と句の間の文字列を、解析要素として識別します。例えば、SELECT DUMMY FROM DUAL D WHERE DUMMY = 'x' というSQLの場合、
      「SELECT」、「DUMMY」、「FROM」、「DUAL D」、「WHERE」、「DUMMY = 'x'」の6要素に分解されます。
分解した要素を先頭から処理し、句によって次の要素を再解析します。
      FROM句の場合、当該サブクエリがSELECT文、DELETE文によって処理が異なります。さらにSELECT文の場合、文字列中にJOINを含む場合はSQL92形式の表結合として解釈します。
      
      FROM句・SELECT文・SQL92形式の場合、INNER JOIN、LEFT OUTER JOIN、LEFT JOIN、RIGHT OUTER JOIN、RIGHT JOIN、FULL OUTER JOIN、FULL JOIN、CROSS JOIN、NATURAL JOIN、ON、JOINで分解します。例えば、TABLEA TA INNER JOIN TABLEB TB ON TA.COLX = TA.COLY というFROM句の場合、
      「TABLEA TA」、「INNER JOIN」、「TABLEB TB」、「ON」、「TA.COLX = TA.COLY」の5要素に分解されます。
      先頭の要素は、テーブル参照【R】としてみなします。残りの要素を順次処理し、ON句がみつかった場合、一つ前の要素をテーブル参照【R】とみなします。
      
      FROM句・SELECT文・SQL92形式以外の場合、カンマ(,)で分解します。各要素をテーブル参照【R】とみなします。
      
      FROM句・DELETE文の場合、次の要素をテーブル削除【D】とみなします。
      
      TABLE句の場合、次の要素をテーブル削除【D】とみなします。(TRUNCATE文)
      
      INTO句の場合、次の要素をテーブル追加【C】とみなします。
      
      UPDATE句の場合、次の要素をテーブル更新【U】とみなします。
      
ユーザサポートについて
平日は本業(サラリーマン)が忙しいため、迅速なユーザサポートは期待しないでください。ご要望等には最大限お答えしたいと思いますので、掲示板・メールまでご意見をお寄せください。
        
        掲示板
      サポートメール:crudexplorer@gmail.com
      
        
      
