Comprehensive database design tool creating complete schemas with tables, fields, indexes, and ER diagrams. Use when users request database design for any system. Generates Markdown docs, SQL scripts, and DrawDB-compatible JSON/DBML files. Supports MySQL, PostgreSQL, SQL Server. Triggers: database design, schema, ER diagram, SQL, data model. | 全面的数据库设计工具,创建完整的数据库架构。触发词:数据库设计、数据库架构、ER图、SQL、数据模型、表设计。
Creates complete database schemas with tables, fields, indexes, and relationships. Generates SQL scripts, Markdown docs, and DrawDB-compatible files when users request database designs.
/plugin marketplace add shining319/claude-code-single-person-workflow/plugin install product-workflow-agents@single-person-workflow-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
LICENSE.txtreferences/design-examples.mdreferences/design-principles.mdreferences/drawdb-formats.mdreferences/优化总结和示例代码.mdDesign complete, production-ready database schemas based on user requirements. Generate comprehensive documentation, SQL scripts, and visual ER diagram files compatible with DrawDB.
Before starting any design, always read references/design-principles.md to understand:
Gather information about the database design:
If the user provides minimal information, intelligently infer missing details based on common business scenarios and best practices documented in references/design-examples.md.
Key inference scenarios:
Based on the design requirements, load appropriate references:
references/design-principles.md for core design rulesreferences/drawdb-formats.md for JSON/DBML specificationsreferences/design-examples.md for similar system designsCreate complete table structures following these guidelines:
For each table:
✅ Add default system fields (unless user specifies otherwise):
id BIGINT AUTO_INCREMENT PRIMARY KEYcreated_at DATETIME DEFAULT CURRENT_TIMESTAMPupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPis_deleted TINYINT(1) DEFAULT 0✅ Design business fields with realistic sizes:
references/design-principles.md for complete size standards✅ Add appropriate constraints:
✅ Add COMMENT to every table and field (in Chinese)
✅ Do NOT create physical FOREIGN KEY constraints
For each table, analyze and create indexes for:
xxx_id foreign key fieldsIndex naming conventions:
idx_field_name or idx_field1_field2uk_field_nameIndex limits:
Identify logical relationships between tables:
One-to-Many (1:N): Most common
user_id in order tableOne-to-One (1:1): For table splitting
user_id UNIQUE in user_profile tableMany-to-Many (N:N): Requires junction table
Create all required output files:
Create a single, well-structured Markdown file containing:
Structure:
# [Project Name] 数据库设计文档
## 1. 数据库概览
- 数据库类型
- 字符集
- 核心表数量
- 主要功能模块
## 2. 表结构设计
### 2.1 [Table Name]
**表名**: table_name
**说明**: Table description
**字段列表**:
| 字段名 | 类型 | 允许空 | 默认值 | 说明 |
|--------|------|--------|--------|------|
| id | BIGINT | NO | | Primary key |
| ... | ... | ... | ... | ... |
**索引列表**:
| 索引名 | 类型 | 字段 |
|--------|------|------|
| uk_email | UNIQUE | email |
| idx_username | INDEX | username |
### 2.2 [Next Table]
...
## 3. 表关系说明
- table1 → table2 (1:N): Description
- table3 ↔ table4 (N:N): Description via junction table
## 4. 索引策略说明
Explain the rationale behind index design decisions
Create executable SQL script with:
-- Database: project_name
-- Generated: YYYY-MM-DD
-- Drop tables if exists (in reverse dependency order)
DROP TABLE IF EXISTS `table3`;
DROP TABLE IF EXISTS `table2`;
DROP TABLE IF EXISTS `table1`;
-- Create tables (in dependency order)
CREATE TABLE `table1` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'Comment',
...
PRIMARY KEY (`id`),
UNIQUE KEY `uk_field` (`field`),
KEY `idx_field` (`field`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Table comment';
CREATE TABLE `table2` (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Table comment';
Generate DrawDB-compatible JSON file following references/drawdb-formats.md:
Critical Format Requirements:
"_KV5MtPf2m4sI7Inu8pat")"B8rPRTDtOv9oD2Gp4bhWL")"VARCHAR(100)", not separate type and size)["email"] not [1])ID Generation:
import random
import string
def generate_id():
chars = string.ascii_letters + string.digits + '_-'
return ''.join(random.choice(chars) for _ in range(21))
Layout Strategy:
x = (index % 3) * 450 + 50, y = floor(index / 3) * 400 + 50["#6360f7", "#bc49c4", "#ffe159", "#89e667", "#ff9159", "#59d9ff", "#ff5959", "#a0a0a0"]Relationship Generation:
xxx_id foreign key fieldsStructure:
{
"tables": [
{
"id": "random_string",
"name": "table_name",
"comment": "表注释",
"color": "#6360f7",
"fields": [
{
"id": "random_string",
"name": "id",
"type": "BIGINT",
"default": "",
"check": "",
"primary": true,
"unique": true,
"notNull": true,
"increment": true,
"comment": "主键ID"
}
],
"indices": [
{
"id": 0,
"fields": ["field_name"],
"name": "idx_field_name",
"unique": false
}
],
"x": 50.0,
"y": 50.0
}
],
"relationships": [
{
"name": "",
"startTableId": "random_string",
"endTableId": "random_string",
"endFieldId": "random_string",
"startFieldId": "random_string",
"id": "random_string",
"updateConstraint": "No action",
"deleteConstraint": "No action",
"cardinality": "many_to_one"
}
],
"notes": [],
"subjectAreas": [],
"database": "generic",
"types": [],
"title": "Project Database"
}
Generate DBML file following references/drawdb-formats.md:
Key points:
bigint, varchar(50), datetime[pk, increment, not null, unique, note: '注释']indexes { } blockRef blocks> (many-to-one), - (one-to-one)Structure:
Table table_name [headercolor: #6360f7] {
id bigint [pk, increment, not null, unique, note: 'Comment']
field varchar(100) [not null, note: 'Comment']
indexes {
field [unique, name: 'uk_field']
}
Note: 'Table comment'
}
Ref fk_name {
table1.field > table2.id [delete: no action, update: no action]
}
Recommended Approach (Following Claude Code Official Standards):
Save all database design files to outputs/<project-name>/database/:
outputs/
└── <project-name>/ # Project name (e.g., e-commerce-system)
└── database/
├── schema-design.md # Comprehensive design document
├── schema.sql # Executable SQL script
├── drawdb-schema.json # DrawDB JSON format
└── drawdb-schema.dbml # DrawDB DBML format
Example:
outputs/
├── e-commerce-system/
│ └── database/
│ ├── schema-design.md
│ ├── schema.sql
│ ├── drawdb-schema.json
│ └── drawdb-schema.dbml
└── task-management-app/
└── database/
├── schema-design.md
└── schema.sql
Alternative Approach (Traditional Project Structure):
If your project has an existing directory structure, you can also use:
project-root/
└── database/
├── schema-design.md
├── schema.sql
├── drawdb-schema.json
└── drawdb-schema.dbml
Required Outputs (4 files):
schema-design.md - Comprehensive database design document (Chinese)schema.sql - Executable SQL scriptdrawdb-schema.json - DrawDB JSON formatdrawdb-schema.dbml - DrawDB DBML formatOptional Outputs:
er-diagram.png - ER diagram visualization (if tools available)index-strategy.md - Index strategy documentationuser-authentication-schema.sqlschema-v1.0.sql or schema-2024-12-10.sqle-commerce-database-schema.sqlAfter generating all files, provide a summary with:
Only create minimal structure:
CREATE TABLE `table_name` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
/* business fields only */
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Table comment';
Adapt SQL syntax accordingly:
PostgreSQL:
SERIAL or BIGSERIAL instead of AUTO_INCREMENTTIMESTAMP instead of DATETIMESQL Server:
IDENTITY(1,1) instead of AUTO_INCREMENTDATETIME2 instead of DATETIMENVARCHAR for Unicode supportOracle:
SEQUENCE for auto-incrementVARCHAR2 instead of VARCHARDATE or TIMESTAMP for time fieldsApply intelligent inference:
references/design-examples.mdBefore finalizing, verify:
User says: "设计一个电商系统的数据库,包括用户、商品、订单功能" → Read design-principles.md and design-examples.md → Design: user_info, product_info, order_info, order_detail tables → Generate all 4 output files
User says: "Design a blog database" → Infer: user, article, comment, tag, article_tag tables → Follow standard design principles → Generate all outputs
User says: "Create a user table for PostgreSQL" → Single table design → Adapt SQL syntax for PostgreSQL → Include in all output formats
references/design-principles.md - Core design rules and standardsreferences/drawdb-formats.md - JSON and DBML format specificationsreferences/design-examples.md - Real-world design examplesThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.