説明

GUI操作によるSQL文自動生成装置、その方法およびプログラム

【課題】日本語パーツとともに、それに対応するSQLを自動生成し、更新、削除を行う場合、発行されたSQL文の整合性は保障されてないため、整合性のチェックをすること。
【解決手段】GUI操作により視覚的にかつ日本語でもとのSQL文を作成して発行し、前記もとのSQL文の変換後のSQL文の整合性をチェックした後に、利用者が直感的に理解できるように日本語化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SQLを理解していない人でも、日本語でSQL文を扱うことができる技術に関する。
【背景技術】
【0002】
従来、リレーショナルデータベースマネージメントシステム(RDBMS)において、データの操作や定義を行うための問い合わせ言語であるSQLは、仕様が定まっており、SQLをあまり理解していない人にとっては、正しいSQL文を作成することが困難であった。
【0003】
また、実際に作成したSQL文が、期待するクエリであるか判断することは困難であった。
【0004】
従来のSQL文自動生成装置の一例が、特許文献1に記載されている。しかし、従来の技術には以下のような問題点があった。
【0005】
まず、DBに登録されたテーブルが直感的にわかりにくいことである。その理由は、対象のDBのテーブルの構造が視覚的にわからず、GUIで操作できないからである。
【0006】
また、発行する際、もしくは発行後のSQLについて直感的に理解しにくいことである。その理由は、発行されるSQL文が、実際のSQL文のまま表示されるためである。
【0007】
ここで、カラム名にユーザが使い慣れた業務名を付加し、カラム名の代わりにそれらの業務名を表示する。カラムとその業務名とは1対Nで持つことができ、ユーザが最も直感的に分かりやすい名称を選択できるようにし、また、個々の業務名にはカテゴリ情報を付加し、目的に合ったカテゴリを選択することで、それに属する業務名を取得できるようにし、簡単な計算式にも業務名を付加し、リポジトリに登録することで、使用頻度の高い計算式の入力の手間を省き、さらに、データベースのリレーションは、データディクショナリのリレーション情報を自動解析することで取得するようにし、このように、ユーザには物理構成情報を参照したり入力することなく、問合せSQLを生成することで、データベースの物理名に対する業務名やそれを分類するカテゴリを与えることで、データベースの物理構成やSQL文法を理解していなくても、問合せSQLを作成できるようにする技術がある(例えば、特許文献2参照)。
【特許文献1】特開2006−235770号公報
【特許文献2】特開2001−142885号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、従来の技術では、以下の問題点があった。まず、発行できるSQL文がSelect文のみであることである。また、発行したSQL文の整合性のチェックを行っていないことである。その理由は、発行できるSQL文がSelect文のみであることから、整合性のチェックする必要がないためである。
【0009】
本発明は、以上説明した問題点を解決するためになされたものである。その目的は、更新、削除などの日本語パーツとともに、それに対応するSQLを自動生成し、更新、削除を行う場合、発行されたSQL文の整合性は保障されてないため、整合性のチェックをすることである。
【課題を解決するための手段】
【0010】
本発明は、GUI操作により視覚的にかつ日本語でもとのSQL文を作成して発行し、前記もとのSQL文の変換後のSQL文の整合性をチェックした後に、利用者が直感的に理解できるように日本語化するGUI操作によるSQL文自動生成装置を提供する。
【0011】
また、本発明は、GUI操作により視覚的にかつ日本語でもとのSQL文を作成して発行するステップと、
前記もとのSQL文の変換後のSQL文の整合性をチェックするステップと、
そのチェック後に利用者が直感的に理解できるように日本語化するステップと
を有するGUI操作によるSQL文自動生成方法を提供する。
【発明の効果】
【0012】
本発明によれば、日本語パーツとともに、それに対応するSQLを自動生成し、更新、削除を行う場合、発行されたSQL文の整合性は保障されてないため、整合性のチェックをすることができる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態について図面を参照して詳細に説明する。なお、各図において共通する部分には、同一の符号が付されている。
【0014】
図1を参照すると、本実施の形態におけるGUI操作によるSQL文自動生成装置は、日本語SQL選択機能1、登録日本語パーツ選択機能2、対象のDB3、テーブル一覧表示機能4、選択部日本語変換機能5、SQL文発行機能6、整合性チェッカー7、日本語解説文作成機能8から構成されている。
【0015】
日本語SQL選択機能1は、「検索」、「削除」といった想定されるキーワードを登録した登録日本語パーツ選択機能2や、対象となるDB3の全テーブルを表示させるテーブル一覧表示機能4から選択したテーブルや行を日本語に変換した選択部日本語変換機能5から、発行したいSQL文のもとになる要素を選択できる。ここで、対象のDB2は複数あってもよい。
【0016】
SQL文発行機能6は、日本語SQL選択機能で作成された意図するSQL文の日本語にしたものを実際のSQL文に変換する。
【0017】
整合性チェッカー7は、SQL文発行機能6で発行されたSQL文と対象のDB3を比較して、実行可能であるか、整合性があるかを判断する。
【0018】
日本語解説文作成機能8は、SQL文発行機能6が発行したSQL文が整合性チェッカー7で正しいと判断された場合、再度そのSQL文を日本語化する。
【0019】
次に、図1及び図2のフローチャートを参照して本実施の形態の動作について詳細に説明する。
【0020】
まず、SQL文を発行する相手となるDB(図1の3)を設定する(図2のステップA1)。
【0021】
次に、テーブル一覧表示機能(図1の4)でDBからテーブルの一覧を表示する(図2のステップA2)。
【0022】
次に、発行したいSQL文の目的を日本語SQL選択機能(図1の1)に設定する(図2のステップA3)。このとき、登録日本語パーツ選択機能(図1の2)から、想定される目的(「検索」、「行追加」、「表削除」、「権限付与」といったもの)を選択する。
【0023】
次に、目的に応じて、SQL実行をどのテーブルを対象に、どの行・列を対象に行うのか、その対象を定める(図2のステップ4、ステップ5)。この際、どのテーブル、どの行・列という情報は、テーブル一覧表示機能(図1の4)により視覚的にわかりやすいようにGUIで表示されており、そこから選択、ドラッグ&ドロップすることにより、日本語SQL選択機能(図1の1)の日本語SQL部に含めることが可能である。
【0024】
ここで、選択されたテーブル、行、列が日本語SQL部に含まれる際に、選択部日本語変換機能(図1の5)により日本語SQL選択機能が識別可能な語句に変換される。次に、発行したいSQL文に制約(主キー、外部キー、NOT NULL、一意、英字のみなど)や条件(検索時、ある行の値が100以上のものなど)がある場合(図2のステップA6)には、制約や条件を登録日本語パーツ選択機能(図1の2)や選択部日本語変換機能(図1の5)を用いて、日本語SQL選択機能(図1の1)に設定する(図2のステップA7)。
【0025】
次に、日本語SQL選択機能(図1の1)で作成された日本語SQLをSQL文発行機能(図1の6)により、SQL文に変換される(図2のステップA8)。このとき、発行されたSQLの整合性があるものか、実現可能なものかを整合性チェッカー(図1の7)が対象DB(図1の3)を参照しながらチェックする(図2ステップA9、ステップA10)。
【0026】
最後に、整合性のあるSQLを再度、日本語解説文作成機能(図1の8)により解説文として日本語化することで、利用者に発行されたSQL文が直感的に意図していたものかどうかを判断できる(図2のステップA11、ステップA12)。
【0027】
次に、具体例を用いて本実施の形態の動作を説明する。
【0028】
対象とするDBをDB1とし、DB1に登録されているテーブル、EmployeeMテーブルとSalaryMテーブルから「人事部に属する人で、給料の値が300000円を下回る人の名前と給料を表示する。」というSQLを発行する。
【0029】
まず、DB1を対象DBとして登録する(ステップA1)。
【0030】
次に、DB1に登録されているEmployeeMテーブル、SalaryMテーブル、CustomerMテーブルを表示させる(ステップA2)。
【0031】
次に、表示されているテーブルから、対象とするテーブルであるEmployeeMテーブル、SalaryMテーブルを選択し(ステップA3)、その選んだテーブルに対して目的「検索」を日本語パーツ選択機能から選択する(ステップA4)。
【0032】
次に、表示させたいEmployeeMテーブルのName列とSalaryMテーブルのSalary列を選択する(ステップA5)。次に、検索条件として、EmployeeMテーブルのDepartment列が人事部と同値であるものかつ、SalaryMテーブルのSalary列の値が300000を下回っているものと選択する(ステップA7)。
【0033】
次に、今まで日本語SQL選択機能を用いて選択してきた日本語SQLを、SQL文発行機能を用いてSQL文「SELECT e.Name,s.Salary FROM EmployeeM e,SalaryM s WHERE e.Id=s.Id AND e.Department=”人事” AND s.Salary<300000;」を作成する(ステップA8)。
【0034】
このとき、日本語SQLの選択時に誤って、Department列が300000円を下回るものと選択してしまうと、整合性チェッカーがエラーを表示する(ステップA9)。
【0035】
最後に、発行されたSQL文を日本語解説文作成機能により、「EmployeeMテーブル(従業員テーブル)とSalaryMテーブル(給料テーブル)から、Department行(部門)の値が”人事”かつ Salary行の値が300000を下回るものを検索し、表示する」と日本語化する(ステップA11)。
【0036】
上記の本実施の形態によれば、DBアクセスするために仕様に沿ってSQLの記述をしなければならないが、その仕様を知らなくてもSQLを発行することができる。その理由は、利用者が直感的にわかりやすい日本語のパーツを組み立てることで、それを自動的にSQLに変換するためである。
【0037】
また、発行されたSQLの整合性をチェックし、そのSQLを利用者が理解しやすい日本語解説文に変換できる。その理由は、DBの設計条件と比較して、整合性をチェックし、そのSQLを再度日本語に変換するためである。
【0038】
なお、発行されたSQL文をプログラムコードに組み込めるように工夫できる。テキストボックスからの入力値が条件にあった場合は表を作成したり、行を追加したりなど「入力値」を意識しているからである。
【0039】
次に、本発明の第2の実施の形態の構成について図面を参照して詳細に説明する。
【0040】
図3を参照すると、本実施の形態の構成は、図1の第1の実施の形態の構成に加えて、Input値設定機能9を有する点で異なる。Input値設定機能9は、実際にシステム開発する際、フォームなどから送られてくる変数をSQLに組み込みたい場合、Input値として設定を行う。
【0041】
次に、本実施の形態の動作について図面を参照して詳細に説明する。
【0042】
図4を参照すると、ステップA1−ステップA3およびステップA8−A12で示される本実施の形態における登録日本語パーツ選択機能2、対象DB3、テーブル一覧表示機能4、選択部日本語変換機能5、SQL文発行機能7および日本語解説文作成機能8は、図1で示されたものの動作と同一のため、説明は省略する。
【0043】
図1に示された第1の実施の形態では、作成できるSQL文はテーブル名や行、列、もしくは具体的な数値しか設定できず、外部フォームから送信される変数をSQL文に組み込むことができなかった。本実施の形態では、外部送られる変数の名前と型およびその他の条件をInput値設定機能9に設定することで(ステップB1)、日本語SQL選択機能1で日本語SQLを作成する際に、テーブル名や行・列名、数値の代わりに選択対象や条件として選択、指定することができる。
【0044】
次に、具体例を用いて説明する。図1のシステムでは、「EmployeeMテーブルから、Name列(名前列)、Age(年齢列)、TelNumber(電話番号列)を検索し、sortFlag(プルダウン選択)で指定した行で、昇順にソートを行い表示する。」というSQL文は、外部から送信される予定の変数Input1を日本語SQLで選択できないため、意図するSQL文を発行することはできなかった。
【0045】
SQL文の目的を設定した(ステップA3)後、外部から送信される変数がある場合、Input値設定機能9で、その変数名と型、その変数のその他の条件を設定することができる(ステップB1)。
【0046】
本実施の形態では、変数名「sortFlag」、型「String」、条件「Name」もしくは、「Age」、「TelNumber」のいずれかのみと設定する。
【0047】
その後、対象テーブル、行、列を選択した後、制約や条件を指定する場合(ステップA7)、ステップB1で設定した変数を日本語SQL文内に選択できる。
【0048】
本実施の形態の場合、変数「sortFlag」で検索結果をソートすると選択する。すると、SQL文発行機能6によって発行されるSQL文は、「SELECT Name,Age,TelNumber from EmployeeM order by sortFlag;」と発行される。
【0049】
さらに、整合性チェックをする際(ステップA9)、発行されたSQL文内に含まれる外部から送信された変数が妥当であるのか、DBの設定と比較しながらチェックする。
【0050】
本実施の形態では、変数「sortFlag」に入りうるのが、EmployeeMテーブル名である「Name」、「Age」、「TelNumber」であり、型も「String」型であるのでエラー表示されないが、EmployeeMテーブルの列名にない項目の場合、もしくは異なる型が入りうる場合、そのエラーについて「変数sortFlagにはEmployeeMテーブルの列名のみが入力されるように設定してください。」のように表示される。
【0051】
最終的にはステップA11で、日本語解説文作成機能8により、「EmployeeMテーブルから、Name列(名前列)、Age(年齢列)、TelNumber(電話番号列)を検索し、sortFlag(「Name」、「Age」、もしくは「TelNumber」)で指定した行で、昇順にソートを行い表示する。」と解説文が作成される。
【0052】
従って、従来、発行するSQL文に外部から送信される変数を組み込めないことが問題であったが、本実施の形態では外部から送信される変数を設定する機能があり、設定された変数は日本語SQL文内で選択できる。
【0053】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、SQL文自動生成装置の機能を実現するためのプログラムを装置に読込ませて実行することにより装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるCD−ROMまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【0054】
本発明によれば、システム開発する上で、DBにアクセスするための妥当性のあるSQL文を発行する自動生成装置や、実際のプログラムコードに組み込むためのSQL文自動生成装置といった用途に適用できる。
【図面の簡単な説明】
【0055】
【図1】本発明の第1の実施の形態のSQL文自動生成装置の構成を示す図である。
【図2】本発明の第1の実施の形態の処理動作を示すフローチャートである。
【図3】本発明の第2の実施の形態のSQL文自動生成装置の構成を示す図である。
【図4】本発明の第2の実施の形態の処理動作を示すフローチャートである。
【符号の説明】
【0056】
1 日本語SQL選択機能
2 登録日本語パーツ選択機能
3 対象のDB
4 テーブル一覧表示機能
5 選択部日本語変換機能
6 SQL文発行機能
7 整合性チェッカー
8 日本語解説文作成機能

【特許請求の範囲】
【請求項1】
GUI操作により視覚的にかつ日本語でもとのSQL文を作成して発行し、前記もとのSQL文の変換後のSQL文の整合性をチェックした後に、利用者が直感的に理解できるように日本語化することを特徴とするGUI操作によるSQL文自動生成装置。
【請求項2】
実際のテーブル一覧を表示しておき、対象テーブル、対象行および対象列などを選択し、該選択したものをSQL文変換前の日本語のパーツに組み込むことを特徴とする請求項1記載のGUI操作によるSQL文自動生成装置。
【請求項3】
外部送られる変数の名前と型およびその他の条件をInput値設定手段に設定し、日本語SQLを作成する際に、テーブル名や行・列名、数値の代わりに選択対象や条件として選択、指定することを特徴とする請求項1または2記載のGUI操作によるSQL文自動生成装置。
【請求項4】
GUI操作により視覚的にかつ日本語でもとのSQL文を作成して発行するステップと、
前記もとのSQL文の変換後のSQL文の整合性をチェックするステップと、
そのチェック後に利用者が直感的に理解できるように日本語化するステップと
を有することを特徴とするGUI操作によるSQL文自動生成方法。
【請求項5】
実際のテーブル一覧を表示しておき、対象テーブル、対象行および対象列などを選択し、該選択したものをSQL文変換前の日本語のパーツに組み込むことを特徴とする請求項4記載のGUI操作によるSQL文自動生成方法。
【請求項6】
外部送られる変数の名前と型およびその他の条件をInput値設定手段に設定し、日本語SQLを作成する際に、テーブル名や行・列名、数値の代わりに選択対象や条件として選択、指定することを特徴とする請求項4または5記載のGUI操作によるSQL文自動生成方法。
【請求項7】
コンピュータシステムに請求項1から3のいずれか1項に記載の機能を実現させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2008−152369(P2008−152369A)
【公開日】平成20年7月3日(2008.7.3)
【国際特許分類】
【出願番号】特願2006−337331(P2006−337331)
【出願日】平成18年12月14日(2006.12.14)
【出願人】(390001395)NECシステムテクノロジー株式会社 (438)
【Fターム(参考)】