# 数据库迁移脚本说明

## 📦 迁移脚本

### 完整初始化（推荐）

**文件**: `001_init_schema.sql` (49KB, 886行)

**包含内容**：
- ✅ 所有基础表结构（用户、商家、订单、房源等）
- ✅ 营销活动表（邀请返现、优惠券等）
- ✅ 财务系统表（账户、交易流水、提现、结算、对账）
- ✅ 自动创建账户触发器
- ✅ 初始化数据（平台账户、用户账户、商家账户）

**使用场景**：
- 全新项目初始化
- 开发环境重建
- 测试环境搭建

**执行方式**：
```bash
# 删除旧数据库（谨慎操作！）
mysql -u root -p -e "DROP DATABASE IF EXISTS rent_platform;"

# 执行完整初始化
mysql -u root -p < migrations/001_init_schema.sql

# 验证
mysql -u root -p rent_platform -e "SHOW TABLES;"
mysql -u root -p rent_platform -e "SELECT account_type, COUNT(*) as count FROM accounts GROUP BY account_type;"
```

---

## 📊 数据库表结构

### 完整初始化后的表列表（共 34 张表）

#### 用户与权限（4张）
- `users` - 用户表
- `admins` - 平台管理员表
- `sellers` - 商家账户表
- `user_oauth` - 第三方账号绑定表

#### 商家与房源（6张）
- `merchants` - 商家表
- `rooms` - 房型/房源表
- `room_calendar` - 房量房价日历表
- `room_calendar_logs` - 房态变更日志表
- `favorites` - 收藏表
- `reviews` - 评价表

#### 订单与支付（2张）
- `orders` - 订单表
- `payments` - 支付记录表

#### 营销活动（7张）
- `coupons` - 优惠券模板表
- `user_coupons` - 用户优惠券表
- `mkt_activities` - 营销活动表
- `mkt_invitations` - 邀请关系表
- `mkt_cashbacks` - 返现记录表
- `mkt_user_invite_stats` - 用户邀请统计表
- `mkt_invite_withdrawals` - 邀请提现申请表（已废弃，使用 withdrawals）

#### 财务系统（6张）⭐ 核心
- `accounts` - 账户表（用户/商家/平台统一账户）
- `transactions` - 交易流水表（复式记账）
- `withdrawals` - 提现表（统一提现管理）
- `settlements` - 结算单表（商家周结算）
- `settlement_items` - 结算明细表
- `daily_reconciliations` - 日对账表

#### 其他（9张）
- `banners` - 轮播图表
- `notifications` - 通知表
- `system_configs` - 系统配置表
- `operation_logs` - 操作日志表
- `sms_logs` - 短信发送日志表
- `upload_files` - 文件上传记录表

---

## 🚀 快速开始

### 新项目初始化

```bash
# 执行完整初始化脚本（包含所有功能）
mysql -u root -p < migrations/001_init_schema.sql

# 验证
mysql -u root -p rent_platform -e "SHOW TABLES;"
mysql -u root -p rent_platform -e "SELECT account_type, COUNT(*) as count FROM accounts GROUP BY account_type;"
```

---

## ⚠️ 注意事项

### 数据安全

1. **备份数据库**：执行任何迁移前，务必备份数据库
   ```bash
   mysqldump -u root -p rent_platform > backup_$(date +%Y%m%d_%H%M%S).sql
   ```

2. **测试环境验证**：先在测试环境执行，确认无误后再在生产环境执行

3. **检查依赖**：确保 MySQL 版本 >= 5.7（支持 JSON 类型和触发器）

### 触发器说明

脚本会自动创建以下触发器：
- `trg_user_create_account` - 用户注册时自动创建账户
- `trg_merchant_create_account` - 商家审核通过时自动创建账户

如果触发器已存在，会自动跳过。

---

## 📝 版本历史

| 版本 | 日期 | 说明 |
|------|------|------|
| v2.0 | 2026-05-12 | 整合所有功能，添加完整财务系统 |
| v1.0 | 2026-05-08 | 初始化数据库结构 |

---

## 📧 问题反馈

如有问题，请联系开发团队或查看：
- [财务系统完整文档](../财务系统完整文档.md)
- [数据库文档索引](../README.md)

---

**最后更新**：2026-05-12  
**维护团队**：开发团队
