このチュートリアルでは、JDeveloperを使用してオンラインおよびオフラインでデータベース開発を実行
する方法について説明します。 具体的には、UMLクラス図を使用して論理モデルを作成し、これを物理モデルへと変換します。
また、データベース定義に対してリバース・エンジニアリングを実行し、表テンプレートを使用して新しい表定義を作成します。
バージョニング・ツールとしてSubversionを使用し、各種のコンポーネント定義を比較します。
また、データベース内のPL/SQLオブジェクトを作成しテストする方法についても学習します。
約50分
このチュートリアルでは、以下のトピックについて説明します。
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロード
し、表示されます。 (警告:
すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注: 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順 にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。
このチュートリアルでは、JDeveloperのデータベース機能を使用して、次の作業を実行します。
| クラスのモデル化と、データベース定義への変換 | |
| データベース定義からデータベース・モデルへのリバース・エンジニアリング | |
| バージョニング・ツールとしてのSubversionの使用 | |
| 論理データベース・モデルと物理データベース・モデルの比較 | |
| バージョン・コピー間でのデータベース・オブジェクトの比較 | |
| 表テンプレート定義の作成と使用 | |
| カスタマイズ・レポートの作成 | |
| データベース内のPL/SQLオブジェクトの作成、テスト、デバッグ |
データベース・デザイナーに対して、現在の本番スキーマを部分的に見直し、何らかの変更と拡張を行った後で、監 査を可能にし、将来的なデータベース開発に向けた基準設定を開始するよう要求が出されています。 ここでは、UMLクラス図を使用して論理モデルを作成し、これを物理モデルへと変換します。
データベースの更新作業に関する具体的な内容は、 Fusion Order Demoスキーマに若干の変更を加え、新規のデータベース表を作成するというものです。 また、データベース内のPL/SQLオブジェクトの作成とテストも同時に実施します。
このチュートリアルを始める前に、次のことを確認してください。
| 1. |
Oracle JDeveloper 11g Version 11.1.1.2.0にアクセスできるか、またはインストール済みであること。この製品はOracle Technology Networkからダウンロードできます。
|
| 2. |
Oracle Fusionスキーマにアクセスできるか、またはインストール済みであること。 このOracle by Example(OBE)では、Fusion Order Demo(FOD)スキーマを使用します。 手順に従い、サンプル・スキーマをダウンロードおよびインストールします。手順は以下の場所から入手できます。 http://www.oracle.com/technology/obe/obe11jdev/11/common/connection11g.htm
|
| 3. |
「スタート」→「すべてのプログラム」 →「Oracle Fusion Middleware 11.1.1.2.0」→「JDeveloper Studio 11.1.1.2.0」を選択して、Oracle JDeveloperを起動します。
Migrate User Settingsダイアログ・ボックスが表示されたら、「NO」 をクリックします。 ユーザー・ロールを選択するプロンプトが表示されたら、「Database Edition」を選択します。
Oracle Usage TrackingプロンプトとTip of the Dayウィンドウを終了します。
|
| 4. |
JDeveloper IDEが表示されます。
|
JDeveloperで作業を行う場合、一連の作業をまとめたものがアプリケーション内でプロジェ
クトと呼ばれます。
JDeveloperには、数多くの事前定義済みテンプレートが用意されています。このテンプレートを使用すると、各種アプリケーションの開発用に設定さ
れたアプリケーションやプロジェクトを簡単に作成できます。
また、このテンプレートによって、JDeveloperでサポートされている基本的なテクノロジー環境が提供されます。
作業環境を構築するには、ニーズにもっとも合ったテンプレートを選択した上で、使用予定のテクノロジーを追加する必要があれば、これを追加する設定を行い
ます。 新規ギャラリとコンテキスト・メニューに表示されるオプションは、そのアプリケーション用に選択したテンプレートによって異なります。
このトピックでは、事前に定義されたテンプレートを使用しないでアプリケーションとプロジェクトを 作成する方法について説明します。また、JDeveloperのデータベース機能を利用で きるように、プロジェクトをカスタマイズします。
| 1. |
アプリケーション・ナビゲータで「New Application」リンクをクリックします。
|
| 2. |
Create Generic Applicationダイアログで、アプリケーション名をApplication1からDBModelingに 変更します。 新しいアプリケーション名に合わせてディレクトリは自動的に変更されます。
Generic Applicationテンプレートが選択されていることを確認して、「Next」 をクリックします。
|
| 3. |
ウィザードのステップ2で、プロジェクト名にLogicalModelと入力し、Project
Technologiesタブから「Database (Offline)」および「UML」
を選択したら、「
「Finish」をクリックします。 |
| 4. |
Save Allアイコン「
|
ここでは、Fusion Order Demoクラス・モデルの一部を作り直します。
その後、このモデルをデータベース・モデルに変換し、その表定義を稼働中のデータベースからリバース・エンジニアリングしたものと比較します。
以下のトピックでは、UML
クラス図の作成について説明します。
| クラス・モ デル図向けの環境の準備 | ||
| クラス・モデル図の作成 | ||
| クラス・モデルの拡張 | ||
クラス図向けの環境を準備するには、以下の手順を実行します。
| 1. |
アプリケーション・ナビゲータで「Model」プロジェクトを右クリックし、コンテキスト・メ ニューから「New」を選択して新規ギャラリを表示します。
|
| 2. |
カテゴリ・リストでGeneralが開かれていない場合は、ここで開きます。「Diagrams」 を選択します。 項目リストから「Class Diagram」を選択し、「OK」 をクリックします。
|
| 3. |
Create Class Diagramダイアログで、NameをLogical Databaseに、 Packageをlogicalmodelに変更して、「OK」をクリックしま す。
新規データベース・ダイアグラムが開きます。
|
| 4. |
クラス図のプリファレンスを設定します。「Tools」→「Preferences」 を選択します。
|
| 5. |
Preferencesダイアログで「Diagrams」→「Class」 の順に選択し、Edit Preferences forで「Class」を選択してから「Show Operations」の選択を解除します。これは、これから実行する論理データベース・モデリングでは必要ないためです。
|
| 6. |
「Attributes」タブをクリックし、今回は必要ない「Show
Visibility」の選択を解除します。また、「Sort Alphabetically」の
選択も解除します。
「OK」をクリックします。 ここで設定したプリファレンスは、すべてのクラス図に適用されます。
|
| 7. |
ダイアグラム領域の右側にコンポーネント・パレットが表示されます。 コンポーネント・パレットには、このダイアグラムで使用できる要素が用意されています。 コンポーネント・パレットが表示されていない場合は、「View」 →「Component Palette」の順に選択してコンポーネント・パレットを開きます。 |
次のイメージは、これから作成する3つのクラス(Product Base、Warehouse、Warehouse Stock Level)を示しています。 1つの製品が複数の倉庫で保管されていることが分かります。

ダイアグラムを作成するには、以下の手順を実行します。
| 1. |
コンポーネント・パレットでClassコンポーネント「
名前をProduct Baseに変更します。
|
| 2. |
この操作を繰り返し、さらに2つのクラス(WarehouseおよびWarehouse Stock Level)を作成します。
|
| 3. |
インプレース編集を使用して、クラスに属性を追加します。 Product Baseクラスを1 回クリックして位置を選択します(青色に変わります)。再度クリックして編集モードに切り替えたら(ダブルクリックしないでください)、< 属性名>:<データベース型>の形式で上書きしてName : Stringに 変更します。
|
| 4. |
同様の操作を繰り返して、次のイメージのとおりに属性を作成します。
|
| 5. |
「Product Base」クラスをダブルクリックしてプ ロパティを編集します。 「Owned Attribute」ノードを開いて、作成した属性を表示します。
「Name」ノードを開くと、定義可能な各種プロパティを参照できます。 「OK」 をクリックして終了します。
|
| 6. |
コンポーネント・パレットで1 to * Associationアイコン「
この関連をダブルクリックしてプロパティを開き、「Owned End」 ノードを開いて名前にstocked atとofを入力します。
「OK」をクリックします。
|
| 7. |
WarehouseとWarehouseStockLevels間 の1対多関連について上記ステップを繰り返し、holder ofおよびatと いう名前を付けます。
|
| 8. |
ダイアグラムは、次のように表示されます。
|
このクラス・モデルを更新して、新しいクラスをデータベース表へと変換します。 既存のクラス・モデルから明らかであるとおり、WarehouseStock Level(倉庫在庫水準)クラスには各Warehouse(倉庫)に保管されているProduct(製品)のQuantity on Hand(数量)が記録されます。
ダイアグラムを作成するには、以下の手順を実行します。
| 1. |
「Warehouse StockLevel」を選択し、Quantity
on Handの下の行をクリックして新しい属性としてReorder Level: NumberとReorder
Quantity: Numberを追加します。
|
| 2. |
コンポーネント・パレットからダイアグラムに新規クラス(
|
| 3. |
インプレース編集を使用して、Date Reordered: DateおよびDate Delivered: Dateという2つの属性をクラスに追加します。
|
| 4. |
コンポーネント・パレットで1 to * Associationアイコン「
「endWarehouse」関連をクリックし、Nameフィールドをreplenish byに変更します。
ダイアグラムの別の部分をクリックして関連の選択を解除してから、「endWarehouse」関 連端をクリックし、プロパティ・インスペクタでNameにreplenish byを入力します。
「endStock Reorder」関連端をクリックし、プロパティ・インスペクタでreordered forという名前を入力します。
|
| 5. |
上記ステップを繰り返してWarehouse Stock LevelおよびStock Reorder間に関連を作成してon behalf ofという名前を付け、この関連の両端にそ れぞれrecipient ofとon behalf ofという名前を付けま す。
|
| 6. |
ダイアグラムは次のように表示されます。
|
| 7. |
コンポーネント・パレットからダイアグラムに新規クラス(
Reorder Quantity: Numberという属性を追加します。
|
| 8. |
コンポーネント・パレットのGeneralizationアイコン(
|
| 9. |
コンポーネント・パレットからダイアグラムに新規クラス(
|
| 10. |
コンポーネント・パレットのGeneralizationアイコン(
Stock Reorderは、ManualクラスとAutomaticクラスの汎化クラスです。 この概念は、サブタイプを使用して'データベース指向表現'にも実装できます。
|
| 11. |
「Manual」クラスを選択し、Stock Reorderク ラス内にドロップします。
|
| 12. |
このモデルでは内部と外部の両方からの混合汎化表現が可能ですが、モデルを分かりやすくするため、いずれかの表記規則(内部または外
部)を選び、一貫してそれに従うことを推奨します。
この2つの汎化は、在庫を再注文する際の方法を表しています。 データベース・モデリング用語では、これらはStock Reorderのサブタイプになります。
|
| 13. |
ダイアグラムのレイアウトを次のように変更します。
|
データベース・ダイアグラムを作成するには、以下の手順を実行します。
| 1. |
メイン・メニューから「Edit」→「Select All」 の順に選択し、ダイアグラム内のすべてのクラスを選択します。
|
| 2. |
いずれかのクラスを右クリックし、コンテキスト・メニューから「Transform」→「New Diagram」の順に選択します。
|
| 3. |
Transformダイアログで「UML to Offline Database Objects」を選択します。 Database Edition以外のロールでJDeveloperを起動した場合、ここに表示されるオプションは異なります。
「OK」をクリックします。
|
| 4. |
Offline Database Objects from UML Class Modelダイアログで、Offline Databaseフィールドの横にある「New」ボタンをクリックします。
Create Offline Databaseダイアログで、名前にStockLevelと入力 し、デフォルト・スキーマにFODと入力します。
「OK」をクリックします。
|
| 5. |
1つ前のダイアログに戻り、「Default Schema」を選択して「Next」 をクリックします。
|
| 6. |
次のオプションを選択します。
「Next」をクリックします。
|
| 7. |
「Transform only root classes, inheriting from specialized classes」オプションを選択します。
「Next」をクリックします。
|
| 8. |
「STOCK_REORDERS」を開き、MANUALサブタイプとAUTOMATICサブタイプ の識別子としてSTOCK_REORDERS_TYPE列が追加されていることを確認します。
「Next」→「Finish」をクリックします。
|
| 9. |
Create Database Diagramダイアログで名前にLogicalDBModelと 入力したら、パッケージ名はデフォルトのlogicalmodelのままにします。
「OK」をクリックします。
|
| 10. |
メイン・メニューから「Edit」→「Select All」 の順に選択し、いずれかの表を右クリックして「Optimize Shape Size」→「Height and Width」の順に選択します。
新しいダイアグラムは次のようになります。
|
| 11. |
ダイアグラムを右クリックし、新しい表示方法として「Lay Out Shapes」→「Hierarchical (Left to Right)」を選択します。
|
| 12. |
関連を右クリックしてコンテキスト・メニューから「Select All This Type」を 選択し、再度右クリックして「Straighten Lines」を選択します。
|
| 13. |
ダイアグラムは、次のように表示されます。
|
ここでは、データベース・スキーマの定義を取得して、新規プロジェクトにそのオフライン表現を作成します。 データベース・スキーマをリバース・エンジニアリングする前に、データベース接続を作成する必要があります。
| データベー ス接続の作成 | ||
| データベース・コンポーネントからデータベース・モデルへのリバース・エンジニアリング | ||
FODスキーマへのデータベース接続を作成するには、以下の手順を実行します。
| 1. |
アプリケーション・ナビゲータで「Application Resources」アコーディオンを開きます。 「Connections」ノードを右クリック して、「New Connection」→「Database」を選択します。
|
||||||||||||||||
| 2. |
Create Database Connectionで、以下の値を入力します。
「Test Connection」ボタンをクリッ クします。
データベースが使用可能な状態にあり、接続情報が正しい場合は、ステータス・ウィンドウ にSuccess!と表示されます。表示されたら、「OK」をクリックします。 エラーが発生した場合、接続設定を確認します。必要に応じて変更を加え、接続を再度テス トします。 それでも接続できない場合は、データベースに問題があるか、データベースが稼働していない可能性があります。
|
||||||||||||||||
| 3. |
新しいデータベース・エントリがApplication Resourcesナビゲータに表示されます。 「Database」ノードを開き、作成したFOD接続を表示しま す。
|
||||||||||||||||
| 4. | Save All「 |
データベース・コンポー ネントからデータベース・モデルへのリバース・エンジニアリング
FODスキーマのデータベース表からデータベース・モデルへのリバース・エンジニアリングを実行するには、以下 の手順を実行します。
| 1. |
論理モデルと物理モデルを区別するため、別のプロジェクトを作成します。 メイン・メニューから「File」 →「New」を選択します。
|
| 2. |
新規ギャラリで「General」ノードを開いて「Projects」 カテゴリを選択し、項目から「Generic Project」を選択します。
「OK」をクリックします。
|
| 3. |
プロジェクト名にPhysicalModelと入力したら、「Database (offline)」を選択済みテクノロジー(Selected)に移動します。
「Finish」をクリックします。
|
| 4. |
アプリケーション・ナビゲータで、「PhysicalModel」プロジェクトを右クリックして、 コンテキスト・メニューから「New」を選択します。
|
| 5. |
新規ギャラリで、「Diagrams」と「Database Diagram」 を選択します。
「OK」をクリックします。
|
| 6. |
Create Database Diagramダイアログで名前にFOD_Physical と 入力したら、パッケージ名はデフォルトのphysicalmodelのままにします。
「OK」をクリックします。
|
| 7. |
Application Resourcesアコーディオンを開き、「Connections」→ 「Database」→「FOD」→「Tables」 の順にノードを開いたら、「PRODUCTS_BASE」、「WAREHOUSES」、 「WAREHOUSE_STOCK_LEVELS」を複数選択します。 選択した表をダイアグラムにドロップすると、これらの表がインポートされます。
|
| 8. |
Specify Locationダイアログで、「Copy Objects to Project」 オプションを選択して、Offline Databaseフィールドの横にある「New」ボタンをクリックします。
Create Offline Databaseダイアログで、名前にFOD_Physicalと 入力し、デフォルト・スキーマにFODと入力したら、「Initialize Default Templates」オプションの選択を解除します。
「OK」をクリックし、もう一度「OK」をクリックします。
|
| 9. |
ダイアグラムを右クリックし、コンテキスト・メニューから「Lay Out Shapes」→「Row」 の順に選択します。
「OK」をクリックします。
|
| 10. |
WAREHOUSES表にSTOCK_VALUE: NUMBER(15,2)列
を追加します。
この列をWAREHOUSE_NAMEの下に移動します。
|
| 11. |
Save All「
|
| 12. |
ダイアグラムは、次のように表示されます。
|
多くの企業では、ソース・コード管理リポジトリを使用して、データベース設計を含むすべてのドキュ
メントとアプリケーション・コードが保管されています。
開発フェーズと保守フェーズを通じて、このリポジトリからオフライン・データベース・モデルはアクセスされ、唯一の情報源として使用されます。
このチュートリアルでは、'test'という名前のローカルSubversionリポジトリを作成し、JDeveloperを使用して異なるバージョンの
データベース・モデルを比較する方法について説明します。
実際には、完全なSubversion(SVN)リポジトリを作成する必要があります。SVNリポジトリの作成と保護について詳しくは、http://svnbook.red-bean.com/を参照
してください。
| 1. |
メイン・メニューから「Versioning」→「Create Local Repository」を選択します。
|
| 2. |
Create Subversion Repositoryダイアログで、新しいリポジトリ・パスとしてrepositoryと 入力し、接続名としてMyRepositoryを指定します。
|
| 3. |
バージョニング・ナビゲータが開きます。 「Subversion」ノードをクリックして、新し
いリポジトリが表示されていることを確認します。
|
| 4. |
テスト用のローカル・リポジトリを右クリックし、コンテキスト・メニューから「New Remote Directory」を選択します。
|
| 5. |
Create Remote Directoryダイアログで、ディレクトリ名にtrunkと入力 し、コメントにmain root folder for applicationsと入力します。
「OK」をクリックします。
|
| 6. |
SVN Console Logに、このコマンド用に発行されたステートメントが表示されます。
バージョニング・ナビゲータに新しいエントリが作成されています。
|
| 7. |
メイン・メニューから「Versioning」→「Version Application」を選択します。
|
| 8. |
Import Subversionウィザードが開いたら、「Next」をクリックして Welcomeページをスキップします。ステップ2で、リポジトリ接続に「MyRepository」を選択し、パス として「trunk」を選択します。
「Next」をクリックします。
|
| 9. |
ステップ3では、現在の作業領域の場所がデフォルトで表示されます。コメントとしてVersioned DB Modeling applicationを追加します。
「Next」をクリックします。
右側に表示されているリストは、アプリケーションのインポート時に適用されるデフォルト・フィルタです(たとえば、コンパイル済みクラスはインポートされ
ません。'**/classes/**'エントリを参照してください)。
|
| 10. |
Optionsページで「Perform Checkout」を選択します。
「Next」に続き、「Finish」をクリックします。 Subversionコントロールへファイルをインポートするプロセスが開始されます。
|
| 11. |
アプリケーション・ナビゲータは、次のように表示されます。
|
JDeveloperでは、複数のオブジェクト定義 を比較できます。 比較対象となるオブジェクトが別々のプロジェクトに格納されているため、比較を実行するにはオブジェクト間の依存関係を作成しておく必要があります。 オブジェクト定義を比較するには、以下の手順を実行します。
| 1. |
はじめに、LogicalModelプロジェクトとPhysicalModelプロジェクト間の依存関係を作成します。 「LogicalModel」 プロジェクト・ノードを右クリックし、コンテキスト・メニューから「Project Properties」を選択し ます。
「Dependencies」ノードを選択して、「Edit Dependencies」ボタンをクリックします。
Edit Dependenciesダイアログで、PhysicalModelプロジェクトの「Build Output」チェック・ボックスを選択します。
「OK」をクリックし、もう一度「OK」をクリックします。
|
| 2. |
次に、2つのオフライン・データベース(StockLevelとFOD_Physical)間の依存関係を作成します。 「LogicalModel」 →「Offline Data Sources」の順に開き、「StockLevel」 オフライン・データベースを右クリックして、コンテキスト・メニューから「Properties」を選択します。
「Dependencies」ノードを選択してAddボタン「
「OK」をクリックし、もう一度「OK」をクリックします。
|
| 3. |
オフライン・データベース・ソースから「StockLevel」を右クリックし、「Copy to Project」を選択します。
'Copy to Project'を使用すると、'ソース'データベース(オフラインまたはオンライン)のデータベース・オブジェクトを別のオフライン・データベースのオ ブジェクトに対して、コピー、比較、およびマージできます。 この例では、StockLevelオフライン・データベースとFOD_Physicalオフライン・データベースを比較します。 別のオンライン・データベースに対して同じ機能を実行するには、'Generate'メニュー・オプションを使用します。
|
| 4. |
Copy Database Objects to a Projectウィザードで「Source from project 」を選択し、オフライン・データベースとして「StockLevel」が選択さ れていることを確認します。
「Next」をクリックします。
|
| 5. |
次のステップで、プロジェクトに「PhysicalModel」を選択し、オフライン・データベー スに「FOD_Physical」を選択します。
「Next」をクリックします。
|
| 6. |
Object Pickerページで「STOCK_REORDERS」と「WAREHOUSE_STOCK_LEVELS」 を選択したら、右矢印ボタンを使用して選択済みペインに移動します。
「Next」をクリックします。
|
| 7. |
Choose Operationページで、「ALTER」と「Manual Reconcile」を選択します。 こうすることで、物理モデルに対する変更を事前に確認できます。
「Next」をクリックします。
|
| 8. |
提示されたすべての変更を確認します。 論理モデルと物理モデルにおける相違点に注意します。
|
| 9. |
物理モデルにはSTOCK_REORDERS表が存在せず、双方のモデルのWAREHOUSE_STOCK_LEVELS表 には複数の相違点があることを確認します。
|
| 10. |
WAREHOUSE_STOCK_LEVELS表の相違点について詳しく確認します (たとえば、論理モデルのquantity_on_hand列には正しい数値精度が指定されておらず、 WAREHOUSE_STOCK_LEVELS論理表に監査列がありません)。
|
| 11. |
論理モデルのWAREHOUSE_STOCK_LEVELS表に存在するが物理モデルには存在しな い列を、右矢印ボタンを使用して移動します。
物理モデルに新しく追加された列には(add)コメントが追加されることを確認します。
|
| 12. |
物理モデルのSTOCK_REORDERS表も移動します。
「Next」をクリックします。
|
| 13. |
サマリー・レポートを確認し、「Finish」をクリックします。
|
| 14. |
アプリケーション・ナビゲータにSTOCK_REORDERS表が表示されています。
|
| 15. |
再度、FOD_Physical.dbダイアグラムを開きます。 ダイアグラムに表示されるのはオフライン・オブジェクトであるため、WAREHOUSE_STOCK_LEVELS表 に新しい列が表示されています。
|
| 16. |
ナビゲータで、「STOCK_REORDERS」を選択して、ダイアグラムにドロップします。
|
| 17. |
ダイアグラムを右クリックし、コンテキスト・メニューから「Lay Out Shapes」→「Row」 の順に選択します。
|
| 18. |
ダイアグラムは次のように表示されます。
|
| 19. | 変更を保存します。 |
バージョニングされたコンポーネントについては、コンポーネントの変更履歴を確認し、バージョン間 での比較を実行できます。 バージョン別の定義を比較するには、以下の手順を実行します。
| 1. |
はじめに、アプリケーションに対して行ったすべての変更をSubversionリポジ トリに反映させる必要があります。 メイン・メニューから「Versioning」→「Pending Changes」の順に選択します。
|
| 2. |
Pending Changesウィンドウに、各種コンポーネントのステータスが表示されます。 Outgoingタ ブに、新規ファイルと最後のコミット以降に変更されたすべてのファイルのリストが表示されます。 Pending Changesメニューがグレーアウトされている場合は、ナビゲータでいずれかのアプリケーション・ノードを選択してから再試行してください。
|
| 3. |
「Candidates」タブをクリックし、アプリケーションに追加された新規ファイルのうち、 バージョン管理対象になっていないファイルを表示します。 STOCK_REORDERS表は、まだバージョン管理されていません。
|
| 4. |
メイン・メニューから「Versioning」→「Commit Working Copy」の順に選択します。
|
| 5. |
Commit Working Copyダイアログで、「OK」をクリックします。
バージョニングにおけるベスト・プラクティスとして、コミットする際は常にコメントを残します。
|
| 6. |
「Candidates」タブをクリックして「STOCK_REORDERS」
表を選択したら、Addボタン「
|
| 7. |
Outgoingタブで「STOCK_REORDERS」表を 選択したら、「Commit」ボタンをクリックしてこの表をバージョニングします (この方法で、要素をSubversionのバージョン管理下に置くこともできます)。
Commit Resourcesダイアログで、「OK」をクリックしてコミットを実行します。
|
| 8. |
ここまでで、warehouse_stock_levelsに加えた変更をバージョン間で比較する準備が整いました。 アプリケーション・ナビゲータで「warehouse_stock_levels」を右クリックし、コンテキスト・メ ニューから「Compare with」→「Other revision」の順 に選択します。
|
| 9. |
上部のペインの左側で最初のリビジョン(もっとも小さい数字)を選択し、右側で作業中コピーを選択します。 下部ペインでノードを開き、IDEに現在保存されているコピーと初期リビジョンの間での変更点を確認します。
|
| 10. |
変更を保存します。 |
ここでは、表テンプレートを作成して、将来的にすべての表にデフォルトで監査列が追加されるように します。 以下の手順に従います。
| 1. |
アプリケーション・ナビゲータで「PhysicalModel」ノードを右クリックし、コンテキス ト・メニューから「New」を選択します。
|
| 2. |
新規ギャラリで、「Database Tier」→「Offline Database Objects」カテゴリを選択し、「Offline Database」項目 を選択します。
「OK」をクリックします。
|
| 3. |
Create Offline Databaseダイアログで、オフライン・データベース名としてDB_TEMPLATESと 入力し、デフォルト・スキーマにTEMPLATESと入力します。
「OK」をクリックします。
|
| 4. |
新しいデータベースがナビゲータに表示されます。
|
| 5. |
「DB_TEMPLATE」を右クリックし、コンテキスト・メニューから「Properties」 を選択します。
|
| 6. |
Edit Offline Databaseダイアログで、「Default Templates」 ノードを選択します。 デフォルト・スキーマとスキーマの両方に「TEMPLATES」 を選択し、オブジェクトに「Tables」を選択します。
Nameフィールドの横にあるAddボタン「
|
| 7. |
Create TableダイアログでNameにTemplate_Tableを入力したら、既存 のColumn1列のタイプを「Number」に変更し、「Primary Key」を選択します。
「Advanced」チェック・ボックスを選択します。
|
| 8. |
「Primary Key」ノードをクリックし、COLUMN1が 主キーになっていることを確認します。
|
| 9. |
「Column Sequences」を選択し、「Populate Column from a Sequence on insert」をクリックします。 Sequence NameとTriggerに生成された名前は、デフォルトのままにします。 シーケンスとトリガーには、TEMPLATE_TABLE_xxxのように表名を反映した名 前が付けられています。
「OK」をクリックします。 再度「OK」をクリックします。
|
| 10. |
変更を保存します。
|
| 11. |
「TEMPLATE_TABLE_TRG」エントリをダブルクリックして、ファイル・コンテンツを 編集します。
生成されたPL/SQLコードを確認します。
|
| 12. |
オフライン・データベース間の依存関係を作成します。「FOD_Physical」ノードを右ク リックし、コンテキスト・メニューから「Properties」を選択します。
|
| 13. |
Edit Offline Databaseで、「Dependencies」を選択して、Addボ
タン「
|
| 14. |
「DB_TEMPLATES」データベースが選択されていることを確認し、 「OK」 をクリックします。
これにより依存関係が作成されるため、DB_TEMPLATESオフライン・データベースのテンプレートをFOD_Physicalで使用できます。
「OK」をクリックします。
|
| 15. |
FOD_Physicalダイアグラムを開きます。 はじめに作成したすべての表には監査列(CREATED_BY、CREATION_DATE、LAST_UPDATED_BY、LAST_UPDATE_DATE) が含まれています。テンプレート表にも、これらの列を作成する必要があります。
|
| 16. |
「TEMPLATE_TABLE」をナビゲータからドラッグしてダイアグラム上にドラッグします。
|
| 17. |
ダイアグラムのWAREHOUSES表へ移動し、[Ctrl]を押しながらクリッ クして4つの監査列を選択します。 監査列が表示されない場合、マウスを表の右側に動かして縦方向のスクロールバーを表示します。 監査列が表示されるまで、下方向にスクロールします。
|
| 18. | 選択した4つの列をダイアグラムにドラッグして[Ctrl]を押しながらテンプレート表にド
ロップし、列をコピーします。
変更を保存します。 表に列をドラッグする場合、次のように[Ctrl]または[Shift]を 使用してドロップする必要があります。
|
| 19. |
ダイアグラムの「TEMPLATE_TABLE」を右クリックし、「Cut」
を選択してダイアグラムから削除します。 ここまでで、テンプレート表を使用して新規表を作成する準備が整いました。
|
| 20. |
ダイアグラムに新規表を作成して、テンプレートをテストします。 コンポーネント・パレットから「Table」
ボタンをドラッグしてダイアグラムにドロップします。デフォルト列が作成されることを確認します。
|
| 21. |
Specify Locationダイアログで、「Application Project」と「FOD_Physical」 オフライン・データベースを選択します。
「OK」をクリックします。
|
| 22. |
表の作成にはテンプレート表の定義が使用されるため、 監査列と主キーが追加されています。 ナビゲータにはシーケン ス・ファイルとトリガー・ファイルが作成されていることを確認します。
|
JDeveloperでは幅広い組込みレポートが提供されていますが、独自にカスタマイズしたレ ポートを作成することもできます。 監査列を含まない表を表示するレポートを作成するには、以下の手順を実行します。
| 1. |
アプリケーション・ナビゲータで、「PhysicalModel」プロジェクトを右クリックして、 コンテキスト・メニューから「New」を選択します。
|
| 2. |
New Galleryにおいて、Categoriesリストの「Database Tier」を 開き、「Offline Database Objects」を選択します。 Itemsリストで「Report」 を選択し、「OK」をクリックします。
|
| 3. |
Create Reportダイアログで、File Nameにmissing audit columnと 入力します。
|
| 4. |
Offline Databaseタブで、「FOD_Physical」を選択します。
|
| 5. |
「Query Definition」タブをクリックします。 次のステートメントをコピーしてSQLペインに貼り付けます。 SELECT この問合せにより、CREATION_DATE列を含まない表の名前が返されます。 「Check Syntax」ボタ ンをクリックし、問合せを検証します。
|
| 6. |
「Query Definition」ノードを開き、すべての子ノードを開いてどのように問合せを 構築するかを確認します。
|
| 7. |
「Publish Report」(デフォルトでは、レポートはログ・ウィンドウのみに出力されま す)と「HTML」を選択し、Output File Nameにmissingauditcolreportと 指定したら、残りはすべてデフォルトのままにします。
「OK」をクリックします。
|
| 8. |
アプリケーション・ナビゲータに新しいレポート定義が表示されます。 変更を保存します。 「missing audit column」を右クリックし、コンテキスト・メニューから「Run」を選択します。
レポートの実行が開始されます。
|
| 9. |
ログ・ウィンドウにレポート結果が表示されます。
|
| 10. |
先ほどのステップで'HTML'を指定したため、レポートが実行されるとHTMLバージョンのレポートが生成され、アプリケーション・ ナビゲータに表示されます。 「missingauditcolreport」をダブルクリックして開きます。
この後で、CSSを追加してレポートを編集し、チーム・メンバーへ配布するか、または中央で公開することもできます。 |
JDeveloperを使用すると、オブジェクト・タイプ、パッケージ、プロシージャ、ファンク ション、トリガーを含むデータベース内のストアドPL/SQLを作成、編集、テスト、デバッグできます。 これには、JDeveloper内にファイルとしてSQLスクリプトを作成し、そのスクリプトをデータベースに対して実行する方法があります。 あるいは、データベース内に直接PL/SQLオブジェクトを作成する方法もあります。
以下のトピックでは、注文項目レコードのレイアウトを定義するオブジェクト・タイプorder_items_recを作成します。 次に、order_items_recによって定義された注文項目レ コードを返すファンクションget_order_itemsを 含むパッケージを作成します。 最後に問合せを実行して、order_items_recに 値を生成するパッケージ本体を作成します。 JDeveloperのデバッグ機能を使用して、パッケージをテストします。
| FODへのデバッグ権限の付与 | ||
| SQLス クリプトの実行によるオブジェクト・タイプの作成 | ||
| PL/SQLパッケージの直接的な作成 | ||
| PL/SQLファンクションのテストおよびデバッグ | ||
デバッグ機能を使用可能にする前に、関連する権限をFODに付与する必要があります。
| 1. |
FODに権限を設定するには、メイン・メニューから「Tools」→「Database」 →「SQL Worksheet」を選択します。
|
| 2. |
Select Connectionダイアログで、「OK」をクリックしてFOD(DBModeling)接 続を受け入れます。
|
| 3. |
SQL Worksheetウィンドウで、connect system/oracle;と入力します(システム名およびパスワードを提供することで、使用している環境でDBA文 を発行できるようにします)。 次に、grant debug connect session to fod;と入力します。
|
| 4. |
Execute Scriptアイコン「
Script Outputウィンドウにエラーが表示されていないことを確認します。 |
| 1. |
SQLスクリプトを作成するには、アプリケーション・ナビゲータで「PhysicalModel」 プロジェクトを右クリックし、「New」を選択して新規ギャラリを開きます。
|
| 2. |
Categoriesリストで「Database Tier」を開き、「Database Files」を選択して、Itemsリストで「SQL File」を選択します。 「OK」 をクリックします。
|
| 3. |
Create SQL Fileダイアログで、File Nameをorder_items_rec.sqlに 変更して、「OK」をクリックします。
コード・エディタ内に新しい空のファイルが開きます。
|
| 4. |
以下のコードをコピーして、ソース・ペインに貼り付けます。
「SQL Worksheet」タブをクリックし、「FOD」 接続を選択します。
「Run Script」アイコンをクリックします。
|
| 5. |
Script Outputウィンドウにエラーが表示されていないことを確認します。
「Save All」をクリックして変更内容を保存します。
|
| 6. |
接続ナビゲータのApplication Resourcesペインで「Database」→「FOD」 →「Types」の順にノードを開き、新しいオブジェクト・タイプORDER_ITEMS_RECを確認しま す。
|
上のトピックでは、最初にスクリプトを作成し、そのスクリプトをデータベースに対して実行すること で、PL/SQLオブジェクトを作成する方法を説明しました。 このトピックでは、このデータベースにPL/SQLパッケージORDER_ITEMS_FETCHを直接作成します。
| 1. |
「Databases」タブをクリックして、データベース・ナビゲータを開きます(はじめて表示す る場合は、メイン・メニューから「View」→「Database」→「Database Navigator」を選択します)。 データベース・ナビゲータで、「DBModeling」→ 「FOD」の順にノードを開きます。 「Packages」ノードを右クリック し、コンテキスト・メニューから「New Package」を選択します。
|
| 2. |
Create PL/SQL Packageダイアログで、パッケージ名をORDER_ITEMS_FETCHに 設定し、「OK」をクリックします。
コード・エディタにORDER_ITEMS_FETCHパッケージが表示されます。
|
| 3. |
コード・エディタで、ORDER_ITEMS_FETCHパッ ケージに既存する2行の間に次のコードを入力し、get_order_itemsファンクションを作成します。
|
| 4. |
ツールバーの「Save」アイコンをクリックして、修正したパッケージを保存します。 ナビゲータにパッケージが表示され、パッケージがデータベースに格納されたことが分かります。
|
| 5. |
「ORDER_ITEMS_FETCH」エントリを右クリックし、コンテキスト・メニューから「Create Body」を選択します。
|
| 6. |
コード・エディタにパッケージ本体のテンプレートが開きます。
|
| 7. |
コード・エディタのORDER_ITEMS_FETCHパッ ケージ本体の部分に、問合せを実行してorder_items_foundレ コードに値を移入する次のコードを入力します (イタリック体ではない太字のコードのみを入力してください。 イタリック体のコードはすでに入力されていますが、コードの場所を示すために以下に記載されています)。
(注: RETURN NULL;行は削除してください。)
|
| 8. |
コード・エディタ・ウィンドウで、コメント行の下に
|
| 9. |
「Compile」アイコンをクリックして、パッケージ本体をコンパイルします。
|
| 1. |
ブレーク・ポイントを設定するために、コード・エディタの左余白内でReturn文の横をクリック します。
|
||||||
| 2. |
データベース・ナビゲータで、「ORDER_ITEMS_FETCH」パッケージを右クリックし、 コンテキスト・メニューから「Compile for Debug」を選択します。
|
||||||
| 3. |
データベース・ナビゲータで、「ORDER_ITEMS_FETCH」パッケージを右クリックし、 コンテキスト・メニューから「Debug」を選択します。
|
||||||
| 4. |
Debug PL/SQLダイアログで以下の変更を行い、注文ID番号1001および明細項目ID 番号2が表示されるようにします。
「OK」をクリックします。 Windowsセキュリティの重要な警告がポップアップ表示されたら、「ブロックを解除する」を選択します。
|
||||||
| 5. |
Debugging Logウィンドウを確認すると、パッケージの実行が停止されていることがわかります。
Debugging LogウィンドウのDebugタブの横にある「Data」タブを選択するか、 メイン・メニューから「View」→「Debugger」→「Data」 の順に選択してこのタブを開きます。
|
||||||
| 6. |
Dataペインで、「ORDER_ITEMS_FOUND」ノードを開きます。 取得した行のすべての値が表示されます。
|
||||||
| 7. |
「Debugging」ツールバーで、「Resume」ボタン をクリックしてパッケージの実行を終了します。
|
||||||
| 8. |
Debugging Logウィンドウに、ORDER_ITEMS_FETCHパッケー ジのget_order_items()ファンクショ ンの出力が表示されます。
|
||||||
| 9. |
コード・エディタ・ウィンドウの左余白にある赤いボタンをクリックして、ブレーク・ポイントを削除します。次に「Compile」 ボタンを使用して、パッケージを再コンパイルします。
|
||||||
| |
これで、このOBEは完了です。 |
このチュートリアルでは、JDeveloperのデータベース機能を使用しました。 具体的には、クラスをモデル化し、データベース・ダイアグラムを使用してデータベース定義に変換し、新規表テンプレートを作成しました。次に、データベー スのオンライン・オブジェクトをモデル化し、ダイアグラムを使用してこれらに変更を加えました。 バージョニング・ツールとしてSubversionを使用し、各種のコンポーネント定義を比較しました。 また、データベースに問合せを行うカスタマイズ・レポートを作成しました。 次に、それらのオフライン変更をデータベースに反映するSQLスクリプトを作成しました。 さらに、SQLスクリプトを実行してデータベース内にオブジェクト・タイプを作成し、PL/SQLパッケージをデータベース内に直接作成して、 JDeveloper内でテストを実施しました。
このチュートリアルで学習した内容は、以下のとおりです。
| UMLクラス・モデルを使用した論理モデリング | ||
| クラス・モデルから データベース・モデルへの変換 | ||
| データベース定義から データベース・モデルへのリバース・エンジニアリング | ||
| アプリケーションのバージョニング | ||
| 論理モデルと物理モデルの比較、バージョン管理対象コンポーネントの バージョン間での比較 | ||
| 表テンプレートの作成 | ||
| データベース内での PL/SQLオブジェクトの作成 | ||