← ClaudeAtlas

database-designlisted

当用户要求"设计表/加字段/写迁移/改表结构/设计索引"时触发。 产出数据库表设计与 Flyway 迁移脚本。 MUST 含审计字段、合适索引、逻辑删除。
structure-projects/structure-agent-rules · ★ 1 · Web & Frontend · score 66
Install: claude install-skill structure-projects/structure-agent-rules
# 数据库设计 > 产出表结构与迁移脚本。**MUST 含审计字段、逻辑删除、合适索引**。 ## 前置条件 - 模型设计已完成(`model-design` 技能产出) ## 执行步骤 ### 第 1 步:设计表结构 ```sql CREATE TABLE `user` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `tenant_id` BIGINT NOT NULL COMMENT '租户 ID', `username` VARCHAR(64) NOT NULL COMMENT '用户名', `password` VARCHAR(128) NOT NULL COMMENT '密码(加密存储)', `email` VARCHAR(128) COMMENT '邮箱', `mobile` VARCHAR(32) COMMENT '手机号', `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1 启用 0 禁用', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0 正常 1 已删', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_username` (`tenant_id`, `username`), KEY `idx_email` (`email`), KEY `idx_mobile` (`mobile`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; ``` ### 第 2 步:关键约束(MUST 遵守) | 约束 | 说明 | |---|---| | 主键 | `id BIGINT AUTO_INCREMENT`(不用 UUID,除非分库分表) | | 审计字段 | `create_time` / `update_time` / `is_deleted` / `tenant_id` MUST 存在 | | 逻辑删除 | `is_deleted TINYINT` + MyBatis-Plus `@TableLogic` | | 命名 | 表名/字段名 MUST `lower_snake_case` | | 字符集 | `utf8mb4` | | 引擎 | `InnoDB` | | 注释 | 每个表 / 字段 MUST 有 `COMMENT` | ### 第 3 步:设计索引 **MUST 索引**: - 主键(PRIMARY KEY) - 唯一约束(UNIQUE KEY) - 高频查询字段(KEY) - 外键关联字段(KEY) - 多租户字段(tenant_id,几乎所有查询都带) **禁止**: - 在低选择性字段建索引(如 status 只有 0/1) - 超过 5 个索引(影响写入性能) ### 第 4 步:生成 Flyway 迁移脚本 文件位置:`