# ER図の作成

このトピックでは、SI Object Browser ERを使用してER図を作成するための基本的な操作方法を説明します。

■エンティティの作成

はじめに、エンティティの作成方法からご紹介します。ツールバーから「エンティティ」のアイコンをクリックまたは、「挿入」メニュー→「エンティティ」を選択します。

続けてモデルエクスプローラ上の作成したい箇所でマウスをクリックします。
これで、空のエンティティが作成されます。

続けてエンティティをダブルクリックします。 エンティティエディタが表示されますので、エンティティ名と、エンティティに含まれる属性情報(カラム名、データ型、長さなど)を入力します。
また、「主キー」となる項目については主キーのチェックをONにします。各属性情報の入力が完了後、登録ボタンを押します。

・エンティティエディタ

[エンティティ名]、[属性名]は論理名となり、[テーブル名]、[カラム名]は物理名となります。論理名(エンティティ名、属性名)はER図上のみの情報であるのに対し、物理データベースで適用される名前は物理名(テーブル名、カラム名)となります。一般的には、論理名はわかりやすい日本語、物理名はアルファベットにすると良いでしょう。

■リレーションシップの作成

続けて、リレーションシップの作成方法について解説します。リレーションシップを作成するにはツールバーから以下の赤枠のアイコンをクリックします。（左からサブタイプ、依存、非依存、多対多リレーションとなります。各リレーションシップの違いについてはこちらをご覧ください。）または「挿入」メニューより対象のリレーションシップを選択します。

続けて、親エンティティの上でマウスをクリック後、マウスボタンを上げずに子エンティティの上まで線を引くようにドラッグします。その後、マウスボタンを離します。

これで、エンティティの間にリレーションシップが設定されます。

リレーションシップ設定後は親エンティティの主キーが、子エンティティの外部キーとして自動的に追加されます。上記例では、「商品分類マスタ」エンティティの主キーである「商品分類コード」が「商品マスタ」の外部キーとして追加されています。（外部キー列名の最後には（FK)と表示されます。）外部キーは、依存型リレーションシップを引いた場合は主キー項目、非依存型の場合は非主キー項目として追加されます。外部キーのカラム名は、親エンティティの主キーのカラム名と同じ名前で作成されますが、エンティティエディタにて名前を変更することもできます。

また、リレーションシップの線上をダブルクリックすることで、リレーションシップエディタを開くことができます。リレーションシップエディタでは動詞句やカーディナリティなどの細かい設定が可能です。（なお、動詞句やカーディナリティは物理データベースには影響されることはありません。）

設定した動詞句がリレーションシップ上に表示されます。

また、「使用キー」タブでは外部キーの対象列を別のカラムに変更することもできます。

また、「定義」タブではリレーションシップの対象モデルが設定できます。既定では「論理モデルのみ」となりますが、「論理・物理モデル」または「物理モデル」のみに変更することで、次章で紹介するフォワードエンジニアリングの実行時に、外部キー制約として物理データベースに反映が可能です。

■その他の支援機能

また、SI Object BrowserではER図を効率よく作成するために以下の支援機能が備わっています。

１．モデルの表示切り替え
ツールバーにある以下のコンボボックスよりER図の表示を切り替えることが可能です。

「論理モデル」にした場合は、エンティティエディタで設定した論理名（エンティティ名、属性名）が表示され、「物理モデル」にした場合は、物理名（テーブル名、カラム名）が表示されます。また、「論・物表示」にした場合は、論理名、物理名が併記されます。

・論理モデルで表示

・物理モデルで表示

・論・物表示で表示

２．ドメイン

ドメインとは、列名やデータ型などの列の定義をテンプレートとしてひとまとめにしたものです。複数のエンティティに共通で使用する列に関してはあらかじめドメインを作成しておくことにより、効率よくエンティティを作成することができます。

ドメインを作成するにはモデルエクスプローラ上のドメインアイコン上で右クリックし、[新規作成]を選択します。

・モデルエクスプローラのアイコン上で右クリック

ドメインエディタが表示されます。任意のドメイン名および、カラム名、データ型等の情報を設定します。

ドメイン作成後は、エンティティエディタの「ドメイン」欄に作成したドメインを選択するか、モデルエクスプローラ上で対象のドメインをエンティティにドラッグ＆ドロップすることでエンティティのカラムとして追加することができます。設定後はドメインで指定したカラム名やデータ型が自動設定されます。

・エンティティエディタで選択

・モデルエクスプローラよりドラッグ＆ドロップで追加

また、エンティティの列をドメインから設定しておくと、後ほど、一括で列定義が変更できるようになります。例えば、上記「更新日時」のデータ型をDATEからCHARに変更したい場合、ドメインエディタにてデータ型の設定をCHARに変更することで、そのドメインを参照している全エンティティのデータ型が一律でCHARに変更されます。

３．サブモデル
シートを分割して表示する機能です。
エンティティをサブ機能ごとに別表示したい場合や、エンティティが多くER図が見づらい場合などに使用できます。

サブモデル機能を使用するには、下側のシート名の個所を右クリック　→　[サブモデルの作成]を選択します。

サブモデルエディタが表示されます。タイトルおよび、サブモデルで使用するオブジェクトを選択し、「OK」ボタンをクリックします。

これで別シートが作成され、選択したエンティティのみが表示されます。シート名はタイトルで入力した文字列になります。

なお、サブモデル内のエンティティの定義情報を修正した場合は、メインモデルの同エンティティにも反映(同期)されます。

ER図の作成方法については以上ですが、SI Object Browser ERでは作成したER図を元に物理データベースにスクリプト（DDL）を発行し、テーブルを作成することも可能です。詳しくは、次章のフォワードエンジニアリングの実行をご覧ください。