2026-03-30 11:25:25 +08:00
|
|
|
|
# 🛠️ P2_生成数据库设计
|
2026-03-30 11:19:22 +08:00
|
|
|
|
|
2026-03-30 11:25:25 +08:00
|
|
|
|
**角色**:资深数据库架构师 (DBA)
|
|
|
|
|
|
**目标**:读取项目蓝图,进行数据库表结构设计。按规定格式输出实体关系图和数据字典。
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 任务描述
|
|
|
|
|
|
|
|
|
|
|
|
基于项目的业务蓝图或需求规格,设计支撑整个系统的数据库关系模型 (ERD)。你需要定义出各个实体的表名、字段、数据类型、约束以及表与表之间的关联关系(如一对一、一对多)。你需要同时考虑性能、扩展性和数据完整性。
|
|
|
|
|
|
|
|
|
|
|
|
## 🔗 必须绑定的知识库规范
|
|
|
|
|
|
|
|
|
|
|
|
在生成代码前,你必须阅读并严格遵守以下文件中的约束:
|
|
|
|
|
|
@02 - Design Standard/2.3 数据库与存储设计规范.md
|
|
|
|
|
|
|
|
|
|
|
|
## 🧠 思考框架 (Chain of Thought)
|
|
|
|
|
|
|
|
|
|
|
|
1. **提取核心实体**:从需求中识别名词,哪些需要落库成为核心表(如:`User`, `Order`, `Product`)?
|
|
|
|
|
|
2. **定义字段类型**:如何根据数据的真实生命周期选择合适的类型?(如金额必须是 DECIMAL,绝不能是 FLOAT;变长字符串用 VARCHAR)。哪些字段允许为空,哪些应该有默认值?
|
|
|
|
|
|
3. **建立主外键关系**:各实体间是一对多、多对多还是一对一?如何通过外键或业务逻辑保证引用完整性?
|
|
|
|
|
|
4. **性能考虑与索引优化**:为了避免慢查询,哪些高频查询的列需要建立联合索引(注意最左前缀法则)?对于状态标记类的枚举字段,是否真的有必要建立单列索引?
|
|
|
|
|
|
5. **公共字段**:每个表是否都需要包含必备的审计字段(如主键 `id`, `create_time`, `update_time`, `is_deleted`)?
|
|
|
|
|
|
|
|
|
|
|
|
## ⚠️ 约束条件与红线 (AI Output Schema)
|
|
|
|
|
|
|
|
|
|
|
|
- **绝对红线 1**:必须采用 Mermaid `erDiagram` 语法输出清晰的实体关系图。
|
|
|
|
|
|
- **绝对红线 2**:所有表名和字段名必须使用全小写蛇形命名(snake_case)。严禁使用驼峰命名或拼音。
|
|
|
|
|
|
- **绝对红线 3**:字符型字段严禁设置 `null=True`,必须设置合理的默认值或设为空字符串。
|
|
|
|
|
|
- **绝对红线 4**:必须按标准 Markdown 表格格式输出每个实体的“数据字典”,表格列必须包含:`表名`, `字段名`, `类型`, `是否为空`, `默认值`, `索引/说明`。
|
|
|
|
|
|
|
|
|
|
|
|
## 📄 输出要求
|
|
|
|
|
|
|
|
|
|
|
|
请按以下顺序输出结果:
|
|
|
|
|
|
1. ** Mermaid ER 图代码块**。
|
|
|
|
|
|
2. ** Markdown 格式的数据字典表格**(可为每个表单独列一个表格,并在表头注明表名和业务含义)。
|