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/ ディレクトリを参照。