はじめに
このチュートリアルでは、既存のデータベーススキーマをリレーショナルモデルおよび論理モデルにリバースエンジニアリングするために使用できるOracle SQL DeveloperDataModelツールを紹介します。エンティティ、属性、識別子、および関係で構成されるエンティティ関係モデルとしてモデル化されたビジネスユーザー要件から始まる典型的なデータベース開発プロセスについて考えてみます。次に、このE-Rモデルは、リレーション、属性、キー、および外部キーで構成されるリレーショナルモデルに変換されます。リレーショナルモデルは、テーブル、列、および一意の主キーと外部キーの制約を含む制約のセットとして、リレーショナルデータベースに実装できます。
リレーショナルデータベーススキーマがすでに実装されているが、データベースの設計に使用された元のリレーショナルモデルまたはエンティティリレーションシップモデルが不足している状況に遭遇する可能性があります。このような状況では、リバースエンジニアリングによってE-Rモデルを再作成できる可能性があります。 データベーススキーマからのモデル。これを実現するには、次の手順を実行する必要があります。
- データベーススキーマを接続し、既存のすべてのテーブル、それらの列、およびそれらの主キーと外部キーの制約を特定します。
- 既存のテーブルと制約のセットに対応するリレーショナルモデルを構築します。
- リレーショナルモデルからE-Rモデルを推測します。
データモデルの用語
Oracle SQL Developerは、アカデミック・データベース・コースで通常使用される用語とは少し異なる用語を使用します。データベース・スキーマから抽出された物理モデル(キー、外部キー関係、および索引を含む)は、Oracle SQLDeveloperでは「リレーショナル・モデル」と呼ばれます。リレーションシップラインを持つエンティティのセットは、OracleSQLDeveloperでは「論理モデル」と呼ばれます。
前提条件
このチュートリアルを開始する前に、OracleSQLDeveloperバージョン4.x以降を使用していることを確認してください。残念ながら、Oracle 12cは、データモデリングツールがないバージョン3.xのSQLDeveloperとともに出荷される可能性があります。
SQL Developerを入手してインストールする必要がある場合、またはSQL Developerの使用を開始するためのヒントが必要な場合は、チュートリアルを参照してください。
Oracle11gおよびOracle12cに付属する「HR」(またはその他の)サンプルスキーマの資格情報(ホスト名、ポート、サービス名、ユーザー名、およびパスワード)も必要です。
次の手順は、Oracle12cデータベースのサンプルスキーマ「HR」に接続されたWindows7上のSQLDeveloper4.1を使用して実行されました。
データベーススキーマからのリレーショナルモデルのリバースエンジニアリング
- Oracle SQL Developerを実行し、使用するデータベース・スキーマへの接続を作成します。この例では、Oracle11gおよびOracle12cに付属するHumanResourcesサンプルデータベースである「HR」スキーマへの接続を作成しました。
- [ファイル]メニューをプルダウンし、[データモデラー]、[インポート]サブメニューの順に選択します。以下に示すように、フライアウトメニューから[データディクショナリ]を選択します。これにより、データディクショナリインポートウィザードが起動します:
- 使用する接続を選択します。 [追加]ボタンをクリックして、新しい接続を追加することもできます。接続を強調表示したら、[次へ>]ボタンをクリックして続行します。
- 次のステップは、インポートするスキーマを選択することです。この例では、以下に示すように、「HR」スキーマのチェックボックスをオンにしました。 「ImportTo:」を選択すると、New Relational Modelが表示され、データベースのタイプはOracle12cであることに注意してください。 [次へ>]ボタンをクリックして続行します:
次のページの次の一連の手順では、モデルにインポートするデータベースオブジェクトの選択について説明します。
- 次のステップは、インポートするデータベースオブジェクトを選択することです。この演習では、インポートするすべてのテーブルを選択します。ビュー、シーケンス、ロール、ストアドプロシージャなど、インポートされる可能性のある他のデータベースオブジェクトがあることに注意してください。この演習では、単純に保ち、表を確認します。テーブルを選択したら、[次へ>]ボタンをクリックして続行します。
- インポートウィザードの最後のステップは、インポートするデータベースオブジェクトを確認することです。すべて問題がなければ、[完了]ボタンをクリックしてインポートを開始します。
- この時点で、インポートするテーブルの数に応じて、次のような進行状況バーが表示される場合があります。
- 完了すると、[概要ログ]ウィンドウが表示されます。
失敗したステートメントがある場合は、このログを保存して、デバッグに役立ててください。
- インポートプロセスがエラーなしで完了したと仮定すると、新しいリレーショナルモデルがウィンドウに表示されます。あなたは素敵な配置をするためにテーブルの周りを移動したいかもしれません。モデルは「Crow’s Foot」表記を使用しており、「crow’sfoot」は関係の「Many」側を表しています。たとえば、1つの「地域」には多くの「国」があります。 1つの「国」には多くの「場所」などがあります。
- キャンバスを右クリックして[詳細の表示]メニュー項目を選択すると、リレーショナルモデルに表示される詳細のレベルを変更できます。
覚えておくと、ほとんどの実務家は、データベーススキーマに実装されているデータ型、キー、外部キー、およびインデックスが含まれているため、通常、これを「物理データベースモデル」と呼びます。
モデルを保存する手順は、次のページに示されています。
- この時点で、モデルにはUntitled_1などの一時的な名前が付けられます。 「ブラウザ」でこのモデルを表示するには、[表示]メニューをプルダウンし、[データモデラー]、[ブラウザ]の順に選択します。 Untitled_1デザインを開き、次にリレーショナルモデルを開き、最後に以下に示すように接続にちなんで名付けられたモデルを開きます。
- Untitled_1デザインを右クリックし、[デザインの保存]メニュー項目をクリックします。適切なフォルダに移動して作業を保存し、デザインにファイル名を付けます。準備ができたら、[保存]ボタンをクリックします。
この時点で、(Oracleが呼んでいる)リレーショナルモデルができました。これは、基本的に、インポートしたばかりのリレーショナルデータベーススキーマのミラーです。実際、SQL Developerはこれら2つの同期を維持するため、データベーススキーマが変更された場合、これはリレーショナルモデルに反映され、リレーショナルモデルに変更が加えられた場合、データベーススキーマにプッシュ(実装)できます。
このモデルは、すべてのテーブル(関係)、キー、外部キー、チェック制約、および一意性を強制する場合と強制しない場合があるインデックスを表示します。たとえば、以下のEMPLOYEESリレーションには、主キーEMPLOYEE_ID、3つの外部キー(JOB_ID、MANAGER_ID、およびDEPARTMENT_ID)、およびEMAIL列に対する1つの一意性制約があります。
次のページの次の一連の手順では、リバースエンジニアリングプロセスを続行して論理モデルを作成する方法について説明します。
実体関連モデルのリバースエンジニアリング
この時点で、データベーススキーマをリレーショナルモデルにリバースエンジニアリングしました。これはかなり単純なプロセスです。最後のステップは、リバースエンジニアリングを続行して、エンティティリレーションシップモデルを作成することです。 Oracleはこれを「論理モデル」と呼んでいることに注意してください。
- データモデルブラウザに戻り、以下に示すように、リレーショナルモデルと論理モデルのフォルダを開きます。
- リレーショナルモデル(私たちの名前はsfscdb_pdb2_hr)を右クリックし、以下に示すように、ポップアップメニューから[エンジニアから論理モデル]を選択します。
- エンジニアから論理モデル ダイアログボックスは次のように表示されます。表と参照のそれぞれをチェックする必要があります。各テーブルはエンティティにマップされ、各外部キー参照はエンティティ間の関係にマップされる必要があります。左側のウィンドウから適切な要素をすべて選択したら、[エンジニア]ボタンをクリックして論理(ER)モデルを作成します。
- 新しいエンティティリレーションシップモデルは、次のように表示されます。デフォルトでは、「Crow’sFoot」またはBarkerの表記が使用されます。
関係の詳細(Oracleは紛らわしいことに「関係」と呼んでいます)は、関係行をダブルクリックすると表示できます。以下の例では、EmployeesエンティティとJobsエンティティの間の関係が開いています。 「ソース上の名前」フィールドと「ターゲット上の名前」フィールドに動詞句を指定することにより、各関係を非常に詳細に完全に指定できます。
次の図は、次のように完全に定義された関係を示しています。
One JOB may be a job performed by One or More EMPLOYEES One EMPLOYEE must be performing One and Only One JOB
ERモデルのデフォルトの表記法は、Crow’sFootまたはBarker表記法です。表記をBachmanまたはInformationEngineering表記に変更するには、図の任意の場所を右クリックして、[Notation]メニュー項目を強調表示します。ポップアップ表示されるリストから、使用可能な表記法のいずれかを選択します。
NewNoteツールを使用してERモデルにタイトルやその他の詳細を追加できます