# 数据库初始化说明

本目录包含 `snack_mall` 数据库的完整脚本。

## 文件清单

| 文件 | 用途 | 建议时机 |
|------|------|----------|
| `schema.sql`       | 建库 + 21 张业务表的 DDL | 第一次部署时执行 |
| `seed.sql`         | 基础测试数据（管理员、用户、商品、优惠券、活动、客服消息等） | 联调 / 演示前执行 |
| `BUSINESS_DESIGN.md` | 核心业务设计：WebSocket 客服 + Redis 防超卖 | 开发前必读 |

## 执行顺序

```bash
# 方式一：命令行
mysql -u root -p < schema.sql
mysql -u root -p < seed.sql

# 方式二：登录后 source
mysql -u root -p
> source /path/to/schema.sql
> source /path/to/seed.sql

# 方式三：Navicat / DBeaver 直接打开执行
```

## 表清单（共 21 张）

| #  | 表名              | 说明             |
|----|-------------------|------------------|
| 1  | `user`            | 用户表           |
| 2  | `admin`           | 管理员表         |
| 3  | `category`        | 商品分类（多级） |
| 4  | `product`         | 商品 SPU         |
| 5  | `product_sku`     | 商品 SKU         |
| 6  | `address`         | 收货地址         |
| 7  | `cart`            | 购物车           |
| 8  | `orders`          | 订单主表         |
| 9  | `order_item`      | 订单明细         |
| 10 | `favorite`        | 收藏             |
| 11 | `banner`          | 轮播图           |
| 12 | `chat_session`    | 客服会话         |
| 13 | `chat_message`    | 客服消息         |
| 14 | `quick_reply`     | 客服快捷回复     |
| 15 | `notice`          | 系统公告         |
| 16 | `coupon`          | 优惠券模板       |
| 17 | `user_coupon`     | 用户优惠券       |
| 18 | `seckill_activity`| 限时抢购活动     |
| 19 | `seckill_product` | 抢购活动商品     |
| 20 | `seckill_order`   | 抢购订单（防超卖）|
| 21 | `upload_file`     | 文件上传记录     |

## 默认账号

| 角色 | 用户名 | 密码 |
|------|--------|------|
| 管理员 | `admin` | `123456` |
| 管理员 | `manager` | `123456` |
| 管理员 | `operator` | `123456` |
| 普通用户 | `user001` ~ `user005` | `123456` |

> 密码均使用 BCrypt 加密，hash 值在 seed.sql 中。

## 字符集

- 库 / 表：utf8mb4
- 排序规则：utf8mb4_unicode_ci
- 存储 emoji 等四字节字符无压力

## 注意事项

1. **不要在生产环境执行 `seed.sql`** —— 仅用于本地开发与演示。
2. 真实部署时建议**关闭 `notice` 等富文本字段的 XSS 过滤**，由前端做 HTML 转义。
3. 抢购库存的并发安全由 Redis 原子操作 + 数据库兜底双重保障，详见功能设计文档。
