SuperAPI AI 工具集

Database Design

设计与创作

查看项目

更新于 10-15 23:33

技能介绍

用途:该技能用于指导 Next.js 应用在 Supabase 与 PostgreSQL 上的数据库设计,从需求到表结构、关系、行级安全(RLS)与查询优化,帮助建立可维护、可扩展的数据模型。

主要能力:

  1. 模式设计:从业务需求识别实体与关系,定义主外键、数据类型、约束与默认值,并创建索引。示例中建议使用 UUID 主键、TEXT 而非 VARCHAR、TIMESTAMPTZ、JSONB 与 DECIMAL 存金额。
  2. 关系模式:覆盖一对多、多对多(中间表加唯一约束)与自引用树形结构(如评论 parent_id),并为外键建索引。
  3. RLS:启用行级安全,按 SELECT/INSERT/UPDATE/DELETE 分别编写策略,支持基于 auth.uid()、auth.role() 及角色表的访问控制,也支持公开读、认证写。
  4. 索引优化:单列、复合、部分索引与全文检索 GIN 索引,并给出全文检索查询写法。
  5. 高级模式:软删除(deleted_at 加部分索引与 RLS 过滤)、审计日志(触发器写入 audit_log)、自动更新时间戳触发器。
  6. 迁移与查询:使用 Supabase CLI 创建迁移(npx supabase migration new ...)、推送(npx supabase db push),以及 supabase-js 的查询、联表、计数、分页、排序写法。

使用方式:按工作流逐步执行;迁移文件放在 supabase/migrations 下,通过 CLI 应用;可用 npx supabase gen types typescript --local 生成类型。

适用场景:设计新表、建立关系、编写 RLS、优化查询、实现软删除与审计、编写迁移、排查数据库问题、选择数据类型与索引。

限制与注意:资料未提供具体版本要求、性能基准或收费信息;生产环境不应直接改模式,应仅通过迁移;RLS 策略需在不同用户上下文下测试;错误处理建议外键冲突、唯一约束、检查约束友好提示,RLS 错误返回 404 而非 403;性能上建议连接池、避免 SELECT *、使用游标分页与 pg_stat_statements 监控。