AgentSkillsCN

Database Design Patterns

数据库设计模式

SKILL.md

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.mdJaywalking、EAV、ポリモーフィック関連、ナイーブツリー、複数列属性、メタデータ大増殖
physical-design-antipatterns.mdENUM乱用、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

核心メッセージ

このスキルは以下の原則に基づいています:

  1. カンマ区切りは悪: リレーショナルデータベースを使うなら、正規化する
  2. 汎用テーブルは避ける: 型安全性とSQL簡潔性を失う
  3. 外部キー制約は必須: 参照整合性を保証する
  4. ENUMより参照テーブル: メタデータとデータを分離
  5. 金額はDECIMAL: 浮動小数点は誤差が蓄積する
  6. 木構造には専用手法: 再帰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)