数据库开发辅助
wescode 为数据库相关开发提供全面的 AI 辅助,覆盖 Schema 设计、查询编写、迁移管理和性能调优。
Schema 设计
表结构设计
描述业务需求,AI 会生成合理的表结构:
示例提问:
"设计一个多租户的订单系统 Schema,需要支持订单、订单项、
支付记录、退款,要考虑分库分表"
AI 会考虑:
- 表关系和外键设计
- 索引策略
- 分区键选择
- 数据类型选择
- 约束和默认值
Schema 审查
AI 通过 CKG 和 CSE 审查现有 Schema:
- 命名一致性:表名、列名是否遵循项目约定
- 类型合理性:数据类型是否最优
- 索引覆盖:查询是否有合适的索引
- 约束完整性:外键、唯一约束、非空约束
- 规范化程度:是否需要反规范化
SQL 编写
复杂查询
AI 可以帮助编写各种复杂查询:
| 查询类型 | 示例 |
|---|---|
| 多表 JOIN | 关联查询、自连接 |
| 子查询 | 相关子查询、EXISTS/IN |
| 窗口函数 | 排名、累计、移动平均 |
| CTE | 递归查询、层次遍历 |
| 聚合 | GROUP BY、HAVING、ROLLUP |
| 集合操作 | UNION、INTERSECT、EXCEPT |
Go + SQL 集成
针对 Go 项目提供特定辅助:
- sqlx / pgx 查询:生成带参数绑定的查询
- 结构体映射:SQL 结果到 Go struct 的映射
- 事务管理:正确的事务写法和错误处理
- 连接池配置:根据负载建议配置参数
防注入
AI 自动检查 SQL 注入风险:
- 所有用户输入使用参数化查询
- 动态 SQL 拼接的安全替代方案
- ORM 使用中的注入风险
数据迁移
迁移脚本生成
AI 生成向前/向后兼容的迁移脚本:
- 添加列:带默认值的 ALTER TABLE
- 修改类型:安全的类型转换
- 添加索引:CONCURRENTLY 避免锁表
- 数据回填:批量更新策略
迁移最佳实践
- 每次迁移做一件事
- 始终提供回滚脚本
- 大表变更使用在线 DDL
- 分离 Schema 变更和数据变更
- 在测试环境验证后再上线
多方言支持
| 数据库 | 特性支持 |
|---|---|
| PostgreSQL | JSONB、Array、CTE、窗口函数 |
| MySQL | 分区表、全文索引 |
| SQLite | FTS5、JSON 函数 |
| MongoDB | 聚合管道、索引策略 |
查询优化
EXPLAIN 分析
粘贴 EXPLAIN 结果,AI 会解读:
- 执行计划解读
- 全表扫描识别
- 索引使用情况
- JOIN 方式评估
- 排序和临时表开销
索引策略
AI 根据查询模式建议索引:
- 单列索引 vs 复合索引
- 覆盖索引
- 部分索引
- 表达式索引
- 索引维护成本分析
慢查询诊断
提交慢查询日志片段,AI 会:
1. 分析查询执行计划
2. 识别缺失的索引
3. 建议查询重写方案
4. 评估优化效果
数据建模
ER 图设计
描述业务实体关系,AI 帮助设计 ER 模型:
- 实体识别和属性确定
- 关系类型(1:1, 1:N, M:N)
- 中间表设计
- 继承策略(单表、类型表、每类一表)
时序数据
针对时序数据的特殊设计:
- 分区策略(按时间范围)
- 数据归档和压缩
- 聚合表设计
- 保留策略
多租户设计
AI 可以帮助选择和实现多租户方案:
- 共享数据库 + 租户列:简单、适合小规模
- Schema 隔离:中等复杂度、较好隔离
- 数据库隔离:完全隔离、高运维成本
实际场景
场景一:从需求到实现
1. 描述业务需求 → AI 设计 Schema
2. 审查 Schema → AI 调整优化
3. 生成迁移脚本 → AI 编写 up/down
4. 编写 Repository 层 → AI 生成 CRUD
5. 编写测试 → AI 生成测试用例
场景二:线上慢查询
1. 粘贴慢查询 SQL → AI 分析原因
2. 查看执行计划 → AI 解读 EXPLAIN
3. AI 建议索引 + 重写方案
4. 验证优化效果
注意事项
- 生产环境的 DDL 变更先在测试环境验证
- 大表操作注意锁表风险
- 索引不是越多越好,需要权衡写入性能
- 数据迁移始终准备回滚方案
- 敏感数据(密码、证件号)在示例中使用脱敏数据