IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Information Management | Java technology | SOA and Web services  >

pureQuery について学ぶ: 第 2 回 クラス・モデラーを支援するためのデータ・モデリング

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

原文はこちら

原文はこちら


レベル: 中級

Azadeh Ahadian (azadeh@us.ibm.com), Eclipse Application Development Tools , IBM

2008年 1月 17日

オブジェクト指向開発者が従来のクラス・モデリングを使用してデータベース・リレーショナル成果物を定義する上で、pureQuery の機能がどのように役立つかを学んでください。

はじめに

この連載の最初の記事、「pureQuery について学ぶ: 第 1 回 Java データベース・アプリケーション作成のための IBM の新しいパラダイム」(developerWorks、2007年8月) では pureQuery 技術の基礎、そして Java™ コードの生成をベースとしたオブジェクト化プロセスによってデータベース・アクセスおよびその操作を実行する方法を説明しました。今回の記事では、pureQuery ならではの機能の 1 つを取り上げます。それは、オブジェクト指向開発者が従来のクラス・モデリングを使用してデータベース・リレーショナル成果物を定義する際に大きな支援となる機能です。pureQuery はモデリング・ツールではないため、IBM RDA (Rational Data Architect) のような強力なエンタープライズ・データ・モデリングおよび統合設計ツールと比較すべきではありませんが (実際、比較は不可能です)、Eclipse IDE で Java クラスを作成するという方法で単純な物理データのモデルを作成する際の手軽な手段として考えられます。

データ・モデリングとクラス・モデリング

データ・モデリングとは、データの表現、保管、使用方法を記述する抽象的な成果物を作成するプロセスのことです。リレーショナル情報管理開発環境における実質上のデータ・モデリングは、上位レベルの概念的な物理データ・モデルを定義するために使うことのできるデータ処理中心の構造を見つけ出し、編成するプロセスとなります。このプロセスによって編成された構造が、リレーショナル・データベース管理システムに実装されます。

データ・モデリングはクラス・モデリングとは異なるという主張を聞くことがあります。このような主張の根拠となっているのは、データ・モデリングではクラス・モデルとは違って、あくまでもデータに重点が置かれ、その対象となるのは基礎となるドメインでの振る舞いおよびデータの特徴であるという事実です。しかし、オブジェクト指向の手法という点から見ると、データ・モデリングはクラス・モデリングと非常によく似ています。

データ・モデリングでは、エンティティー・タイプ (例えばテーブル) を識別します。エンティティー・タイプは、概念的にはオブジェクト指向で同じようなオブジェクトのコレクションを表すクラスの概念と似ています (クラスには操作によって定義されたデータと振る舞いがある一方、エンティティー・タイプにはデータしかないという点に注目)。データ・モデリング・プロセスでは続いて、データ・エンティティー属性 (例えば列。これは、データベースではクラス属性とそれに対応するデータ型に匹敵) を識別されたテーブルに割り当てます。このプロセスについてもクラス・モデリングと似ていて、クラス・モデリングの場合にはクラスを識別し、それぞれのクラスに属性と操作を割り当てます。

操作に関してだけではなく、オブジェクト指向との関連においても、ストアード・プロシージャーは基礎となるデータベースが実装するグローバル・メソッドと概念的に同様であると考えられます。ストアード・プロシージャーの場合、単一のテーブルに含まれるデータには作用しないことがあります (実際、大抵の場合は作用しません)。これはつまり、ストアード・プロシージャーはテーブルの一部でないことからクラス・メソッドとは異なるという意味を含みますが、他のすべてのクラス (テーブルなど) を含むマスター・クラス (すなわちデータベース自体) の一部として表示、モデル化することはできます。

要するに概念からすると、データ・モデリング開発パラダイムの目的とは、データ・テーブルと各テーブルに割り当てるデータ列および型を設計することであり、指定の内部データベース・スキーマに属するテーブル同士の関係を定義することです。さらに、データ・モデリングではデータを定義して編成するだけでなく、基礎となる構造内に配置されたデータに明示的あるいは暗黙の制約を課します。このようなモデリングが完成した後に行う実装は、エンティティーおよび指定された RDBMS でのエンティティー同士の関係を実際に作成するという意味になります。

IBM の pureQuery 技術が果たす役割

IBM では最先端のエンタープライズ・データ・モデリングおよび統合設計ツール、IBM RDA (Rational Data Architect) を提供しています。データ・モデリングおよび統合設計を簡易化する包括的ソリューションである RDA は、分散したさまざまなデータ・アセットをアーキテクトが検出、モデル化、可視化、そして関連付けることを可能にします。pureQuery は RDA に付属の機能ではありませんが、Eclipse オブジェクト指向 (OO) 開発者は自分たちが明確に定義した Java クラスを反映する単純なデータベース成果物を素早く作成するために、pureQuery をユーティリティーとして使用することができます。

: pureQuery は IBM Data Studio 製品ファミリーの一部として無料でダウンロードすることができます (「参考文献」を参照)。ただし、pureQuery で作成したアプリケーションをデプロイするには、Data Studio pureQuery Runtime を購入する必要があります。

リレーショナルな属性と操作をカプセル化するための pureQuery のオブジェクト・モデル手法は、物理データ・モデルを作成する際に独特なリバース・エンジニアリング・フレームワークとして大々的に役立てることができます。このオブジェクト・モデル手法は、Eclipse IDE で Java クラスを設計することに基づいており、その各クラスはクラス自体が表すオブジェクト・モデルによって概念的なリレーショナル・ネットワークを定義します。pureQuery は、その手法で提供される基礎となる概念的なオブジェクト・モデルをベースにし、それに対応するエンティティー・タイプ (テーブル名や列名、それぞれの列のデータ型と主キーなど) をそれぞれのクラス属性を使って表し、リレーショナル・エンティティーを作成するために必要な DDL 文を自動生成します。そのために使用する手段は、単純で直感的な UI のポイント・アンド・クリックです。DDL 文を生成したら、開発者はその DDL 文をさらに詳細に調整 (または内容を追加) することができます。さらに、リレーショナル関係 (外部キーとその他の制約など) を追加で導入あるいは適切なものにすることによって、基礎となる RDBMS での実際の実装、および目的とするデータ指向構造の実行を迅速化するという結果になります。




上に戻る


事例研究: クラス・モデリングから物理データ・モデリングへの変換

このセクションではステップバイステップの手順を通して、開発者がオブジェクト指向の観点から概念的データ・モデリングを行う際に pureQuery がいかに役立つかを説明します。この手順では、基礎として必要な実際の物理データ・エンティティーを自動的に作成するオプションも使用します。

ここでは読者が連載第 1 回を既に読んでいて、pureQuery 技術の基礎を理解していることを前提とします。

以降の手順を実行する前に、以下がインストールされていることを確認してください。

  • DB2 for Linux®, UNIX®, and Windows® Version 9.1、およびインストールに付属の SAMPLE データベース (「参考文献」セクションを参照)
  • IBM Data Studio Version 9.5 (「参考文献」セクションを参照)

クラス・モデルからリレーショナル成果物への変換

この例では、まず始めに単純なクラス・モデル (図 1 を参照) を定義します。続いて、開発者が物理データ・モデリングを実装および実行する際に、各クラスに対応する DDL コマンドを pureQuery によって自動的に生成する方法 (前述の自動生成オプション) を説明します。


図 1. クラス・モデルの概念図

ステップ 1. クラス・モデルを定義します。

この例では、図 2 に示すように 3 つの Java クラスが定義されています。クラスの定義で @Id アノテーションが使用されていることに注目してください。この特定のアノテーションは pureQuery の DDL コード生成システムに対し、主キーを定義するための CREATE INDEX 文を適切に生成するように指示します。pureQuery の今後のリリースには自動 DDL 生成プロセスをさらに改善するアノテーションが追加されて、タイプの異なる複数の DDL 文を自動的に生成できるようになるはずです。


図 2. IDE Java エディターでの Java クラスの表示

ステップ 2. pureQuery に各クラスの DDL コマンドを自動生成させます。

Java クラスを選択して IDE の Java エディターにこのクラスを表示します。クラス・エディターの領域で任意の場所を右クリックすると、ポップアップ・コンテキスト・メニューが表示されるので、pureQuery Assist メニュー・オプション、Generate DDL サブメニュー・オプションの順に選択します (図 3 を参照)。


図 3. pureQuery の DDL 生成オプション

上記のオプションを選択すると、DDL が適切に生成されて Eclipse IDE のコンソール・ビューに表示されます (図 4 を参照)。


図 4. Eclipse IDE のコンソール・ビューに表示された生成後の DDL

ステップ 3. 生成された DDL をコンソール・ビューからカット・アンド・ペーストしてファイル (メモ帳ファイルなど) に保存します。

: 適切なデータ型を反映させるため、生成された DDL には多少の変更を加える必要があります (例えば、VARCHAR 型として定義された Java ストリング変数の列を VARCHAR(255) に変更するなど)。

ステップ 4. 他のすべてのクラスについてステップ 2 を繰り返し、新しく生成された DDL コマンドを、前のステップで保存したコマンドに追加します。

完全な DDL コマンドを以下に示します。

CREATE TABLE ACCOUNT (
ACCOUNTID VARCHAR(255) NOT NULL,
BALANCE DECIMAL(9 , 2) NOT NULL,
BEGINBALANCE DECIMAL(9 , 2) NOT NULL,
BEGINBALANCETIMESTAMP VARCHAR(255) NOT NULL,
CREDITLINE DECIMAL(9 , 2) NOT NULL,
CUSTOMERIDS VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(255) NOT NULL,
TYPE VARCHAR(255) NOT NULL
)
DATA CAPTURE NONE ;
ALTER TABLE ACCOUNT ADD CONSTRAINT ACCOUNTPK PRIMARY KEY (ACCOUNTID);

CREATE TABLE BANKCUSTOMER (
CITY VARCHAR(255) NOT NULL,
CUSTOMERID VARCHAR(255) NOT NULL,
EMAIL VARCHAR(255) NOT NULL,
FIRSTNAME VARCHAR(255) NOT NULL,
LASTNAME VARCHAR(255) NOT NULL,
MIDDLEINITIAL VARCHAR(255) NOT NULL,
PHONE VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
STREET VARCHAR(255) NOT NULL,
ZIP VARCHAR(255) NOT NULL
)
DATA CAPTURE NONE ;
ALTER TABLE BANKCUSTOMER ADD CONSTRAINT BANKCUSTOMERPK PRIMARY KEY (CUSTOMERID);

CREATE TABLE ACCOUNTCUSTOMERREF (
ACCOUNTID VARCHAR(255) NOT NULL,
CUSTOMERID VARCHAR(255) NOT NULL
)
DATA CAPTURE NONE ;

DDL の拡張および実行

このセクションでは、生成された DDL が含まれるファイルを編集して、必要な外部キーに関するステートメントを追加します。この作業の目的は、以下のようにテーブル同士の関係を定義することです。

ALTER TABLE ACCOUNTCUSTOMERREF ADD CONSTRAINT ACCOUNTFK
FOREIGN KEY (ACCOUNTID) REFERENCES ACCOUNT ON DELETE RESTRICT;

ALTER TABLE ACCOUNTCUSTOMERREF ADD CONSTRAINT CUSTOMERFK
FOREIGN KEY (CUSTOMERID) REFERENCES BANKCUSTOMER ON DELETE RESTRICT;

次のステップでは、すべての DDL 文を実行します。それには、以下の手順で説明するように Data Workbench の RUN SQL オプションを使用します。

ステップ 5. データ開発プロジェクトを作成します。

Eclipse IDE のデータ・パースペクティブ・ビューに切り替えます (図 5 を参照)。


図 5. データ・パースペクティブ・ビューへの切り替え

データ開発プロジェクトを新規に作成し、この新しいプロジェクトに DataDevProject という名前を付けます (図 6 を参照)。


図 6. データ開発プロジェクトの作成

ステップ 6. 新規 SQL スクリプト・ファイルを作成します。

SQL Script > New > SQL or XQuery Script までナビゲートします。ダイアログ・ウィンドウが表示されるので、このウィンドウでファイル名 (BankingDDL など) を指定します (図 7 および図 8 を参照)。


図 7. 新規スクリプト・ファイルを作成するための選択操作


図 8. 新規スクリプト・ファイル BankingDDL の作成

ステップ 7. DDL コマンドを BankingDDL ファイルにコピー・アンド・ペーストします。

メモ帳に保存したすべての生成済み DDL を BankingDDL スクリプト・ファイルにコピー・アンド・ペーストします。次に、コンテキスト・メニューから RUN SQL オプション (図 9 を参照) を選択して DDL コマンドを実行します。これによって作成されたリレーショナル・テーブルは、Java クラスに直接反映されます。


図 9. Run SQL オプションによる DDL コマンドの実行

DDL コマンドが実行されると、その結果が IDE の Data Output ビューに表示されます (図 10 を参照)。


図 10. Data Output ビューに表示された DDL の実行結果




上に戻る


まとめ

IBM の pureQuery は、従来のオブジェクト指向を専門分野としながらも物理データ・モデルを必要とする開発者にとって、非常に役に立ち生産性の向上をもたらす類まれなる技術です。単純な UI パラダイムを使用したこの技術は、基本 DDL スクリプトを自動生成し、オブジェクト・モデル階層を RDBMS 物理データ成果物に変換してさらなる拡張を実現する手段となります。



参考文献

学ぶために

製品や技術を入手するために
  • IBM Data Studio をダウンロードしてください。

  • DB2 Enterprise 9 の無料の試用版をダウンロードしてください。

  • DB2 を無料で使用するには、コミュニティー向け DB2 Express Edition の無料バージョン、DB2 Express-C をダウンロードしてください。DB2 Express Edtion と同じコア・データ機能を備えた DB2 Express-C は、アプリケーションをビルドしてデプロイするための安定した基盤になります。

  • 次期開発プロジェクトの構築に、developerWorks から直接ダウンロードできるIBM の試用版ソフトウェアをご利用ください。


議論するために


著者について

Photo: Azadeh Ahadian

Azadeh Ahadian は、カリフォルニア州サンノゼにある IBM Silicon Valley Lab 情報管理ツール組織のソフトウェア開発者です。修士号を持つ彼女は、ソフトウェア・アプリケーションおよびツールの開発分野で 8 年以上の経験を積んでいます。pureQuery 設計時チームでは主要な貢献者およびメンバーとして活躍しています。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



はいいいえわからない
 


 


12345
不充分・不完全である大変素晴らしい
 


この記事を共有する

はてなブックマーク はてなブックマーク livedoorクリップ livedoorクリップ del.icio.us del.icio.us Buzzurl(バザール) Buzzurl(バザール) Choix! Choix!
Saafブックマーク Saafブックマーク FC2ブックマーク FC2ブックマーク MM/memo MM/memo ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
CZブックマーク CZブックマーク newsing newsing




上に戻る


    日本IBMについて プライバシー お問い合わせ