2025-08-31 23:29:26 +08:00
|
|
|
|
# 爱鉴花项目数据库设计文档
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 数据库概述
|
2025-09-01 02:35:41 +08:00
|
|
|
|
本项目使用MySQL 8.0+作为主数据库,存储用户、商品、订单、识别记录等核心业务数据。
|
2025-08-31 23:29:26 +08:00
|
|
|
|
|
|
|
|
|
|
## 2. 数据库表结构
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 用户表 (users)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 用户ID | 主键,自增 |
|
|
|
|
|
|
| username | varchar(50) | 用户名 | 唯一索引 |
|
|
|
|
|
|
| email | varchar(100) | 邮箱 | 唯一索引 |
|
|
|
|
|
|
| phone | varchar(20) | 手机号 | 唯一索引 |
|
2025-09-01 02:35:41 +08:00
|
|
|
|
| password | varchar(255) | 密码(bcrypt加密) | 非空 |
|
2025-08-31 23:29:26 +08:00
|
|
|
|
| real_name | varchar(50) | 真实姓名 | 可空 |
|
|
|
|
|
|
| avatar_url | varchar(255) | 头像URL | 可空 |
|
|
|
|
|
|
| user_type | enum | 用户类型 | 非空 |
|
|
|
|
|
|
| status | tinyint | 状态 | 默认1 |
|
|
|
|
|
|
| last_login | timestamp | 最后登录时间 | 可空 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.2 商品分类表 (categories)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | int | 分类ID | 主键,自增 |
|
|
|
|
|
|
| name | varchar(100) | 分类名称 | 非空 |
|
|
|
|
|
|
| parent_id | int | 父分类ID | 默认0 |
|
|
|
|
|
|
| sort_order | int | 排序 | 默认0 |
|
|
|
|
|
|
| status | tinyint | 状态 | 默认1 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.3 商品表 (products)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 商品ID | 主键,自增 |
|
|
|
|
|
|
| name | varchar(200) | 商品名称 | 非空 |
|
|
|
|
|
|
| category_id | int | 分类ID | 索引 |
|
|
|
|
|
|
| price | decimal(10,2) | 价格 | 非空 |
|
|
|
|
|
|
| stock | int | 库存 | 默认0 |
|
|
|
|
|
|
| image | varchar(255) | 图片URL | 可空 |
|
|
|
|
|
|
| description | text | 商品描述 | 可空 |
|
|
|
|
|
|
| status | tinyint | 状态 | 默认1 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.4 订单表 (orders)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 订单ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| total_amount | decimal(10,2) | 订单总额 | 非空 |
|
|
|
|
|
|
| payment_status | tinyint | 支付状态 | 默认0 |
|
|
|
|
|
|
| shipping_status | tinyint | 配送状态 | 默认0 |
|
|
|
|
|
|
| shipping_address | text | 配送地址 | 可空 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.5 订单商品表 (order_items)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 订单项ID | 主键,自增 |
|
|
|
|
|
|
| order_id | bigint | 订单ID | 非空,索引 |
|
|
|
|
|
|
| product_id | bigint | 商品ID | 非空,索引 |
|
|
|
|
|
|
| quantity | int | 数量 | 非空 |
|
|
|
|
|
|
| unit_price | decimal(10,2) | 单价 | 非空 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.6 识别记录表 (identifications)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 记录ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| image_url | varchar(255) | 图片URL | 非空 |
|
|
|
|
|
|
| result | text | 识别结果 | 可空 |
|
|
|
|
|
|
| confidence | decimal(5,4) | 置信度 | 可空 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.7 收货地址表 (addresses)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 地址ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| recipient | varchar(100) | 收货人 | 非空 |
|
|
|
|
|
|
| phone | varchar(20) | 手机号 | 非空 |
|
2025-09-01 03:40:59 +08:00
|
|
|
|
| province | varchar(50) | 省份 | 非空 |
|
|
|
|
|
|
| city | varchar(50) | 城市 | 非空 |
|
|
|
|
|
|
| district | varchar(50) | 区县 | 非空 |
|
|
|
|
|
|
| detail | varchar(255) | 详细地址 | 非空 |
|
2025-08-31 23:29:26 +08:00
|
|
|
|
| is_default | tinyint | 是否默认 | 默认0 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
2025-09-01 03:40:59 +08:00
|
|
|
|
### 2.8 购物车表 (cart_items)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 购物车项ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| product_id | bigint | 商品ID | 非空,索引 |
|
|
|
|
|
|
| quantity | int | 数量 | 非空,默认1 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.9 推广奖励表 (promotions)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 推广ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| promotion_code | varchar(20) | 推广码 | 非空,唯一索引 |
|
|
|
|
|
|
| total_invites | int | 总邀请人数 | 默认0 |
|
|
|
|
|
|
| successful_orders | int | 成功订单数 | 默认0 |
|
|
|
|
|
|
| total_earnings | decimal(10,2) | 总收益 | 默认0 |
|
|
|
|
|
|
| available_balance | decimal(10,2) | 可用余额 | 默认0 |
|
|
|
|
|
|
| withdrawn_amount | decimal(10,2) | 已提现金额 | 默认0 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.10 提现记录表 (withdrawals)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 提现ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| amount | decimal(10,2) | 提现金额 | 非空 |
|
|
|
|
|
|
| payment_method | varchar(20) | 支付方式 | 非空 |
|
|
|
|
|
|
| account_info | varchar(100) | 账户信息 | 非空 |
|
|
|
|
|
|
| status | varchar(20) | 状态 | 非空,默认'pending' |
|
|
|
|
|
|
| transaction_id | varchar(50) | 交易ID | 可空 |
|
|
|
|
|
|
| completed_at | timestamp | 完成时间 | 可空 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.11 支付记录表 (payments)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 支付ID | 主键,自增 |
|
|
|
|
|
|
| order_id | bigint | 订单ID | 非空,索引 |
|
|
|
|
|
|
| payment_method | varchar(20) | 支付方式 | 非空 |
|
|
|
|
|
|
| amount | decimal(10,2) | 支付金额 | 非空 |
|
|
|
|
|
|
| transaction_id | varchar(50) | 交易ID | 可空 |
|
|
|
|
|
|
| status | varchar(20) | 支付状态 | 非空 |
|
|
|
|
|
|
| paid_at | timestamp | 支付时间 | 可空 |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.12 文件上传记录表 (uploads)
|
|
|
|
|
|
| 字段名 | 类型 | 说明 | 约束 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| id | bigint | 上传记录ID | 主键,自增 |
|
|
|
|
|
|
| user_id | bigint | 用户ID | 非空,索引 |
|
|
|
|
|
|
| original_name | varchar(255) | 原始文件名 | 非空 |
|
|
|
|
|
|
| stored_name | varchar(255) | 存储文件名 | 非空 |
|
|
|
|
|
|
| file_path | varchar(500) | 文件路径 | 非空 |
|
|
|
|
|
|
| file_size | bigint | 文件大小 | 非空 |
|
|
|
|
|
|
| mime_type | varchar(100) | MIME类型 | 非空 |
|
|
|
|
|
|
| file_type | enum | 文件类型 | 默认'image' |
|
|
|
|
|
|
| upload_type | varchar(50) | 上传类型 | 非空,索引 |
|
|
|
|
|
|
| status | enum | 状态 | 默认'active' |
|
|
|
|
|
|
| created_at | timestamp | 创建时间 | 默认当前时间 |
|
|
|
|
|
|
| updated_at | timestamp | 更新时间 | 自动更新 |
|
|
|
|
|
|
|
2025-08-31 23:29:26 +08:00
|
|
|
|
## 3. 索引设计
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 唯一索引
|
|
|
|
|
|
- users.phone: 手机号唯一索引
|
|
|
|
|
|
- users.email: 邮箱唯一索引
|
|
|
|
|
|
- users.username: 用户名唯一索引
|
2025-09-01 03:40:59 +08:00
|
|
|
|
- promotions.promotion_code: 推广码唯一索引
|
2025-08-31 23:29:26 +08:00
|
|
|
|
|
|
|
|
|
|
### 3.2 普通索引
|
|
|
|
|
|
- products.category_id: 商品分类索引
|
|
|
|
|
|
- orders.user_id: 订单用户索引
|
|
|
|
|
|
- orders.created_at: 订单时间索引
|
|
|
|
|
|
- identifications.user_id: 识别记录用户索引
|
|
|
|
|
|
- identifications.created_at: 识别时间索引
|
|
|
|
|
|
- addresses.user_id: 地址用户索引
|
2025-09-01 03:40:59 +08:00
|
|
|
|
- cart_items.user_id: 购物车用户索引
|
|
|
|
|
|
- cart_items.product_id: 购物车商品索引
|
|
|
|
|
|
- promotions.user_id: 推广用户索引
|
|
|
|
|
|
- withdrawals.user_id: 提现用户索引
|
|
|
|
|
|
- withdrawals.created_at: 提现时间索引
|
|
|
|
|
|
- payments.order_id: 支付订单索引
|
|
|
|
|
|
- payments.created_at: 支付时间索引
|
|
|
|
|
|
- uploads.user_id: 上传记录用户索引
|
|
|
|
|
|
- uploads.upload_type: 上传类型索引
|
|
|
|
|
|
- uploads.created_at: 上传时间索引
|
2025-08-31 23:29:26 +08:00
|
|
|
|
|
|
|
|
|
|
## 4. 测试数据统计
|
|
|
|
|
|
|
|
|
|
|
|
已插入的测试数据:
|
|
|
|
|
|
- 用户数据: 3条
|
|
|
|
|
|
- 商品分类: 7条
|
|
|
|
|
|
- 商品数据: 5条
|
|
|
|
|
|
- 订单数据: 3条
|
|
|
|
|
|
- 订单商品: 4条
|
|
|
|
|
|
- 识别记录: 3条
|
|
|
|
|
|
- 收货地址: 3条
|
2025-09-01 03:40:59 +08:00
|
|
|
|
- 购物车数据: 5条
|
|
|
|
|
|
- 推广奖励: 2条
|
|
|
|
|
|
- 提现记录: 3条
|
|
|
|
|
|
- 支付记录: 3条
|
|
|
|
|
|
- 上传记录: 0条
|
2025-08-31 23:29:26 +08:00
|
|
|
|
|
2025-09-01 01:05:53 +08:00
|
|
|
|
## 5. 数据库变更记录
|
|
|
|
|
|
|
|
|
|
|
|
### 2024-03-15 更新
|
|
|
|
|
|
- 修复用户表缺少last_login字段的问题
|
2025-09-01 02:35:41 +08:00
|
|
|
|
- 密码字段使用password,采用bcrypt加密存储
|
2025-09-01 01:05:53 +08:00
|
|
|
|
- 增加数据库初始化脚本,包含默认管理员账号(admin/admin123)
|
|
|
|
|
|
|
2025-09-01 03:40:59 +08:00
|
|
|
|
### 2024-01-15 更新
|
|
|
|
|
|
- 地址表增加省份、城市、区县字段,拆分详细地址
|
|
|
|
|
|
- 新增购物车表,支持用户购物车功能
|
|
|
|
|
|
- 新增推广奖励表,支持用户推广功能
|
|
|
|
|
|
- 新增提现记录表,支持推广收益提现
|
|
|
|
|
|
- 新增支付记录表,完善订单支付流程
|
|
|
|
|
|
|
|
|
|
|
|
### 2024-03-20 更新
|
|
|
|
|
|
- 新增文件上传记录表,支持文件上传功能
|
|
|
|
|
|
|
2025-08-31 23:29:26 +08:00
|
|
|
|
## 5. 数据库连接信息
|
|
|
|
|
|
|
|
|
|
|
|
**生产环境**:
|
|
|
|
|
|
- 主机: 129.211.213.226:9527
|
|
|
|
|
|
- 数据库: ajhdata
|
|
|
|
|
|
- 用户名: root
|
|
|
|
|
|
- 密码: aiotAiot123!
|
|
|
|
|
|
|
2025-09-11 09:23:12 +08:00
|
|
|
|
**Java后端开发环境**:
|
|
|
|
|
|
- 主机: 129.211.213.226:9527
|
|
|
|
|
|
- 数据库: xlxumudata
|
|
|
|
|
|
- 用户名: root
|
|
|
|
|
|
- 密码: aiotAiot123!
|
|
|
|
|
|
|
2025-08-31 23:29:26 +08:00
|
|
|
|
**连接池配置**:
|
|
|
|
|
|
- 最大连接数: 200
|
|
|
|
|
|
- 最小连接数: 20
|
|
|
|
|
|
- 超时时间: 30秒
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 字符编码和时区
|
|
|
|
|
|
- 字符编码: UTF8MB4(支持emoji表情)
|
|
|
|
|
|
- 时区设置: 东八区(+08:00)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
2025-09-01 02:35:41 +08:00
|
|
|
|
*本文档最后更新: 2024-03-15*
|
|
|
|
|
|
*数据库版本: MySQL 8.0+*
|