data-model-designer
SKILL.md
Data Model Designer
概念→論理→物理の3段階でデータモデルを設計し、ER図・データ辞書・DDLを出力するSkill。
Goals
- ユーザーの業務要件から 概念/論理/物理データモデル を段階的に設計する
- Mermaid ER図(概念ERD・論理ERD・物理ERD)を生成する
- データ辞書(属性定義・制約・型)を整理する
- DDL(CREATE TABLE等)を生成する
- 各段階で チェックリストによる品質担保 を行う
Non-goals
- 実際のDB構築・マイグレーション実行
- 性能チューニングの実測・ベンチマーク
- 特定ツール(ERwin、A5:SQL等)のファイル出力
Inputs(入力の期待形式)
以下のいずれか、または組み合わせ:
- 業務要件の説明(自然言語)
- 例:「ECサイトの注文管理。顧客が商品を注文し、配送先を指定する」
- エンティティ候補のリスト
- 例:「顧客、注文、商品、配送先」
- 既存テーブル定義/DDL(リバース用)
- 作成する段階の指定(任意)
- 「概念だけ」「論理まで」「物理まで全部」
- DBMS指定(物理の場合)
- 例:「PostgreSQL」「MySQL 8」「SQLite」
Outputs(成果物)
概念データモデル(CDM)
- 概念ER図(Mermaid erDiagram)
- 用語集(エンティティ定義)
- スコープ/前提メモ
論理データモデル(LDM)
- 論理ER図(属性・PK/FK・カーディナリティ付き)
- データ辞書(属性定義・型・制約・必須/任意)
- 業務ルール一覧
物理データモデル(PDM)
- 物理ER図(テーブル・カラム・型・索引)
- DDL一式(CREATE TABLE/INDEX/制約)
- インデックス設計根拠
- 運用設計メモ(監査カラム、論理削除等)
Instructions(設計手順)
Phase 1: 概念データモデル
-
エンティティ抽出
- 業務要件から主要な「もの」「概念」を洗い出す
- 名詞に注目(顧客、注文、商品…)
-
関係の整理
- エンティティ間の関係を「〜する」「〜を持つ」で記述
- 多重度は大まかに(1対多、多対多)
-
用語の統一
- 同義語を潰す(ユーザー=会員=アカウント?)
- 用語集として定義を明文化
-
概念ERD出力
- Mermaid erDiagramで出力
- 属性は書かない(エンティティと関係のみ)
-
検証
- 代表ユースケースでエンティティが足りているか確認
Phase 2: 論理データモデル
-
属性の定義
- 各エンティティに属性を追加
- 属性ごとに「意味」「例」を明記
-
キーの決定
- 主キー(PK):自然キー or サロゲートキー
- 外部キー(FK):関係をキーで表現
-
カーディナリティ詳細化
- 1:1, 1:N, N:M を明確に
- N:Mは中間エンティティで解決
-
正規化
- 第3正規形を目指す
- 冗長・更新異常を排除
-
論理ERD・データ辞書出力
Phase 3: 物理データモデル
-
DBMS決定
- 対象DBMSを確認(PostgreSQL/MySQL/SQLite等)
-
型マッピング
- 論理型→物理型へ変換
- 桁数、NULL、デフォルト決定
-
テーブル/カラム命名
- snake_case統一
- 予約語回避
-
インデックス設計
- 想定クエリから逆算
- WHERE/JOIN/ORDER BY条件を考慮
-
運用カラム追加
- created_at, updated_at
- 論理削除(deleted_at)必要なら
-
DDL生成
- CREATE TABLE/INDEX/制約
Quality Checklist
概念モデル
- 業務用語で書かれている(DB用語なし)
- エンティティの境界・スコープが明確
- 同義語/多義語が整理されている
- 代表ユースケースで検証済み
論理モデル
- 全属性に定義(意味)がある
- PK/FKが明確
- カーディナリティが正確
- N:Mは中間エンティティで解決
- 正規化されている(理由なき冗長なし)
物理モデル
- DBMS前提が明記
- データ型・NULL・デフォルトが具体的
- インデックスに根拠がある
- 運用カラム(監査/論理削除等)考慮済み
- DDLが実行可能
Examples
発動する例
- 「ECサイトのデータモデルを作って」
- 「顧客・注文・商品のER図を書いて」
- 「このシステムのテーブル設計をして」
- 「論理データモデルを作成して」
- 「PostgreSQLでDDLを生成して」
- 「データ辞書を整理して」
- 「概念ERDをMermaidで」
発動しない例
- 「SQLクエリを書いて」(クエリ作成は別タスク)
- 「DBのパフォーマンスを改善して」(チューニングは別タスク)
- 「マイグレーションを実行して」(実行は別タスク)
References
詳細な設計指針は reference.md を参照。
テンプレートは templates/ ディレクトリを参照。
Weekly Installs
2
Repository
superstone-han/dotfilesFirst Seen
13 days ago
Security Audits
Installed on
opencode2
gemini-cli2
codebuddy2
github-copilot2
codex2
kimi-cli2