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

137 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 爱鉴花项目数据库设计文档
## 1. 数据库概述
本项目使用MySQL 8.0作为主数据库,存储用户、商品、订单、识别记录等核心业务数据。
## 2. 数据库表结构
### 2.1 用户表 (users)
| 字段名 | 类型 | 说明 | 约束 |
|--------|------|------|------|
| id | bigint | 用户ID | 主键,自增 |
| username | varchar(50) | 用户名 | 唯一索引 |
| email | varchar(100) | 邮箱 | 唯一索引 |
| phone | varchar(20) | 手机号 | 唯一索引 |
| password_hash | varchar(255) | 密码哈希 | 非空 |
| 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) | 手机号 | 非空 |
| address | text | 详细地址 | 非空 |
| is_default | tinyint | 是否默认 | 默认0 |
| created_at | timestamp | 创建时间 | 默认当前时间 |
| updated_at | timestamp | 更新时间 | 自动更新 |
## 3. 索引设计
### 3.1 唯一索引
- users.phone: 手机号唯一索引
- users.email: 邮箱唯一索引
- users.username: 用户名唯一索引
### 3.2 普通索引
- products.category_id: 商品分类索引
- orders.user_id: 订单用户索引
- orders.created_at: 订单时间索引
- identifications.user_id: 识别记录用户索引
- identifications.created_at: 识别时间索引
- addresses.user_id: 地址用户索引
## 4. 测试数据统计
已插入的测试数据:
- 用户数据: 3条
- 商品分类: 7条
- 商品数据: 5条
- 订单数据: 3条
- 订单商品: 4条
- 识别记录: 3条
- 收货地址: 3条
## 5. 数据库连接信息
**生产环境**:
- 主机: 129.211.213.226:9527
- 数据库: ajhdata
- 用户名: root
- 密码: aiotAiot123!
**连接池配置**:
- 最大连接数: 200
- 最小连接数: 20
- 超时时间: 30秒
## 6. 字符编码和时区
- 字符编码: UTF8MB4支持emoji表情
- 时区设置: 东八区(+08:00
---
*本文档最后更新: 2024年1月*
*数据库版本: MySQL 8.0*