skills/superstone-han/dotfiles/data-model-designer

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(入力の期待形式)

以下のいずれか、または組み合わせ:

  1. 業務要件の説明(自然言語)
    • 例:「ECサイトの注文管理。顧客が商品を注文し、配送先を指定する」
  2. エンティティ候補のリスト
    • 例:「顧客、注文、商品、配送先」
  3. 既存テーブル定義/DDL(リバース用)
  4. 作成する段階の指定(任意)
    • 「概念だけ」「論理まで」「物理まで全部」
  5. DBMS指定(物理の場合)
    • 例:「PostgreSQL」「MySQL 8」「SQLite」

Outputs(成果物)

概念データモデル(CDM)

  • 概念ER図(Mermaid erDiagram)
  • 用語集(エンティティ定義)
  • スコープ/前提メモ

論理データモデル(LDM)

  • 論理ER図(属性・PK/FK・カーディナリティ付き)
  • データ辞書(属性定義・型・制約・必須/任意)
  • 業務ルール一覧

物理データモデル(PDM)

  • 物理ER図(テーブル・カラム・型・索引)
  • DDL一式(CREATE TABLE/INDEX/制約)
  • インデックス設計根拠
  • 運用設計メモ(監査カラム、論理削除等)

Instructions(設計手順)

Phase 1: 概念データモデル

  1. エンティティ抽出

    • 業務要件から主要な「もの」「概念」を洗い出す
    • 名詞に注目(顧客、注文、商品…)
  2. 関係の整理

    • エンティティ間の関係を「〜する」「〜を持つ」で記述
    • 多重度は大まかに(1対多、多対多)
  3. 用語の統一

    • 同義語を潰す(ユーザー=会員=アカウント?)
    • 用語集として定義を明文化
  4. 概念ERD出力

    • Mermaid erDiagramで出力
    • 属性は書かない(エンティティと関係のみ)
  5. 検証

    • 代表ユースケースでエンティティが足りているか確認

Phase 2: 論理データモデル

  1. 属性の定義

    • 各エンティティに属性を追加
    • 属性ごとに「意味」「例」を明記
  2. キーの決定

    • 主キー(PK):自然キー or サロゲートキー
    • 外部キー(FK):関係をキーで表現
  3. カーディナリティ詳細化

    • 1:1, 1:N, N:M を明確に
    • N:Mは中間エンティティで解決
  4. 正規化

    • 第3正規形を目指す
    • 冗長・更新異常を排除
  5. 論理ERD・データ辞書出力

Phase 3: 物理データモデル

  1. DBMS決定

    • 対象DBMSを確認(PostgreSQL/MySQL/SQLite等)
  2. 型マッピング

    • 論理型→物理型へ変換
    • 桁数、NULL、デフォルト決定
  3. テーブル/カラム命名

    • snake_case統一
    • 予約語回避
  4. インデックス設計

    • 想定クエリから逆算
    • WHERE/JOIN/ORDER BY条件を考慮
  5. 運用カラム追加

    • created_at, updated_at
    • 論理削除(deleted_at)必要なら
  6. 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
First Seen
13 days ago
Installed on
opencode2
gemini-cli2
codebuddy2
github-copilot2
codex2
kimi-cli2