1128. 号卡分销系统的数据库表结构变更文档记录
变更编号
1128
变更日期
2023-10-15
变更类型
数据库表结构变更
变更系统
号卡分销系统
变更申请人
张三(技术部数据库管理员)
变更原因
随着号卡分销业务量的快速增长,现有数据库表结构已无法满足以下需求:
1. 业务扩展需求:新增代理商分级管理体系,需要对现有表结构进行扩展
2. 性能优化需求:部分查询操作响应时间过长,需要优化表结构
3. 数据完整性需求:现有表缺少必要的约束和索引,导致数据质量问题
4. 新功能需求:即将上线的新营销活动功能需要支持更复杂的关联查询
变更内容
1. 新增表结构
表名:t_agent_level
```sql
CREATE TABLE t_agent_level (
id INT PRIMARY KEY AUTO_INCREMENT,
level_code VARCHAR(20) NOT NULL COMMENT '级别编码',
level_name VARCHAR(50) NOT NULL COMMENT '级别名称',
discount_rate DECIMAL(5,2) NOT NULL COMMENT '折扣率',
min_order_amount DECIMAL(10,2) COMMENT '最低订单金额',
max_order_amount DECIMAL(10,2) COMMENT '最高订单金额',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
status TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-禁用',
UNIQUE KEY (level_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代理商级别表';
```
表名:t_order_goods
```sql
CREATE TABLE t_order_goods (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id BIGINT NOT NULL COMMENT '订单ID',
goods_id BIGINT NOT NULL COMMENT '商品ID',
goods_name VARCHAR(100) NOT NULL COMMENT '商品名称',
goods_price DECIMAL(10,2) NOT NULL COMMENT '商品价格',
goods_quantity INT NOT NULL COMMENT '商品数量',
goods_amount DECIMAL(10,2) NOT NULL COMMENT '商品金额',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES t_order(id),
FOREIGN KEY (goods_id) REFERENCES t_goods(id),
KEY (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品关联表';
```
2. 现有表结构修改
表名:t_agent
```sql
ALTER TABLE t_agent
ADD COLUMN level_id INT COMMENT '代理商级别ID',
ADD COLUMN level_name VARCHAR(50) COMMENT '代理商级别名称',
ADD COLUMN parent_id INT COMMENT '上级代理商ID',
ADD COLUMN direct_sales_amount DECIMAL(15,2) COMMENT '直营销售额',
ADD COLUMN subordinate_sales_amount DECIMAL(15,2) COMMENT '下级销售额',
ADD COLUMN total_sales_amount DECIMAL(15,2) COMMENT '总销售额',
ADD COLUMN upgrade_time DATETIME COMMENT '升级时间',
ADD COLUMN is_direct TINYINT DEFAULT 1 COMMENT '是否直营商:1-是,0-否',
ADD FOREIGN KEY (level_id) REFERENCES t_agent_level(id),
ADD FOREIGN KEY (parent_id) REFERENCES t_agent(id);
```
表名:t_order
```sql
ALTER TABLE t_order
ADD COLUMN agent_level_id INT COMMENT '代理商级别ID',
ADD COLUMN agent_discount DECIMAL(5,2) COMMENT '代理商折扣率',
ADD COLUMN actual_amount DECIMAL(10,2) COMMENT '实际支付金额',
ADD COLUMN settlement_amount DECIMAL(10,2) COMMENT '结算金额',
ADD COLUMN settlement_status TINYINT DEFAULT 0 COMMENT '结算状态:0-未结算,1-已结算',
ADD FOREIGN KEY (agent_level_id) REFERENCES t_agent_level(id);
```
3. 索引优化
```sql
-- 为t_order表添加复合索引
CREATE INDEX idx_order_agent_time ON t_order(agent_id, create_time);
-- 为t_agent表添加复合索引
CREATE INDEX idx_agent_parent_level ON t_agent(parent_id, level_id);
-- 为t_order_goods表添加索引
CREATE INDEX idx_order_goods_order ON t_order_goods(order_id);
```
变更影响分析
1. **正面影响**:
- 提升系统性能,优化后的表结构将减少约30%的查询响应时间
- 增强数据完整性,新增的约束条件将有效避免数据异常
- 支持新的代理商分级管理体系,为业务扩展奠定基础
- 为即将上线的营销活动功能提供数据支持
2. **潜在风险**:
- 需要同步更新相关业务代码,存在一定开发工作量
- 现有历史数据需要迁移,需制定详细的数据迁移方案
- 系统升级期间可能影响业务稳定性,需选择合适的时间窗口
变更实施计划
1. **准备阶段**(3天):
- 制定详细的数据迁移方案
- 准备测试环境进行充分测试
- 编写变更回滚方案
2. **实施阶段**(1天):
- 在业务低峰期执行数据库变更
- 执行数据迁移脚本
- 验证变更结果
3. **监控阶段**(7天):
- 密切监控系统性能指标
- 收集用户反馈
- 处理可能出现的异常情况
变更验证标准
1. 所有新增表结构正确创建
2. 所有修改的表结构变更正确执行
3. 所有新增的索引正确创建
4. 系统核心功能不受影响
5. 数据迁移准确无误
6. 性能指标达到预期目标
变更审批记录
| 审批人 | 部门 | 审批意见 | 审批日期 |
|--------|------|----------|----------|
| 李四 | 数据库管理组 | 同意变更 | 2023-10-16 |
| 王五 | 业务部门 | 同意变更 | 2023-10-16 |
| 赵六 | 运维部门 | 同意变更 | 2023-10-17 |
变更执行记录
| 执行人 | 执行时间 | 执行结果 | 备注 |
|--------|----------|----------|------|
| 张三 | 2023-10-18 02:00 | 成功 | 在业务低峰期执行 |
| 张三 | 2023-10-18 03:00 | 成功 | 执行数据迁移脚本 |
| 张三 | 2023-10-18 04:00 | 成功 | 验证变更结果 |
变更回滚方案
如果变更过程中出现严重问题,将执行以下回滚步骤:
1. 恢复数据库备份
2. 移除新增的表结构
3. 恢复原有表结构
4. 执行数据恢复脚本
5. 通知相关团队系统恢复情况
变更后维护建议
1. 定期监控新增表的使用情况,根据实际需求调整索引
2. 建立数据质量检查机制,确保数据完整性
3. 制定定期维护计划,优化数据库性能
4. 为开发团队提供详细的变更文档培训
附录
1. 详细SQL脚本
2. 数据迁移脚本
3. 性能测试报告
4. 用户影响评估报告
本变更文档由技术部数据库管理组编制,经相关部门审批后执行。变更完成后,将纳入系统变更历史记录,并作为后续维护的参考依据。
