💻 Claude Code入門 📖 約22分で読めます

Claude Codeでデータベース設計を相談・実装する

ER図からマイグレーションまでDB設計をAIに相談

クロガイド

クロガイド|Claude&Claude Codeを無料で学ぼう

AI基礎からプロンプト術、Claude Codeの使い方まで。知識レッスンとクイズ式トレーニングで、AIスキルを段階的にアップ。ユーザー登録不要、すべて無料で今すぐ始められます。

データベース設計にClaude Codeを活用する理由

データベース設計は、アプリケーションの性能と保守性を左右する重要な工程です。テーブル構造、リレーション、インデックス、正規化の判断には経験と知識が必要ですが、Claude Codeに相談しながら設計を進めることで、経験の浅いエンジニアでも品質の高いDB設計が可能になります。

Claude Codeに相談できるDB設計の範囲

  • ER図・テーブル設計: エンティティの抽出、リレーション定義、正規化
  • スキーマ定義: SQL DDL、ORMスキーマの生成
  • マイグレーション: スキーマ変更のマイグレーションファイル作成
  • シードデータ: テスト用の初期データ生成
  • クエリ最適化: 遅いクエリの分析と改善
  • インデックス戦略: 適切なインデックスの設計

ステップ1: 要件からエンティティを抽出する

まず、アプリケーションの要件をClaude Codeに伝えて、必要なエンティティ(テーブル)を洗い出してもらいます。

エンティティ抽出の会話例

あなた: ECサイトのデータベースを設計したいです。要件は以下の通りです。
- 会員登録・ログイン
- 商品カテゴリ(階層構造あり)
- 商品(複数画像、バリエーション対応)
- カート機能
- 注文・決済
- レビュー(星評価+テキスト)
- お気に入り
テーブル一覧とリレーションを提案してください。

Claude Code: ECサイトの要件を分析し、以下のエンティティを提案します。

## エンティティ一覧
| テーブル名 | 説明 | 主なリレーション |
|-----------|------|----------------|
| users | 会員情報 | → orders, reviews, favorites, cart_items |
| categories | 商品カテゴリ | → categories(自己参照), products |
| products | 商品 | → categories, product_images, product_variants |
| product_images | 商品画像 | → products |
| product_variants | 商品バリエーション | → products |
| cart_items | カート内商品 | → users, product_variants |
| orders | 注文 | → users, order_items |
| order_items | 注文明細 | → orders, product_variants |
| reviews | レビュー | → users, products |
| favorites | お気に入り | → users, products |

## リレーション図(テキスト版)
users 1──N orders
users 1──N reviews
users 1──N favorites
users 1──N cart_items
categories 1──N categories(親子)
categories 1──N products
products 1──N product_images
products 1──N product_variants
products 1──N reviews
orders 1──N order_items
product_variants 1──N order_items
product_variants 1──N cart_items

ステップ2: スキーマの詳細設計

エンティティが決まったら、各テーブルのカラム定義を詳細に設計します。データ型、制約、デフォルト値なども含めてClaude Codeに生成してもらいましょう。

SQLスキーマの生成

あなた: 上記のエンティティに基づいて、PostgreSQL用のCREATE TABLE文を
生成してください。以下の点を考慮してください。
- UUIDを主キーに使用
- created_at / updated_at を全テーブルに追加
- 適切なINDEXを含める
- 外部キー制約を設定

Claude Code: PostgreSQL用のスキーマを生成します。

-- カテゴリ(自己参照で階層構造を実現)
CREATE TABLE categories (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    parent_id UUID REFERENCES categories(id) ON DELETE SET NULL,
    name VARCHAR(100) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE,
    description TEXT,
    sort_order INTEGER DEFAULT 0,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_categories_parent ON categories(parent_id);
CREATE INDEX idx_categories_slug ON categories(slug);

-- 商品
CREATE TABLE products (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    category_id UUID NOT NULL REFERENCES categories(id),
    name VARCHAR(200) NOT NULL,
    slug VARCHAR(200) NOT NULL UNIQUE,
    description TEXT,
    base_price DECIMAL(10,2) NOT NULL CHECK (base_price >= 0),
    is_published BOOLEAN DEFAULT false,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_products_category ON products(category_id);
CREATE INDEX idx_products_published ON products(is_published)
    WHERE is_published = true;

-- 商品バリエーション
CREATE TABLE product_variants (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    product_id UUID NOT NULL REFERENCES products(id) ON DELETE CASCADE,
    sku VARCHAR(50) NOT NULL UNIQUE,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) NOT NULL CHECK (price >= 0),
    stock_quantity INTEGER NOT NULL DEFAULT 0 CHECK (stock_quantity >= 0),
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_variants_product ON product_variants(product_id);
CREATE INDEX idx_variants_sku ON product_variants(sku);

ステップ3: マイグレーションの作成

本番環境で運用を始めた後にスキーマを変更する場合、マイグレーションファイルが必要です。Claude Codeにスキーマ変更の要件を伝えて、安全なマイグレーションを生成してもらいましょう。

マイグレーション生成の依頼

あなた: productsテーブルに以下の変更を加えるマイグレーションを作成してください。
- tagsカラム(TEXT配列)を追加
- weight_gramカラム(INTEGER)を追加
- descriptionをTEXTからJSONBに変更(多言語対応のため)
ダウンタイムなしで実行できるようにしてください。

Claude Code: 安全なマイグレーションを生成します。
ダウンタイムを避けるため、段階的に実行する構成にします。

-- Migration: 20240315_add_product_fields.sql

-- Step 1: 新しいカラムを追加(NULLABLEで追加→ロックなし)
ALTER TABLE products ADD COLUMN tags TEXT[] DEFAULT '{}';
ALTER TABLE products ADD COLUMN weight_gram INTEGER;

-- Step 2: 多言語対応のためdescriptionをJSONBに移行
-- 既存データを保持するため、新カラムを追加してデータを移行
ALTER TABLE products ADD COLUMN description_jsonb JSONB;

-- Step 3: 既存データの移行
UPDATE products SET description_jsonb = jsonb_build_object(
    'ja', COALESCE(description, '')
) WHERE description_jsonb IS NULL;

-- Step 4: カラム名変更(アプリケーション側の切り替え後に実行)
-- ALTER TABLE products DROP COLUMN description;
-- ALTER TABLE products RENAME COLUMN description_jsonb TO description;

-- インデックスの追加
CREATE INDEX idx_products_tags ON products USING GIN(tags);

-- ロールバック用
-- ALTER TABLE products DROP COLUMN tags;
-- ALTER TABLE products DROP COLUMN weight_gram;
-- ALTER TABLE products DROP COLUMN description_jsonb;

ステップ4: クエリ最適化の相談

遅いクエリをClaude Codeに見せて、最適化してもらうことができます。EXPLAINの結果も一緒に渡すと、より正確な改善案が得られます。

クエリ最適化の依頼テンプレート

あなた: 以下のクエリが遅いです(実行時間: 3.2秒)。
最適化してください。

[遅いクエリのSQL]

EXPLAIN ANALYZEの結果:
[EXPLAINの出力]

テーブル定義:
[CREATE TABLE文]

データ量:
- productsテーブル: 約50万件
- ordersテーブル: 約200万件

ステップ5: シードデータの生成

開発やテストに必要な初期データもClaude Codeに生成してもらえます。リアルに近いダミーデータを大量に生成するスクリプトも作成可能です。

シードデータ生成の依頼

あなた: 開発用のシードデータを作成してください。
- カテゴリ: 3階層、合計20件
- 商品: 各カテゴリに5-10件、リアルな日本語商品名
- ユーザー: テスト用5名
- レビュー: 各商品に0-5件、自然な日本語レビュー文

Claude Code: リアルなシードデータを生成します。

-- カテゴリ(3階層)
INSERT INTO categories (id, parent_id, name, slug) VALUES
('cat-01', NULL, 'ファッション', 'fashion'),
('cat-02', NULL, '家電・PC', 'electronics'),
('cat-03', NULL, '食品・飲料', 'food'),
('cat-04', 'cat-01', 'メンズ', 'fashion-mens'),
('cat-05', 'cat-01', 'レディース', 'fashion-womens'),
('cat-06', 'cat-04', 'Tシャツ', 'fashion-mens-tshirts'),
('cat-07', 'cat-04', 'パンツ', 'fashion-mens-pants'),
-- ... 省略

-- 商品(リアルな日本語商品名)
INSERT INTO products (id, category_id, name, slug, base_price) VALUES
('prod-001', 'cat-06', 'オーガニックコットン クルーネックTシャツ',
 'organic-cotton-crew-neck', 3980),
('prod-002', 'cat-06', 'ドライメッシュ スポーツTシャツ',
 'dry-mesh-sports-tee', 2480),
-- ... 省略

SQLとNoSQLの選択相談

プロジェクトの特性に応じて、RDB(PostgreSQL/MySQL)とNoSQL(MongoDB/DynamoDB)のどちらを選ぶべきかもClaude Codeに相談できます。

判断基準RDB向きNoSQL向き
データ構造構造化されたデータ、明確なスキーマ半構造化、スキーマが頻繁に変わる
リレーション複雑なリレーションが多いリレーションが少ない、埋め込みで十分
一貫性トランザクション必須(金融、EC等)結果整合性で十分
スケール垂直スケーリング中心水平スケーリング必須
クエリ複雑な検索・集計が必要キーアクセス中心

プロのヒント: Claude Codeにデータベース設計を相談する際は、「なぜその設計にしたのか」を説明してもらうよう依頼しましょう。理由を理解することで、将来の設計変更時にも適切な判断ができるようになります。また、正規化のレベル(第1〜第3正規形)についても意識的に議論すると、より堅牢な設計が得られます。

DB設計ワークフローのまとめ

  • エンティティ抽出: 要件からテーブル候補を洗い出し、リレーションを明確にする
  • スキーマ設計: カラム定義、制約、インデックスを含むDDLを生成する
  • レビューと改善: 正規化の観点で設計を見直し、冗長性を排除する
  • マイグレーション: スキーマ変更は必ずマイグレーションファイルで管理する
  • シードデータ: 開発・テスト用のリアルなダミーデータを生成する
  • クエリ最適化: 本番運用後のパフォーマンスチューニングにもClaude Codeを活用する

Claude Code入門の他のガイド

Claude Code導入ガイド ― Windows/Mac完全対応
Claude Codeのインストールから初回起動まで、OS別に完全対応 ・ 約30分
Claude Codeの主要スラッシュコマンドと活用法
16個のスラッシュコマンドを完全網羅。使い方・実行例・組み合わせテクニックまで ・ 約15分
Claude Codeの権限設定(パーミッション)完全ガイド
セキュリティと利便性を両立する権限管理の全知識 ・ 約18分
Claude Codeのモデル切り替え活用術 ― Opus・Sonnet・Haikuの使い分け
タスクに応じた最適なモデル選択でコストと品質を両立する方法 ・ 約15分
Claude Codeのセッション管理術 ― 効率的な作業の進め方
セッションの開始・継続・再開を使いこなして、長期プロジェクトを効率的に進める ・ 約12分
Claude Codeのコマンドラインオプション完全リファレンス
全CLIオプションを網羅。起動時に使える引数を徹底解説 ・ 約20分
Claude Codeのプロジェクト設定(.claude/)完全ガイド
.claudeディレクトリとCLAUDE.mdを使いこなしてチーム開発を効率化 ・ 約15分
Claude Codeの出力フォーマットとパイプ活用術
--printモードとパイプを使った自動化・スクリプト連携の実践テクニック ・ 約15分
Claude Codeのキーボードショートカットと操作効率化
知っておくべきショートカットキーと入力テクニックで作業速度を2倍に ・ 約12分
Claude Codeのアップデートとバージョン管理
最新版への更新方法からダウングレード、トラブル対処まで ・ 約10分
Claude Codeの/doctorコマンドとトラブル診断
問題発生時の診断フローとよくあるエラーの解決方法 ・ 約12分
CLAUDE.mdの書き方完全ガイド ― プロジェクト指示書のベストプラクティス
プロジェクトの文脈をAIに正確に伝える設定ファイルの書き方 ・ 約20分
Claude Codeのメモリ機能 ― 会話をまたいだ記憶の活用法
プロジェクト固有の知識を永続化して効率を最大化する ・ 約18分
.claude/settings.jsonの設定項目一覧と活用法
Claude Codeの動作を細かく制御する設定ファイルの全貌 ・ 約15分
プロジェクト別CLAUDE.mdテンプレート集 ― コピペで使える10パターン
React・Next.js・Python・PHP・WordPress等、主要技術スタック別テンプレート ・ 約25分
チーム開発でのCLAUDE.md運用術
チーム全員がAIを最大限活用するための共有設定と運用ルール ・ 約20分
Claude CodeでGitを使いこなす ― 基本操作編
自然な日本語でGitを操作する方法を基本から解説 ・ 約20分
Claude Codeでコミットメッセージを自動生成する
変更内容を分析して最適なコミットメッセージを提案してくれるAI活用術 ・ 約18分
Claude CodeでPR(プルリクエスト)を作成・レビューする
AI支援によるPR作成からコードレビューまでの実践的ワークフロー ・ 約20分
Claude Codeでブランチ戦略を実践する
Git Flow・GitHub Flow・トランクベースを理解し、AIで効率的にブランチを管理 ・ 約20分
Claude Codeでコンフリクト解決をAIに任せる
マージの衝突が起きても慌てない。AIによるコンフリクト解決の実践ガイド ・ 約18分
Claude Codeでgit logを分析して変更履歴を理解する
コミット履歴からバグの原因特定やプロジェクトの変遷を把握する ・ 約22分
Claude Codeでリリースノートを自動生成する
コミット履歴からユーザー向け・開発者向けリリースノートを作成する ・ 約20分
Claude Codeのコンテキスト節約術 ― トークンを無駄にしない10の方法
コンテキストウィンドウを理解し、トークン消費を最適化するテクニック集 ・ 約18分
/compactコマンド徹底解説 ― 会話を圧縮して作業を続ける
/compactの仕組み・使いどころ・カスタム指示を完全網羅 ・ 約15分
大規模プロジェクトでのClaude Code活用戦略
大規模コードベースでの効率的なAI活用パターンとベストプラクティス ・ 約20分
.gitignoreとClaude Code ― 読み込みファイルの最適制御
ファイル探索の仕組みを理解し、ノイズを減らして精度を上げる ・ 約14分
効率的なタスク分割術 ― 1セッションの最適な使い方
タスク境界の見極めとセッション計画で生産性を最大化 ・ 約16分
Claude CodeのSkills機能入門 ― カスタムコマンドで作業を効率化
組み込みスキルからカスタムワークフローまで完全ガイド ・ 約15分
Claude Codeのフック(Hooks)でワークフローを自動化する
PreToolUse・PostToolUseフックで品質と安全性を自動で担保 ・ 約18分
カスタムスラッシュコマンドの作り方 ― 自分だけのワークフローを構築
.claude/commands/ディレクトリで独自コマンドを定義する方法 ・ 約16分
MCPサーバーでClaude Codeを拡張する ― 外部ツール連携ガイド
Model Context Protocolで無限の拡張性を手に入れる ・ 約18分
Claude CodeとVS Code・JetBrainsの連携活用法
ターミナルAIとIDEを組み合わせた最強の開発環境構築 ・ 約15分
Claude Codeでウェブサイトを0から作る実践ガイド
プロジェクト作成からデプロイまでの完全チュートリアル ・ 約20分
Claude Codeでテストコードを書かせるテクニック
単体テストからE2Eテストまで、AIによるテスト自動生成 ・ 約22分
Claude Codeでリファクタリングを効率化する
安全なコード改善をAIと一緒に進める方法 ・ 約22分
Claude Codeでドキュメントを自動生成する
README・API文書・コードコメントを効率的に作成 ・ 約20分
Claude Codeでバグを素早く見つけて修正するテクニック
エラー解析からホットフィックスまでのデバッグワークフロー ・ 約20分
Claude CodeでREST APIを設計・実装する
要件定義からテストまでAPI開発の全工程をAIと進める ・ 約25分
Claude Codeで既存プロジェクトを分析・理解する
新しいコードベースのオンボーディングをAIで加速 ・ 約22分

Claude Code入門のレッスンも読む

読んだら、次はクイズで確認!

トレーニングで学んだ知識を定着させましょう。

Claude Code入門のトレーニングへ