| name | data-model-designer |
| description | 概念データモデル(CDM)、論理データモデル(LDM)、物理データモデル(PDM)を段階的に設計・出力するSkill。
「データモデルを作って」「ER図を書いて」「テーブル設計して」「DDLを生成して」「エンティティを整理して」「データ辞書を作って」
「概念モデル」「論理モデル」「物理モデル」などの依頼で発動する。
出力はMermaid ER図、Markdown(用語集・データ辞書・設計書)、SQL DDL。
|
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は中間エンティティで解決
-
正規化
-
論理ERD・データ辞書出力
Phase 3: 物理データモデル
-
DBMS決定
- 対象DBMSを確認(PostgreSQL/MySQL/SQLite等)
-
型マッピング
- 論理型→物理型へ変換
- 桁数、NULL、デフォルト決定
-
テーブル/カラム命名
-
インデックス設計
- 想定クエリから逆算
- WHERE/JOIN/ORDER BY条件を考慮
-
運用カラム追加
- created_at, updated_at
- 論理削除(deleted_at)必要なら
-
DDL生成
Quality Checklist
概念モデル
論理モデル
物理モデル
Examples
発動する例
- 「ECサイトのデータモデルを作って」
- 「顧客・注文・商品のER図を書いて」
- 「このシステムのテーブル設計をして」
- 「論理データモデルを作成して」
- 「PostgreSQLでDDLを生成して」
- 「データ辞書を整理して」
- 「概念ERDをMermaidで」
発動しない例
- 「SQLクエリを書いて」(クエリ作成は別タスク)
- 「DBのパフォーマンスを改善して」(チューニングは別タスク)
- 「マイグレーションを実行して」(実行は別タスク)
References
詳細な設計指針は reference.md を参照。
テンプレートは templates/ ディレクトリを参照。