【PostgreSQL】 「pgAdmin 4」ER図の自動作成

pgAdmin 4 ER図の自動作成

ER図(エンティティ・リレーションシップ図)とは、データベースの設計や分析に使用される図で、データの構造を視覚的に表現するためのものです。ここでは、pgAdmin4 で外部キー制約を利用してER図を自動作成する方法を紹介します。

自動作成するER図

下記に示す「仕入先」「商品」「顧客」「購入テーブル」のER図を自動作成します。

  • 「商品テーブル」の複数の商品は、「仕入先テーブル」の仕入れ先から仕入れています。
  • 「購入テーブル」は、どの顧客が何の商品をいつ購入したかを記録するテーブルです。


エンティティ


ER図作成用データベースの作成

先ずは、「purchase_db」データベースを作成して、この中に上記4個のテーブルを作成します。

  • 左メニューの「データベース(1)」を右クリックして「作成」→「データベース」を選択します。


データベース作成ダイアログボックスの「データベース名」にデータベース名称を入力して「保存」ボタンをクリックします。


入力した名称のデータべースが作成されました。


ER図作成用 各テーブルの作成

「purchase_db」の「スキーマ」を展開し「テーブル」を右クリック、「作成」→「テーブル」を選択します。



テーブル作成ウィザードで、「名前」にテーブル名称「supplier_tbl」を入力し、「General」タブ右側の「列」タブをクリックします。



右側の「+」ボタンをクリックして「列」入力欄を作成し、下図のように「名前」「データ型」「NOT NULL」「主キー」を入力します。本テーブルの「主キー」は「supplier_id」です。全て入力したら「保存」ボタンをクリックしてテーブルを作成します。



作成されたテーブル「supplier_tbl」です。



「supplier_tbl」のようにして、「customer_tbl」「merchandise_tbl」「purchase_tbl」を作成します。



ER図自動作成の為の、外部キー制約の設定

  • ①「仕入れ先」テーブルと「商品テーブル」の「外部キー制約」
    「商品テーブル」にある複数の商品は、「仕入れ先」テーブルにある「仕入れ先」から仕入れています。その為、「仕入れ先」テーブルと「商品テーブル」に「外部キー制約」を設定します。

「merchandise_tbl」 →「制約」→「作成」→「外部キー」を選択します。


「外部キー制約」の名称を入力します。ここでは分かり易いように「仕入先テーブル」の主キー「supplier_id」を入力しています。


「列」タブをクリックし、下記の情報を入力します。

  • ①ローカル列
    「商品テーブル」の外部キー「supplier_id]を入力
  • ②参照テーブル
    ①のローカル列が参照しているテーブル「public.supplier_tbl」を入力
  • ③参照列
    「public.supplier_tbl」の参照している列「supplier_id」を入力
  • ④「Add」ボタン
    「外部キー制約」を追加する為、「Add」ボタンをクリックします。


下図のように「外部キー制約」が追加されます。


同じようにして、「顧客テーブル」と「購入テーブル」の「外部キー制約」と、「顧客テーブル」購入テーブル」の「外部キー制約」を作成します。

作成したら、「purchase_db」を右クリックして「データベースに対するERD」を選択します。


そうすると、下図のようにER図が自動作成されます。テーブル位置の関係で見難いですが、見易いように調整して下さい。


SQLによるER図の自動作成

上記でも紹介したように、テーブル間の関連付け(リレーションシップ)を行うには、主に外部キー制約(Foreign Key Constraint)を使ってテーブル同士の関係を設定します。以下に例を挙げて説明します。


ER図自動作成 データモデルの例

まず、簡単なデータモデルとしてここでは、ユーザーと注文の関係を例にします。

  • users テーブル:ユーザーの情報を保持します。
  • orders テーブル:各ユーザーの注文情報を保持します。

ここで、ordersテーブルは users テーブルに関連付けられており、注文をしたユーザーの情報を示すために users_id という外部キーを使います。


ER図自動作成用 テーブルの作成と関連付け

以下のSQLステートメントで、2つのテーブルを作成し、 users_id を使って関連付けを行います。

-- users テーブルの作成
CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,  -- 主キー
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

-- orders テーブルの作成
CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,  -- 主キー
    order_date DATE NOT NULL,
    amount DECIMAL(10, 2) NOT NULL,
    user_id INT NOT NULL,  -- 外部キーとして設定するカラム
    FOREIGN KEY (user_id) REFERENCES users(user_id)  -- usersテーブルのuser_idを参照する外部キー制約
);


外部キー制約の説明

上記の例では、 以下のようにordersテーブルの user_id カラムが外部キー制約として設定されています。

  • user_idが外部キー(FOREIGN KEY)として設定され、usersテーブルのuser_idを参照しています。
  • これにより、ordersテーブルのuser_idに存在する値は、必ずusersテーブルのuser_idに存在していなければならず、一貫性を保ちます。


ER図の自動作成

このように関連付けを定義し、「データベースに対するERD」を選択することで、users テーブルとorders テーブルのER図が自動作成されます。

タイトルとURLをコピーしました