用途
Database Designer 是一个用于数据库设计的 Claude Code 技能,目标是根据用户需求产出完整、可投入生产的数据库模式,并生成综合文档、SQL 脚本以及与 DrawDB 兼容的可视化 ER 图文件。当用户请求为任意系统进行数据库设计时(例如电商系统、博客系统,或单独的用户表),即可使用该技能。
核心设计原则
在开始任何设计之前,工具会阅读 references/design-principles.md 以理解以下原则:
- 不使用物理外键,仅保留逻辑关系
- 根据实际使用情况设定合理的字段长度
- 最小化且具策略性的索引设计
- 所有表和字段强制添加注释
- 包含默认系统字段(id、时间戳、软删除)
- 采用 snake_case 命名约定
工作流程
第 1 步:理解需求
收集数据库设计相关信息:数据库类型(默认 MySQL 8.0,也支持 PostgreSQL、SQL Server 等)、业务领域(电商、博客、CRM、ERP 等)、核心实体(需要哪些主要表)、关键功能、特殊要求。
如果用户提供的信息很少,工具会依据 references/design-examples.md 中记录的常见业务场景与最佳实践智能推断缺失细节。例如:用户说“设计一个用户表”,会推断出 username、password、email、phone、status;用户说“电商系统”,会推断出 user、product、order、order_detail 表;用户说“博客系统”,会推断出 user、article、comment、tag、article_tag 表。
第 2 步:加载参考文档
根据设计需求加载相应参考:始终加载 references/design-principles.md;生成格式时加载 references/drawdb-formats.md;需要示例时加载 references/design-examples.md。
第 3 步:设计数据库模式
为每张表添加默认系统字段(除非用户另有说明):id BIGINT AUTO_INCREMENT PRIMARY KEY、created_at、updated_at、is_deleted。以符合实际的尺寸设计业务字段,并为表和字段添加中文 COMMENT,不创建物理 FOREIGN KEY 约束。
索引设计策略针对 WHERE 条件字段、JOIN 字段、ORDER BY / GROUP BY 字段以及唯一约束创建索引。索引命名约定为:普通索引 idx_field_name 或 idx_field1_field2,唯一索引 uk_field_name。每张表最多 5 个索引(用户要求更多时除外),只创建直接支持业务查询的索引。
关系设计包括:一对多(最常见,在多方表添加 user_id)、一对一(表拆分场景,在从表添加 UNIQUE 的 user_id)、多对多(需要中间表,如 article_tag 同时包含 article_id 与 tag_id)。
第 4 步:生成产出
产出四类文件:
- 综合设计文档(Markdown,中文):包含数据库概览、各表结构与索引列表、表关系说明、索引策略说明。
- SQL 脚本:可执行 SQL,含按依赖逆序的 DROP TABLE、按依赖顺序的 CREATE TABLE。
- DrawDB JSON 格式文件:表与字段 ID 使用随机 21 字符字符串,索引 ID 为从 0 开始的数字自增,字段 type 包含完整类型定义(如 "VARCHAR(100)"),索引字段使用字段名字符串而非 ID,坐标为浮点数。布局采用网格策略,颜色在预定义调色板中轮换。为所有 xxx_id 外键字段生成关系,依据 UNIQUE 约束设定基数(有 UNIQUE 为 one_to_one,无则为 many_to_one)。
- DrawDB DBML 格式文件:使用小写数据类型,在方括号内添加属性(pk、increment、not null、unique、note),在表定义的 indexes { } 块内定义索引,在表外用 Ref 块定义关系,使用 >(多对一)、-(一对一)符号。
坐标与布局采用网格方式,颜色在预定义列表中循环使用。
第 5 步:最终交付
输出目录推荐遵循 Claude Code 官方标准,保存到 outputs/<project-name>/database/,包含 schema-design.md、schema.sql、drawdb-schema.json、drawdb-schema.dbml 四个必需文件。可选产出包括 ER 图 PNG 与索引策略文档。文件命名使用 kebab-case,必要时带版本或日期。交付时提供设计决策概述、表数量、关键关系及理由、如何导入 DrawDB、文件保存位置确认以及后续步骤建议。
特殊处理
- 用户说“不要系统字段”时,只创建最小结构,仅保留 id 主键与业务字段。
- 用户指定非 MySQL 数据库时,调整 SQL 语法:PostgreSQL 使用 SERIAL/BIGSERIAL、TIMESTAMP;SQL Server 使用 IDENTITY(1,1)、DATETIME2、NVARCHAR;Oracle 使用 SEQUENCE、VARCHAR2、DATE 或 TIMESTAMP。
- 需求模糊时,识别业务领域、参考设计示例、纳入领域常见字段、设计合理索引,并在设计文档中说明所作假设。
质量校验
最终确定前会校验:所有表和字段都有 COMMENT;字段尺寸真实(非笼统的 VARCHAR(255));每张表索引数 ≤ 5;无物理 FOREIGN KEY 约束;已添加系统字段(除非用户另有说明);所有名称使用 snake_case;逻辑关系记录清晰;SQL 语法匹配目标数据库类型;JSON/DBML 格式符合 DrawDB 规范;所有外键关系都有对应的 Ref 条目。
适用场景
适合需要快速产出规范化数据库模式的开发场景,例如为电商、博客、CRM 等系统设计数据库,或为特定表生成多格式产出(文档、SQL、可视化 ER 图)。
限制
资料未提供该技能的具体安装命令、收费方式、平台限制、性能数据或实际使用效果说明。数据库类型支持范围以资料中列出的为准(MySQL 8.0 默认、PostgreSQL、SQL Server、Oracle)。