廣瀬製紙株式会社

Employees' Blog

【連載】ReactでMCPクライアントを作る!(第三回)

公開日:2025.05.12 更新日:2025.05.12
サーバーのイラストと記事タイトル

PostgreSQLのインストールと設定

PostgreSQLをインストールする前に、まずは公式サイトにアクセスしましょう。お使いのPC環境に合わせたインストーラーを選択してダウンロードします。
インストール時に注目したいのが、postgresへのアクセスに必要なパスワード設定です。このパスワードは後の作業で使用しますので、必ずメモを取っておきましょう。
インストールが完了したら、付属のGUIツール「pgAdmin4」を使ってデータベースの作成を行います。pgAdmin4は、インストールしたフォルダ内にある実行ファイルをダブルクリックすることで起動できます。
pgAdmin4を使ってデータベースを作成する手順は以下の通りです:

  • 1. 画面左側のブラウザペインで「Databases」を右クリック
  • 2. 表示されたメニューから「Create」→「Database」を選択
  • 3. データベース名として「mydb」と入力(この名前は任意のもので構いませんが、今回はこの名前で進めます)
  • 4. Owner(所有者)は「postgres」がデフォルトで選択されているはずですので、そのまま使用
  • 5. 「Save」ボタンをクリックして保存

Screenshot of pgAdmin4

データベースが作成できたら、次はクエリツールを使ってSQLを実行します。「mydb」を右クリックして「Query Tool」を選択すると、SQLを入力・実行できるウィンドウが開きます。ここで必要なSQLクエリを入力し、画面上部にある再生ボタン(▶️)をクリックすることで、クエリを実行することができます。クエリは下記を参考に、適宜アレンジしてください。

-- customers テーブルの作成
CREATE TABLE customers (
    customer_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    company_name TEXT NOT NULL,
    contact_name TEXT,
    city TEXT,
    phone TEXT
);

-- orders テーブルの作成
CREATE TABLE orders (
    order_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    customer_id INT NOT NULL REFERENCES customers(customer_id) ON DELETE CASCADE,
    order_date DATE NOT NULL,
    shipped_date DATE,
    ship_city TEXT
);

-- products テーブルの作成
CREATE TABLE products (
    product_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    product_name TEXT NOT NULL,
    unit_price NUMERIC(10, 2) NOT NULL,
    units_in_stock INT NOT NULL,
    discontinued BOOLEAN NOT NULL DEFAULT FALSE
);

-- order_details テーブルの作成
CREATE TABLE order_details (
    order_id INT REFERENCES orders(order_id) ON DELETE CASCADE,
    product_id INT REFERENCES products(product_id) ON DELETE CASCADE,
    quantity INT NOT NULL,
    unit_price NUMERIC(10, 2) NOT NULL,
    PRIMARY KEY (order_id, product_id)
);

-- customers テーブルにデータ挿入
INSERT INTO customers (company_name, contact_name, city, phone) VALUES
('山田商事株式会社', '山田 太郎', '東京', '03-xxxx-xxx'),
('鈴木産業株式会社', '鈴木 花子', '大阪', '06-xxxx-xxxx'),
('田中電機株式会社', '田中 一郎', '名古屋', '052-xxx-xxxx'),
('佐藤食品株式会社', '佐藤 次郎', '札幌', '011-xxx-xxxx'),
('高橋化学株式会社', '高橋 三郎', '福岡', '092-xxx-xxxx'),
('中村物流株式会社', '中村 佳子', '仙台', '022-xxx-xxxx'),
('小林建設株式会社', '小林 裕子', '広島', '082-xxx-xxxx'),
('加藤印刷株式会社', '加藤 健', '金沢', '076-xxx-xxxx'),
('伊藤通信株式会社', '伊藤 美咲', '新潟', '025-xxx-xxxx'),
('渡辺工業株式会社', '渡辺 昇', '静岡', '054-xxx-xxxx');

-- orders テーブルにデータ挿入
INSERT INTO orders (customer_id, order_date, shipped_date, ship_city) VALUES
(1, '2025-04-01', '2025-04-03', '東京'),
(2, '2025-04-02', '2025-04-04', '大阪'),
(3, '2025-04-03', '2025-04-05', '名古屋'),
(4, '2025-04-04', '2025-04-07', '札幌'),
(5, '2025-04-05', '2025-04-06', '福岡'),
(6, '2025-04-06', '2025-04-08', '仙台'),
(7, '2025-04-07', '2025-04-09', '広島'),
(8, '2025-04-08', NULL,         '金沢'),
(9, '2025-04-09', '2025-04-10', '新潟'),
(10, '2025-04-10', NULL,        '静岡');

-- products テーブルにデータ挿入
INSERT INTO products (product_name, unit_price, units_in_stock, discontinued) VALUES
('コピー用紙 A4 500枚',          480.00, 200, FALSE),
('ボールペン(黒インク)',        120.00, 500, FALSE),
('リングノート(B5 方眼)',      350.00, 300, FALSE),
('付箋(75×75mm, 黄色)',         180.00, 250, FALSE),
('ホッチキス(中型)',            680.00, 100, FALSE),
('USBメモリ 32GB',               1280.00, 150, FALSE),
('デスクマット(透明)',         980.00, 80, FALSE),
('クリアファイル A4 10枚セット', 400.00, 300, FALSE),
('インクカートリッジ(黒)',      2500.00, 60, FALSE),
('ノートパソコンスタンド',       2980.00, 40, TRUE);

-- order_details テーブルにデータ挿入
INSERT INTO order_details (order_id, product_id, quantity, unit_price) VALUES
(1, 1, 10, 480.00),
(1, 2, 5, 120.00),
(2, 3, 7, 350.00),
(2, 4, 3, 180.00),
(3, 5, 2, 680.00),
(4, 6, 1, 1280.00),
(5, 7, 4, 980.00),
(6, 8, 8, 400.00),
(7, 9, 2, 2500.00),
(8, 10, 1, 2980.00);

Screenshot of pgAdmin4-2

pgAdmin4を使えば、比較的簡単にデータベース環境を整えることができますね。