AI辅助数据库设计评审
数据库设计评审优化
点击上方蓝字关注我们

场景
我们之前已经基于大模型在同一会话中进行过需求评审。在研发设计完成数据模型后,导出数据库设计DDL文件,上传到AI平台进行下一步评审。
实践
groupbuy.txt
文件是我们数据库设计的SQL脚本文件。

提示词1
- 您是软件工程专家,我刚刚上传了数据库设计DDL文件
{groupbuy.txt}
,请结合以上需求与原型,对数据库表结构设计进行评审反馈建议,参考:- 数据模型评审
- 实体完整性:检查是否所有实体都已正确定义,并且主键和外键关系正确无误。
- 属性完整性:确保每个属性的数据类型、长度和约束(如非空、唯一性)都符合业务需求。
- 关系完整性:检查实体之间的关系是否正确,包括一对一、一对多、多对多关系。
- 数据模型评审
通义千问

这些建议还是比较中肯。
提示词2
-
您是数据库设计专家,请按我提供的《MySQL数据库设计规范》,结合以上功能列表、需求描述与原型,对文件
{groupbuy.txt}
中的数据库设计再次进行评审:MySQL数据库设计规范
-
命名规则
- 强制:使用小写,避免空格,使用下划线代替,名称中不应有数字,名称应自我解释且不超过32个字符。
- 库命名:使用单数,格式为
业务系统名称_子系统名
,分库名称格式为库通配名_编号
或库通配名_时间
。 - 表命名:使用单数,相关模块的表名应体现join关系,如
user
表和user_login
表。 - 字段命名:避免使用保留字,避免与表名相同的字段名,外键列必须具有表名及其主键。
-
表设计
- 强制:创建表时必须显式指定字符集为
utf8
或utf8mb4
,存储引擎类型为InnoDB
。 - 建议:核心表应有
create_time
和update_time
字段,所有字段应为NOT NULL
。 - 强制:主键命名为
id
,类型为int
或bigint
,且为auto_increment
。
- 强制:创建表时必须显式指定字符集为
-
索引设计
- 强制:主键索引名为
pk_字段名
,唯一索引名为uk_字段名
,普通索引名为idx_字段名
。
- 强制:主键索引名为
-
其他
- 建议:对表里的
blob
、text
等大字段进行垂直拆分,反范式设计以减少join
查询。 - 强制:中间表名称以
tmp_
开头,备份表名称以bak_
开头。
- 建议:对表里的
-
通义千问

这些建议还是比较细致,实际情况下,我们可以根据公司自己的数据库设计规范,更新提示词中的规则。
ChatGPT4-o

进一步追问数据库设计与需求功能一致性:
- 您是DBA,请评审上传的数据库设计
{groupbuy.txt}
的关系模型是否符合拼团分销功能清单.xlsx
文件中的需求,有哪些不足?

如果有PRD或SRS文档,评审结果会更准确。
- 您是QA,请根据我上传的需求原型设计图片,结合需求功能列表,对数据库设计文件
{groupbuy.txt}
再次评审,反馈技术评审报告。

豆包
提示词
- 您是软件QA专家,请评审上传的数据库设计
{groupbuy.txt}
的关系模型是否符合拼团分销功能清单.xlsx
文件,理解原型设计图中的业务需求,判断需求一致性、合理性,有哪些不足,输出数据库设计评审报告。

包含评审报告模板
- 您是软件QA专家,请评审上传的数据库设计
{groupbuy.txt}
的关系模型是否符合拼团分销功能清单.xlsx
文件,理解原型设计图中的业务需求,判断需求与设计的一致性、合理性、扩展性,包含具体有哪些不足,输出数据库设计评审报告。
软件数据库设计评审报告
-
背景
- 本报告旨在对软件数据库设计进行评审,确保数据库设计满足系统需求,结构合理,并具备可维护性、可扩展性、可靠性和安全性等特点。
-
评审内容
- 本次评审的数据库设计包括但不限于以下方面:
- 数据库环境说明
- 数据库的命名规则
- 逻辑设计
- 物理设计
- 安全性设计
- 优化
- 数据库管理与维护说明
- 本次评审的数据库设计包括但不限于以下方面:
-
评审标准
- 评审将依据以下标准进行:
- 正确性、完整性、一致性
- 安全性
- “时-空”效率
- 评审将依据以下标准进行:
-
评审结果
- 经过全面评审,得出以下结论:
- 数据库环境说明:[具体评审结果]
- 数据库命名规则:[具体评审结果]
- 逻辑设计:[具体评审结果]
- 物理设计:[具体评审结果]
- 安全性设计:[具体评审结果]
- 优化:[具体评审结果]
- 数据库管理与维护说明:[具体评审结果]
- 经过全面评审,得出以下结论:
-
评审意见和建议
- [具体建议和意见]
-
结论
- [综合评审结果,得出的结论]

自动化评审
基本思路:
- CI工具拉取GIT中的PDM文件。
- 生成SQL文件到临时目录。
- 提交
git commit
。 - 发起
merge request
。 - 可提前准备好需求文档相关,大模型对
merge request
的diff
进行review
。 - 产出
review
结果到merge request
评论中。 - 评审人辅助决策是否通过
pass
。
可以参考的数据库设计规范
- 阿里JAVA开发手册
- MySQL 数据库设计规范
总结
提高评审效率:
- AI能够自动提取关键信息,快速生成评审报告,大大缩短了评审周期。
- AI还能通过实时监测和智能化建议,帮助评审人员更快地发现问题并作出决策。
增强评审准确性:
- AI基于大数据和机器学习算法,能够更准确地分析数据库设计的优缺点,提供更有针对性的建议。
- AI还能通过比对和分析历史数据,发现潜在的缺陷和风险,提高评审的准确性。
保障数据安全与隐私:
- AI通过对异常数据的分析和检测,可以及时发现潜在的安全隐患,提高数据的安全性。
- AI还能通过数据加密、访问控制等技术手段,保障数据的隐私性。
推动数据库设计的创新与发展:
- AI的引入为数据库设计评审带来了新的思路和方法,推动了数据库设计的创新与发展。
- AI还能通过不断学习和优化,提高数据库设计的水平和质量。
基于AI辅助数据库设计评审的场景广泛且意义重大,它不仅提高了评审效率和准确性,还保障了数据的安全与隐私,推动了数据库设计的创新与发展。
end
精彩评论