はじめに
Oracle DBaseCamp というセミナー・シリーズでSQL Developer Data Modelerについて言及していたので、中の資料で使われていたであろう(勝手な想像)DDL文をもとに、リバース・エンジニアリング機能でER図を作成してみます。
なお、こちらでKawauchiさんがSQL DeveloperのData Modeler機能をつかって、データディクショナリからのインポート機能を紹介していますのであわせてご確認ください。
ダウンロードとインストール
SQL Developer Data Modelerのダウンロードは こちら です。
Google検索からたどってもよいですが、オラクル社のサイトでは以下のようなリンクをたどると良いです。
オラクル社のHome Page ⇒ 「Resources」タブ ⇒ 「Downloads」の「Developer Downloads」
こちらの一覧から「SQL Developer Data Modeler」を選択
現時点のバージョンは23.1.0.087 ビルド087.0806です。
インストールは Windows環境であれば「JDK included」と記載あるものをダウンロードして、適当なフォルダ内でZipファイルを解凍して実行するだけです。(手元環境はMacなので割愛)
SQL DeveloperにもData Modeler機能が付属していますが、いかにも機能を足しましたというインターフェースなので、主にER図などを扱う場合はこちらを利用した方が良いと考えています。
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ファイル」を選択。
「OK」ボタンを押すと、データベースとそのバージョンの選択肢がでてくるので今回は「Oracle Database 21c」を選択して「OK」ボタンを押します。
DDL文に誤りが無いかをチェックし、問題ないDDL文がインポートされます。(ログは不要であれば保存しなくてもよいです)
「モデルの比較」ウィンドウが表示されるので、ここではそのまま「マージ」
リレーショナル・モデルができました。
論理モデルへのリバース・エンジニアリング
ここから論理モデルへとリバース・エンジニアリングをおこないます。
左向きの矢印2つのアイコンが「論理モデルに対するエンジニアリング」です。
ここではそのまま「エンジニア」ボタンを押します。
セミナー資料のP17と同じER図ができました。
見た目を並べ替えることもできます。
なお、上記はBarker記法の論理モデルですが、Bachman記法も選択できます。
「表示」メニューから「論理ダイアグラムの注釈」⇒「Bachman注釈」を選択。
矢印などの記法が変わったことがわかります。
「情報エンジニアリング注釈」はIE(Information Engineering)記法です。利用しやすいものをご利用ください。
余談ですが、Barker記法はOracle SQL Developer Data Modelerの前身?であるOracle Designerで取り入れられました。そのためオラクル社のツールでは現在も利用されているようです。
最後に
ER図を作成する機会は少なくなってきたと思いますが、一連のDDLからどのようなシステムかを俯瞰して確認することができるので、Oracle Developer Data Modelerのリバース・エンジニアリング機能を知っていると重宝することもあると思います。
以前から提供されているOracle SQL Developer Data Modelerの機能の一つをご紹介しました。