5.3 KiB
5.3 KiB
数据模型统一重构方案
项目概述
创建时间: 2025-01-15
执行模式: 方案B - 完全统一数据模型
目标: 统一vehicle_id为数字ID,license_plate为车牌号,消除所有字段名不一致
用户需求
- 采用方案B,统一名称和含义
- license_plate_number和license_plate都采用license_plate
- 统一所有的名称和含义,去掉各种中间转换
- 其他表有类似问题也一样处理
详细分析
🎯 统一规则
- vehicle_id: 所有表中统一为
BIGINT数字ID(主键,自增) - license_plate: 所有表中统一为
VARCHAR(50)车牌号字段名 - 关联关系: 通过
vehicle_id进行主键关联,license_plate作为业务标识
📊 影响范围分析
数据库表结构变更
QAUP-Management:
-- 当前: sys_vehicle_info
vehicle_id BIGINT (主键)
license_plate_number VARCHAR(50) → license_plate VARCHAR(50)
-- 变更:重命名字段
ALTER TABLE sys_vehicle_info RENAME COLUMN license_plate_number TO license_plate;
CollisionAvoidanceSystem:
-- 当前: vehicle_locations
vehicle_id VARCHAR(50) (车牌号) → BIGINT (数字ID)
新增: license_plate VARCHAR(50) (车牌号)
-- 变更:类型转换 + 新增字段
ALTER TABLE vehicle_locations ADD COLUMN license_plate VARCHAR(50);
ALTER TABLE vehicle_locations ADD COLUMN vehicle_id_new BIGINT;
-- 数据迁移后删除旧字段,重命名新字段
Java代码变更统计
QAUP-Management (预计15个文件):
SysVehicleInfo.java- 实体类字段重命名SysVehicleInfoMapper.xml- MyBatis映射更新SysVehicleInfoMapper.java- 接口方法参数SysVehicleInfoService.java- 服务层逻辑SysVehicleInfoController.java- 控制器- 前端Vue组件 - 表单字段和API调用
CollisionAvoidanceSystem (预计25个文件):
- 所有包含
vehicleId的实体类(字段类型变更) - 所有相关的 Repository、Service、Controller
- DTO和转换器类
- WebSocket消息处理类
🔄 数据迁移策略
第一阶段:数据结构准备
- 创建临时字段
- 建立车牌号到数字ID的映射表
- 数据完整性检查
第二阶段:数据迁移
- 填充新字段数据
- 验证数据一致性
- 更新外键约束
第三阶段:结构清理
- 删除旧字段
- 重命名新字段
- 重建索引和约束
实施检查清单
1. 数据库结构变更脚本
- 创建统一的数据库变更脚本
- 包含回滚脚本
- 数据完整性验证
2. QAUP-Management代码更新
- 更新SysVehicleInfo实体类
- 更新MyBatis Mapper文件
- 更新Service层代码
- 更新Controller层代码
- 更新前端Vue组件
3. CollisionAvoidanceSystem代码更新
- 更新所有实体类的vehicle_id字段类型
- 更新Repository接口
- 更新Service层逻辑
- 更新Controller层代码
- 更新DTO和转换器
- 更新WebSocket消息处理
4. 数据迁移执行
- 备份现有数据
- 执行结构变更脚本
- 执行数据迁移脚本
- 验证数据完整性
5. 测试验证
- 单元测试更新
- 集成测试更新
- 功能测试验证
- 性能测试验证
6. 文档更新
- API文档更新
- 数据库文档更新
- 使用指南更新
- 版本变更记录
风险评估
🔴 高风险点
- 数据完整性风险: 迁移过程中可能的数据丢失
- 接口兼容性风险: 外部系统调用可能受影响
- 系统停机风险: 结构变更需要服务停机
🟡 中风险点
- 代码兼容性: 大量代码变更可能引入新bug
- 性能影响: 索引重建可能影响查询性能
- 回滚复杂度: 变更范围大,回滚操作复杂
🟢 低风险点
- 业务逻辑: 核心业务逻辑不变
- 用户体验: 前端界面基本不变
实施计划
准备阶段(1-2天)
- 创建完整的数据库变更脚本
- 创建车牌号到数字ID的映射关系
- 准备回滚脚本和验证脚本
开发阶段(3-5天)
- 并行更新两个项目的代码
- 更新所有相关测试用例
- 本地环境验证
测试阶段(2-3天)
- 完整的数据迁移测试
- 功能回归测试
- 性能影响评估
部署阶段(1天)
- 生产环境数据备份
- 服务停机窗口执行变更
- 验证和监控
当前执行步骤
正在执行: "1. 分析所有相关表和字段,制定统一的数据模型重构方案"
后续步骤预览
- 创建数据库结构变更脚本
- 更新QAUP-Management Java实体类
- 更新CollisionAvoidanceSystem Java实体类
- 同步Mapper和Repository更新
- 更新Service层代码
- 更新API接口
- 更新前端组件
- 创建数据迁移脚本
- 更新测试用例
- 完整验证和测试
完成标准
数据模型统一
- 所有表的vehicle_id都是BIGINT类型
- 所有表的车牌号字段都叫license_plate
- 消除所有字段名不一致
代码质量
- 所有编译错误已解决
- 所有单元测试通过
- 代码风格一致
功能验证
- 车辆管理功能正常
- 实时位置监控正常
- 数据关联查询正常
- API接口响应正确
性能验证
- 查询性能不降低
- 数据库索引优化
- 内存使用正常