JP5641901B2 - Sql検証システムとその方法およびプログラム - Google Patents

Sql検証システムとその方法およびプログラム Download PDF

Info

Publication number
JP5641901B2
JP5641901B2 JP2010265422A JP2010265422A JP5641901B2 JP 5641901 B2 JP5641901 B2 JP 5641901B2 JP 2010265422 A JP2010265422 A JP 2010265422A JP 2010265422 A JP2010265422 A JP 2010265422A JP 5641901 B2 JP5641901 B2 JP 5641901B2
Authority
JP
Japan
Prior art keywords
sql
column
entity
diagram
name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010265422A
Other languages
English (en)
Other versions
JP2012118609A (ja
Inventor
清章 成尾
清章 成尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Systems Ltd
Original Assignee
Hitachi Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Systems Ltd filed Critical Hitachi Systems Ltd
Priority to JP2010265422A priority Critical patent/JP5641901B2/ja
Publication of JP2012118609A publication Critical patent/JP2012118609A/ja
Application granted granted Critical
Publication of JP5641901B2 publication Critical patent/JP5641901B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、リレーショナルデータベースマネージメントシステム(RDBMS)において、データの操作や定義を行うための問い合わせ言語であるSQL(Structured Query Language)の自動作成技術に係り、特に、作成されたSQLの検証を効率的に行うのに好適な技術に関するものである。
従来、SQLをコンピュータにより自動的に生成する技術として、例えば、特許文献1や特許文献2に記載された技術が知られている。特許文献1に記載された技術は、SQLとER図(Entity Relationship Diagram;テーブルとテーブルの関連を表現する図)との関連性に関するシステム管理技術であり、自動作成したSQLについて変換前と変換後の整合性をチェックして当該SQLの検証を行う。また、特許文献2においては、ER図からSQLを自動生成する技術が記載されている。
前述した特許文献1に記載の技術では、データベースシステムよりSQLを生成することができ、また、前述した特許文献2に記載の技術では、ER図よりSQLを生成することができる。しかし、いずれの技術においても、開発者が自由に記述したSQLの整合性を検証することはできない。
特開2008−152369号公報 特開平07−325835号公報
解決しようとする問題点は、従来の技術では、開発者が自由に記述したSQLの整合性を検証することができない点である。
本発明の目的は、これら従来技術の課題を解決し、人手を介さずに、開発者が自由に記述したSQLを対象として、当該SQLの根拠となるER図との整合性を検証し、また、その検証結果を用いて、当該SQLを補正し、かつ、補正情報を開発者に通知することにより、SQLの開発を正確かつ迅速に行えるようにすることである。
上記目的を達成するため、本発明は、ER図を用いてDBシステムを管理する中〜大規模業務システムの開発において、DBの構築前に、コンパイラが不要の環境で、SQLとER図(DBシステム)との整合性の検証が人手を介さずに可能とするために、(1)プログラムされたコンピュータ処理を実行する処理部として、予め作成されたER図情報から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブルを生成して記憶装置に格納するER図情報取得処理部と、予め作成されたSQLから各SQL情報を読み出し、SQL情報テーブルを生成して記憶装置に格納するSQL情報取得処理部と、SQL情報テーブルにおける各SQLを解析して、予め設定された予約語以外の字句を特定し、特定した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対して上記エンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納するSQL解析処理部と、使用エンティティカラムリストとエンティティ名カラム名対応リストテーブルを読み出し、使用エンティティカラムリストにおけるカラムがエンティティ名カラム名対応リストに存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定するER図−SQL整合性チェック処理部とを有する構成とする。(2)また、プログラムされたコンピュータ処理を実行する処理部として、さらにER図履歴情報更新処理部とER図履歴情報取得処理部および出力処理部を設け、このER図履歴情報更新処理部において、予め作成されたER図履歴情報からエンティティ情報とカラム情報の更新履歴情報を読み出し、エンティティ名カラム名対応リストテーブルにおける情報との差分を取得し、取得した差分を履歴差分としてER図履歴情報に追加することでER図履歴情報を更新し、ER図履歴情報取得処理部において、ER図履歴情報更新処理部が更新したER図履歴情報を読み出し、ER図履歴情報テーブルを生成して記憶装置に格納し、SQL解析処理部において、SQL情報テーブルにおける各SQLを解析して、使用エンティティカラムリストを生成して記憶装置に格納し、ER図−SQL整合性チェック処理部において、使用エンティティカラムリストとエンティティ名カラム名対応リストテーブルを読み出し、使用エンティティカラムリストにおけるカラムがエンティティ名カラム名対応リストに存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリストを生成して記憶装置に格納し、SQL補正処理部において、ER図履歴情報テーブルと未使用エンティティカラムリストを読み出し、この未使用エンティティカラムリストに存在するエンティティおよびカラムがER図履歴情報テーブルに存在するか否かを判別し、存在する場合、未使用エンティティカラムリストにおけるエンティティ名とカラム名を、ER図履歴情報テーブルにおける最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログを生成し、出力処理部において、予め指定されたユーザ指定ディレクトリを読み出し、このディレクトリの配下にSQL補正処理部による補正結果(SQL補正結果)を出力することで、ER図を入力としてER図履歴情報が作成され、SQLのエンティティ名、カラム名を補正することを可能とする。
(3)また、プログラムされたコンピュータ処理を実行する処理部として、
さらにSQL予約語リスト取得処理部とプロジェクト準拠チェック処理部を設け、
プロジェクト開発規約取得処理部において、予め作成されたプロジェクト開発規約からプロジェクト開発規約情報を読み出し、プロジェクト開発規約テーブルを生成して記憶装置に格納し、SQL解析処理部において、SQL情報テーブルにおける各SQLを解析して、SQL予約語テーブルに設定された予約語と予約語以外の字句に分解し、分解した予約語を使用予約語リストに格納すると共に、分解した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該エンティティ名を特定し、特定したエンティティ名に対してエンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納し、ER図−SQL整合性チェック処理部において、使用エンティティカラムリストとエンティティ名カラム名対応リストテーブルを読み出し、使用エンティティカラムリストにおけるカラムがエンティティ名カラム名対応リストに存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、プロジェクト準拠チェック処理部において、プロジェクト開発規約テーブルと使用予約語リストを読み出し、この使用予約語リストに格納された各SQLの予約語が、プロジェクト開発規約テーブルに格納されたプロジェクト開発規約に準拠しているかを検証し、準拠していない場合、プロジェクト準拠違反としてSQL検証結果ログに情報を格納し、出力処理部において、予め指定されたユーザ指定ディレクトリを読み出し、このディレクトリの配下にSQL検証結果ログを出力することにより、予約語を外部ファイルとして保持することで、様々な機種のSQLに対応することを可能となると共に、プロジェクトの開発規約を外部ファイルとして保持することにより、SQLがプロジェクトの開発規約に準拠しているか否かを検証することが可能となる。
本発明によれば、開発者が記述したSQLとER図との整合性の検証、SQLの補正およびプロジェクト準拠チェックが人手を介することなく瞬時に実行できるため、SQLの検証・補正にかかる作業効率が向上する。また、コンパイラが不要なため、プロジェクトにおいてもデータベース環境の構築は不要であり、データベース環境に縛られることなく迅速なSQLの開発が可能となる。
本発明に係るSQL検証システムとしてのSQL検証・補正システムの構成例を示すブロック図である。 図1におけるER図情報取得処理部の処理動作例を示すフローチャートである。 図1におけるER図履歴情報更新処理部の処理動作例を示すフローチャートである。 図1におけるER図履歴情報取得処理部の処理動作例を示すフローチャートである。 図1におけるSQL情報取得処理部の処理動作例を示すフローチャートである。 図1におけるプロジェクト開発規約取得処理部の処理動作例を示すフローチャートである。 図1におけるSQL予約語リスト取得処理部の処理動作例を示すフローチャートである。 図1におけるSQL解析処理部の処理動作例を示すフローチャートである。 図1におけるER図−SQL整合性チェック処理部の処理動作例を示すフローチャートである。 図1におけるSQL補正処理部の処理動作例を示すフローチャートである。 図1におけるプロジェクト準拠チェック処理部の処理動作例を示すフローチャートである。 図1における出力処理部の処理動作例を示すフローチャートである。 図1におけるER図情報の構成例を示す説明図である。 図1におけるエンティティ名カラム名対応リストテーブルの構成例を示す説明図である。 図1におけるER図歴利情報の構成例を示す説明図である。 図1におけるSQL情報の構成例を示す説明図である。 図1におけるプロジェクト開発規約の構成例を示す説明図である。 図1におけるSQL予約語リストの構成例を示す説明図である。 図1における使用予約語リストの構成例を示す説明図である。 図1における使用エンティティカラムリストの構成例を示す説明図である。 図1における未使用エンティティカラムリストの構成例を示す説明図である。 図1におけるユーザ指定ディレクトリの構成例を示す説明図である。 図1におけるSQL補正結果の出力構成例を示す説明図である。 図1におけるSQL検証結果ログの出力構成例を示す説明図である。
以下、図を用いて本発明を実施するための形態例を説明する。図1において、100は本発明に係るSQL検証システムとしての処理を実行するSQL検証・補正システム、101はER図情報102を格納したER図情報格納サーバ、103はLANやインターネット等のネットワークである。
SQL検証・補正システム100は、CPU(Central Processing Unit)や主メモリ、表示装置、入力装置、外部記憶装置等を有するコンピュータ構成からなり、光ディスク駆動装置等を介してCD−ROM等の記憶媒体に記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みCPUで処理することにより、本発明に係る処理を実行する。
本例のSQL検証・補正システム100は、プログラムされたコンピュータ処理を実行する機能として、ER図情報取得処理部(図中「ER図情報取得処理」と記載)104と、ER図履歴情報更新処理部(図中「ER図履歴情報更新処理」と記載)106、ER図履歴情報取得処理部(図中「ER図履歴情報取得処理」と記載)108、SQL情報取得処理部(図中「SQL情報取得処理」と記載)110、プロジェクト開発規約取得処理部(図中「プロジェクト開発規約取得処理」と記載)113、SQL予約語リスト取得処理部(図中「SQL予約語リスト取得処理」と記載)116、SQL解析処理部(図中「SQL解析処理」と記載)119、ER図−SQL整合性チェック処理部(図中「ER図−SQL整合性チェック処理」と記載)122、SQL補正処理部(図中「SQL補正処理」と記載)124、プロジェクト準拠チェック処理部(図中「プロジェクト準拠チェック処理」と記載)125、出力処理部(図中「出力処理」と記載)126を具備する。
このような構成により、SQL検証・補正システム100は、データベース(DB)設計の際に必要なER図と、ER図より開発されたSQLの整合性を、人手を介せずにコンピュータ上で自動的に検証し、また自動的にSQLを補正する。
すなわち、SQL検証・補正システム100は、ER図情報取得処理部104において、ネットワーク103を介してER図情報格納サーバ101から、図13に詳細を示すER図情報102を取得して、図14に示す構成のエンティティ名カラム名対応リストテーブル105に格納し、ER図履歴情報更新処理部106において、ER図履歴情報107を更新し、ER図履歴情報取得処理部108においては、ER図履歴情報107を取得し図15に示す構成のER図履歴情報テーブル109に格納する。
また、SQL情報取得処理部110においては、図16に示すSQL情報111を取得してSQL情報テーブル112に格納し、プロジェクト開発規約取得処理部113により、図17に示すプロジェクト開発規約114を取得してプロジェクト開発規約テーブル115に格納し、SQL予約語リスト取得処理部116により、図18に示すSQL予約語リスト117を取得しSQL予約語テーブル118に格納する。
そして、SQL解析処理部119において、SQL情報テーブル112とSQL予約語テーブル118およびエンティティ名カラム名対折リストテーブル105を入力してSQLを解析し、図19に示す使用予約語リスト120と図20に示す使用エンティティカラムリスト121に分解して出力する。
また、ER図−SQL整合性チェック処理部122において、使用エンティティカラムリスト121とエンティティ名カラム名対応リストテーブル105を入力してER図とSQLの整合性をチェックして図21に示す未使用エンティティカラムリスト123を出力し、SQL補正処理部124において、ER図履歴情報テーブル109と未使用エンティティカラムリスト123を入力してSQLの補正を実施し、プロジェクト準拠チェック処理部125において、使用予約語リスト120とプロジェクト開発規約テーブル115を入力してプロジェクト準拠をチェックし、出力処理部126により、図22に例示するユーザ指定ディレクトリ127配下に、図23に示すSQL検証結果ログ129と図24に示すSQL補正結果128を出力する。
より具体的には、ER図情報取得処理部104は、予め作成されER図情報格納サーバ101に格納されたER図情報102から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブル105を生成して図示していない記憶装置に格納し、SQL情報取得処理部110は、予め作成されたSQL情報(ワークシート)111から各SQL情報を読み出し、SQL情報テーブル112を生成して記憶装置に格納し、SQL解析処理部119は、SQL情報テーブル112における各SQLを解析して、予めSQL予約語取得処理部116によりSQL予約語リスト117を基にSQL予約語テーブル118に設定された予約語以外の字句を特定し、特定した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対してエンティティ名カラム名対応リストテーブル105において対応付けられたカラム名を特定して、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリスト121を生成して記憶装置に格納し、ER図−SQL整合性チェック処理部122は、使用エンティティカラムリスト121とエンティティ名カラム名対応リストテーブル105を読み出し、使用エンティティカラムリスト121におけるカラムがエンティティ名カラム名対応リスト105に存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定する。
また、ER図履歴情報更新処理部106は、予め作成されたER図履歴情報107からエンティティ情報とカラム情報の更新履歴情報を読み出し、エンティティ名カラム名対応リストテーブル105における情報との差分を取得し、取得した差分を履歴差分としてER図履歴情報107に追加することでER図履歴情報を更新し、ER図履歴情報取得処理部108は、ER図履歴情報更新処理部106が更新したER図履歴情報107を読み出し、ER図履歴情報テーブル109を生成して記憶装置に格納し、SQL解析処理部119は、SQL情報テーブル112における各SQLを解析して、使用エンティティカラムリスト121を生成して記憶装置に格納し、ER図−SQL整合性チェック処理部122は、使用エンティティカラムリスト121とエンティティ名カラム名対応リストテーブル105を読み出し、使用エンティティカラムリスト121におけるカラムがエンティティ名カラム名対応リスト105に存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリスト123を生成して記憶装置に格納し、SQL補正処理部124は、ER図履歴情報テーブル109と未使用エンティティカラムリスト121を読み出し、この未使用エンティティカラムリスト121に存在するエンティティおよびカラムがER図履歴情報テーブル109に存在するか否かを判別し、存在する場合、未使用エンティティカラムリスト121におけるエンティティ名とカラム名を、ER図履歴情報テーブル109における最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログ129を生成し、出力処理部126は、予め指定されたユーザ指定ディレクトリ127を読み出し、このディレクトリの配下にSQL補正処理部124による補正結果(SQL補正結果128)を出力する。
また、プロジェクト開発規約取得処理部113は、予め作成されたプロジェクト開発規約114からプロジェクト開発規約情報を読み出し、プロジェクト開発規約テーブル115を生成して記憶装置に格納し、SQL解析処理部119は、SQL情報テーブルにおける各SQLを解析して、SQL予約語テーブル118に設定された予約語と予約語以外の字句に分解し、分解した予約語を使用予約語リスト120に格納すると共に、分解した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該エンティティ名を特定し、特定したエンティティ名に対してエンティティ名カラム名対応リストテーブル105において対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリスト121を生成して記憶装置に格納し、ER図−SQL整合性チェック処理部122は、使用エンティティカラムリスト121とエンティティ名カラム名対応リストテーブル105を読み出し、使用エンティティカラムリスト121におけるカラムがエンティティ名カラム名対応リストに存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、プロジェクト準拠チェック処理部125は、プロジェクト開発規約テーブル115と使用予約語リスト120を読み出し、この使用予約語リスト120に格納された各SQLの予約語が、プロジェクト開発規約テーブル115に格納されたプロジェクト開発規約に準拠しているかを検証し、準拠していない場合、プロジェクト準拠違反としてSQL検証結果ログ129に情報を格納し、出力処理部126は、予め指定されたユーザ指定ディレクトリ127を読み出し、このディレクトリの配下にSQL検証結果ログ129を出力する。
このようにして、本例のSQL検証・補正システム100では、ER図を用いてDBシステムを管理する中〜大規模業務システムの開発において、DBの構築前に、コンパイラが不要の環境で、SQLとER図(DBシステム)との整合性の検証が、人手を介さずに可能となる。
また、ER図を入力としてER図履歴情報107(ER図履歴情報テーブル109)が作成され、SQLのエンティティ名、カラム名を補正することが可能である。
また、予約語を外部ファイル(SQL予約語リスト117、SQL予約語テーブル118)として保持することにより、様々な機種のSQLに対応することが可能である。
また、プロジェクトの開発規約を外部ファイル(プロジェクト開発規約114、プロジェクト開発規約テーブル115)として保持することにより、SQLがプロジェクトの開発規約に準拠しているか否かを検証することが可能である。
以下、図1〜図24を用いて、このようなSQL検証・補正システム100の構成とその動作を、より具体的に説明する。
一般に、中規模なコンピュータシステムや大規模なコンピュータシステムの開発においては、ER図を用いてデータベース(DB)システムを管理しSQLの設計を行う。SQLの設計の際にDBとの整合性を確認しプロジェクト開発規約に則っているかの検証は必須であるが、この作業にはDBシステムを構築しコンパイラを用意する必要がある。
DBの設計とSQLの設計が同時に進行することが多い中規模・大規模なコンピュータシステムのプロジェクトにおいては、DB構築後にSQLを検証するというプロセスはボトルネックとなる危険性がある。
本例のSQL検証・補正システム100では、以下に説明するように、ER図とSQLをワークシート形式で用意することにより、DBシステムおよびコンパイラは不要とし、また、プロジェクト開発規約の準拠をチェックすることにより、迅速なSQLの検証を可能とし、コンピュータシステム開発の効率化を図ることができる。
図1から図23は、本発明の実施の形態を例示する図であり、これらの図において、同一の符号を付した部分は同一物を現し、基本的な構成および動作は同様であるものとする。
図1においては、本例のSQL検証・補正システム100が適用されるコンピュータシステムの全体の構成例を示している。
SQL検証・補正システム100は、ER図情報格納サーバ101より取得したER図情報102とネットワーク103を介してSQL検証・補正システム100と接続し、ER図情報102を取得してエンティティ名カラム名対応リストテーブル105に格納するER図情報取得処理部104と、ER図履歴情報107を更新するER図履歴情報更新処理部106、ER図履歴情報を取得しER図履歴情報テーブル109に格納するER図履歴情報取得処理部108、SQL情報111を取得してSQL情報テーブル112に格納するSQL情報取得処理部110、プロジェクト開発規約114を取得してプロジェクト開発規約テーブル115に格納するプロジェクト開発規約取得処理部113、SQL予約語リスト117を取得しSQL予約語テーブル118に格納するSQL予約語リスト取得処理部116、SQL情報テーブル112SQL予約語テーブル118エンティティ名カラム名対折リストテーブル105を入力としてSQLを解析し使用エンティティカラムリスト121と使用予約語リスト120に分解出力するSQL解析処理部119、使用エンティティカラムリスト121、エンティティ名カラム名対応リストテーブル105を入力としてER図とSQLの整合性をチェックして未使用エンティティカラムリスト123を出力するER図−SQL整合性チェック処理部122、ER図履歴情報テーブル109と未使用エンティティカラムリスト123を入力としてSQLの補正を実施するSQL補正処理部124、使用予約語リスト120とプロジェクト開発規約テーブル115を入力としてプロジェクト準拠をチェックするプロジェクト準拠チェック処理部125およびユーザ指定ディレクトリ127配下にSQL検証結果ログ129とSQL補正結果128を出力する出力処理部126より構成される。
図2においては、ER図情報取得処理部104の処理動作を示しており、ER図情報取得処理部104は、ER図を構成するエンティティ、カラム情報を取得しエンティティ名カラム名対応リストテーブル105を作成する。
すなわち、まず、ネットワーク103を介して入力されたER図情報格納サーバ101のER図情報102をオープンして(ステップ201)、ER図情報102よりエンティティ情報を取得し(ステップ202)、同様にER図情報102よりカラム情報を取得する(ステップ203)。
そして、ステップ202、203の処理で取得した情報を元にエンティティ名カラム名対応リストテーブル105を作成し(ステップ204)、ER図情報をクローズする(ステップ205)。
図3においては、ER図履歴情報更新処理部106の処理動作を示しており、ER図履歴情報更新処理部106は、ER図を構成するエンティティ、カラム情報の更新履歴を管理するER図履歴情報107を、現在のER図情報で更新し最新のR図履歴情報107を作成する。
すなわち、まず、外部ファイルであるER図履歴情報107をオープンして(ステップ301)、ER図履歴情報を取得する(ステップ302)。次に、エンティティ名カラム名対応リストテーブル105とER図履歴情報107との差分を取得し内部メモリに展開する(ステップ303)。
そして、ステップ303の処理で取得した差分を履歴差分としてER図履歴情報107に追加して(ステップ304)、ER図履歴情報107をクローズする(ステップ305)。
図4においては、ER図履歴情報取得処理部108の処理動作を示しており、ER図履歴情報取得処理部108は、ER図履歴情報更新処理部106で更新したER図履歴情報107を内部メモリに展開する。
すなわち、まず、外部ファイルであるER図履歴情報107をオープンし(ステップ401)、ER図履歴情報を取得して内部メモリに展開する(ステップ402)。そして、取得したER図履歴情報をER図履歴情報テーブルに格納し(ステップ403)、ER図履歴情報107をクローズする(ステップ404)。
図5においては、SQL情報取得処理部110の処理動作を示しており、SQL情報取得処理部110は、SQL情報(ワークシート)より処理対象であるSQLの情報を内部テーブルに格納する。
SQL情報取得処理部110は、まず、外部ファイルであるSQL情報(ワークシート)111をオープンし(ステップ501)、ワークシートにSQL情報がある間、ステップ503からステップ504の処理を繰り返す(ステップ502)。
すなわち、ワークシートよりSQL情報を1件取得し(ステップ503)、取得したSQL情報をSQL情報テーブル112に格納する処理を繰り返し(ステップ504)、繰り返し処理が終わると(ステップ505)、SQL情報をクローズする(ステップ506)。
図6においては、プロジェクト開発規約取得処理部113の処理動作を示しており、プロジェクト開発規約取得処理部113は、プロジェクト開発規約114情報をプロジェクト開発規約テーブル115に格納する。
プロジェクト開発規約取得処理部113は、まず、外部ファイルであるプロジェクト開発規約114をオープンし(ステップ601)、プロジェクト開発規約がある間、ステップ603からステップ604の処理を繰り返す(ステップ602)。
すなわち、プロジェクト開発規約を1件取得し(ステップ603)、取得したプロジェクト開発ルールをプロジェクト開発規約テーブル115に格納する処理を繰り返し(ステップ604)、繰り返し処理が終わると(ステップ605)、プロジェクト開発規約をクローズする(ステップ606)。
図7においては、SQL予約語リスト取得処理部116の処理動作を示しており、SQL予約語リスト取得処理部116は、SQL予約語リスト117をSQL情報テーブル112に格納する。
すなわち、外部ファイルであるSQL予約語リスト117をオープンし(ステップ701)、SQL予約語リスト情報を取得し(ステップ702)、取得したSQL予約語リスト情報をSQL予約語テーブル118に格納して(ステップ703)、SQL予約語リスト117をクローズする(ステップ706)。
図8においては、SQL解析処理部119の処理動作を示しており、このSQL解析処理部119は、SQL情報テーブル112のSQLを予約語と予約語以外の字句に分解し、予約語以外の字句より、当該SQLで使用しているエンティティ名とカラム名を確定し、使用エンティティカラムリスト121を作成する。
すなわち、SQL解析処理部119は、まず、ER図情報取得処理部104で作成したエンティティ名カラム名対応リストテーブル105を読み出し(ロードし)(ステップ801)、SQL予約語リスト取得処理部116で作成したSQL予約語テーブル118をロードし(ステップ802)、さらに、SQL情報取得処理部110で作成したSQL情報112をロードする(ステップ803)。
次に、SQL情報112にSQLが存在する間、ステップ805からステップ809の処理を繰り返し実行する(ステップ804)。すなわち、SQLを予約語とその他の字句に分解し(ステップ805)、分解した予約語を使用予約語リスト120に格納する(ステップ806)。
そして、予約語以外の字句よりSQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を確定し(ステップ807)、エイリアスよりSQLで使用しているエンティティ名を確定する(ステップ808)。
さらに、エンティティ名とカラム名を紐付けして、使用エンティティカラムリスト121を作成し(ステップ809)、ステップ805〜809の処理を繰り返す(ステップ810)。尚、使用エンティティカラムリスト121は、当該SQLで使用しているエンティティ名およびカラム名を格納しているリストである。
図9においては、ER図−SQL整合性チェック処理部122の処理動作を示しており、このER図−SQL整合性チェック処理部122は、当該SQLで使用しているエンティティ名およびカラム名がER図に存在しているかを検証する。
すなわち、ER図−SQL整合性チェック処理部122は、まず、使用エンティティカラムリスト121をロードすると共に(ステップ901)、エンティティ名カラム名対応リストテーブル105をロードする(ステップ902)。
そして、使用しているカラムがエンティティ名カラム名対応リストに存在するかをチェックし(ステップ903)、このステップ903でチェックしたカラムをエンティティ名カラム名対応リストテーブルに存在しない未使用エンティティカラムリスト123として出力する(ステップ904)。尚、未使用エンティティカラムリスト123は、ER図には存在しないが、当該SQLで使用しているエンティティ名およびカラム名を格納しているリストである。
図10においては、SQL補正処理部124の処理動作を示しており、このSQL補正処理部124は、当該SQLで使用しているエンティティ名およびカラム名についてER図に存在しない場合、ER図の履歴情報よりエンティティ名およびカラム名の修正履歴を取得し、修正履歴をさかのぼることにより現状のER図に存在するエンティティ名およびカラム名に補正する。
すなわち、SQL補正処理部124は、ER図履歴情報テーブル109をロードすると共に(ステップ1001)、未使用エンティティカラムリスト123をロードし(ステップ1002)、未使用エンティティカラムリスト123に未使用エンティティカラムが存在する間、ステップ1004からステップ1007の処理を繰り返す(ステップ1003)。
まず、未使用エンティティカラムリスト123のエンティティおよびカラムがER図履歴情報テーブル109に存在するかを判別するマッチング処理を実行する(ステップ1004)。このステップ1004でのマッチング処理の結果により、以下の処理に分岐する(ステップ1005)。
一致する場合、未使用エンティティカラムリスト123のエンティティ名カラム名をER図履歴情報テーブル109より最新のエンティティ名カラム名に補正し(ステップ1006)、また、一致しない場合、補正できないSQLとしてSQL検証結果ログ129を作成する(ステップ1007)。以上のステップ1004〜1007の処理を繰り返す(ステップ1008)。
図11においては、プロジェクト準拠チェック処理部125の処理動作を示しており、このプロジェクト準拠チェック処理部125は、当該SQLの記述内容がプロジェクト開発規約に違反していないかを検証する。
すなわち、プロジェクト準拠チェック処理部125は、プロジェクト開発規約取得処理部113で作成したプロジェクト開発規約テーブル115をロードすると共に(ステップ1101)、SQL解析処理部119で作成した使用予約語リスト120をロードする。(ステップ1102)。そして、使用予約語リスト120にリストが存在する間、ステップ1104からステップ1106の処理を繰り返す(ステップ1103)。
まず、プロジェクト開発規約テーブル115と使用予約語リスト120のマッチング処理を行い、当該SQLがプロジェクト開発規約に準拠しているか否かをチェックする(ステップ1104)。
プロジェクト開発規約に準拠していない場合には(ステップ1105)、プロジェクト準拠違反としてSQL検証結果ログ129に情報を追加し(ステップ1106)、準拠している場合には(ステップ1105)、次のマッチング処理を繰り返す(ステップ1107)。
図12においては、出力処理部126の処理動作を示しており、出力処理部126は、まず、ユーザ指定ディレクトリ127を取得し(ステップ1201)、ユーザの指定したディレクトリの配下にSQL検証結果ログ129を出力すると共に(ステップ1202)、ユーザの指定したディレクトリの配下にSQL補正結果128を出力する(ステップ1203)。
図13においては、ER図情報102の構成例を示しており、ER図情報102において、テンティティ名、カラム名、属性および属性IDを情報として保持する。これらのエンティティ名、カラム名、属性は、データベース(DB)に対応し、属性IDは、新規にER図を作成した時に付されるユニークな識別情報であり、ER図の更新時にも変更されず履歴情報のキーとなる。
図14においては、エンティティ名カラム名対応リストテーブル105の構成例をしめしており、このエンティティ名カラム名対応リストテーブル105は、DBのエンティティ名およびエンティティを構成するカラム名の情報により構成される。
図15においては、ER図履歴情報107(ER図履歴情報テーブル109)の構成例を示しており、ER図履歴情報更新処理部106によって属性IDをキーとして世代毎のエンティティ名、カラム名の変更情報が追加されER図の変更履歴として管理され、このER図履歴情報107(ER図履歴情報テーブル109)において、属性IDをキーとして世代毎のエンティティ名、カラム名の変更情報を、履歴として管理する。SQL補正処理部124での処理で、SQLに使用されているエンティティ名、カラム名が最新世代に無い場合、世代を新しい順に辿ることにより、SQLの修正候補とて適用される。
図16においては、SQL情報111(SQL情報テーブル112)の構成例を示しており、このSQL情報111(SQL情報テーブル112)において、検証対象となるSQLがワークシート形式で格納される。
図17においては、プロジェクト開発規約114(プロジェクト開発規約テーブル115)の構成例を示しており、プロジェクト開発規約をキーワード毎に必須/任意、使用の可否および記述位置のレベルで区分し、当該SQLがプロジェクトの開発ルールに基づいた記述をしているかをチェックするために用いられる。
図18においては、SQL予約語リスト117(SQL予約語リストテーブル118)の構成例を示しており、このSQL予約語リスト117(SQL予約語リストテーブル118)において、機種毎に異なるデータベース(DB)のSQLの予約語を格納することにより様々なSQLに適用可能となる。
図19においては、使用予約語リスト120の構成例を示しており、この使用予約語リスト120において、検証対象のSQLで使用している予約語のリストを格納する。当リストとプロジェクト開発規約テーブルとのマッチングによりプロジェクトの開発規約に準拠しているかを検証する。
図20においては、使用エンティティカラムリスト121の構成例を示しており、この使用エンティティカラムリスト121は、SQL解析処理部119の処理で出力されるリストであり、当該SQLで使用しているエンティティ名、エイリアス名およびカラム名が格納される。
図21においては、未使用エンティティカラムリスト123の構成例を示しており、この未使用エンティティカラムリスト123は、ER図−SQL整合性チェック処理部122の処理で出力されるリストであり、ER図には存在しないが、当該SQLで使用しているエンティティ名およびカラム名のリストが格納される。
図22においては、ユーザ指定ディレクトリ127の構成例を示しており、このユーザ指定ディレクトリ127において、ユーザがSQL検証・補正システム100で出力したいディレクトリ名が格納される。
図23においては、SQL補正結果128の出力例を示しており、この例におけるSQLの場合、「仕入先マスタ」の「仕入先code」が、ER図の情報に無いがER図履歴情報に存在するので、領域130における「仕入先code」の文字列を、領域131における「仕入先コード」の文字列に補正し、領域132において、補正(修正)内容を表示している。
図24においては、SQL検証結果ログ129の出力例を示しており、この例では、領域133において、検証対象のSQLのコードを表示し、領域134において、プロジェクト開発規約に違反している項目を表示している。
以上、図1〜図24を用いて説明したように、本例のSQL検証・補正システム100では、ER図情報取得処理部104において、予め作成されたER図情報(ワークシート)102から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブル105を生成して記憶装置に格納する。
また、ER図履歴情報更新処理部106において、予め作成されたER図履歴情報107からエンティティ情報とカラム情報の更新履歴情報を読み出し、エンティティ名カラム名対応リストテーブル105における情報との差分を取得し、取得した差分を履歴差分としてER図履歴情報107に追加することでER図履歴情報107を更新し、ER図履歴情報取得処理部108において、ER図履歴情報更新処理部106が更新したER図履歴情報107を読み出し、ER図履歴情報テーブル109を生成して記憶装置に格納する。
また、SQL情報取得処理部112において、予め作成されたSQL情報(ワークシート)111から各SQL情報を読み出し、SQL情報テーブル112を生成して記憶装置に格納し、プロジェクト開発規約取得処理部113において、予め作成されたプロジェクト開発規約114からプロジェクト開発規約情報を読み出し、プロジェクト開発規約テーブル115を生成して記憶装置に格納し、SQL予約語リスト取得処理部116において、予め作成されたSQL予約語リスト117から各SQL予約語リスト情報を読み出し、SQL予約語テーブル118を生成して記憶装置に格納する。
そして、SQL解析処理部119において、SQL情報テーブル112における各SQLを解析してSQL予約語テーブル118に格納された予約語と予約語以外の字句に分解し、分解した予約語を使用予約語リスト120に格納すると共に、分解した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対してエンティティ名カラム名対応リストテーブル105において対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリスト121を生成して記憶装置に格納する。
また、ER図−SQL整合性チェック処理部122において、使用エンティティカラムリスト121とエンティティ名カラム名対応リストテーブル105を読み出し、使用エンティティカラムリスト121におけるカラムがエンティティ名カラム名対応リスト105に存在するか否かをチェックすることで、ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリスト123を生成して記憶装置に格納する。
また、SQL補正処理部124において、ER図履歴情報テーブル109と未使用エンティティカラムリスト123を読み出し、この未使用エンティティカラムリスト123に存在するエンティティおよびカラムがER図履歴情報テーブル109に存在するか否かを判別し、存在する場合、未使用エンティティカラムリスト123におけるエンティティ名とカラム名を、ER図履歴情報テーブル109における最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログ129を生成する。
また、プロジェクト準拠チェック処理部125において、プロジェクト開発規約テーブル115と使用予約語リスト120を読み出し、この使用予約語リスト120に格納された各SQLの予約語が、プロジェクト開発規約テーブル115に格納されたプロジェクト開発規約に準拠しているかを検証し、準拠していない場合、プロジェクト準拠違反としてSQL検証結果ログ129に情報を格納する。
そして、出力処理部126において、予め指定されたユーザ指定ディレクトリ127を読み出し、このディレクトリの配下にSQL検証結果ログ129とSQL補正処理部124による補正結果(SQL補正結果128)を出力する。
このように、本例のSQL検証・補正システム100においては、ER図とSQLの整合性の検証を実施する際に、ER図情報をワークシートとして格納するシステム装置とネットワークで接続されたSQL検証・補正システムを格納するシステム装置により構成し、SQL情報、ER図の変更履歴情報、SQL予約語リストおよびプロジェクト開発規約を指定することにより達成され、人手を介さずに、開発者が自由に記述したSQLを対象として、当該SQLの根拠となるER図との整合性を検証し、また、その検証結果を用いて、当該SQLを補正し、かつ、補正情報を開発者に通知することができるので、SQLの開発を正確かつ迅速に行えるようにすることが可能となる。
特に、本例のSQL検証・補正システム100においては、コンパイラを使用せずに、ER図に定義されているエンティティ、カラム情報をワークシートより取得し、また、ER図の変更履歴を外部パラメータとして保持することにより、SQLとER図の整合性を検証し、かかる整合性に矛盾、疑義がある場合、検証結果をシステム装置に出力し、また、ER図の変更履歴よりSQLを補正しかかる補正結果をシステム装置に出力し、また、プロジェクト開発規約をパラメータ化することにより、合わせてプロジェクトへの準拠チェックを可能とし、SQLの検証・補正を自動化することができる。
尚、本発明は、図1〜図24を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、ネットワーク103を介して接続されたER図情報格納サーバ101からER図情報(ワークシート)を取得する構成としているが、SQL検証・補正システム100における入力装置を介して直接取得する構成としても良い。
また、本例では、1つのコンピュータ装置上にSQL検証・補正システム100を設けた構成としているが、複数のコンピュータ装置上に、SQL検証・補正システム100を構成する各処理部を設けた構成としても良い。
また、本例のコンピュータ構成に関しても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
100:SQL検証・補正システム、
101:ER図情報格納サーバ、102:ER図情報(ワークシート)、103:ネットワーク、104:ER図情報取得処理部、105:エンティティ名カラム名対応リストテーブル、106:ER図履歴情報更新処理部、107:ER図履歴情報、108:ER図履歴情報取得処理部、109:ER図履歴情報テーブル、110:SQL情報取得処理部、111:SQL情報(ワークシート)、112:SQL情報テーブル、113:プロジェクト開発規約取得処理部、114:プロジェクト開発規約、115:プロジェクト開発規約テーブル、116:SQL予約語リスト取得処理部、117:SQL予約語リスト、118:SQL予約語テーブル、119:SQL解析処理部、120:使用予約語リスト、1221:使用エンティティカラムリスト、122:ER図−SQL整合性チェック処理部、123:未使用エンティティカラムリスト、124:SQL補正処理部、125:プロジェクト準拠チェック処理部、126:出力処理部、127:ユーザ指定ディレクトリ、128:SQL補正結果、129:SQL検証結果ログ、130〜134:領域。

Claims (5)

  1. プログラムされたコンピュータ処理により、DB設計の際に必要なER図と、ER図より開発されたSQLとの整合性を検証するSQL検証システムであって、
    プログラムされたコンピュータ処理を実行する手段として、
    予め作成されたER図情報から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブルを生成して記憶装置に格納するER図情報取得処理手段と、
    予め作成されたSQLから各SQL情報を読み出し、SQL情報テーブルを生成して記憶装置に格納するSQL情報取得処理手段と、
    予め作成されたER図履歴情報から上記エンティティ情報とカラム情報の更新履歴情報を読み出し、上記エンティティ名カラム名対応リストテーブルにおける情報との差分を取得し、該取得した差分を履歴差分として上記ER図履歴情報に追加することで該ER図履歴情報を更新するER図履歴情報更新処理手段と、
    該ER図履歴情報更新処理手段が更新したER図履歴情報を読み出し、ER図履歴情報テーブルを生成して記憶装置に格納するER図履歴情報取得処理手段と、
    上記SQL情報テーブルにおける各SQLを解析して、予め設定された予約語以外の字句を特定し、特定した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対して上記エンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納するSQL解析処理手段と、
    上記使用エンティティカラムリストと上記エンティティ名カラム名対応リストテーブルを読み出し、上記使用エンティティカラムリストにおけるカラムが上記エンティティ名カラム名対応リストに存在するか否かをチェックすることで、上記ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリストを生成して記憶装置に格納するER図−SQL整合性チェック処理手段と、
    上記ER図履歴情報テーブルと上記未使用エンティティカラムリストを読み出し、該未使用エンティティカラムリストに存在するエンティティおよびカラムが上記ER図履歴情報テーブルに存在するか否かを判別し、存在する場合、上記未使用エンティティカラムリストにおけるエンティティ名とカラム名を、上記ER図履歴情報テーブルにおける最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログを生成するSQL補正処理手段と、
    予め指定されたユーザ指定ディレクトリを読み出し、該ディレクトリの配下に上記SQL補正処理手段による補正結果を出力する出力処理手段と
    を有することを特徴とするSQL検証システム。
  2. プログラムされたコンピュータ処理により、DB設計の際に必要なER図と、ER図より開発されたSQLとの整合性を検証するSQL検証システムであって、
    プログラムされたコンピュータ処理を実行する手段として、
    予め作成されたER図情報から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブルを生成して記憶装置に格納するER図情報取得処理手段と、
    予め作成されたER図履歴情報から上記エンティティ情報とカラム情報の更新履歴情報を読み出し、上記エンティティ名カラム名対応リストテーブルにおける情報との差分を取得し、該取得した差分を履歴差分として上記ER図履歴情報に追加することで該ER図履歴情報を更新するER図履歴情報更新処理手段と、
    該ER図履歴情報更新処理手段が更新したER図履歴情報を読み出し、ER図履歴情報テーブルを生成して記憶装置に格納するER図履歴情報取得処理手段と、
    予め作成されたSQLから各SQL情報を読み出し、SQL情報テーブルを生成して記憶装置に格納するSQL情報取得処理手段と、
    予め作成されたプロジェクト開発規約からプロジェクト開発規約情報を読み出し、プロジェクト開発規約テーブルを生成して記憶装置に格納するプロジェクト開発規約取得処理手段と、
    予め作成されたSQL予約語リストから各SQL予約語リスト情報を読み出し、SQL予約語テーブルを生成して記憶装置に格納するSQL予約語リスト取得処理手段と、
    上記SQL情報テーブルにおける各SQLを解析して上記SQL予約語テーブルに格納された予約語と予約語以外の字句に分解し、分解した予約語を使用予約語リストに格納すると共に、分解した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対して上記エンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納するSQL解析処理手段と、
    上記使用エンティティカラムリストと上記エンティティ名カラム名対応リストテーブルを読み出し、上記使用エンティティカラムリストにおけるカラムが上記エンティティ名カラム名対応リストに存在するか否かをチェックすることで、上記ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリストを生成して記憶装置に格納するER図−SQL整合性チェック処理手段と、
    上記ER図履歴情報テーブルと上記未使用エンティティカラムリストを読み出し、該未使用エンティティカラムリストに存在するエンティティおよびカラムが上記ER図履歴情報テーブルに存在するか否かを判別し、存在する場合、上記未使用エンティティカラムリストにおけるエンティティ名とカラム名を、上記ER図履歴情報テーブルにおける最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログを生成するSQL補正処理手段と、
    上記プロジェクト開発規約テーブルと上記使用予約語リストを読み出し、該使用予約語リストに格納された各SQLの予約語が、上記プロジェクト開発規約テーブルに格納されたプロジェクト開発規約に準拠しているかを検証し、準拠していない場合、プロジェクト準拠違反としてSQL検証結果ログに情報を格納するプロジェクト準拠チェック処理手段と、
    予め指定されたユーザ指定ディレクトリを読み出し、該ディレクトリの配下に上記SQL検証結果ログと上記SQL補正処理手段による補正結果を出力する出力処理手段と
    を有することを特徴とするSQL検証システム。
  3. コンピュータを、請求項1または請求項2に記載のSQL検証システムにおける各手段として機能させるためのプログラム。
  4. コンピュータ装置のプログラムされたコンピュータ処理により、DB設計の際に必要なER図と、ER図より開発されたSQLとの整合性を検証するSQL検証方法であって、
    プログラムされたコンピュータ処理を実行する手段として、
    ER図情報取得処理手段とSQL情報取得処理手段、ER図履歴情報更新処理手段、ER図履歴情報取得処理手段、SQL解析処理手段、ER図−SQL整合性チェック処理手段、出力処理手段を具備し、
    上記ER図情報取得処理手段は、予め作成されたER図情報から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブルを生成して記憶装置に格納し、
    上記SQL情報取得処理手段は、予め作成されたSQLから各SQL情報を読み出し、SQL情報テーブルを生成して記憶装置に格納し、
    上記ER図履歴情報更新処理手段は、予め作成されたER図履歴情報から上記エンティティ情報とカラム情報の更新履歴情報を読み出し、上記エンティティ名カラム名対応リストテーブルにおける情報との差分を取得し、該取得した差分を履歴差分として上記ER図履歴情報に追加することで該ER図履歴情報を更新し、
    上記ER図履歴情報取得処理手段は、上記ER図履歴情報更新処理手段が更新したER図履歴情報を読み出し、ER図履歴情報テーブルを生成して記憶装置に格納し、
    上記SQL解析処理手段は、上記SQL情報テーブルにおける各SQLを解析して、予め設定された予約語以外の字句を特定し、特定した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対して上記エンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納し、
    上記ER図−SQL整合性チェック処理手段は、上記使用エンティティカラムリストと上記エンティティ名カラム名対応リストテーブルを読み出し、上記使用エンティティカラムリストにおけるカラムが上記エンティティ名カラム名対応リストに存在するか否かをチェックすることで、上記ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリストを生成して記憶装置に格納し、
    上記SQL補正処理手段は、上記ER図履歴情報テーブルと上記未使用エンティティカラムリストを読み出し、該未使用エンティティカラムリストに存在するエンティティおよびカラムが上記ER図履歴情報テーブルに存在するか否かを判別し、存在する場合、上記未使用エンティティカラムリストにおけるエンティティ名とカラム名を、上記ER図履歴情報テーブルにおける最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログを生成し、
    上記出力処理手段は、予め指定されたユーザ指定ディレクトリを読み出し、該ディレクトリの配下に上記SQL補正処理手段による補正結果を出力する
    ことを特徴とするSQL検証方法。
  5. コンピュータ装置のプログラムされたコンピュータ処理により、DB設計の際に必要なER図と、ER図より開発されたSQLとの整合性を検証するSQL検証方法であって、
    プログラムされたコンピュータ処理を実行する手段として、
    ER図情報取得処理手段とER図履歴情報更新処理手段、ER図履歴情報取得処理手段、SQL情報取得処理手段、プロジェクト開発規約取得処理手段、SQL予約語リスト取得処理手段、SQL解析処理手段、ER図−SQL整合性チェック処理手段、SQL補正処理手段、プロジェクト準拠チェック処理手段、出力処理手段を具備し、
    上記ER図情報取得処理手段は、予め作成されたER図情報から、当該ER図を構成するエンティティ情報とカラム情報を取得し、取得した情報を用いて、当該ER図におけるエンティティ名とカラム名と対応付けたエンティティ名カラム名対応リストテーブルを生成して記憶装置に格納し、
    上記ER図履歴情報更新処理手段は、予め作成されたER図履歴情報から上記エンティティ情報とカラム情報の更新履歴情報を読み出し、上記エンティティ名カラム名対応リストテーブルにおける情報との差分を取得し、該取得した差分を履歴差分として上記ER図履歴情報に追加することで該ER図履歴情報を更新し、
    上記ER図履歴情報取得処理手段は、上記ER図履歴情報更新処理手段が更新したER図履歴情報を読み出し、ER図履歴情報テーブルを生成して記憶装置に格納し、
    上記SQL情報取得処理手段は、予め作成されたSQLから各SQL情報を読み出し、SQL情報テーブルを生成して記憶装置に格納し、
    上記プロジェクト開発規約取得処理手段は、予め作成されたプロジェクト開発規約からプロジェクト開発規約情報を読み出し、プロジェクト開発規約テーブルを生成して記憶装置に格納し、
    上記SQL予約語リスト取得処理手段は、予め作成されたSQL予約語リストから各SQL予約語リスト情報を読み出し、SQL予約語テーブルを生成して記憶装置に格納し、
    上記SQL解析処理手段は、上記SQL情報テーブルにおける各SQLを解析して上記SQL予約語テーブルに格納された予約語と予約語以外の字句に分解し、分解した予約語を使用予約語リストに格納すると共に、分解した予約語以外の字句から、当該SQL内で使用しているエンティティ名およびエイリアス(再定義)文字列を特定し、特定したエイリアスから、当該SQLで使用しているエンティティ名を特定し、特定したエンティティ名に対して上記エンティティ名カラム名対応リストテーブルにおいて対応付けられたカラム名を特定し、特定したエンティティ名とカラム名と紐付けして当該SQLで使用しているエンティティ名とカラム名を格納した使用エンティティカラムリストを生成して記憶装置に格納し、
    上記ER図−SQL整合性チェック処理手段は、上記使用エンティティカラムリストと上記エンティティ名カラム名対応リストテーブルを読み出し、上記使用エンティティカラムリストにおけるカラムが上記エンティティ名カラム名対応リストに存在するか否かをチェックすることで、上記ER図には存在しないが当該SQLで使用しているエンティティ名およびカラム名を特定し、特定したカラムを登録する未使用エンティティカラムリストを生成して記憶装置に格納し、
    上記SQL補正処理手段は、上記ER図履歴情報テーブルと上記未使用エンティティカラムリストを読み出し、該未使用エンティティカラムリストに存在するエンティティおよびカラムが上記ER図履歴情報テーブルに存在するか否かを判別し、存在する場合、上記未使用エンティティカラムリストにおけるエンティティ名とカラム名を、上記ER図履歴情報テーブルにおける最新のエンティティ名とカラム名に補正し、存在しない場合、補正できないSQLを登録したSQL検証結果ログを生成し、
    上記プロジェクト準拠チェック処理手段は、上記プロジェクト開発規約テーブルと上記使用予約語リストを読み出し、該使用予約語リストに格納された各SQLの予約語が、上記プロジェクト開発規約テーブルに格納されたプロジェクト開発規約に準拠しているかを検証し、準拠していない場合、プロジェクト準拠違反としてSQL検証結果ログに情報を格納し、
    上記出力処理手段は、予め指定されたユーザ指定ディレクトリを読み出し、該ディレクトリの配下に上記SQL検証結果ログと上記SQL補正処理手段による補正結果を出力する
    ことを特徴とするSQL検証方法。
JP2010265422A 2010-11-29 2010-11-29 Sql検証システムとその方法およびプログラム Expired - Fee Related JP5641901B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010265422A JP5641901B2 (ja) 2010-11-29 2010-11-29 Sql検証システムとその方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010265422A JP5641901B2 (ja) 2010-11-29 2010-11-29 Sql検証システムとその方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2012118609A JP2012118609A (ja) 2012-06-21
JP5641901B2 true JP5641901B2 (ja) 2014-12-17

Family

ID=46501389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010265422A Expired - Fee Related JP5641901B2 (ja) 2010-11-29 2010-11-29 Sql検証システムとその方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5641901B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413608A (zh) * 2019-06-17 2019-11-05 平安普惠企业管理有限公司 数据查询方法、装置、可读存储介质和程序产品
KR102639897B1 (ko) * 2021-03-11 2024-02-22 김기창 데이터 아키텍쳐 관리 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325835A (ja) * 1994-06-01 1995-12-12 Mitsubishi Electric Corp 検索文生成装置
JPH0934759A (ja) * 1995-07-21 1997-02-07 Omron Corp チューニング情報作成装置およびチューニング情報作成方法
JP2008077285A (ja) * 2006-09-20 2008-04-03 Hitachi Information Systems Ltd Sql管理システムとsql管理方法およびプログラム
JP2009099111A (ja) * 2007-09-28 2009-05-07 Fujitsu Business Systems Ltd 規則検査プログラム、規則検査方法および規則検査装置

Also Published As

Publication number Publication date
JP2012118609A (ja) 2012-06-21

Similar Documents

Publication Publication Date Title
Küster et al. Detecting and resolving process model differences in the absence of a change log
Richardson et al. EasyVVUQ: a library for verification, validation and uncertainty quantification in high performance computing
US20060235899A1 (en) Method of migrating legacy database systems
US11379467B2 (en) System for uploading information into a metadata repository
CN108984155A (zh) 数据处理流程设定方法和装置
CN115543402B (zh) 一种基于代码提交的软件知识图谱增量更新方法
CN111367893A (zh) 数据库版本迭代的方法及装置
CN109614315A (zh) 一种数据同步测试用例的自动生成方法及系统
Müller et al. A model-based approach to impact analysis using model differencing
CN115809065A (zh) 一种低代码开发平台、数据存储方法及电子设备
WO2016131295A1 (zh) 一种北向数据转换方法和装置
US9244706B2 (en) Command line shell command generation based on schema
JP5641901B2 (ja) Sql検証システムとその方法およびプログラム
Luong et al. A rule‐based approach for semantic annotation evolution
US20110023010A1 (en) Reserved component container-based software development method and apparatus
CN115357269A (zh) 一种配置信息更新方法、装置、计算机设备及存储介质
Güldali et al. TORC: test plan optimization by requirements clustering
KR102046567B1 (ko) 표준사전 기반 메타데이터 변경 관리를 위한 실시간 ddl 생성방법
Dhakal et al. Library Tweets Conversion
JP5359446B2 (ja) 情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラム
JP7036760B2 (ja) オントロジー拡張支援装置及びオントロジー拡張支援方法
Cheney Provenance, XML and the scientific web
JP2010165205A (ja) モデルのテンプレート自動生成システム、方法及びプログラム
KR100656559B1 (ko) Bibd 방법론을 이용하는 프로그램 자동 개발 장치
Hagedorn Implementation of Information Container for Data Drop-Exchange of Linked Building Models

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130828

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140509

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141014

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141028

R150 Certificate of patent or registration of utility model

Ref document number: 5641901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees