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

エンティティ作成後は、必要に応じてリレーションシップの設定を行います。
リレーションシップとは、例えば「請求書エンティティと請求書明細エンティティ」など、エンティティ同士に関連がある場合に、
その関連を線で表現したものです。(物理データベース上では外部キー制約に相当します。)

リレーションシップには大きくわけて依存型リレーションシップ、非依存型リレーションシップ、多対多リレーションシップがあります。
また、親エンティティの内容によって関連するエンティティが分類分けできるケースがありますが、このような時にはサブタイプリレーションシップを使用します。

依存型、非依存型のどちらかのリレーションシップを設定するかについては、
「親レコードが存在しない場合に子レコードが存在できるかどうか」の基準で決まります。
例えば、売上ヘッダと売上明細という２つのエンティティを考えた場合、
売上明細のレコードのみ存在し、売上ヘッダのレコードが存在しないということはありません。
つまり、売上明細は売上ヘッダに「依存」しているということになり、
このエンティティ間に設定するリレーションシップは「依存型リレーションシップ」となります。
また、上記のように親子関係がない場合は「非依存型リレーションシップ」となり、
社員エンティティと顧客エンティティなど、両者のレコード関係が多対多である場合は「多対多リレーションシップ」となります。

なお、依存型リレーションシップ、非依存型リレーションシップの物理データベース上の違いは、
「子テーブルに作成される外部キーが主キーになるかどうか」となります。
依存リレーションシップの場合、外部キーは主キーとなり、非依存リレーションの場合は非主キーとなります。
多対多リレーションシップは物理データベース上は何も影響しません。
(多対多リレーションシップの関係はRDBMS上で反映させることはできないため。
通常、物理設計時には多対多リレーションシップは存在してはいけません。
中間エンティティを作成し、１対多の依存リレーションシップに変換してください。)

■リレーションシップの作成
リレーションシップを設定するには、以下の手順で行います。

1.ツールバーから依存型リレーションシップをクリックします。
(非依存型リレーションシップを設定したい場合は非依存型リレーションシップをクリックします。)

・リレーションシップ**の選択**

2.親エンティティから子エンティティに向かってドラッグ＆ドロップします。

・ドラッグ＆ドロップ

エンティティの間にリレーションシップが設定されます。
リレーションシップ設定後は親エンティティの主キーが、子エンティティの外部キーとして作成されます。
外部キーは、依存型の場合は主キーになり、非依存型の場合は非主キーとして作成されます。

・リレーションシップ設定

また、カラム名は、親エンティティの主キー名と同じ名前になりますが、エンティティエディタにて変更することも出来ます。

関連の説明となる動詞句を設定することも出来ます。
リレーションシップの線上をダブルクリックし、リレーションシップエディタを開きます。[動詞句]を設定し、登録ボタンを押します。

・動詞句の設定

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

・動詞句が表示された
また、リレーションシップエディタではリレーションシップタイプ、カーディナリティを変更することも出来ます。
また、「使用キー」タブでは外部キー列名を変更することも出来ます。

・リレーションシップタイプ、カーディナリティ

・「使用キー」タブ

■サブタイプリレーションシップの作成
サブタイプリレーションシップを設定するには、以下の手順で行います。

1.ツールバーからサブタイプリレーションシップをクリックします。

2.スーパータイプのエンティティからサブタイプのエンティティへドラッグ＆ドロップします。

サブタイプリレーションシップが設定されます。

3.さらにサブタイプを追加したい場合は、ツールバーの「サブタイプリレーションシップ」をクリックし、
サブタイプ分類記号からサブタイプのエンティティへドラッグ＆ドロップします。

サブタイプが追加されます。