# 爱鉴花项目数据库设计文档 ## 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+*