200-database-design

star 1

数据库设计技能。当需要设计或优化数据库时触发:(1)设计新系统数据库结构, (2)定义业务实体和数据关系, (3)设计索引优化策略。完成后自动调用 201-database-design-review。

axeon By axeon schedule Updated 6/14/2026

name: 200-database-design description: 数据库设计技能。当需要设计或优化数据库时触发:(1)设计新系统数据库结构, (2)定义业务实体和数据关系, (3)设计索引优化策略。完成后自动调用 201-database-design-review。 alwaysApply: false author: "axeon(23231269@qq.com)" version: "1.0.0"

数据库设计

项目环境检测

从当前目录向上查找 project-info.md,最多 3 层,找到后记为 PROJECT_ROOT。详见 检测方法与前置检查未找到 → 提示用户先执行 0-init

输入

输入项 来源路径 说明
PRD PROJECT_ROOT/requirement/prds/* 产品需求文档,包含项目背景、性能要求、用户角色、功能模块及各终端详细需求

前置条件

  • 模块 PRD 已完成评审并定稿
  • 核心业务实体已在 PRD 中明确描述
  • 数据规模和访问模式已评估

角色职责

角色 职责 智能体
主导 数据库设计 system-architect
协作 ORM映射确认 java-developer
协作 业务数据需求 product-manager

设计流程

Phase 0: 需求访谈与澄清(必须首先完成)

在开始数据库设计之前,必须通过访谈确认数据需求,避免因理解偏差导致返工。

访谈执行原则

原则 执行方式
逐题提问 每次只问一个问题,等待用户回答后再问下一个,禁止一次性列出所有问题
使用选择框 必须使用 AskUserQuestion 工具呈现可点击的选择框,禁止纯文本列出选项让用户手工录入
一步一确认 每个确认项单独提问,禁止批量确认

提问方式规范

所有访谈问题必须使用 AskUserQuestion 工具,参数要求:question(问题内容)、header(≤12字符)、options(3-5个可点击选项)、multiSelect(true/false)。工具自带"Other"选项供自由录入。

访谈框架(2个阶段)

阶段一:数据需求访谈(Interview)

目标:确认对 PRD 中数据需求的理解是否准确。

# 确认项 启发式技巧
1 核心业务实体是否遗漏 "我识别到以下N个核心实体[列出],是否有遗漏?"
2 实体间关系是否正确 "A和B是1:N关系,还是N:N?请描述一个具体场景"
3 数据规模预估 "预计上线后3个月/1年/3年数据量级?"
4 数据访问模式 "哪些查询是高频的?哪些是后台报表类低频查询?"
5 特殊数据类型 "是否有附件、JSON、地理坐标等非结构化数据?"

阶段二:设计细节澄清(Clarify)

目标:明确模糊点,消除设计歧义。

# 澄清维度 核心问题 确认标准
1 字段细节 "XX字段的取值范围?是否允许为空?默认值?" 每个字段有明确类型和约束
2 枚举定义 "状态字段有哪些枚举值?未来是否可能扩展?" 枚举值完整列出
3 唯一约束 "哪些字段组合必须唯一?如用户名+租户?" 唯一场景已明确
4 软删除策略 "数据是物理删除还是逻辑删除?" 删除策略已确定
5 历史数据 "是否需要保留历史版本?如订单修改记录?" 版本策略已确认
6 多语言需求 "哪些实体的哪些字段需要多语言翻译?目标语言有哪些?" 多语言字段和目标语言已确定

访谈检查清单

  • 所有核心实体已与用户确认无遗漏
  • 实体间关系(1:1/1:N/N:N)已逐一确认
  • 关键字段的取值范围和约束已明确
  • 枚举字段的值域已完整列出
  • 数据规模和增长趋势已评估
  • 高频查询场景已识别
  • 软删除/硬删除策略已确定
  • 历史数据保留需求已确认
  • 多语言翻译需求已确认(哪些实体的哪些字段需要翻译)

任一项未完成,不得进入设计阶段。

1. 需求分析

从 PRD 文档提取业务实体,逐模块分析数据需求,详见 数据库设计指南

2. 概念逻辑模型

3. 库表DDL设计

⚠️ 完成验证(强制,全自动执行)

开发工作完成后,立即按以下顺序自动执行

  1. 强制调用 201-database-design-review
  2. 如果评审不通过(< 95),自动修复问题,然后回到步骤 1(最多 5 轮)
  3. 直到评审通过(≥ 95),才向用户报告最终结果

此流程全自动执行:中间不暂停、不询问、不汇报。 未收到通过确认前,禁止结束本技能任务。

输出要求

输出位置: PROJECT_ROOT/database/

目录结构:

PROJECT_ROOT/database/
├── database-design.md              # 设计文档(E-R图、实体定义、覆盖度验证)
├── database-ddl.sql                # 建表语句
├── migrations/                     # DDL变更文件
└── reviews/                        # 评审报告(REVIEW评审产出)
    └── REVIEW-DB-YYMMDDHHMM.md     # 按时间戳命名,24小时制

包含内容:

  • database-design.md - E-R图、实体说明、数据规模、非功能设计、覆盖度验证。字段定义和索引设计统一在DDL中维护,设计文档通过DDL引用(参见 database-ddl.sql → {表名})避免重复
  • database-ddl.sql - 所有建表、索引、约束语句(字段和索引的唯一真实来源)
  • reviews/REVIEW-DB-YYMMDDHHMM.md - 评审报告

参考

指南与规范

模板文件

关联技能

Install via CLI
npx skills add https://github.com/axeon/uw-spec --skill 200-database-design
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator