このチュートリアルでは、Oracle SQL Developer Data Modelerを使用して、継承とオブジェクト型を使用する論理モデルを変更する方法について説明します。
約30分
Oracle SQL Developer Data Modelerは、データおよびデータベース・モデリングの包括的なツールとユーティリティを提供します。これらのツールとユーティリティを使用すると、E-Rモデリングに加えて、リレーショナル(スキーマ)、データ型、またはオブジェクト型モデリング、さらには多次元モデリングとDDL生成を実行できます。 また、さまざまなソースとターゲットを対象としてインポートとエクスポートを実行し、各種の書式オプションを利用し、事前定義された一連の設計ルールとの比較によってモデルを検証することもできます。
Oracle SQL Developer Data Modelerは、Oracle SQL Developer 2.0の拡張機能およびスタンドアロン製品として、ビジュアル・データ・モデリングのみを目的とする開発者に向けてリリースされる予定です。
このチュートリアルでは、DBカタログからスキーマをインポートして、リレーショナル・モデルから論理モデルへのリバース・エンジニアリングを実行し、サブビューと表示を作成し、エンティティに2つのサブタイプを追加します。また、新しいリレーショナル・モデルのフォワード・エンジニアリングを実行し、型を作成して新しい型を表に関連付け、次に変更された表のリバース・エンジニアリングを実行してリレーショナル・モデルと論理モデルを同期化します。
このチュートリアルを始める前に次のことを確認してください。
注: このチュートリアルはLinux環境を使用して作成されたため、Windows環境を使用している場合、スクリーンショットが若干異なる可能性があります。
この項では、データ・ディクショナリからHRスキーマをインポートして、リレーショナル・モデルを作成します。 以下の手順を実行します。
|
. |
Oracle SQL Developer Data Modelerを開きます。 前のチュートリアルを実行した後、まだOracle SQL Developer Data Modelerを終了していなかった場合は、「File」→「Close」を選択して、作業対象だったモデルを閉じてください。
|
|---|---|
|
. |
「File」→「Import」→「Data Dictionary」を選択します。
|
|
. |
データベース接続を作成する必要があります。 「Add」をクリックします。
|
|
. |
以下の情報を入力し、「Test Connection」をクリックします。 接続名: orcl_system
|
|
. |
接続に成功したら、「OK」をクリックします。
|
| . |
再度「OK」をクリックします。
|
| . |
リストから、使用する接続を選択して「Next >」をクリックします。
|
| . |
「HR」スキーマの前にあるチェック・ボックスを選択して、「Next >」をクリックします。
|
| . |
Tablesタブの下にある「Select All」をクリックします。
|
| . |
「Next >」をクリックします。
「Finish」をクリックします。
|
| . |
ログを確認します。 確認したら、「Close」をクリックします。
|
|
. |
リレーショナル・モデルが正しく作成されました。 次の項では、リバース・エンジニアリングを実行して論理モデルを作成します。
|
この項では、リレーショナル・モデルのリバース・エンジニアリングを実行して論理モデルを作成します。 次の手順を実行してください。
|
. |
「Engineer to Logical Model」アイコンをクリックします。 Engineeringウィンドウが開きます。
|
|---|---|
|
. |
この警告アイコンは、リレーショナル・モデルと論理モデルの間でオブジェクトが異なっていることを示しています。 「Tables」オブジェクトを展開します。
|
|
. |
プラス記号のアイコンは、表が論理モデルに追加されることを示しています。 「Engineer」をクリックします。
|
|
. |
論理モデルが正しく作成されました。 次の項では、employees表に関連したエンティティのみを含むサブビューを作成します。
|
この項では、employees表に関連したエンティティに基づいた論理モデルのサブビューを作成します。 次の手順を実行してください。
|
. |
ダイアグラムの空白部分を右クリックします。 ここでは、2つの異なる表記法を使用できます。 このチュートリアルでは、「Bachman Notation」を選択します。 デフォルトでは、Barker表記法が使用されることに注意してください。
|
|---|---|
|
. |
Bachman表記法が使用されるようになりました。
|
|
. |
「employees」エンティティを右クリックして、「Select Neighbors」を選択します。
|
|
. |
Number of Zonesでデフォルト値の1を受け入れて、「OK」をクリックします。
|
|
. |
employees表に関連したエンティティが選択されていることを確認します。 「EMPLOYEES」エンティティをもう一度右クリックして、「Create SubView from selected」を選択します。
|
|
. |
選択したエンティティだけのサブビューが作成されます。
|
この項では、直前に作成したサブビューから2つの異なる表示を作成します。 表示を作成することで、論理モデル・オブジェクトまたはリレーショナル・モデル・オブジェクトの同じセットに基づいたダイアグラムの外観を変更できます。 次の手順を実行してください。
|
. |
「Logical SubView_1」タブを右クリックして、「Create Display」を選択します。
|
|---|---|
|
. |
ダイアグラムに最小限の情報だけが表示されるように、詳細を設定します。 ダイアグラムの空白部分を右クリックして(マウス・カーソルがオブジェクト上にないことを確認してください)、「View Details」→「Names Only」を選択します。
|
|
. |
エンティティ名だけが表示されるようになります。
|
|
. |
エンティティを選択して隅にあるリサイズ・ハンドルをドラッグして、エンティティのサイズを縮小します。
|
|
. |
ダイアグラム上の各エンティティを、[Shift]を押しながら選択します。 「Edit」メニューから、「Equal Width」を選択します。
|
|
. |
ダイアグラム上ですべてのエンティティが同じ幅になっていることを確認します。 設定される幅は、最初に選択したオブジェクトの幅によって決まります。 「Edit」メニューから、「Equal Height」を選択します。
|
|
. |
すべてのエンティティが同じ幅と高さになります。 設定される高さも、最初に選択したオブジェクトの高さによって決まります。 線を手動で再描画することもできます。 ダイアグラムの空白部分を右クリックして「Auto Route」を選択すると、線の選択が解除されます。
|
|
. |
エンティティを移動して空き領域を最大化し、線を再描画します。
|
|
. |
一部の線が正しく描画されていないことに注意します。 線を再描画するには、線を右クリックし、「Straighten Line」を選択します。
|
|
. |
線が直線になったら、線の端をドラッグして、エンティティの上や別の側面に移動することもできます。
|
|
. |
線をエンティティ(四角形)のもう1つの端に移動する必要がある場合は、継ぎ手を選択して新しいエッジへ移動します。継ぎ手を追加または削除するには、右クリックして「Add Elbow」または「Remove Elbow」を選択します。
|
|
. |
継ぎ手を作成したら、目的の場所に継ぎ手をドラッグします。 必要に応じて、1つの線に対して複数の継ぎ手を作成できます。
|
|
. |
下のスクリーンショットは、領域の使用効率が最大になるようにエンティティと線を移動した結果です。
|
|
. |
外観が異なるもう1つの表示を作成します。 「Logical - SubView 1」を右クリックして、「Create Display」を選択します。
|
|
. |
ダイアグラムの空白部分を右クリックして、「Barker Notation」を選択します。
|
|
. |
空白部分を右クリックして、「View Details」→「All Details」を選択します。
|
|
. |
各エンティティの詳細が、Barker表記法を使用して表示されます。 すべての属性が表示されるようにエンティティを大きくします。また、線が直線になり、交わる部分が少なくなるように、線を再描画します。
|
|
. |
Browserツリーで、「Logical」→「SubViews」→「Logical - SubView_1」→「Displays」の順に展開します。 「Display_1」をダブルクリックします。
|
| . |
表示の名前をBachman - Names onlyに変更して、「OK」をクリックします。
|
| . |
「Display_2」をダブルクリックします。 表示の名前をBarker - All Detailsに変更して、「OK」をクリックします。
|
|
. |
表示の名前が変更されました。 次の項では、EMPLOYEESエンティティ用に2つのサブタイプを作成します。
|
この項では、EMPLOYEES(スーパータイプ・エンティティ)に2つのサブタイプを追加します。 次の手順を実行してください。
|
. |
「Barker – All Details」表示を選択して、「Create Entity」アイコンをクリックします。
|
|---|---|
|
. |
ダイアグラムの任意の空白部分を選択します。 名前にSalesと入力して、スーパータイプで「EMPLOYEES」を選択します。 次に、左側のナビゲータで、「Attributes」を選択します。
|
|
. |
「Add Attribute」アイコンをクリックします。
|
|
. |
名前にCommission Percentと入力し、データ型で「Logical」をクリックします。 タイプのドロップダウン・リストで「NUMERIC」を選択して、PrecisionとScaleに2を入力します。 「OK」をクリックして、サブタイプを作成します。
|
|
. |
スーパータイプEMPLOYEESと作成したばかりのサブタイプSalesとの間にある赤色の線に注目してください。 この場合、サブタイプのボックスは、関係するスーパータイプのボックスの中に表示できます。 空白部分を右クリックして、「Box-in-Box Presentation」を選択します。
|
|
. |
サブタイプSalesがスーパータイプEMPLOYEESの中に表示されていることを確認します。 必要に応じて、EMPLOYEESスーパータイプ・エンティティのサイズを大きくし、SALESサブタイプ・エンティティを小さくします。
|
|
. |
スーパータイプEMPLOYEESとサブタイプSalesの間にリレーションを作成して、Account Managerを格納します。 「1:N Relation」アイコンをクリックします。
|
|
. |
最初に、「EMPLOYEES」エンティティを選択します。
|
|
. |
次に、「Sales」サブタイプを選択します。
|
|
. |
サブタイプとリレーションを移動して、表示を最適化します。 EMPLOYEESとSalesの間にリレーションが作成されたので、このリレーションの名前をAccount Managerに変更します。 「Sales」サブタイプをダブルクリックします。
|
|
. |
左側のナビゲータで、「Attributes」を選択します。
|
|
. |
リストから「EMPLOYEE_ID」属性を選択します。 EMPLOYEE_IDが外部キー属性として表示されていることを確認します。 名前を変更するには、最初にGeneral Optionの設定を変更する必要があります。 「Cancel」をクリックします。
|
|
. |
「Tools」→「General Options」の順に選択します。
|
|
. |
「Model」を展開し、「Logical」を選択します。 「Keep as the name of the Originating attribute」オプションの選択を解除して、「OK」をクリックします。
|
|
. |
「Sales」サブタイプをもう一度ダブルクリックします。
|
|
. |
左側のナビゲータで、「Attributes」を選択します。
|
|
. |
リストから「EMPLOYEE_ID」属性を選択します。 EMPLOYEE_IDをAccount Managerに変更して、「OK」をクリックします。
|
|
. |
もう1つ、Non-Salesという名前のサブタイプを作成します。 「New Entity」アイコンをクリックし、続いてダイアグラムの空白部分をクリックします。
|
|
. |
名前にNon-Salesと入力し、スーパータイプで「EMPLOYEES」を選択して、左側のナビゲータで「Attributes」をクリックします。
|
|
. |
「Add Attribute」アイコンをクリックします。
|
|
. |
名前にBonus Amountと入力し、データ型で「Logical」を選択します。 論理タイプのドロップダウン・リストで「NUMERIC」を選択して、Precisionに10、Scaleに2 入力します。次に「OK」をクリックします。
|
|
. |
Non-Salesサブタイプが正しく作成されました。 両方のサブタイプの位置を揃えると、表示を最適化できます。 [Ctrl]を押しながら、「Sales」サブタイプと「Non-Sales」サブタイプの両方を選択します。 次に、「Edit」メニューから、「Align Left」を選択します。
|
|
. |
サブタイプの位置が正しく揃えられました。 次の項では、新しいリレーショナル・モデルへのフォワード・エンジニアリングを実行します。
|
この項では、論理サブビューから新しいリレーショナル・モデルへのフォワード・エンジニアリングを実行します。 次の手順を実行してください。
|
. |
サブビューからリレーショナル・モデルへのフォワード・エンジニアリングを実行するには、最初に新しいリレーショナル・モデルを作成する必要があります。 左側のナビゲータで、「Relational Models」を右クリックして、「New Relational Model」を選択します。
|
||||||||
|---|---|---|---|---|---|---|---|---|---|
|
. |
リレーショナル・モデルRelational_2が正しく作成されました。
|
||||||||
|
. |
EMPLOYEESスーパータイプのフォワード・エンジニアリング戦略とそのサブタイプを表示するには、「Logical-SubView_1」タブを選択し、「EMPLOYEES」スーパータイプ・エンティティをダブルクリックします。
|
||||||||
|
. |
フォワード・エンジニアリング戦略のリストを確認します。 このフィールドが現時点ではSingle Tableに設定されていることに注意してください。これは、スーパータイプおよび両方のサブタイプからの属性がすべて、リレーショナル・モデルの1つのテーブルにエンジニアリングされることを意味しています。 この設定はそのままにしておきます。
|
||||||||
|
. |
左側のナビゲータで、「Attributes」をクリックします。
|
||||||||
|
. |
「COMMISSION_PCT」属性を選択して、「Remove」アイコンをクリックします。
|
||||||||
|
. |
「OK」をクリックします。
|
||||||||
|
. |
これで、リレーショナル・モデルを作成する準備ができました。 「Engineer to Relational Model」アイコンをクリックします。
|
||||||||
|
. |
左側のドロップダウン・リストで、「Logical - SubView_1」を選択します。 右側のドロップダウン・リストで、「Relational_2」を選択します。 両側のツリーを展開すると、モデルがどのようにエンジニアリングされ、またどのオブジェクトが影響を受けるかを確認できます。 確認が完了したら、「Engineer」をクリックします。
|
||||||||
|
0 . |
論理モデルのサブビューに対してエンジニアリングが実行され、その結果が表示されています。 リレーショナル・モデルのEMPLOYEES表に、サブタイプ・エンティティに含まれる属性が表示されていることを確認します。 この後は、追加された列の名前を変更します。 「EMPLOYEES」表をダブルクリックします。
|
||||||||
|
. |
左側のナビゲータで、「Columns」をクリックします。
|
||||||||
|
. |
次のように名前を変更して、「OK」をクリックします。
|
||||||||
|
. |
これで変更が正しく反映されました。 次の項では、Employee Addressの型を作成します。
|
この項では、emp_address_typという新しい型を作成します。 次の手順を実行してください。
|
. |
データ型モデルを表示します。 Browserツリーで、「DataTypes」を右クリックして「Show」を選択します。
|
||||||
|---|---|---|---|---|---|---|---|
|
. |
「New Structured Type」アイコンをクリックし、続いてダイアグラムの空白部分をクリックします。
|
||||||
|
. |
名前にemp_address_typと入力し、左側のナビゲータで「Attributes」をクリックします。
|
||||||
|
. |
「Add」アイコンをクリックします。
|
||||||
|
. |
名前にstreetと入力し、データ型で「Logical」を選択します。 タイプのドロップダウン・リストで「VARCHAR」を選択して、サイズに40と入力します。 別の属性を作成します。 「Add」アイコンをクリックします。
|
||||||
|
. |
名前にcityと入力し、データ型で「Logical」を選択します。 タイプのドロップダウン・リストで「VARCHAR」を選択して、サイズに30と入力します。 さらに2つの属性を作成します。 「Add」アイコンをクリックします。
|
||||||
|
. |
前の手順を繰り返してさらに2つの属性を作成し、「OK」をクリックします。
|
||||||
|
. |
作成したデータ型が表示されます。 このデータ型を、EMPLOYEES表の新しい列に割り当てます。 「Relational_2」タブをクリックします。
|
||||||
|
. |
「EMPLOYEES」表をダブルクリックします。
|
||||||
|
0 . |
左側のナビゲータで、「Columns」を選択します。
|
||||||
|
. |
「Add Column」アイコンをクリックします。
|
||||||
|
. |
名前にAddressと入力します。 「Structured」データ型をクリックして、ドロップダウン・リストから「emp_addtress_typ」を選択します。
|
||||||
|
. |
「OK」をクリックします。
|
||||||
|
. |
これで表が更新され、emp_address_typを使用する新しい列が追加されました。 次の項では、Address列のスーパータイプ・エンティティEMPLOYEESへのリバース・エンジニアリング(論理モデルへのエンジニアリング)を実行します。
|
この項では、EMPLOYEES表に追加した列から、論理モデル内のスーパータイプ・エンティティへのエンジニアリングを実行します。 次の手順を実行してください。
|
. |
「Relational_2」タブを選択して、「Engineer to Logical Model」アイコンをクリックします。
|
|---|---|
| . |
「Relational_2」の下にある「Tables mapped to Hierarchies」を展開します。 2番目の「EMPLOYEES」ノードを展開し、次にその中にある「Columns」を展開します。 このノードは、論理モデルの「Sales」サブタイプに対応しています。 Address列はSalesサブタイプに追加しないため、 「Address」の前にあるチェック・ボックスの選択を解除します。
|
| . |
論理モデルで「Non-Sales」エンティティに対応している「EMPLOYEES」ノードを展開し、次に「Columns」を展開します。 Address列は、Non-Salesサブタイプに追加しないため、 「Address」の前にあるチェック・ボックスの選択を解除します。
|
| . |
ツリーを上方向にスクロールして最初の「EMPLOYEES」ノードを展開し、スーパータイプに追加されるAddress列を表示します。 「Address」の前にあるチェック・ボックスにチェックが入っていることを確認します。 次に、「Engineer」をクリックします。
|
| . |
論理モデルが表示されます。 「Logical - SubView_1」タブをクリックします。
|
|
. |
Address列がEMPLOYEESスーパータイプに追加されたことを確認します。 この列が、SalesまたはNon-Salesサブタイプに追加されることはありません。
|
このチュートリアルで学習した内容は、次のとおりです。
![]()