引言
在小组开发过程中,数据库表结构的更改是最频繁且最容易出错的环节。一个小问题可能会导致整个团队浪费大量时间进行排查和修复。因此,数据库表结构的更新需要采用严格的管理流程,禁止随意更改,确保所有修改都通过统一渠道进行处理。
为了解决这一问题,我们设计了一种方法:通过 Excel 统一管理 MySQL 数据库结构的更新变动,然后使用 excelToMysql
工具自动执行 Excel 上的更新。这样做的目的是保证数据库结构变更的可追溯性和一致性,减少人为失误,提高开发效率。
为什么选择 Excel 作为数据库结构管理工具?
- 清晰直观:Excel 以表格形式管理数据库表结构,所有字段及其属性一目了然。
- 版本控制:数据库表结构的变更可以通过 Excel 文件版本管理,确保每次修改都有记录。
- 降低误操作风险:开发团队成员无法直接修改数据库结构,必须通过 Excel 进行更改,避免误操作。
- 统一规范:Excel 规范了表结构的变更格式,避免不同人员对字段类型、命名方式等理解不同,导致不一致。
Excel 表结构管理方案
我们在 Excel 中维护数据库表结构,主要包含以下字段,表的每个字段顺序可调整:
表名称 | 字段名称 | 数据类型 | 主键 | 约束 | 允许为空 | 默认值 | 备注 |
---|---|---|---|---|---|---|---|
users | id | INT | 是 | AUTO_INCREMENT | 否 | 无 | 用户 ID |
users | name | VARCHAR(255) | 否 | UNIQUE | 否 | 无 | 用户名 |
users | VARCHAR(255) | 否 | UNIQUE | 否 | 无 | 邮箱 | |
orders | id | INT | 是 | AUTO_INCREMENT | 否 | 无 | 订单 ID |
orders | user_id | INT | 否 | FOREIGN KEY (users.id) | 否 | 无 | 关联用户 ID |
Excel 的每一行表示数据库中的一个字段,每一列存储字段的属性信息,如数据类型、主键、约束条件等。这样,每次修改数据库结构时,都可以通过 Excel 进行维护,并确保所有修改都是可追溯的。
下面是Excel模板截图(概览页、表页),首页是表概览,可以点击跳转到表:
excelToMysql
工具的作用
excelToMysql
是一个 Go 语言编写的工具,它的作用是:
- 读取 Excel 文件,解析数据库表结构的更新内容。
- 对比 MySQL 现有结构,找出新增、修改或删除的字段。
- 生成 SQL 语句,自动执行数据库结构更新。
- 支持反向导出,可以从 MySQL 数据库结构生成 Excel 文件,确保数据同步。
具体实践流程
产品团队/数据库管理员更新 Excel 文件
- 所有数据库结构的更改必须由产品团队或数据库管理员修改 Excel 文件,并提交到版本管理系统(如 Git)。
开发团队拉取最新的 Excel 文件
- 开发人员在修改数据库相关代码前,先拉取最新版本的 Excel 文件,确保使用的是最新的数据库结构。
使用
excelToMysql
工具更新数据库结构- 运行
excelToMysql
工具,它会自动读取 Excel 文件并更新 MySQL 数据库。
- 运行
执行数据库变更审核
- 重大变更(如删除表、修改主键等)需要额外审核,确保不会影响现有数据。
处理已有测试数据的字段新增问题
- 在测试环境中,如果数据库已存在数据而新增字段,始终只允许单个字段的修改或添加。
- 对于新增字段,默认情况下底下数据为空,后续由脚本填充或在 Excel 中指定默认值。
- 这样可以确保数据库变更的兼容性,避免因字段新增导致测试数据异常。
团队成员开发并测试
- 由于数据库结构变更是统一管理的,团队成员可以专注于业务开发,而不用担心数据库结构不一致的问题。
结论
通过 Excel 统一管理 MySQL 数据库结构 并使用 excelToMysql
工具 执行更新,我们实现了数据库结构变更的标准化、可追溯性和高效性。
这种方式不仅可以减少因数据库结构变更带来的问题,还可以提高团队协作效率,确保所有开发人员始终使用最新的数据库结构。
希望本篇文章能为团队协作开发提供有益的实践参考!