Skip to content

データベーススキーマ設計をClaudeと行う

スキーマ設計はシステムの土台であり、後から直すほどコストが高い作業です。「とりあえず動くテーブル」を作るのではなく、Claude Codeと対話しながら正規化・インデックス設計・マイグレーション戦略まで一気に固めましょう。

要件をテキストで渡してスキーマを起こす

Section titled “要件をテキストで渡してスキーマを起こす”

ER図を書く前に、ビジネス要件をそのままClaudeに渡しましょう。

ECサイトのDBスキーマを設計してください。
要件:
- ユーザーは複数の住所を持てる
- 商品にはカテゴリ(階層あり)とタグが付く
- 注文は複数の商品を含み、各商品に数量・単価を持つ
- 在庫は倉庫ごとに管理する
- 支払い方法はクレジットカード・コンビニ・後払い
PostgreSQL向けにCREATE TABLE文とインデックスも含めて出力してください。

Claudeは正規化の判断理由(「住所を別テーブルにする理由」「カテゴリの自己参照」など)を説明しながらDDLを生成します。「なぜこの設計か」を確認しながら進められるので、レビューで指摘される前に設計の穴を埋められます。

インデックス: データベースの検索を高速化するための索引データ。適切に設定しないとクエリが遅くなる。スキーマ: データベースのテーブル構造や型定義のこと。

正規化の妥当性をチェックしてもらう

Section titled “正規化の妥当性をチェックしてもらう”

既存のスキーマに冗長性や設計上の問題がないか、Claudeに第三者レビューを頼みましょう。

以下のスキーマを3NFの観点でレビューして、問題があれば修正案を出してください。
また、よく使われるクエリパターン(一覧取得・集計・検索)を想定したインデックス設計も提案してください。
[既存のCREATE TABLE文をここに貼り付ける]

Claudeは「この列は関数従属性が崩れている」「この多対多関係は中間テーブルが必要」といった具体的な指摘とともに修正DDLを返します。パフォーマンスの観点から不要なインデックスの削除提案まで含めてくれます。

マイグレーションファイルを生成する

Section titled “マイグレーションファイルを生成する”

スキーマが固まったら、AlembicやPrismaのマイグレーションファイルを生成しましょう。

Terminal window
# 現在のスキーマをClaudeに渡してマイグレーション生成を依頼
cat schema.sql | claude "このスキーマの変更点に対応するAlembicのマイグレーションファイルを生成してください。up/downの両方を含めてください"
マイグレーション: データベースのスキーマ(テーブル構造)を安全に変更するための手順書。

テストデータのシードを自動生成する

Section titled “テストデータのシードを自動生成する”

スキーマが決まったら、開発・テスト用のシードデータをまとめて作ります。

上記のECサイトスキーマに対して、以下のシードデータをSQLで生成してください。
- ユーザー10件(日本の氏名・住所)
- カテゴリ3階層・20件
- 商品50件(カテゴリ・タグ付き)
- 注文30件(複数商品含む)
外部キー制約を満たす順序でINSERT文を並べてください。

手動でダミーデータを作る手間をゼロにできます。「日本語の住所・氏名で」「現実的な価格帯で」といった条件を追加すると、より実際に近いデータでの動作確認が可能です。