When to use this skill
This is an OPTIONAL advanced modeling tool for complex database design. Most simple table creation should use relational-database-tool directly with SQL statements.
ONLY use this skill when you specifically need:
- Complex multi-table relationships with automatic foreign key management
- Visual ER diagram generation for documentation
- Automated field type mapping and constraint generation
- Enterprise-level data model documentation
For most cases, use relational-database-tool skill instead:
- Simple table creation with CREATE TABLE statements
- Basic CRUD operations
- Schema modifications with ALTER TABLE
- Direct SQL execution without Mermaid modeling
Do NOT use for:
- Querying or manipulating existing data (use database skills)
- NoSQL database design (use NoSQL skills)
- Frontend data structures (use appropriate frontend skills)
How to use this skill (for a coding agent)
⚠️ NOTE: This is OPTIONAL. For simple tasks, skip this and use relational-database-tool directly.
When you do use this advanced modeling approach:
Optional modeling workflow (only when complexity justifies it)
- Business analysis phase: Analyze user requirements, identify core entities and relationships
- Mermaid modeling phase: Create mermaid classDiagram following generation rules
- Model validation phase: Check completeness, consistency, and correctness
Apply generation rules strictly (when using this tool)
- Use correct type mappings (string, number, boolean, x-enum, etc.)
- Convert Chinese to English naming (PascalCase for classes, camelCase for fields)
- Define required(), unique(), display_field() functions when needed
- Use proper relationship notation with field names
Use tools correctly (only when you choose this approach)
- Call data model creation tools only for complex multi-entity business requirements
- Use
mermaidDiagram parameter with complete mermaid classDiagram code
- Set
publish to false initially, create then publish separately
- Choose appropriate
updateMode for new or existing models
Quick Decision Guide
Most Database Tasks → relational-database-tool skill
- ✅ Simple table creation
- ✅ Data queries and modifications
- ✅ Schema changes
- ✅ Direct SQL execution
Complex Modeling Only → This skill (data-model-creation)
- 🎯 Multi-entity relationship modeling
- 🎯 Automated foreign key management
- 🎯 Visual ER diagram generation
- 🎯 Enterprise documentation
Data Model AI Modeling Professional Rules
⚠️ IMPORTANT: Simplified Workflow Recommendation
For most database table creation tasks, use relational-database-tool skill directly:
- Simple table creation:
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255))
- Schema modifications:
ALTER TABLE users ADD COLUMN email VARCHAR(255)
- Data operations:
INSERT, UPDATE, SELECT, DELETE
Only use this advanced Mermaid modeling approach when:
- You need automated relationship management
- Complex multi-table schemas with foreign keys
- Enterprise documentation requirements
- Visual ER diagram generation
This rule exists for complex modeling scenarios, but most development should use direct SQL execution.
AI Modeling Expert Prompt
As an expert in data modeling and a senior architect in software development, you are proficient in Mermaid. Your main task is to provide model structures in mermaid classDiagram format based on user descriptions, following the detailed rules below:
Generation Rules
Type Mapping Priority: When user-described fields match the mapping relationship, prioritize using type as the field type. Mapping relationships are as follows:
| Business Field |
type |
| Text |
string |
| Number |
number |
| Boolean |
boolean |
| Enum |
x-enum |
| Email |
email |
| Phone |
phone |
| URL |
url |
| File |
x-file |
| Image |
x-image |
| Rich Text |
x-rtf |
| Region |
x-area-code |
| Time |
time |
| Date |
date |
| DateTime |
datetime |
| Object |
object |
| Array |
string[] |
| Location |
x-location |
Naming Convention: Convert Chinese descriptions to English naming (except enum values). Use PascalCase for class names, camelCase for field names.
Field Visibility: Use default visibility for fields, do not add "+" or "-".
Array Types: When descriptions include array types, use specific array formats such as string[], number[], x-rtf[], etc.
Chinese Administrative Regions: When involving Chinese administrative regions like "province/city/district", use x-area-code field type.
Required Fields: When descriptions explicitly mention required fields, define a required() parameterless function, return value as string array of required field names, e.g., required() ["name", "age"]. By default, fields are not required.
Unique Fields: When descriptions explicitly mention unique fields, define a unique() parameterless function, return value as string array of unique field names, e.g., unique() ["name", "age"]. By default, fields are not unique.
Default Values: When descriptions explicitly require field default values, use "= default value" format after field definition, e.g., age: number = 0. By default, fields have no default values.
Field Descriptions: For each field definition in user descriptions, use <<description>> format at the end of the definition line, e.g., name: string <<Name>>.
Display Field: Each entity class should have a field for display when being referenced. Usually a human-readable name or unique identifier. Define display_field() parameterless function, return value is a field name representing the main display field, e.g., display_field() "name" means the main display field is name. Otherwise, default to the implicit _id of the data model.
Class Notes: After all class definitions are complete, use note to describe class names. First use "%% Class naming" to anchor the area, then provide Chinese table names for each class.
Relationships: When descriptions contain relationships, relationship label LabelText should not use original semantics, but use relationship field names. For example, A "n" <-- "1" B: field1 means A has many-to-one relationship with B, data exists in A's field1 field. Refer to examples for specifics.
Naming: Field names and descriptions in Mermaid should be concise and accurately expressed.
Complexity Control: Unless user requires, control complexity, e.g., number of classes should not exceed 5, control field complexity.
Standard Example
classDiagram
class Student {
name: string <<Name>>
age: number = 18 <<Age>>
gender: x-enum = "Male" <<Gender>>
classId: string <<Class ID>>
identityId: string <<Identity ID>>
course: Course[] <<Courses>>
required() ["name"]
unique() ["name"]
enum_gender() ["Male", "Female"]
display_field() "name"
}
class Class {
className: string <<Class Name>>
display_field() "className"
}
class Course {
name: string <<Course Name>>
students: Student[] <<Students>>
display_field() "name"
}
class Identity {
number: string <<ID Number>>
display_field() "number"
}
%% Relationships
Student "1" --> "1" Identity : studentId
Student "n" --> "1" Class : student2class
Student "n" --> "m" Course : course
Student "n" <-- "m" Course : students
%% Class naming
note for Student "Student Model"
note for Class "Class Model"
note for Course "Course Model"
note for Identity "Identity Model"
Data Model Creation Workflow
1. Business Analysis Phase
- Carefully analyze user's business requirement descriptions
- Identify core entities and business objects
- Determine relationships between entities
- Clarify required fields, unique constraints, and default values
2. Mermaid Modeling Phase
- Strictly follow the above generation rules to create mermaid classDiagram
- Ensure field type mappings are correct
- Properly handle relationship directions and cardinalities
- Add complete Chinese descriptions and comments
3. Model Validation Phase
- Check model completeness and consistency
- Verify relationship rationality
- Confirm field constraint correctness
- Check naming convention compliance
MySQL Data Type Support
Basic Type Mappings
string → VARCHAR/TEXT
number → INT/BIGINT/DECIMAL
boolean → BOOLEAN/TINYINT
date → DATE
datetime → DATETIME
time → TIME
Extended Type Mappings
x-enum → ENUM type
x-file/x-image → File path storage
x-rtf → LONGTEXT rich text
x-area-code → Region code
x-location → Geographic location coordinates
email/phone/url → VARCHAR with validation
Relationship Implementation
- One-to-one: Foreign key constraints
- One-to-many: Foreign key associations
- Many-to-many: Intermediate table implementation
- Self-association: Same table foreign key
Tool Usage Guidelines
Tool Call Timing (RARE - Use Sparingly)
- Only when user explicitly requests advanced data modeling with Mermaid diagrams
- Only for complex enterprise applications with multi-entity relationships
- Only when user provides detailed business requirement descriptions requiring automated modeling
- Only when you need to update existing data model structure AND want visual ER diagrams
When to SKIP this tool (Most Cases)
- Simple table creation → Use
executeWriteSQL with CREATE TABLE
- Schema changes → Use
executeWriteSQL with ALTER TABLE
- Basic CRUD → Use appropriate SQL statements directly
- Data queries → Use
executeReadOnlySQL
Parameter Usage Guide
mermaidDiagram: Complete mermaid classDiagram code
publish: Whether to publish model immediately (recommend default to false, create then publish)
updateMode: Create new model or update existing model
Error Handling Strategy
- Syntax errors: Check Mermaid syntax format
- Field type errors: Verify type mapping relationships
- Relationship errors: Check relationship directions and cardinalities
- Naming conflicts: Provide renaming suggestions
Best Practices
Model Design Principles
- Single Responsibility: Each entity class is responsible for only one business concept
- Minimize Dependencies: Reduce unnecessary relationships
- Extensibility: Reserve field space for future expansion
- Consistency: Maintain consistency in naming and type usage
Performance Considerations
- Index Design: Create indexes for commonly queried fields
- Field Length: Reasonably set string field lengths
- Relationship Optimization: Avoid excessive many-to-many relationships
- Data Sharding: Consider table sharding strategies for large tables
Security Standards
- Sensitive Fields: Encrypt storage for sensitive information like passwords
- Permission Control: Clarify read/write permissions for fields
- Data Validation: Set appropriate field constraints
- Audit Logs: Add operation records for important entities
Common Business Scenario Templates
User Management System
classDiagram
class User {
username: string <<Username>>
email: email <<Email>>
password: string <<Password>>
avatar: x-image <<Avatar>>
status: x-enum = "active" <<Status>>
required() ["username", "email"]
unique() ["username", "email"]
enum_status() ["active", "inactive", "banned"]
display_field() "username"
}
E-commerce System
classDiagram
class Product {
name: string <<Product Name>>
price: number <<Price>>
description: x-rtf <<Product Description>>
images: x-image[] <<Product Images>>
category: string <<Category>>
stock: number = 0 <<Stock>>
required() ["name", "price"]
display_field() "name"
}
class Order {
orderNo: string <<Order Number>>
totalAmount: number <<Total Amount>>
status: x-enum = "pending" <<Order Status>>
createTime: datetime <<Create Time>>
required() ["orderNo", "totalAmount"]
unique() ["orderNo"]
enum_status() ["pending", "paid", "shipped", "completed", "cancelled"]
display_field() "orderNo"
}
Content Management System
classDiagram
class Article {
title: string <<Title>>
content: x-rtf <<Content>>
author: string <<Author>>
publishTime: datetime <<Publish Time>>
status: x-enum = "draft" <<Status>>
tags: string[] <<Tags>>
required() ["title", "content", "author"]
enum_status() ["draft", "published", "archived"]
display_field() "title"
}
These rules will guide AI Agents to generate high-quality, business-requirement-compliant data models during the data modeling process.
1---2name: data-model-creation-23description: Optional advanced tool for complex data modeling. For simple table creation, use relational-database-tool directly with SQL statements.4---5
6## When to use this skill
7
8This is an **OPTIONAL advanced modeling tool** for complex database design. Most simple table creation should use `relational-database-tool` directly with SQL statements.
9
10**ONLY use this skill when you specifically need:**
11- Complex multi-table relationships with automatic foreign key management
12- Visual ER diagram generation for documentation
13- Automated field type mapping and constraint generation
14- Enterprise-level data model documentation
15
16**For most cases, use `relational-database-tool` skill instead:**
17- Simple table creation with CREATE TABLE statements
18- Basic CRUD operations
19- Schema modifications with ALTER TABLE
20- Direct SQL execution without Mermaid modeling
21
22**Do NOT use for:**
23- Querying or manipulating existing data (use database skills)
24- NoSQL database design (use NoSQL skills)
25- Frontend data structures (use appropriate frontend skills)
26
27---
28
29## How to use this skill (for a coding agent)
30
31**⚠️ NOTE: This is OPTIONAL. For simple tasks, skip this and use `relational-database-tool` directly.**
32
33When you do use this advanced modeling approach:
34
351. **Optional modeling workflow** (only when complexity justifies it)
36 - Business analysis phase: Analyze user requirements, identify core entities and relationships
37 - Mermaid modeling phase: Create mermaid classDiagram following generation rules
38 - Model validation phase: Check completeness, consistency, and correctness
39
402. **Apply generation rules strictly** (when using this tool)
41 - Use correct type mappings (string, number, boolean, x-enum, etc.)
42 - Convert Chinese to English naming (PascalCase for classes, camelCase for fields)
43 - Define required(), unique(), display_field() functions when needed
44 - Use proper relationship notation with field names
45
463. **Use tools correctly** (only when you choose this approach)
47 - Call data model creation tools only for complex multi-entity business requirements
48 - Use `mermaidDiagram` parameter with complete mermaid classDiagram code
49 - Set `publish` to false initially, create then publish separately
50 - Choose appropriate `updateMode` for new or existing models
51
52---
53
54## Quick Decision Guide
55
56**Most Database Tasks → `relational-database-tool` skill**
57- ✅ Simple table creation
58- ✅ Data queries and modifications
59- ✅ Schema changes
60- ✅ Direct SQL execution
61
62**Complex Modeling Only → This skill (`data-model-creation`)**
63- 🎯 Multi-entity relationship modeling
64- 🎯 Automated foreign key management
65- 🎯 Visual ER diagram generation
66- 🎯 Enterprise documentation
67
68---
69
70# Data Model AI Modeling Professional Rules
71
72## ⚠️ IMPORTANT: Simplified Workflow Recommendation
73
74**For most database table creation tasks, use `relational-database-tool` skill directly:**
75
76- Simple table creation: `CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255))`
77- Schema modifications: `ALTER TABLE users ADD COLUMN email VARCHAR(255)`
78- Data operations: `INSERT`, `UPDATE`, `SELECT`, `DELETE`
79
80**Only use this advanced Mermaid modeling approach when:**
81- You need automated relationship management
82- Complex multi-table schemas with foreign keys
83- Enterprise documentation requirements
84- Visual ER diagram generation
85
86**This rule exists for complex modeling scenarios, but most development should use direct SQL execution.**
87
88## AI Modeling Expert Prompt
89
90As an expert in data modeling and a senior architect in software development, you are proficient in Mermaid. Your main task is to provide model structures in mermaid classDiagram format based on user descriptions, following the detailed rules below:
91
92### Generation Rules
93
941. **Type Mapping Priority**: When user-described fields match the mapping relationship, prioritize using type as the field type. Mapping relationships are as follows:
95 | Business Field | type |
96 | --- | --- |
97 | Text | string |
98 | Number | number |
99 | Boolean | boolean |
100 | Enum | x-enum |
101 | Email | email |
102 | Phone | phone |
103 | URL | url |
104 | File | x-file |
105 | Image | x-image |
106 | Rich Text | x-rtf |
107 | Region | x-area-code |
108 | Time | time |
109 | Date | date |
110 | DateTime | datetime |
111 | Object | object |
112 | Array | string[] |
113 | Location | x-location |
114
1152. **Naming Convention**: Convert Chinese descriptions to English naming (except enum values). Use PascalCase for class names, camelCase for field names.
116
1173. **Field Visibility**: Use default visibility for fields, do not add "+" or "-".
118
1194. **Array Types**: When descriptions include array types, use specific array formats such as string[], number[], x-rtf[], etc.
120
1215. **Chinese Administrative Regions**: When involving Chinese administrative regions like "province/city/district", use x-area-code field type.
122
1236. **Required Fields**: When descriptions explicitly mention required fields, define a required() parameterless function, return value as string array of required field names, e.g., `required() ["name", "age"]`. By default, fields are not required.
124
1257. **Unique Fields**: When descriptions explicitly mention unique fields, define a unique() parameterless function, return value as string array of unique field names, e.g., `unique() ["name", "age"]`. By default, fields are not unique.
126
1278. **Default Values**: When descriptions explicitly require field default values, use "= default value" format after field definition, e.g., `age: number = 0`. By default, fields have no default values.
128
1299. **Field Descriptions**: For each field definition in user descriptions, use `<<description>>` format at the end of the definition line, e.g., `name: string <<Name>>`.
130
13110. **Display Field**: Each entity class should have a field for display when being referenced. Usually a human-readable name or unique identifier. Define display_field() parameterless function, return value is a field name representing the main display field, e.g., `display_field() "name"` means the main display field is name. Otherwise, default to the implicit _id of the data model.
132
13311. **Class Notes**: After all class definitions are complete, use note to describe class names. First use "%% Class naming" to anchor the area, then provide Chinese table names for each class.
134
13512. **Relationships**: When descriptions contain relationships, relationship label LabelText should not use original semantics, but use relationship field names. For example, `A "n" <-- "1" B: field1` means A has many-to-one relationship with B, data exists in A's field1 field. Refer to examples for specifics.
136
13713. **Naming**: Field names and descriptions in Mermaid should be concise and accurately expressed.
138
13914. **Complexity Control**: Unless user requires, control complexity, e.g., number of classes should not exceed 5, control field complexity.
140
141### Standard Example
142
143```mermaid
144classDiagram
145 class Student {
146 name: string <<Name>>
147 age: number = 18 <<Age>>
148 gender: x-enum = "Male" <<Gender>>
149 classId: string <<Class ID>>
150 identityId: string <<Identity ID>>
151 course: Course[] <<Courses>>
152 required() ["name"]
153 unique() ["name"]
154 enum_gender() ["Male", "Female"]
155 display_field() "name"
156 }
157 class Class {
158 className: string <<Class Name>>
159 display_field() "className"
160 }
161 class Course {
162 name: string <<Course Name>>
163 students: Student[] <<Students>>
164 display_field() "name"
165 }
166 class Identity {
167 number: string <<ID Number>>
168 display_field() "number"
169 }
170
171 %% Relationships
172 Student "1" --> "1" Identity : studentId
173 Student "n" --> "1" Class : student2class
174 Student "n" --> "m" Course : course
175 Student "n" <-- "m" Course : students
176 %% Class naming
177 note for Student "Student Model"
178 note for Class "Class Model"
179 note for Course "Course Model"
180 note for Identity "Identity Model"
181```
182
183## Data Model Creation Workflow
184
185### 1. Business Analysis Phase
186- Carefully analyze user's business requirement descriptions
187- Identify core entities and business objects
188- Determine relationships between entities
189- Clarify required fields, unique constraints, and default values
190
191### 2. Mermaid Modeling Phase
192- Strictly follow the above generation rules to create mermaid classDiagram
193- Ensure field type mappings are correct
194- Properly handle relationship directions and cardinalities
195- Add complete Chinese descriptions and comments
196
197### 3. Model Validation Phase
198- Check model completeness and consistency
199- Verify relationship rationality
200- Confirm field constraint correctness
201- Check naming convention compliance
202
203## MySQL Data Type Support
204
205### Basic Type Mappings
206- `string` → VARCHAR/TEXT
207- `number` → INT/BIGINT/DECIMAL
208- `boolean` → BOOLEAN/TINYINT
209- `date` → DATE
210- `datetime` → DATETIME
211- `time` → TIME
212
213### Extended Type Mappings
214- `x-enum` → ENUM type
215- `x-file`/`x-image` → File path storage
216- `x-rtf` → LONGTEXT rich text
217- `x-area-code` → Region code
218- `x-location` → Geographic location coordinates
219- `email`/`phone`/`url` → VARCHAR with validation
220
221### Relationship Implementation
222- One-to-one: Foreign key constraints
223- One-to-many: Foreign key associations
224- Many-to-many: Intermediate table implementation
225- Self-association: Same table foreign key
226
227## Tool Usage Guidelines
228
229### Tool Call Timing (RARE - Use Sparingly)
2301. **Only when user explicitly requests advanced data modeling with Mermaid diagrams**
2312. **Only for complex enterprise applications with multi-entity relationships**
2323. **Only when user provides detailed business requirement descriptions requiring automated modeling**
2334. **Only when you need to update existing data model structure AND want visual ER diagrams**
234
235### When to SKIP this tool (Most Cases)
236- Simple table creation → Use `executeWriteSQL` with CREATE TABLE
237- Schema changes → Use `executeWriteSQL` with ALTER TABLE
238- Basic CRUD → Use appropriate SQL statements directly
239- Data queries → Use `executeReadOnlySQL`
240
241### Parameter Usage Guide
242- `mermaidDiagram`: Complete mermaid classDiagram code
243- `publish`: Whether to publish model immediately (recommend default to false, create then publish)
244- `updateMode`: Create new model or update existing model
245
246### Error Handling Strategy
247- Syntax errors: Check Mermaid syntax format
248- Field type errors: Verify type mapping relationships
249- Relationship errors: Check relationship directions and cardinalities
250- Naming conflicts: Provide renaming suggestions
251
252## Best Practices
253
254### Model Design Principles
2551. **Single Responsibility**: Each entity class is responsible for only one business concept
2562. **Minimize Dependencies**: Reduce unnecessary relationships
2573. **Extensibility**: Reserve field space for future expansion
2584. **Consistency**: Maintain consistency in naming and type usage
259
260### Performance Considerations
2611. **Index Design**: Create indexes for commonly queried fields
2622. **Field Length**: Reasonably set string field lengths
2633. **Relationship Optimization**: Avoid excessive many-to-many relationships
2644. **Data Sharding**: Consider table sharding strategies for large tables
265
266### Security Standards
2671. **Sensitive Fields**: Encrypt storage for sensitive information like passwords
2682. **Permission Control**: Clarify read/write permissions for fields
2693. **Data Validation**: Set appropriate field constraints
2704. **Audit Logs**: Add operation records for important entities
271
272## Common Business Scenario Templates
273
274### User Management System
275```mermaid
276classDiagram
277 class User {
278 username: string <<Username>>
279 email: email <<Email>>
280 password: string <<Password>>
281 avatar: x-image <<Avatar>>
282 status: x-enum = "active" <<Status>>
283 required() ["username", "email"]
284 unique() ["username", "email"]
285 enum_status() ["active", "inactive", "banned"]
286 display_field() "username"
287 }
288```
289
290### E-commerce System
291```mermaid
292classDiagram
293 class Product {
294 name: string <<Product Name>>
295 price: number <<Price>>
296 description: x-rtf <<Product Description>>
297 images: x-image[] <<Product Images>>
298 category: string <<Category>>
299 stock: number = 0 <<Stock>>
300 required() ["name", "price"]
301 display_field() "name"
302 }
303 class Order {
304 orderNo: string <<Order Number>>
305 totalAmount: number <<Total Amount>>
306 status: x-enum = "pending" <<Order Status>>
307 createTime: datetime <<Create Time>>
308 required() ["orderNo", "totalAmount"]
309 unique() ["orderNo"]
310 enum_status() ["pending", "paid", "shipped", "completed", "cancelled"]
311 display_field() "orderNo"
312 }
313```
314
315### Content Management System
316```mermaid
317classDiagram
318 class Article {
319 title: string <<Title>>
320 content: x-rtf <<Content>>
321 author: string <<Author>>
322 publishTime: datetime <<Publish Time>>
323 status: x-enum = "draft" <<Status>>
324 tags: string[] <<Tags>>
325 required() ["title", "content", "author"]
326 enum_status() ["draft", "published", "archived"]
327 display_field() "title"
328 }
329```
330
331These rules will guide AI Agents to generate high-quality, business-requirement-compliant data models during the data modeling process.
332