10-数据库与数据分析 × AI 协同
💬 一句话读懂本篇:AI 写 SQL 又快又溜,但它优化的是”这条查询”,你负责的是”整个数据资产”——模型拍板、口径统一、脱敏红线,三样都不能外包。
| 版本 | 适用范围 | 前置阅读 |
|---|---|---|
| V0.1 | 一人公司 / 超级个体 | AI协同开发规范(总纲)、00-汇总·一人公司AI协同岗位全景 |
岗位定位:🤝 人机协同 · AI 承担约 60% 工作量。本册合并传统的 DBA + 数据分析师两个岗位:一人公司里它们本来就是同一顶帽子——数据的”建、查、护、读”全归你。
一、传统画像:DBA / 数据分析师原来干什么
| 岗位 | 工作项 | 传统做法 | 痛点 |
|---|---|---|---|
| DBA | 数据模型设计 | ER 图、范式讨论、评审 | 定错了迁移成本极高 |
| DBA | 建库建表 | 手写 DDL | 约束/索引经常偷懒漏掉 |
| DBA | 性能调优 | 慢查询日志、执行计划 | 专业门槛高 |
| DBA | 备份恢复/迁移 | 脚本+演练 | 见 08 分册 |
| 分析师 | 取数 | 业务方排队等 SQL | 一人公司:自己排队等自己 |
| 分析师 | 报表看板 | BI 工具搭建 | 搭完没人看,看了口径打架 |
| 分析师 | 洞察 | 专题分析报告 | 最值钱也最没时间做 |
二、AI 协同后的新画像
你是”数据资产管家”,AI 是”SQL 翻译官 + 报表工人”。 分工的分界线非常清晰:碰结构、碰口径、碰真实数据的动作归你;写查询、做图表、跑统计归 AI。
flowchart LR
subgraph H["👤 你:数据资产管家"]
H1["① 模型拍板<br>表结构/关系/迁移"]
H2["② 口径拍板<br>指标定义唯一化"]
H3["③ 脱敏红线<br>真实数据不出库"]
H4["④ 洞察决策<br>数字→动作"]
end
subgraph A["🤖 AI:SQL翻译官+报表工人"]
A1["DDL 草稿<br>(约束/索引齐全版)"]
A2["查询 SQL<br>自然语言→SQL"]
A3["慢查询优化建议"]
A4["报表/看板/图表"]
A5["统计摘要与异常检测"]
end
H1 --> A1
H2 --> A2
H3 -.->|"约束所有环节"| A
A4 --> H4
A5 --> H4
classDef human fill:#fff3e0,stroke:#e65100,color:#bf360c
classDef ai fill:#e3f2fd,stroke:#1976d2,color:#0d47a1
class H1,H2,H3,H4 human
class A1,A2,A3,A4,A5 ai
三、逐项对比:传统做法 vs AI 协同做法
| 工作项 | 🐢 传统做法 | 🚀 AI 协同做法 | 谁主导 |
|---|---|---|---|
| 数据模型设计 | DBA 画 ER 图评审 | AI 从 PRD 出模型草稿(模板 A),你拍板——迁移成本你背 | 🧠 你拍板 |
| 建表 DDL | 手写,约束靠自觉 | AI 生成”约束齐全版”(NOT NULL/外键/索引/注释一个不落) | 🤖 AI 起草你审 |
| Schema 变更 | 上线窗口手工执行 | AI 生成迁移脚本+回滚脚本(成对,同 08 分册纪律) | 🤝 强管控协同 |
| 日常取数 | 写 SQL 排查半天 | 自然语言→SQL(模板 B),你核对口径再跑 | 🤖 AI 主导 |
| 慢查询调优 | DBA 看执行计划 | AI 解读执行计划给建议(模板 C),你在从库验证后再上 | 🤝 AI 建议你验证 |
| 报表看板 | 搭 BI、对口径 | AI 按指标字典生成看板和图表代码 | 🤖 AI 主导 |
| 数据洞察 | 专题分析 | AI 跑统计、找异常、出摘要,你负责”数字→动作” | 🤝 人机协同 |
| 数据校验 | 手工抽查 | AI 写校验 SQL(空值/重复/引用完整性/业务规则) | 🤖 AI 主导 |
| 备份恢复 | 定时任务 | 见 08 分册,季度演练不许省 | 🧠 你演练 |
⚠️ 两条铁律:
- AI 生成的 SQL,先读再跑——
UPDATE/DELETE不带对WHERE的事故年年有;SELECT 也可能拖垮生产库(全表扫大表)。- 真实用户数据不进 AI 对话(总纲红线第 2 条)——要 AI 帮你分析,喂表结构+假数据,或本地跑完只把聚合结果贴出去。
四、协同工作流:数据的”建、查、护、读”四循环
flowchart TD
subgraph BUILD["🏗 建(一次性,慎之又慎)"]
B1["🤖 AI 出模型草稿+DDL"] --> B2{"👤 关口:模型评审<br>关系对吗/字段够吗/迁移得起吗"}
B2 -->|"过"| B3["👤 执行 DDL<br>(迁移脚本+回滚成对)"]
end
subgraph QUERY["🔍 查(日常高频)"]
Q1["🤖 自然语言→SQL"] --> Q2{"👤 读 SQL+核口径<br>破坏性语句加事务干跑"}
Q2 -->|"过"| Q3["执行取数"]
end
subgraph GUARD["🛡 护(例行)"]
G1["🤖 慢查询分析+优化建议"] --> G2{"👤 从库验证<br>执行计划真的变好了吗"}
end
subgraph READ["📊 读(周期)"]
R1["🤖 聚合统计+异常检测<br>(本地跑,出聚合结果)"] --> R2{"👤 洞察→动作<br>这个数字要改变什么决策?"}
end
BUILD --> QUERY --> GUARD --> READ
READ -.->|"发现模型/口径问题"| BUILD
classDef human fill:#fff3e0,stroke:#e65100,color:#bf360c
classDef ai fill:#e3f2fd,stroke:#1976d2,color:#0d47a1
class B2,Q2,G2,R2 human
class B1,Q1,G1,R1 ai
节奏建议:建一份指标字典(每个指标一行:名称/定义/口径/负责 SQL),让 AI 生成的一切查询和报表都引用它——口径打架是一人公司数据工作最常见的暗坑:上周”活跃用户”和这周的不是一个东西,你自己都不知道。
五、提示词模板(直接抄作业)
模板 A · 数据模型设计
1
2
3
4
5
6
7
8
9
【输入】PRD 摘要与业务规则:(粘贴);预期数据量级与增长:xxx;数据库:xxx(托管服务)
【任务】设计数据模型:
1. ER 图(mermaid erDiagram)
2. 每张表的 DDL:字段类型精确、NOT NULL 默认拉满、外键与索引齐全、每列带注释
3. 设计说明:为什么这样拆表、预留了什么扩展点、哪些地方故意反范式(说明理由)
【约束】
1. 面向"未来迁移得起":主键策略明确、时间字段统一带时区、软删除策略统一
2. 不确定的业务规则标【待确认】,禁止自行拍板字段语义
3. 一人公司原则:表数量克制,别为"将来可能的微服务"提前拆库
模板 B · 自然语言取数
1
2
3
4
5
6
7
【输入】表结构:(粘贴 DDL,不含真实数据);指标字典相关条目:(粘贴)
【需求】统计:xxx(自然语言描述)
【任务】生成查询 SQL,并附:
1. 口径说明:这条 SQL 里"xxx"是怎么定义的(时间边界/去重规则/排除条件)
2. 与指标字典的一致性自查:有无口径偏差
3. 预估扫描量:会不会扫大表?需要哪个索引?
【约束】只输出 SELECT;聚合粒度明确;口径含糊处先向我提问再写 SQL。
模板 C · 慢查询优化
1
2
3
4
5
6
【输入】慢 SQL:(粘贴);EXPLAIN 输出:(粘贴);表结构与数据量:(粘贴)
【任务】1) 解读执行计划,指出瓶颈(全表扫/错误索引/回表过多/join 顺序);
2) 给出优化方案:改写 SQL / 加索引(给出 DDL)/ 结构调整,各注明代价
3) 预测优化后执行计划的变化
【约束】加索引必须说明写入代价和空间代价;
不确定的地方标注"需在从库验证"——我会先 EXPLAIN 对比再上线。
模板 D · 数据质量校验
1
2
3
4
5
6
7
【输入】表结构 + 业务规则:(粘贴)
【任务】生成一组校验 SQL,覆盖:
1. 完整性:关键字段空值率、外键孤儿记录
2. 唯一性:业务唯一键重复检测
3. 合理性:数值范围异常(负金额/未来时间/超长文本)
4. 一致性:跨表汇总对账(如订单总额 vs 支付流水总额)
每条校验附:查出问题时的严重度(阻塞级/关注级)和建议处置。
六、验收清单
建(模型/DDL 上线前)
- 模型是你拍板的:每张表说得清”存什么、谁写、谁读”
- DDL 约束齐全:NOT NULL/默认值/外键/唯一约束/索引一个不缺
- 迁移脚本 + 回滚脚本成对,且在测试库演练过
- 大表变更评估过锁表影响(选低峰窗口,参照 08 分册时间窗纪律)
查(每次执行 AI 给的 SQL 前)
- SQL 逐行读懂,WHERE 条件和你想要的一致
UPDATE/DELETE:先在事务里SELECT同条件确认行数,再执行- 生产库大查询:先
EXPLAIN,确认不全表扫 - 贴给 AI 的只有表结构和假数据/聚合结果,无真实用户数据
护(例行)
- 慢查询清单每周过一遍,优化先在从库验证
- 备份恢复季度演练(08 分册)
- 数据库账号最小权限:应用账号无 DDL 权限,你的管理账号开 MFA
读(每次看报表前)
- 指标口径出自指标字典,和上次看的是同一个定义
- 异常数字先怀疑口径和管道,再怀疑业务
- 每个”洞察”落成一个动作或一个决定,否则不看(防止报表囤积癖)
七、坑点清单
| 坑 | 长什么样 | 怎么防 |
|---|---|---|
| 无 WHERE 惨案 | AI 生成的 UPDATE 少了条件,全表更新 | 铁律:破坏性语句先事务+SELECT 干跑 |
| 口径漂移 | 同一指标两个报表两个数,AI 每次都”合理”地定义了一遍 | 指标字典唯一化,模板 B 强制引用 |
| 索引反向优化 | AI 建议的索引和你的查询模式不匹配,写入变慢查询没快 | 模板 C 强制”从库验证 EXPLAIN 对比” |
| 方言幻觉 | 把 MySQL 语法写给 PostgreSQL(函数/分页/类型) | 提示词写死数据库类型+版本 |
| 真实数据出库 | 为让 AI”帮忙看看数据”,贴了含手机号的查询结果 | 红线:只贴结构/假数据/聚合结果 |
| 软删除混乱 | 有的表软删有的物理删,统计到处漏条件 | 模板 A 统一删除策略,校验 SQL 盯孤儿数据 |
| 报表囤积癖 | AI 做看板太容易,做了 20 张一张不看 | “读”关口:每张报表绑定一个决策,无决策不上线 |
💬 收尾一句:数据岗的 AI 协同公式是”AI 管语法,你管语义“。SQL 写得再快,模型错了迁移不起、口径错了决策全歪、数据漏了无法挽回——这三件事的把关权,一分钟都不要让渡。 下一册:11-技术文档 × AI 协同(规划中)——AI 承担 85% 的岗位,你的活儿只剩”事实核对”四个字,但恰恰最不能省。