用途:根据需求设计数据库架构,从需求中提取实体并落地为表结构、关系、索引与约束,同时给出 ORM 配置方式。
主要能力:
- 识别实体:从需求中提取核心名词(如 Users、Teams、Projects、Tasks、Comments),每个实体对应一张表。
- 定义关系:一对一用带唯一约束的外键或同表内嵌;一对多在“多”侧加外键;多对多用中间/连接表;自引用用指向同表的外键(如 parent_id)。
- 设计表结构:给出建表语句示例,主键可用 UUID(分布式或对外 ID)或 SERIAL/BIGSERIAL(仅内部 ID,连接更快);时间戳始终加 created_at 与 updated_at,并使用 TIMESTAMPTZ。
- 命名与约束:表用复数 snake_case,列用单数 snake_case,索引用 idx_<table>_<columns>;除确实可选外都加 NOT NULL,自然键加 UNIQUE,外键指定 ON DELETE 行为(CASCADE、SET NULL、RESTRICT),枚举或取值范围用 CHECK。
- 索引:为外键、WHERE、ORDER BY、JOIN 条件列建索引;小表(少于 1000 行)、低基数列(布尔、仅 3 个值的状态)、很少查询的列不宜建索引。
- ORM 配置:提供 Prisma 与 Drizzle 的模型定义示例。
常见模式:软删除(加 deleted_at)、审计日志(独立 audit_events 表)、标签(连接表)、树形层级(parent_id 或物化路径)、多态关联(entity_type + entity_id,尽量避免,优先分开外键)。
使用方式:按上述工作流从需求出发逐步产出架构,并结合 ORM 示例落地。
限制与提示:先按 3NF 范式化,只有在实测到性能问题后才反范式化;不要存储派生数据,除非有缓存/失效策略;状态字段用数据库枚举或 CHECK,不要用自由文本;始终考虑删除父记录时的后果。资料未提供具体安装命令、收费与平台信息。