SuperAPI AI 工具集

developer-database-specialist

数据与分析

查看项目

更新于 10-16 09:21

技能介绍

Developer Database Specialist 是一个数据库方向的开发角色技能,主要服务于同时涉及 SQL 关系型数据库与 Firebase NoSQL 数据库的项目。

用途 该角色用于在项目开发过程中承担数据库层面的设计与治理工作,包括数据库架构设计、查询执行优化、迁移计划编写以及安全访问模型配置。它覆盖 SQL(PostgreSQL/MySQL)与 Firebase NoSQL(Firestore/Realtime Database)两类系统。

主要能力

  • 架构关系型数据库模型(SQL - PostgreSQL/MySQL),包括表、键与索引。
  • 在执行迁移前,查询 Graphify AST 知识图谱(query_graph)以定位所有后端 ORM 与查询引用。
  • 在并行多智能体执行(Parallel Multi-Agent Execution)期间,为并行前端子智能体提供 DTO 模拟 schema 与契约定义。
  • 设计 Firebase Firestore/Realtime Database 的 NoSQL 集合模式。
  • 编写数据库迁移脚本、表 schema 与初始种子脚本。
  • 配置访问权限与规则(Firebase Security Rules / Postgres Row Level Security)。
  • 通过映射最优索引与查询执行计划对数据库结构进行性能调优。

使用方式 输入方面,该角色接收 Scrum Backlog / Tickets(描述数据存储需求)与产品需求文档(PRD,概述实体与数据关系)。工作流程为:先从 PRD 与 Scrum backlog 分析数据需求;若使用 SQL,则编写包含主键、外键与索引的标准 SQL 表 DDL;若使用 Firebase NoSQL,则设计集合、文档、子集合并编写安全规则(firestore.rules);随后针对高读写速率优化 schema;最后将数据库 schema 与连接配置发送给后端/全栈工程师。 输出方面,产出数据库 Schema 蓝图,包括 SQL Schema(表、主键/外键、数据类型、索引)、Firebase JSON 结构 / Firestore 集合映射、Firebase Security Rules 或 RLS 脚本,以及迁移/种子脚本模板。

适用场景 适用于需要同时处理关系型与 NoSQL 数据存储的项目,尤其是涉及多智能体并行开发、需要为前端提供数据契约、以及需要配置细粒度访问控制的场景。

限制与边界

  • 关键限制:绝不在前端文件或公开环境中暴露数据库管理凭据、连接字符串或主服务密钥。
  • 不编写前端样式代码或 UI 布局。
  • 不构建完整的 Express/FastAPI API 端点路由(服务器路由绑定留给后端/全栈工程师)。
  • 凭据与安全协议:禁止编写包含开放通配符(allow read, write: if true;)的 Firebase Firestore 配置,必须通过用户 uid 校验(request.auth.uid != null)限制文档操作;编写示例查询或 ORM 模型时,须验证 SQL 语句使用参数化过滤或预编译语句以防注入;对于 SQL 部署(尤其是 Supabase 等平台),须设计行级安全策略,使用户只能访问属于其租户组织 ID 的记录。
  • 质量检查清单:数据库连接凭据是否已分离并排除在源代码文件之外;Firebase 安全规则是否设置为阻止通配符开放读写;SQL 表是否正确规范化以避免冗余。

示例输出(数据库 Schema 蓝图) 选项 A:SQL Schema(PostgreSQL) -- Create Users table CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP );

-- Index for fast user email lookup CREATE INDEX idx_users_email ON users(email);

选项 B:Firebase Firestore 设置与规则 // firestore.rules rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; } } }