Database Design Patterns
このスキルはデータベース設計に関するアンチパターンを検出し、改善案を提示します。
対応できること
- •テーブル設計のレビュー
- •論理設計アンチパターンの検出
- •物理設計アンチパターンの検出
- •正規化の確認
- •外部キー制約の妥当性確認
ディレクトリ構成
code
.claude/skills/database-design-patterns/
├── SKILL.md
└── knowledge/
├── logical-design-antipatterns.md - 論理設計のアンチパターン
└── physical-design-antipatterns.md - 物理設計のアンチパターン
Knowledge Files
| ファイル | 内容 |
|---|---|
| logical-design-antipatterns.md | Jaywalking、EAV、ポリモーフィック関連、ナイーブツリー、複数列属性、メタデータ大増殖 |
| physical-design-antipatterns.md | ENUM乱用、FLOAT金額、ファイルパスのみ格納 |
クイックガイド:こんな時はこのファイル
| ユースケース | 参照ファイル |
|---|---|
| カンマ区切りのデータが列に入っている | logical-design-antipatterns.md |
| 汎用的な属性テーブルを作ろうとしている | logical-design-antipatterns.md |
| 複数のテーブルを1つの外部キーで参照したい | logical-design-antipatterns.md |
| 木構造(ツリー)をDBに格納したい | logical-design-antipatterns.md |
| tag1, tag2, tag3... のような列がある | logical-design-antipatterns.md |
| 年度ごとにテーブルを分けている | logical-design-antipatterns.md |
| ENUMやCHECK制約で値を制限している | physical-design-antipatterns.md |
| 金額をFLOAT/DOUBLEで格納している | physical-design-antipatterns.md |
| ファイルパスのみDBに格納している | physical-design-antipatterns.md |
使い方(Claudeへの指示例)
1. テーブル設計レビュー
code
このテーブル設計をレビューして
CREATE TABLE Products (
id INT PRIMARY KEY,
name VARCHAR(255),
tags VARCHAR(1000) -- カンマ区切り
);
2. 正規化の確認
code
このテーブルは正規化されているか確認して
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_name VARCHAR(255),
customer_email VARCHAR(255),
product_name VARCHAR(255),
price DECIMAL(10,2)
);
3. 外部キー制約の確認
code
このER図の外部キー制約は適切か確認して [テーブル定義またはER図]
カスタムコマンドでの呼び出し
code
/db-review CREATE TABLE ...
または
code
/db-review path/to/schema.sql
核心メッセージ
このスキルは以下の原則に基づいています:
- •カンマ区切りは悪: リレーショナルデータベースを使うなら、正規化する
- •汎用テーブルは避ける: 型安全性とSQL簡潔性を失う
- •外部キー制約は必須: 参照整合性を保証する
- •ENUMより参照テーブル: メタデータとデータを分離
- •金額はDECIMAL: 浮動小数点は誤差が蓄積する
- •木構造には専用手法: 再帰CTE、閉包テーブル、経路列挙
関連スキル
DB設計の問題はクエリ性能にも影響します。以下のケースでは sql-performance-optimization スキルも参照してください。
| DB設計の問題 | 性能への影響 | 参照先 |
|---|---|---|
| Jaywalking(カンマ区切り) | LIKE '%x%' でインデックス無効 | sql-performance-optimization/knowledge/index-strategies.md |
| EAV(汎用属性テーブル) | JOIN爆発、サブクエリ複雑化 | sql-performance-optimization/knowledge/subquery-problems.md |
| Naive Trees(parent_idのみ) | 再帰クエリのパフォーマンス | sql-performance-optimization/knowledge/anti-patterns.md |
SQLクエリのレビューは /sql-review コマンドを使用してください。
参考資料
- •O'Reilly「SQLアンチパターン」(oreilly-978-4-8144-0074-4e)