SQL から ER 図を作成:MySQL 外部キーの設定
DDLBuilder でリレーションを設計できます。既存の CREATE TABLE 文がある場合は、先に SQL をインポートしてください。設計後は ORM モデル生成に進めます。
このガイドでは、DDLBuilder の**「外部キー設定パネル」および「インタラクティブ ER 図キャンバス」**を用いた視覚的なリレーション設計と参照整合性制約の定義手順を解説します。
例:注文とユーザーの多対一リレーション
この例では MySQL の物理外部キーを使用します。1 人のユーザーに複数の注文があり、各注文は必ず 1 人のユーザーを参照します。関連付ける両カラムは符号付きの INT です。
2 つのテーブルを準備する
以下の SQL をコピーし、DDLBuilderで MySQL を選択して 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 図を確認する
- ER 図を開き、
orders.user_idからusers.idへドラッグします。 - 物理外部キー、多対一(N:1)、**必須(Required)**を選択します。削除時の動作を
RESTRICT、更新時の動作をCASCADEに設定します。 - リレーション名を
fk_orders_userに設定し、検索用インデックスの自動作成は選択しません。リレーションを作成し、ordersを保存します。
矢印は外部キーカラムから参照先の主キーを指します。
orders.user_id (N) ───→ users.id (1)ER 図では物理外部キーが実線で表示されます。users.id は主キーです。orders.user_id は NOT NULL ですが、一意制約はないため複数の注文が同じユーザーを参照できます。
生成された SQL を確認する
orders を選択すると、DDL に以下の内容が含まれます。書式設定によって空白や改行は異なる場合があります。
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 モデル生成でテーブルがコードに変換される例を確認できます。
物理外部キーを作成しない論理リレーション
物理外部キーのないシステムでも業務上の関連を記録できます。先に両方のテーブルをワークスペースへ保存してください。
- ER 図で参照元フィールドの接続点から参照先フィールドの接続点へドラッグします。
- ウィザードで 論理リレーション を選択し、フィールド、基数、任意性を確認して業務上の説明を入力します。
- 関連を作成します。参照先には主キーや一意インデックスは不要です。
論理リレーションは破線で表示され、ラベルに基数と任意性が表示されます。ラベルにカーソルを合わせると説明を確認できます。外部キーパネルにも種類が表示されます。図またはパネルから削除でき、パネルで名前を変更できます。
論理リレーションは設計意図のみを記録し、制約やインデックスの作成、NULL 許可の変更は行いません。DDL、ORM、ALTER、ロールバック出力にも含まれません。テーブル、バージョン履歴、共有、同期とともに保持されます。以下の物理外部キーの一意性やカスケードの制限は適用されません。
概要
複数テーブル間(例: ユーザーと注文、部署と従業員)の参照関係を定義し、カスケード更新/削除ルールを明確にし、システム全体のエンティティ関係トポロジーを視覚的に俯瞰できます。
主な操作手順
1. インタラクティブ ER 図からのリレーション作成(推奨)
- 接続元のテーブルと接続先のテーブルの両方がワークスペースに保存されていることを確認します。
- テーブル設定ヘッダー上部の**「ER 関連図」**ボタンをクリックしてキャンバスを開きます。
- ドラッグ接続: 接続元カラムの右端ハンドルから、接続先カラムの左端ハンドルへドラッグして線を繋ぎます。
- リレーション作成ウィザードでの設定:
- カラムの確認: 接続元と接続先のカラムを自動確認します(接続先は単一カラムの主キーまたは一意キーに限られます)。
- カーディナリティの選択: 多対 1(N:1) または 1 対 1(1:1) を選択します。1 対 1 を選ぶと、接続元カラムにユニーク制約が自動付与されます。
- 必須/オプショナルの選択: 必須(Required)(接続元を
NOT NULLに設定)または 任意(Optional)(接続元をNULL許容に設定)を指定します。 - カスケードルールとインデックス:
ON DELETE/ON UPDATEの動作(NO ACTION、CASCADE、SET NULLなど)を指定し、外部キー列への検索インデックス自動作成の要否を選択します。
- **「リレーションを作成」**をクリックすると、外部キー制約、NULL 許容設定、インデックスがテーブルにアトミックに反映され、ER 図上に接続線が表示されます。
2. 外部キー設定パネルからの手動作成
- 「外部キー設定」タブに切り替えます。
- **「外部キーを追加」**をクリックして編集行を展開します。
- 外部キー名を入力し、現在のカラム、参照先テーブル、参照先カラムを選択します。
- 必要に応じて 更新ルール(ON UPDATE) と 削除ルール(ON DELETE) を設定します。
- 右側の DDL パネルに
CONSTRAINT ... FOREIGN KEY ... REFERENCES ...構文が追加されます。
3. ER 図のレイアウト整理と操作
- ノード配置と自動レイアウト: テーブルカードをドラッグして見やすく配置するか、ツールバーの「自動整列」ボタンを利用します。
- ズームとパン: マウスホイールで拡大縮小、ドラッグでキャンバス全体を自由に移動できます。
- 関係線の管理: 線上のバッジをクリックしてルールを確認したり、削除アイコンから外部キーをワンクリックで削除できます。
完了のチェックリスト
- [ ] 外部キー設定パネルおよび ER 図上にリレーションが正しく表示されている。
- [ ] 右側の DDL に構文的に正しい外部キー制約が出力されている。
- [ ] 1:1 関係にはユニーク制約が付与され、頻出結合カラムにインデックスが配置されている。
注意事項
データ型の互換性と参照条件
参照先カラムは単一カラムの主キーまたは一意キーである必要があります。また、双方のカラムのデータ型および符号属性(UNSIGNED 等)が完全に一致している必要があります。
- SET NULL と NOT NULL の不整合: 削除ルールに
SET NULLを指定する場合、接続元カラムはNULL許容でなければなりません。 - 同名テーブルの識別: ER 図はテーブルの一意な識別子に基づいてノードを管理し、同名テーブルを混同しません。