Skip to content

SQL から ER 図を作成:MySQL 外部キーの設定 ​

DDLBuilder でリレーションを設計できます。既存の CREATE TABLE 文がある場合は、先に SQL をインポートしてください。設計後は ORM モデル生成に進めます。

このガイドでは、DDLBuilder の**「外部キー設定パネル」および「インタラクティブ ER 図キャンバス」**を用いた視覚的なリレーション設計と参照整合性制約の定義手順を解説します。

例:注文とユーザーの多対一リレーション ​

この例では MySQL の物理外部キーを使用します。1 人のユーザーに複数の注文があり、各注文は必ず 1 人のユーザーを参照します。関連付ける両カラムは符号付きの INT です。

2 つのテーブルを準備する ​

以下の SQL をコピーし、DDLBuilderで MySQL を選択して SQL インポートを実行します。両テーブルがワークスペースに保存されていることを確認してください。詳しい手順は SQL のインポートと解析を参照してください。

sql
CREATE TABLE users (
  id INT NOT NULL,
  name VARCHAR(100) NOT NULL,
  PRIMARY KEY (id ASC)
);

CREATE TABLE orders (
  id INT NOT NULL,
  user_id INT NOT NULL,
  PRIMARY KEY (id ASC)
);

リレーションを作成して ER 図を確認する ​

  1. ER 図を開き、orders.user_id から users.id へドラッグします。
  2. 物理外部キー、多対一(N:1)、**必須(Required)**を選択します。削除時の動作を RESTRICT、更新時の動作を CASCADE に設定します。
  3. リレーション名を fk_orders_user に設定し、検索用インデックスの自動作成は選択しません。リレーションを作成し、orders を保存します。

矢印は外部キーカラムから参照先の主キーを指します。

text
orders.user_id (N) ───→ users.id (1)

ER 図では物理外部キーが実線で表示されます。users.id は主キーです。orders.user_id は NOT NULL ですが、一意制約はないため複数の注文が同じユーザーを参照できます。

生成された SQL を確認する ​

orders を選択すると、DDL に以下の内容が含まれます。書式設定によって空白や改行は異なる場合があります。

sql
CREATE TABLE orders (
  id INT NOT NULL,
  user_id INT NOT NULL,
  PRIMARY KEY (id ASC)
);

ALTER TABLE orders ADD CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT ON UPDATE CASCADE;

SQL を実行する場合は、先に users を作成し、その後で orders の作成文と外部キー定義を実行します。RESTRICT は注文から参照されているユーザーの削除を防ぎます。CASCADE はユーザーの主キー更新時に注文の参照値も更新します。MySQL では InnoDB など外部キーに対応したストレージエンジンを使用してください。

業務上の関連だけを記録する場合は、論理リレーションを選択します。この場合、上記の ALTER TABLE による外部キー定義は生成されません。次に ORM モデル生成でテーブルがコードに変換される例を確認できます。

物理外部キーを作成しない論理リレーション ​

物理外部キーのないシステムでも業務上の関連を記録できます。先に両方のテーブルをワークスペースへ保存してください。

  1. ER 図で参照元フィールドの接続点から参照先フィールドの接続点へドラッグします。
  2. ウィザードで 論理リレーション を選択し、フィールド、基数、任意性を確認して業務上の説明を入力します。
  3. 関連を作成します。参照先には主キーや一意インデックスは不要です。

論理リレーションは破線で表示され、ラベルに基数と任意性が表示されます。ラベルにカーソルを合わせると説明を確認できます。外部キーパネルにも種類が表示されます。図またはパネルから削除でき、パネルで名前を変更できます。

論理リレーションは設計意図のみを記録し、制約やインデックスの作成、NULL 許可の変更は行いません。DDL、ORM、ALTER、ロールバック出力にも含まれません。テーブル、バージョン履歴、共有、同期とともに保持されます。以下の物理外部キーの一意性やカスケードの制限は適用されません。

概要 ​

複数テーブル間(例: ユーザーと注文、部署と従業員)の参照関係を定義し、カスケード更新/削除ルールを明確にし、システム全体のエンティティ関係トポロジーを視覚的に俯瞰できます。


主な操作手順 ​

1. インタラクティブ ER 図からのリレーション作成(推奨) ​

  1. 接続元のテーブルと接続先のテーブルの両方がワークスペースに保存されていることを確認します。
  2. テーブル設定ヘッダー上部の**「ER 関連図」**ボタンをクリックしてキャンバスを開きます。
  3. ドラッグ接続: 接続元カラムの右端ハンドルから、接続先カラムの左端ハンドルへドラッグして線を繋ぎます。
  4. リレーション作成ウィザードでの設定:
    • カラムの確認: 接続元と接続先のカラムを自動確認します(接続先は単一カラムの主キーまたは一意キーに限られます)。
    • カーディナリティの選択: 多対 1(N:1) または 1 対 1(1:1) を選択します。1 対 1 を選ぶと、接続元カラムにユニーク制約が自動付与されます。
    • 必須/オプショナルの選択: 必須(Required)(接続元を NOT NULL に設定)または 任意(Optional)(接続元を NULL 許容に設定)を指定します。
    • カスケードルールとインデックス: ON DELETE / ON UPDATE の動作(NO ACTION、CASCADE、SET NULL など)を指定し、外部キー列への検索インデックス自動作成の要否を選択します。
  5. **「リレーションを作成」**をクリックすると、外部キー制約、NULL 許容設定、インデックスがテーブルにアトミックに反映され、ER 図上に接続線が表示されます。

2. 外部キー設定パネルからの手動作成 ​

  1. 「外部キー設定」タブに切り替えます。
  2. **「外部キーを追加」**をクリックして編集行を展開します。
  3. 外部キー名を入力し、現在のカラム、参照先テーブル、参照先カラムを選択します。
  4. 必要に応じて 更新ルール(ON UPDATE) と 削除ルール(ON DELETE) を設定します。
  5. 右側の DDL パネルに CONSTRAINT ... FOREIGN KEY ... REFERENCES ... 構文が追加されます。

3. ER 図のレイアウト整理と操作 ​

  • ノード配置と自動レイアウト: テーブルカードをドラッグして見やすく配置するか、ツールバーの「自動整列」ボタンを利用します。
  • ズームとパン: マウスホイールで拡大縮小、ドラッグでキャンバス全体を自由に移動できます。
  • 関係線の管理: 線上のバッジをクリックしてルールを確認したり、削除アイコンから外部キーをワンクリックで削除できます。

完了のチェックリスト ​

  • [ ] 外部キー設定パネルおよび ER 図上にリレーションが正しく表示されている。
  • [ ] 右側の DDL に構文的に正しい外部キー制約が出力されている。
  • [ ] 1:1 関係にはユニーク制約が付与され、頻出結合カラムにインデックスが配置されている。

注意事項 ​

データ型の互換性と参照条件

参照先カラムは単一カラムの主キーまたは一意キーである必要があります。また、双方のカラムのデータ型および符号属性(UNSIGNED 等)が完全に一致している必要があります。

  • SET NULL と NOT NULL の不整合: 削除ルールに SET NULL を指定する場合、接続元カラムは NULL 許容でなければなりません。
  • 同名テーブルの識別: ER 図はテーブルの一意な識別子に基づいてノードを管理し、同名テーブルを混同しません。