erwin Data Modeler - erwinマクロ 活用例 - Ⅰ

モデリングにおいて、どのような命名規則を採用されていますか? 良い命名規則はデータの可読性を高め、データモデルと情報システムの質を高めます。

論理設計で属性を分析する

論理設計で属性を分析してみると、属性をいくつかの種類に分類できることが分かります。 いかに分類するかを考えてみると、属性の”型”による分類が考えられます。

erwinでは、属性の型を論理ドメインとして定義することができます。 erwinには、最上位の”<デフォルト>”論理ドメインの配下に”BLOB”、”数値”、”日付/時刻”、”文字列”の4つの論理ドメインがデフォルトで準備されています。 たとえば、”文字列”という論理ドメインを考えてみると、その配下には”住所”、”電話番号”、”名前”などの属性の型、つまり論理ドメインが想像されます。

論理設計を始める前に論理ドメインを洗い出しておくと、データ項目(つまり属性)を部品化することができます。この作業により業務の用語集が完成したら、その用語集を元に論理設計を進めれば高品質のデータモデルをスムーズに設計できます。

たとえば、[従業員]エンティティ、[顧客]エンティティ、[会社]エンティティなど複数のエンティティで使用される”電話番号”という属性は、各エンティティで個別に作成するのではなく、業務用語集(論理ドメイン)から作成することができます。

erwinは論理ドメインに登録したドメインをモデル エクスプローラおよび[ドメイン ディクショナリ]ダイアログ ボックスで管理しています。モデル エクスプローラの[モデル]タブの[ドメイン]ノードから論理ドメインをエンティティへドラッグ&ドロップすることにより、論理ドメインから直接、エンティティ内へ属性を作成することができます。当然、このようにして作成された属性は、論理ドメインで定義された属性プロパティをすべて継承して作成されます。

ここで注目していただきたいのは、モデル エクスプローラからドラッグ&ドロップでエンティティに作成された属性には元のドメインと同じ名前が付いている点です。

これは論理ドメインに属性に継承する名前はドメインの名前を付けなさいという定義が行われているからなのです。

論理ドメインの[属性に継承される名前]ボックスをカスタマイズして、erwinマクロを利用した属性の命名規則を埋め込みます。たとえば、以下の命名規則を実現するためのerwinマクロを定義します。

属性の名前には必ずエンティティ名を接頭語として付ける。

この命名規則を実現するために、論理ドメインの[属性に継承される名前]ボックスにerwinマクロを利用した”%OwnerEntity%AttDomain”を定義します。

どんなエンティティであっても予め洗い出した業務用語集(論理ドメイン)から属性を作成すれば必ず同じ命名規則が適用されます。erwinの機能を使用せずにエンティティ毎に個別に属性を作成する場合は、各モデラーに命名規則を周知させる必要があります。 もちろん命名規則の周知は必要なことですが、erwinはマクロ機能を利用して命名規則の更なる徹底を支援することができます。

物理設計において

テーブルやカラムをデータベースへ実装するときには、論理名とは異なった別の名前を命名する場合も多いでしょう。当然、物理名においてもしっかりとした命名規則が求められます。 erwinは、ドメインの物理定義を利用して命名規則の徹底を支援できます。erwinはドメインの論理定義と物理定義を別々に設定できるので、たとえば、”電話番号”という論理ドメインの[属性に継承される名前]ボックスには”%OwnerEntity%AttDomain”を定義しましたが、同じ”電話番号”ドメインの物理定義では[カラムに継承される名前]というボックスが別に準備されていますので、論理とは異なった物理定義が行えます。

ドメイン名 属性に継承される名前 カラムに継承される名前
電話番号 %OwnerEntity%AttDomain %OwnerTable_tel_no

これにより現在のカラムを所有するテーブルの名前、そしてドメインに応じて定義されたアルファベットのカラム接尾語を結合したカラム名が自動的に定義されます。

テーブル名 + ドメインに応じた接尾語

テーブル名が日本語で”従業員”と命名されていれば、カラムは”テーブル名”+”tel_no”で”従業員_tel_no”となります。この日本語のテーブル名をアルファベットの”JUGYOIN”と変更すれば、その瞬間から”JUGYOIN_tel_no”とカラム名が変更されます。 さらに、カラム名はアルファベットの小文字で統一したいので、文字列を小文字に変換するマクロを追加します。 サンプル ファイルには以下のような論理定義/物理定義が設定されています。

ドメイン名 属性に継承される名前 カラムに継承される名前
電話番号 %OwnerEntity%AttDomain %lower(%OwnerTable_tel_no)
住所 同上 %lower(%OwnerTable_address)
コード 同上 %lower(%OwnerTable_code)
番号 同上 %lower(%OwnerTable_number)

サンプル ファイルをダウンロードして実際にerwinマクロを活用したサンプルを使用してみて、皆様のモデリングにお役立てください。

サンプル ファイルのダウンロード ダウンロード(19 KB)

サンプル ファイルの使い方

ダウンロードしたsample1.zipを解凍し、ERwin4.1.4またはr7でsample1.er1を開きます。モデル エクスプローラの[モデル]タブを開き[ドメイン]ノードからドメインをエンティティへドラッグ&ドロップします。 試しに”写真”という論理ドメインを[製品]エンティティへドラッグ&ドロップしてみてください。論理ドメインの[属性に継承される名前]のerwinマクロにより”製品写真”という属性が作成されたことが分かりましたでしょうか? 次はダイアグラムの下部にある[物理]ストアド ディスプレイ タブをクリックして物理モデルに切り替えてください。先ほど作成した”製品写真”属性は、物理ドメインの[カラムに継承される名前]のerwinマクロにより自動的に”seihin_picture”というカラム名が命名されています。 これらの命名自動化を行っているerwinマクロを見るには、[モデル]メニューの[ドメイン ディクショナリ]をクリックして、[ドメイン ディクショナリ]ダイアログ ボックスを開き、ドメインに定義された[属性に継承される名前]、[カラムに継承される名前]を確認してください。

マクロについて

論理モデル
erwinマクロ設定場所 設定したerwinマクロ
論理ドメインの[属性に継承される名前] %OwnerEntity%AttDomain
物理モデル
erwinマクロ設定場所 設定したerwinマクロ
物理ドメインの[カラムに継承される名前] %lower(%OwnerTable_picture)など
マクロ説明
erwinマクロ名 erwinマクロ説明
%OwnerEntity エンティティ名を返します
%AttDomain 属性に設定されたドメイン名を返します
%lower(<マクロ コード>) 展開した<マクロ コード>を小文字に変換します
%OwnerTable テーブル名を返します

解凍されるファイル

sample1.er1

ページの先頭へ