概述
Database Schema Designer 是一个面向关系型数据库设计的人工智能技能,所属 Tier 为 POWERFUL,分类为 Engineering,领域为 Data Architecture / Backend。它根据需求设计数据库模式,并生成迁移脚本、TypeScript/Python 类型、种子数据、RLS 策略和索引。该技能能够处理多租户、软删除、审计追踪、版本控制和多态关联等架构关注点。
主要能力
- 模式设计:将需求规范化为表、关系和约束
- 迁移生成:支持 Drizzle、Prisma、TypeORM、Alembic
- 类型生成:TypeScript 接口、Python dataclasses/Pydantic 模型
- RLS 策略:为多租户应用提供行级安全策略
- 索引策略:组合索引、部分索引、覆盖索引
- 种子数据:生成真实的测试数据
- ERD 生成:从模式生成 Mermaid 图表
适用场景
- 设计需要数据库表的新功能
- 审查模式的性能或规范化问题
- 为现有模式添加多租户支持
- 从 Prisma 模式生成 TypeScript 类型
- 规划破坏性变更的模式迁移
模式设计流程
第一步:需求 → 实体
给定需求,例如:“用户可创建项目。每个项目有任务。任务可以有标签。任务可以分配给用户。我们需要完整的审计追踪。”提取实体:User、Project、Task、Label、TaskLabel(联结表)、TaskAssignment、AuditLog。
第二步:识别关系
User 1──* Project(所有者)、Project 1──* Task、Task ── Label(通过 TaskLabel)、Task ── User(通过 TaskAssignment)、User 1──* AuditLog。
第三步:添加跨领域关注点
- 多租户:在所有租户范围的表中添加 organization_id
- 软删除:添加 deleted_at TIMESTAMPTZ 代替硬删除
- 审计追踪:添加 created_by、updated_by、created_at、updated_at
- 版本控制:添加 version INTEGER 用于乐观锁
完整模式示例(任务管理 SaaS)可参考 references/full-schema-examples.md。
行级安全(RLS)策略
提供启用 RLS、创建应用角色、组织隔离策略、软删除策略、删除权限策略的 SQL 示例,并演示通过 set_config 设置用户上下文。
种子数据生成
提供基于 @faker-js/faker 的种子脚本示例,创建组织、用户、项目、任务等数据。
ERD 生成(Mermaid)
提供 Mermaid erDiagram 示例,展示 Organization、User、Project、Task、Label、TaskAssignment、Comment、Attachment 等实体关系,并给出从 Prisma 生成的命令。
常见陷阱
- 软删除无索引
- 缺少组合索引
- 使用可变代理键
- 新增非空列无默认值
- 无乐观锁
- RLS 未测试
最佳实践
- 所有表添加时间戳
- 可审计数据使用软删除
- 合规场景使用审计日志
- 使用 UUID 或 CUID 作为主键
- 为外键建立索引
- 使用部分索引
- 优先使用数据库级 RLS 而非应用层过滤