メインコンテンツまでスキップ

リレーションシップの編集

リレーションシップはキャンバスのコンテキストメニュー、またはショートカットで作成します。編集を始めるを参照してください。
このページでは、作成したリレーションシップに対してできることを説明します。

削除

リレーションシップのコンテキストメニューから削除できます。

コンテキストメニューから products と reviews の間のリレーションシップを削除

リレーションシップはテーブルやメモのようには選択しないため、ショートカットはありません。
リレーションシップは接続している対象とともに削除されます。テーブルを削除するとそのテーブルにつながるリレーションシップがすべて削除され、カラムを削除するとそのカラムを使うリレーションシップがすべて削除されます。

種類の変更

リレーションシップのコンテキストメニューから変更できます。
次の 4 つの種類から選択でき、現在の種類にはチェックが付きます。

  • Zero One
  • Zero N
  • One Only
  • One N

コンテキストメニューからリレーションシップの種類を Zero N から One Only、One N へ順に変更

これはリレーションシップの作成時に選ぶ 4 つの種類と同じで、それぞれにショートカットがあります。編集を始めるを参照してください。

N:M リレーションシップ

エディタは物理モデルをベースにしているため、N:M リレーションシップは下図のようにマッピングテーブルで表現します。

products と tags からマッピングテーブル product_tags へそれぞれリレーションシップを作成

GraphQL、DBML、AML を読み込むと、マッピングテーブルは自動で作成されます。
多対多の宣言は <left>_<right> という名前のテーブルとして読み込まれ、Junction table inferred from <left> <-> <right> というコメントが付き、識別リレーションシップで両側に接続されます。
ファイルの読み込みと書き出しを参照してください。

識別リレーションシップ

リレーションシップを作成すると、親テーブルの主キーが NOT NULL の外部キーカラムとして子テーブルにコピーされるため、作成した直後は非識別リレーションシップです。
識別リレーションシップにするには、子テーブルのその外部キーカラムを、ショートカット Alt + K またはテーブルのコンテキストメニューの Primary Key で主キーに設定します。

Alt + K で product_id を主キーに設定・解除し、コネクタが実線と破線に切り替わる様子

この状態はエディタが自動で同期します。
子側のカラムがすべて主キーである間は識別リレーションシップとなり、いずれかが主キーでなくなった時点で非識別リレーションシップに変わります。

コネクタの読み方

  • 識別リレーションシップは実線、非識別リレーションシップは破線で描画します。
  • 子側の端には、リレーションシップの種類に応じたカーディナリティ記号が付きます。Zero One は丸と棒、Zero N は丸と鳥の足、One Only は 2 本の棒、One N は棒と鳥の足です。
  • 親側の端は、外部キーカラムのいずれかが NULL を許可する場合は Zero One と同じ丸と棒、すべて NOT NULL の場合は One Only と同じ 2 本の棒になります。
  • コネクタにマウスを重ねると、そのコネクタと、それがつなぐ両方のテーブルのカラムが強調表示されます。

3 本のコネクタに順にマウスを重ね、それぞれがつなぐカラムとともに強調表示される様子

ERD キャンバスのコネクタを非表示にするには Relationship の表示オプションを使います。テーブル関連機能を参照してください。
Visualization タブの Flow モードは、このオプションがオフでもコネクタを描画します。各コネクタは同じ端の記号を持つ 1 本のなめらかな灰色の実線の曲線として描かれるため、このページで説明する破線と経路は ERD キャンバスにのみ当てはまります。

コネクタの経路

コネクタは直交する経路で描画します。
経路は両端の間にあるテーブルを横切らずに迂回し、角は 45 度に切り落とされます。
テーブルの同じ辺から出る経路は、互いに重ならないように別々の通り道へ分けられます。

設定する項目はありません。
キャンバス上の要素が移動したりサイズが変わったりするたびに経路を自動で再計算するため、手作業で調整する必要はありません。

members テーブルを下へドラッグして戻す間、categories を迂回するように再計算されるコネクタの経路