0
0

Oracle SQL Developer Data ModelerのDDLからのリバース・エンジニアリング機能

Posted at

はじめに

Oracle DBaseCamp というセミナー・シリーズでSQL Developer Data Modelerについて言及していたので、中の資料で使われていたであろう(勝手な想像)DDL文をもとに、リバース・エンジニアリング機能でER図を作成してみます。

なお、こちらでKawauchiさんがSQL DeveloperのData Modeler機能をつかって、データディクショナリからのインポート機能を紹介していますのであわせてご確認ください。

ダウンロードとインストール

SQL Developer Data Modelerのダウンロードは こちら です。
Google検索からたどってもよいですが、オラクル社のサイトでは以下のようなリンクをたどると良いです。
オラクル社のHome Page ⇒ 「Resources」タブ ⇒ 「Downloads」の「Developer Downloads」
Pasted image 20240502094149.png
こちらの一覧から「SQL Developer Data Modeler」を選択
Pasted image 20240502094232.png

現時点のバージョンは23.1.0.087 ビルド087.0806です。
インストールは Windows環境であれば「JDK included」と記載あるものをダウンロードして、適当なフォルダ内でZipファイルを解凍して実行するだけです。(手元環境はMacなので割愛)

SQL DeveloperにもData Modeler機能が付属していますが、いかにも機能を足しましたというインターフェースなので、主にER図などを扱う場合はこちらを利用した方が良いと考えています。
20240502_SQLDeveloperDataModeler01.png

DDLを用意する

参考にするDBaseCampのセミナー資料はこちら
P15の第3正規化の4つの表を作成します。文字列長や数字の桁数はなんとなくの設定です。

create table "商品" (
"商品番号" VARCHAR2(10),
"商品名" VARCHAR2(100),
"単価" NUMBER(10),
CONSTRAINT "pk_商品" PRIMARY KEY ("商品番号") USING INDEX
);

create table "顧客" (
"顧客番号" NUMBER(10),
"顧客名" VARCHAR2(100),
CONSTRAINT "pk_顧客" PRIMARY KEY ("顧客番号") USING INDEX
);

create table "受注" (
"受注番号" NUMBER(10),
"受注日" DATE,
"顧客番号" NUMBER(10),
CONSTRAINT "pk_受注" PRIMARY KEY ("受注番号") USING INDEX
);
ALTER TABLE "受注" ADD CONSTRAINT "fk_受注_顧客" FOREIGN KEY ("顧客番号") REFERENCES "顧客"("顧客番号");

create table "明細" (
"受注番号" NUMBER(10),
"商品番号" VARCHAR2(10),
"個数" NUMBER(10),
CONSTRAINT "pk_明細" PRIMARY KEY ("受注番号","商品番号") USING INDEX
);
ALTER TABLE "明細" ADD CONSTRAINT "fk_明細_受注" FOREIGN KEY ("受注番号") REFERENCES "受注"("受注番号");
ALTER TABLE "明細" ADD CONSTRAINT "fk_明細_商品" FOREIGN KEY ("商品番号") REFERENCES "商品"("商品番号");

これを 20240502_DBaseCamp12.sql としてファイルに保存します。

DDLインポート

キャプチャ画面はMacなのでWindows環境の方は適宜読み替えてください。

「ファイル」メニューから「インポート」⇒「DDLファイル」を選択。
Pasted image 20240502102436.png
Pasted image 20240502102227.png
「OK」ボタンを押すと、データベースとそのバージョンの選択肢がでてくるので今回は「Oracle Database 21c」を選択して「OK」ボタンを押します。
Pasted image 20240502102552.png
DDL文に誤りが無いかをチェックし、問題ないDDL文がインポートされます。(ログは不要であれば保存しなくてもよいです)
Pasted image 20240502103537.png
「モデルの比較」ウィンドウが表示されるので、ここではそのまま「マージ」
Pasted image 20240502103608.png
リレーショナル・モデルができました。
Pasted image 20240502103753.png

論理モデルへのリバース・エンジニアリング

ここから論理モデルへとリバース・エンジニアリングをおこないます。
Pasted image 20240502103844.png
左向きの矢印2つのアイコンが「論理モデルに対するエンジニアリング」です。
Pasted image 20240502104006.png
ここではそのまま「エンジニア」ボタンを押します。
Pasted image 20240502104052.png
セミナー資料のP17と同じER図ができました。
見た目を並べ替えることもできます。
Pasted image 20240502104306.png
なお、上記はBarker記法の論理モデルですが、Bachman記法も選択できます。
「表示」メニューから「論理ダイアグラムの注釈」⇒「Bachman注釈」を選択。
Pasted image 20240502104447.png
矢印などの記法が変わったことがわかります。
Pasted image 20240502104552.png
「情報エンジニアリング注釈」はIE(Information Engineering)記法です。利用しやすいものをご利用ください。
Pasted image 20240502104910.png
余談ですが、Barker記法はOracle SQL Developer Data Modelerの前身?であるOracle Designerで取り入れられました。そのためオラクル社のツールでは現在も利用されているようです。

最後に

ER図を作成する機会は少なくなってきたと思いますが、一連のDDLからどのようなシステムかを俯瞰して確認することができるので、Oracle Developer Data Modelerのリバース・エンジニアリング機能を知っていると重宝することもあると思います。

以前から提供されているOracle SQL Developer Data Modelerの機能の一つをご紹介しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0