# 数据库文件对比报告

生成时间：2025-11-30

## 一、文件基本信息

| 文件名 | 大小 | 行数 | 说明 |
|--------|------|------|------|
| martial_db.sql | 762K | 5,331行 | 原有数据库（旧版） |
| martial_db(1).sql | 833K | 6,015行 | 同事提供的数据库（新版） |

**差异**：新版比旧版多了 **71KB**，增加了 **684行**

## 二、表数量对比

| 数据库版本 | blade_* 系统表 | mt_* 业务表 | martial_* 业务表 | 总计 |
|-----------|---------------|------------|----------------|------|
| 旧版 (martial_db.sql) | 38 | 15 | 0 | **51表** |
| 新版 (martial_db(1).sql) | 38 | 15 | 16 | **67表** |

**核心差异**：新版数据库 **新增了16个 martial_* 业务表**，原有的15个 mt_* 表保持不变。

## 三、新增的16个 martial_* 表

### 3.1 新增表清单

新版数据库新增的martial_*表与main分支的16个实体类完全对应：

| 序号 | 数据库表名 | 对应实体类 | 说明 |
|-----|-----------|-----------|------|
| 1 | martial_activity_schedule | MartialActivitySchedule.java | 活动赛程 |
| 2 | martial_athlete | MartialAthlete.java | 运动员信息 |
| 3 | martial_banner | MartialBanner.java | 轮播图/横幅 |
| 4 | martial_competition | MartialCompetition.java | 赛事信息 |
| 5 | martial_deduction_item | MartialDeductionItem.java | 扣分项目 |
| 6 | martial_info_publish | MartialInfoPublish.java | 信息发布 |
| 7 | martial_judge | MartialJudge.java | 裁判信息 |
| 8 | martial_judge_invite | MartialJudgeInvite.java | 裁判邀请 |
| 9 | martial_live_update | MartialLiveUpdate.java | 实时更新 |
| 10 | martial_project | MartialProject.java | 比赛项目 |
| 11 | martial_registration_order | MartialRegistrationOrder.java | 报名订单 |
| 12 | martial_result | MartialResult.java | 比赛结果 |
| 13 | martial_schedule | MartialSchedule.java | 赛程安排 |
| 14 | martial_schedule_athlete | MartialScheduleAthlete.java | 赛程运动员关联 |
| 15 | martial_score | MartialScore.java | 评分记录 |
| 16 | martial_venue | MartialVenue.java | 比赛场地 |

### 3.2 新增表的分类

**核心业务表（9个，对应旧mt_*表的升级版）**：
- martial_athlete（运动员）
- martial_competition（赛事）
- martial_judge（裁判）
- martial_project（项目）
- martial_registration_order（报名订单）
- martial_result（结果）
- martial_schedule（赛程）
- martial_score（评分）
- martial_venue（场地）

**新增功能表（7个，旧版没有对应表）**：
- martial_activity_schedule（活动赛程）
- martial_banner（轮播图）
- martial_deduction_item（扣分项）
- martial_info_publish（信息发布）
- martial_judge_invite（裁判邀请）
- martial_live_update（实时更新）
- martial_schedule_athlete（赛程运动员关联）

## 四、表结构变化示例

### 4.1 运动员表对比（mt_athlete vs martial_athlete）

**字段数量**：
- mt_athlete：18个字段
- martial_athlete：20+个字段

**主要差异**：

| 旧表字段 | 新表字段 | 变化说明 |
|---------|---------|---------|
| user_id | order_id + competition_id + project_id | 新增多个关联ID |
| name | player_name | 字段重命名 |
| player_number | player_no | 字段重命名 |
| - | birth_date | 新增：出生日期 |
| - | nation | 新增：民族 |
| id_type | id_card_type | 字段重命名 |
| - | contact_phone | 新增：联系电话 |
| unit_name | organization + organization_type | 扩展为组织信息 |
| - | category | 新增：组别 |
| - | order_num | 新增：出场顺序 |
| - | introduction | 新增：选手简介 |
| - | attachments | 新增：附件（JSON） |

**结论**：martial_athlete表增加了大量业务字段，功能更加完善。

### 4.2 赛事表对比（mt_competition vs martial_competition）

**字段数量**：
- mt_competition：53个字段
- martial_competition：63个字段

**新增字段**：约10个字段（详细差异需进一步分析）

## 五、保留的15个 mt_* 表

### 5.1 两个版本都保留的mt_*表

新版数据库完整保留了所有15个旧版mt_*表：

1. mt_athlete（运动员）
2. mt_certificate（证书）
3. mt_competition（赛事）
4. mt_deduction_item（扣分项）
5. mt_judge（裁判）
6. mt_match_log（比赛日志）
7. mt_project（项目）
8. mt_registration_order（报名订单）
9. mt_registration_project（报名项目）
10. mt_result（结果）
11. mt_schedule（赛程）
12. mt_score（评分）
13. mt_team_member（队员）
14. mt_user（用户）
15. mt_venue（场地）

**注意**：其中9个mt_*表在新版中有对应的martial_*升级版，形成新旧并存的局面。

### 5.2 只有mt_*没有martial_*的表（6个）

以下6个表只存在于mt_*命名空间，没有martial_*对应表：

1. mt_certificate（证书）
2. mt_match_log（比赛日志）
3. mt_registration_project（报名项目）
4. mt_team_member（队员）
5. mt_user（用户）
6. ⚠️ mt_deduction_item（扣分项）- 但有martial_deduction_item，可能结构不同

## 六、核心发现与影响

### 6.1 核心发现

✅ **新旧表并存**：
- 新版数据库采用了"新旧并存"策略
- 保留了全部15个mt_*旧表
- 新增了16个martial_*新表
- 9个核心业务表有新旧两版（mt_* + martial_*）

✅ **表结构升级**：
- martial_*表的字段比对应的mt_*表更丰富
- 新增了大量业务字段（如选手简介、附件、组织类别等）
- 字段命名更规范（如name→player_name，player_number→player_no）

✅ **新增功能**：
- 新增7个功能表（轮播图、信息发布、实时更新等）
- 增强了系统的功能完整性

### 6.2 对当前项目的影响

**代码层面**：
- ✅ main分支的16个实体类（Martial*）与新数据库的martial_*表完全匹配
- ✅ dev分支已被覆盖为main分支代码，实体类已同步
- ⚠️ 如果项目还在使用旧的mt_*表，需要迁移数据到martial_*表

**数据迁移**：
- 需要将9个核心业务表的数据从mt_*迁移到martial_*
- 新表字段更多，可能需要数据转换逻辑

**测试影响**：
- 之前针对旧实体类（Athlete、Competition等）的测试需要更新
- 需要针对新实体类（MartialAthlete、MartialCompetition等）重写测试

**数据库选择**：
需要决定：
1. 是否导入新数据库（martial_db(1).sql）？
2. 是否停用旧的mt_*表？
3. 是否需要数据迁移？

## 七、建议的行动方案

### 方案A：全面迁移到新表（推荐）

**优点**：
- 表结构更完善，支持更多业务功能
- 代码已经对齐（main分支实体类匹配martial_*表）
- 避免新旧表混用的混乱

**缺点**：
- 需要数据迁移工作
- 需要重写所有测试

**步骤**：
1. 备份当前数据库
2. 导入martial_db(1).sql
3. 编写数据迁移脚本（mt_* → martial_*）
4. 更新测试代码
5. 验证功能

### 方案B：暂时保留新旧并存

**优点**：
- 无需立即数据迁移
- 旧功能继续可用

**缺点**：
- 数据一致性风险
- 维护复杂度高

### 方案C：只导入6个新功能表

**步骤**：
1. 从martial_db(1).sql中提取7个新功能表的DDL
2. 在当前数据库中创建这7个表
3. 保持9个核心表继续使用mt_*版本
4. 逐步迁移

## 八、总结

### 核心结论

1. **同事的数据库文件（martial_db(1).sql）是一个重大升级版本**
   - 新增16个martial_*表
   - 保留15个mt_*旧表
   - 表结构更完善，字段更丰富

2. **与main分支代码完美匹配**
   - 16个martial_*表 ↔ 16个Martial实体类
   - 表名、字段都已对齐

3. **建议采用方案A（全面迁移）**
   - 统一使用martial_*表
   - 废弃mt_*表（或保留作为历史数据）
   - 重写测试代码

---

**报告生成时间**：2025-11-30
**对比文件**：martial_db.sql vs martial_db(1).sql
**文件位置**：/remote_dev/martial/martial-master/database/martial-db/
