Files
aijianhua/docs/数据库设计文档.md

9.2 KiB
Raw Permalink Blame History

爱鉴花项目数据库设计文档

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+