爱鉴花项目数据库设计文档
1. 数据库概述
本项目使用MySQL 8.0+作为主数据库,存储用户、商品、订单、识别记录等核心业务数据。
2. 数据库表结构
2.1 用户表 (users)
| 字段名 |
类型 |
说明 |
约束 |
| id |
bigint |
用户ID |
主键,自增 |
| username |
varchar(50) |
用户名 |
唯一索引 |
| email |
varchar(100) |
邮箱 |
唯一索引 |
| phone |
varchar(20) |
手机号 |
唯一索引 |
| password |
varchar(255) |
密码(bcrypt加密) |
非空 |
| 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) |
手机号 |
非空 |
| province |
varchar(50) |
省份 |
非空 |
| city |
varchar(50) |
城市 |
非空 |
| district |
varchar(50) |
区县 |
非空 |
| detail |
varchar(255) |
详细地址 |
非空 |
| is_default |
tinyint |
是否默认 |
默认0 |
| created_at |
timestamp |
创建时间 |
默认当前时间 |
| updated_at |
timestamp |
更新时间 |
自动更新 |
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 |
更新时间 |
自动更新 |
3. 索引设计
3.1 唯一索引
- users.phone: 手机号唯一索引
- users.email: 邮箱唯一索引
- users.username: 用户名唯一索引
- promotions.promotion_code: 推广码唯一索引
3.2 普通索引
- products.category_id: 商品分类索引
- orders.user_id: 订单用户索引
- orders.created_at: 订单时间索引
- identifications.user_id: 识别记录用户索引
- identifications.created_at: 识别时间索引
- addresses.user_id: 地址用户索引
- 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: 上传时间索引
4. 测试数据统计
已插入的测试数据:
- 用户数据: 3条
- 商品分类: 7条
- 商品数据: 5条
- 订单数据: 3条
- 订单商品: 4条
- 识别记录: 3条
- 收货地址: 3条
- 购物车数据: 5条
- 推广奖励: 2条
- 提现记录: 3条
- 支付记录: 3条
- 上传记录: 0条
5. 数据库变更记录
2024-03-15 更新
- 修复用户表缺少last_login字段的问题
- 密码字段使用password,采用bcrypt加密存储
- 增加数据库初始化脚本,包含默认管理员账号(admin/admin123)
2024-01-15 更新
- 地址表增加省份、城市、区县字段,拆分详细地址
- 新增购物车表,支持用户购物车功能
- 新增推广奖励表,支持用户推广功能
- 新增提现记录表,支持推广收益提现
- 新增支付记录表,完善订单支付流程
2024-03-20 更新
5. 数据库连接信息
生产环境:
- 主机: 129.211.213.226:9527
- 数据库: ajhdata
- 用户名: root
- 密码: aiotAiot123!
Java后端开发环境:
- 主机: 129.211.213.226:9527
- 数据库: xlxumudata
- 用户名: root
- 密码: aiotAiot123!
连接池配置:
- 最大连接数: 200
- 最小连接数: 20
- 超时时间: 30秒
6. 字符编码和时区
- 字符编码: UTF8MB4(支持emoji表情)
- 时区设置: 东八区(+08:00)
本文档最后更新: 2024-03-15
数据库版本: MySQL 8.0+