無料で ERD を作る初心者ガイド — アカウントなしで開始
データベース設計が初めての方向けに、無料の ERD エディタ Dr.ERD でアカウントを作らずに 3 テーブルの ERD をローカルで完成させる手順を順番に説明します。完成したモデルは自分のコンピューターの .drerd ファイルに保存します。
現在の記事: 無料 ERD 作成ガイド
1. ERD・テーブル・カラムとは
ERD(Entity Relationship Diagram)はデータベースの構造を図で表したものです。四角い箱がテーブル、テーブル内の 1 行がカラムです。保存したい対象がテーブルになり、その対象が持つ属性がカラムになります。データ 1 件は各カラムの値を 1 つずつ持つ行として保存されます。
- テーブル: 同じ種類のデータをまとめた表です。例: 会員、注文、注文明細。
- カラム: テーブルが保存する属性です。例: name(名前)、created_at(作成日時)。
- 行: 実際のデータ 1 件です。カラム定義が同じなら行が増えても構造は変わりません。
2. 主キー・外部キー・1:N リレーション
主キー(PK)は各行を識別するカラムで、外部キー(FK)は別のテーブルのキーを参照して 2 つのテーブルを結びます。1 人の会員が複数の注文を作れるとき、会員 1 : 注文 N のリレーションです。子側には注文がない会員もいるため、0 以上(0..N)と表します。この実習の 2 つのリレーションは、親のキーを子の PK に含めない非識別リレーションです。
- 外部キーのデータ型は参照するカラムと同じにする必要があります。members.id が BIGINT なら orders.member_id も BIGINT です。
- この実習では id の値を手入力します。自動採番(Identity)は使いません。
- N:M リレーションの中間テーブルは自動生成されません。必要な場合は自分で中間テーブルを作ります。
- リレーションを接続するには、親テーブルに先に主キーが必要です。
3. アカウントなしで作業フォルダーを準備
Dr.ERD はインストール不要で Chrome または Edge で動作します。会員登録をせず作業フォルダーを選ぶだけで ERD を作成でき、ローカル作業フォルダーの ERD は既定でサーバーにアップロードしません。チームで共同編集するには Google ログインが必要で、チーム文書は選択したチームに保存されます。AI チャットは任意機能で、自身で設定したうえで送信したメッセージに限り、現在の ERD の文脈が選択した提供元に送られます。
- 「エディタを開始」を選んでワークスペースを開きます。
- 「ワークスペースを選択」で .drerd ファイルを保存するフォルダーを選びます。
- ブラウザーがフォルダーへのアクセス許可を求めたら「許可」を選びます。
- デスクトップ版の Chrome と Edge でフォルダーの選択と保存に対応します。
- 同じフォルダーをもう一度開くと、以前のファイルがファイル一覧に表示されます。
4. 新しいモデルを作成し PostgreSQL 18 を選ぶ
ファイル一覧の「新しいモデル」を押して、この実習で使うモデルを作成します。対象データベースは例と同じ PostgreSQL 18 を選びます。「確認」を押すと空のキャンバスが開き、テーブルは自動では作成されません。
- ファイル一覧で「新しいモデル」を押します。
- ファイル名に first-erd を入力します。
- 対象データベースで PostgreSQL 18 を選び、「確認」を押します。
- 空のキャンバスが開いたら、上部のツールバーにある「テーブル」ボタンを押します。このボタンが有効な間だけテーブルを配置できます。
- キャンバスの空いている場所をクリックし、最初のテーブルを配置します。
5. テーブル 3 つとカラムを作成
手順 4 で最初のテーブルをすでに配置しているため、ここでは残り 2 つを追加して会員、注文、注文明細の 3 テーブルを完成させます。新しいテーブルには共通カラムの created_at と updated_at が自動で入るので、手順 4 で配置したテーブルを含む 3 つすべてで先にこの 2 つのカラムを削除します。その後、「カラムを追加」で行を作って物理名と型を入力し、id カラムで「PK を設定」を押します。orders.created_at は削除したうえで、この手順で「カラムを追加」から型 TIMESTAMP で作り直します。下記の一覧がこの実習で作成するカラムのすべてです。抜けがないか照合してください。
- 上部ツールバーの「テーブル」ボタンを押し、キャンバスの空いている場所をクリックしてテーブルを配置します。手順 4 で最初の 1 つを配置済みなので、この方法で残り 2 つを配置して合計 3 つにします。
- テーブルを編集状態で開き、カラム行の右側にあるゴミ箱(カラムを削除)ボタンで created_at と updated_at を 3 つのテーブルすべてから削除します。
- 「カラムを追加」でカラムを作り、物理名と型を入力します。
- 長さや小数桁が必要な型は値を入力します。例: VARCHAR(100)、NUMERIC(12,2)。
- orders.created_at はここで「カラムを追加」から作り、型を TIMESTAMP にします。既定の共通カラムはすでに削除したので名前が重複しません。
- id カラムで「PK を設定」を押し、主キーにします。
- テーブル名を members、orders、order_items にします。
- members: id BIGINT(PK)、name VARCHAR(100)
- orders: id BIGINT(PK)、member_id BIGINT(FK)、created_at TIMESTAMP
- order_items: id BIGINT(PK)、order_id BIGINT(FK)、product_name VARCHAR(100)、quantity INTEGER、unit_price NUMERIC(12,2)
- 新しいテーブルに自動で入る 2 つの共通カラム(created_at、updated_at)はどちらも削除し、orders.created_at だけを型 TIMESTAMP で追加し直します。そのため 3 テーブルのカラムは下記の 10 個と完全に一致します。
- 3 テーブルのカラムは合計 10 個です。リレーションを接続した後も 10 個のままにします。
- 下記の Mermaid は完成したモデルをテキストで表した参考です。物理名と型が上の一覧と一致するか確認してください。
erDiagram
members {
BIGINT id PK
VARCHAR(100) name
}
orders {
BIGINT id PK
BIGINT member_id FK
TIMESTAMP created_at
}
order_items {
BIGINT id PK
BIGINT order_id FK
VARCHAR(100) product_name
INTEGER quantity
NUMERIC(12,2) unit_price
}
members ||..o{ orders : "places"
orders ||..o{ order_items : "contains"6. リレーションを 2 つ接続
「リレーションツール」の 1:N ボタンを押し、親テーブルと子テーブルを順にクリックするとリレーション設定画面が開きます。「識別リレーション」はオフのままにし、参照キーで PK を選び、「参照キー → FK」で既に作成した外部キーカラムを選びます。
- 「リレーションツール」の 1:N ボタンを押してツールを有効にします。
- 親テーブル members をクリックし、続けて子テーブル orders をクリックします。最初のクリックが親、2 回目が子です。
- 開いた設定画面で「識別リレーション」はオフのままにします。非識別リレーションは FK を自動追加し、対象の PK には含めません。
- 参照キーで PK を選びます。members の主キー id が参照キーになります。
- 「参照キー → FK」で id 行の選択欄を開き、「+カラムを追加」ではなく既にある member_id を選びます。「+カラムを追加」のままだと id_2 が新しく作られ、カラム数が増えます。
- 「適用」を押してリレーションを保存します。
- 同じ手順で 1:N ボタンを押し直し、親 orders、子 order_items を順にクリックします。参照キー PK の id を既にある order_id に対応させ、「適用」を押します。
- どちらのリレーションも 0 以上(0..N)を許可します。注文がない会員も、明細がない注文も作成できます。
- 外部キーの型が参照カラムと異なる場合はエラーとして案内します。
- リレーションを 2 つ接続した後も、テーブルは 3 つ、カラムは 10 個です。カラムが増えていたら「参照キー → FK」で「+カラムを追加」を選んでいます。
7. すべてのカラムを必須にする
この実習では値が必ず必要なカラムでモデルを完成させます。「カラム詳細」で「NULL 許可」を切ると、そのカラムに空の値を保存できなくなります。
- 「テーブルを編集」でカラムを選びます。
- 「カラム詳細」で「NULL 許可」を切ります。
- 3 テーブルの 10 カラムすべてに繰り返します。
- 「NULL 許可」がオンのままだと空の値を保存できます。
- エクスポートした DDL では「NULL 許可」を切ったカラムが NOT NULL として出力されます。
8. 保存して開き直す
Ctrl+S または Cmd+S で作業フォルダーの .drerd ファイルに保存します。ファイル一覧から同じファイルを開き直すと、保存した内容がそのまま表示されます。
- Ctrl+S または Cmd+S を押します。
- 未保存の表示が消え、保存済みになったことを確認します。
- ファイル一覧から first-erd を開き直します。
- テーブル 3 つ、リレーション 2 つ、必須カラムの設定が変わっていないか確認します。
- 完成結果: テーブル 3 つ、非識別 0..N のリレーション 2 つ、主キー 3 つ、外部キー 2 つ。
- 保存したファイルは、選択した作業フォルダーの .drerd ファイルです。
9. よくある問題の解決
作業中に多い 3 つの状況と確認方法です。
- フォルダー権限: ブラウザーがアクセス許可を求めたら「許可」を選びます。拒否した場合や接続が切れた場合は、「ワークスペースを選択」または「フォルダーを再接続」で同じフォルダーを選び直します。
- リレーションが未設定のまま: 関係の参照キーと FK 対応を設定してください。親テーブルに主キーを先に指定してから接続します。
- 必須カラムのエラー: 必須にしたカラムで「NULL 許可」が切れているか確認します。空の値を許容するカラムでなければ切ったままにします。
10. 次のステップ
完成したモデルを書き出して、実際のデータベースやドキュメントに活用してみましょう。
- SQL エクスポートで PostgreSQL 18 の DDL を作成し、実際のデータベースに適用できます。
- Mermaid エクスポートはドキュメントやレビューへの貼り付けに適しています。