313 lines
9.6 KiB
Markdown
313 lines
9.6 KiB
Markdown
|
|
# 数据库表结构说明
|
|||
|
|
|
|||
|
|
## 连接信息验证
|
|||
|
|
数据库连接信息已验证有效:
|
|||
|
|
- 主机: 129.211.213.226
|
|||
|
|
- 端口: 9527
|
|||
|
|
- 用户名: root
|
|||
|
|
密码:aiotAiot123!
|
|||
|
|
- 数据库: niumall
|
|||
|
|
|
|||
|
|
## 表结构详情
|
|||
|
|
|
|||
|
|
### 1. users 表(用户表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `users` (
|
|||
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`openid` varchar(64) NOT NULL UNIQUE,
|
|||
|
|
`nickname` varchar(50) NOT NULL,
|
|||
|
|
`avatar` varchar(255),
|
|||
|
|
`gender` enum('male','female','other'),
|
|||
|
|
`birthday` datetime,
|
|||
|
|
`phone` varchar(20) UNIQUE,
|
|||
|
|
`email` varchar(100) UNIQUE,
|
|||
|
|
`uuid` varchar(36) UNIQUE,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. orders 表(订单表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `orders` (
|
|||
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`order_no` varchar(32) NOT NULL UNIQUE,
|
|||
|
|
`user_id` bigint(20) NOT NULL,
|
|||
|
|
`supplier_id` bigint(20) NOT NULL,
|
|||
|
|
`cattle_type` varchar(50) NOT NULL,
|
|||
|
|
`cattle_breed` varchar(50) NOT NULL,
|
|||
|
|
`cattle_count` int(11) NOT NULL,
|
|||
|
|
`expected_weight` decimal(10,2) NOT NULL,
|
|||
|
|
`actual_weight` decimal(10,2),
|
|||
|
|
`unit_price` decimal(10,2) NOT NULL,
|
|||
|
|
`total_amount` decimal(15,2) NOT NULL,
|
|||
|
|
`paid_amount` decimal(15,2) NOT NULL DEFAULT '0.00',
|
|||
|
|
`remaining_amount` decimal(15,2) NOT NULL,
|
|||
|
|
`status` enum('pending','confirmed','preparing','shipping','delivered','accepted','completed','cancelled','refunded') NOT NULL DEFAULT 'pending',
|
|||
|
|
`delivery_address` varchar(200) NOT NULL,
|
|||
|
|
`expected_delivery_date` datetime NOT NULL,
|
|||
|
|
`actual_delivery_date` datetime,
|
|||
|
|
`notes` text,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. payments 表(支付表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `payments` (
|
|||
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`order_id` bigint(20) NOT NULL,
|
|||
|
|
`user_id` bigint(20) NOT NULL,
|
|||
|
|
`amount` decimal(15,2) NOT NULL,
|
|||
|
|
`paid_amount` decimal(15,2),
|
|||
|
|
`payment_type` enum('wechat','alipay','bank') NOT NULL,
|
|||
|
|
`payment_method` enum('mini_program','app','web') NOT NULL,
|
|||
|
|
`payment_no` varchar(50) NOT NULL UNIQUE,
|
|||
|
|
`third_party_id` varchar(100),
|
|||
|
|
`status` enum('pending','paid','failed','refunded') DEFAULT 'pending',
|
|||
|
|
`paid_time` datetime,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. transports 表(运输表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `transports` (
|
|||
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`order_id` bigint(20) NOT NULL,
|
|||
|
|
`driver_id` bigint(20) NOT NULL,
|
|||
|
|
`vehicle_id` bigint(20) NOT NULL,
|
|||
|
|
`start_location` varchar(255) NOT NULL,
|
|||
|
|
`end_location` varchar(255) NOT NULL,
|
|||
|
|
`scheduled_start_time` datetime NOT NULL,
|
|||
|
|
`actual_start_time` datetime,
|
|||
|
|
`scheduled_end_time` datetime NOT NULL,
|
|||
|
|
`actual_end_time` datetime,
|
|||
|
|
`status` enum('scheduled','in_transit','completed','cancelled') DEFAULT 'scheduled',
|
|||
|
|
`estimated_arrival_time` datetime,
|
|||
|
|
`cattle_count` int(11) NOT NULL,
|
|||
|
|
`special_requirements` text,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
KEY `idx_order_id` (`order_id`),
|
|||
|
|
KEY `idx_driver_id` (`driver_id`),
|
|||
|
|
KEY `idx_vehicle_id` (`vehicle_id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. suppliers 表(供应商表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `suppliers` (
|
|||
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`name` varchar(100) NOT NULL,
|
|||
|
|
`code` varchar(20) NOT NULL UNIQUE,
|
|||
|
|
`contact` varchar(50) NOT NULL,
|
|||
|
|
`phone` varchar(20) NOT NULL UNIQUE,
|
|||
|
|
`address` varchar(200) NOT NULL,
|
|||
|
|
`business_license` varchar(255),
|
|||
|
|
`qualification_level` varchar(10) NOT NULL,
|
|||
|
|
`certifications` json,
|
|||
|
|
`cattle_types` json,
|
|||
|
|
`capacity` int(11),
|
|||
|
|
`rating` decimal(3,2),
|
|||
|
|
`cooperation_start_date` datetime,
|
|||
|
|
`status` enum('active','inactive','suspended') DEFAULT 'active',
|
|||
|
|
`region` varchar(20) NOT NULL,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. vehicles 表(车辆表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `vehicles` (
|
|||
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`license_plate` varchar(20) NOT NULL UNIQUE,
|
|||
|
|
`vehicle_type` varchar(50) NOT NULL,
|
|||
|
|
`capacity` int(11) NOT NULL,
|
|||
|
|
`driver_id` bigint(20) NOT NULL,
|
|||
|
|
`status` enum('available','in_use','maintenance','retired') DEFAULT 'available',
|
|||
|
|
`last_maintenance_date` datetime,
|
|||
|
|
`next_maintenance_date` datetime,
|
|||
|
|
`insurance_expiry_date` datetime,
|
|||
|
|
`registration_expiry_date` datetime,
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. admins 表(管理员用户表)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `admins` (
|
|||
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|||
|
|
`username` varchar(50) NOT NULL UNIQUE,
|
|||
|
|
`password_hash` varchar(255) NOT NULL,
|
|||
|
|
`phone` varchar(20) NOT NULL UNIQUE,
|
|||
|
|
`email` varchar(100),
|
|||
|
|
`user_type` enum('client','supplier','driver','staff','admin') NOT NULL,
|
|||
|
|
`status` enum('active','inactive','locked') DEFAULT 'active',
|
|||
|
|
`created_at` datetime NOT NULL,
|
|||
|
|
`updated_at` datetime NOT NULL,
|
|||
|
|
`deleted_at` datetime DEFAULT NULL,
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 表索引信息
|
|||
|
|
|
|||
|
|
### users 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- openid: 唯一索引
|
|||
|
|
- phone: 唯一索引
|
|||
|
|
- email: 唯一索引
|
|||
|
|
- uuid: 唯一索引
|
|||
|
|
|
|||
|
|
### orders 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- order_no: 唯一索引
|
|||
|
|
- orders_order_no: 唯一索引
|
|||
|
|
- orders_user_id: 普通索引
|
|||
|
|
- orders_supplier_id: 普通索引
|
|||
|
|
- orders_status: 普通索引
|
|||
|
|
- orders_created_at: 普通索引
|
|||
|
|
|
|||
|
|
### payments 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- payment_no: 唯一索引
|
|||
|
|
|
|||
|
|
### suppliers 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- code: 唯一索引
|
|||
|
|
- phone: 唯一索引
|
|||
|
|
|
|||
|
|
### transports 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- idx_order_id: 普通索引
|
|||
|
|
- idx_driver_id: 普通索引
|
|||
|
|
- idx_vehicle_id: 普通索引
|
|||
|
|
|
|||
|
|
### vehicles 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- license_plate: 唯一索引
|
|||
|
|
|
|||
|
|
### admins 表索引
|
|||
|
|
- PRIMARY: 主键索引 (id)
|
|||
|
|
- username: 唯一索引
|
|||
|
|
- phone: 唯一索引
|
|||
|
|
|
|||
|
|
## 表关系说明
|
|||
|
|
|
|||
|
|
1. `users` 表与 `orders` 表通过 `user_id` 字段关联
|
|||
|
|
2. `suppliers` 表与 `orders` 表通过 `supplier_id` 字段关联
|
|||
|
|
3. `orders` 表与 `payments` 表通过 `order_id` 字段关联
|
|||
|
|
4. `users` 表与 `payments` 表通过 `user_id` 字段关联
|
|||
|
|
5. `orders` 表与 `transports` 表通过 `order_id` 字段关联
|
|||
|
|
6. `users` 表与 `transports` 表通过 `driver_id` 字段关联
|
|||
|
|
7. `vehicles` 表与 `transports` 表通过 `vehicle_id` 字段关联
|
|||
|
|
8. `users` 表与 `vehicles` 表通过 `driver_id` 字段关联
|
|||
|
|
|
|||
|
|
## 数据示例
|
|||
|
|
|
|||
|
|
### orders 表数据示例
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"order_no": "ORD20240520001",
|
|||
|
|
"user_id": 2,
|
|||
|
|
"user_name": "采购商",
|
|||
|
|
"supplier_id": 3,
|
|||
|
|
"supplier_name": "供应商",
|
|||
|
|
"trader_id": null,
|
|||
|
|
"trader_name": null,
|
|||
|
|
"cattle_breed": "西门塔尔牛",
|
|||
|
|
"cattle_count": 10,
|
|||
|
|
"expected_weight": "5000.00",
|
|||
|
|
"actual_weight": null,
|
|||
|
|
"unit_price": "35.00",
|
|||
|
|
"total_amount": "175000.00",
|
|||
|
|
"paid_amount": "50000.00",
|
|||
|
|
"remaining_amount": "125000.00",
|
|||
|
|
"status": "pending",
|
|||
|
|
"delivery_address": "北京市朝阳区某某路123号",
|
|||
|
|
"expected_delivery_date": "2024-06-01T00:00:00.000Z",
|
|||
|
|
"actual_delivery_date": null,
|
|||
|
|
"notes": "请按时交货,质量要保证",
|
|||
|
|
"created_at": "2025-09-18T15:04:29.000Z",
|
|||
|
|
"updated_at": "2025-09-18T15:04:29.000Z",
|
|||
|
|
"deleted_at": null
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### suppliers 表数据示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 3,
|
|||
|
|
"name": "内蒙古草原牧业有限公司",
|
|||
|
|
"code": "NM001",
|
|||
|
|
"contact": "张牧",
|
|||
|
|
"phone": "13800000001",
|
|||
|
|
"address": "内蒙古自治区呼和浩特市草原牧场1号",
|
|||
|
|
"business_license": "",
|
|||
|
|
"qualification_level": "A",
|
|||
|
|
"certifications": "[]",
|
|||
|
|
"cattle_types": "[\"西门塔尔牛\",\"夏洛莱牛\"]",
|
|||
|
|
"capacity": 1000,
|
|||
|
|
"rating": "0.00",
|
|||
|
|
"cooperation_start_date": "2025-09-18T15:25:05.000Z",
|
|||
|
|
"status": "active",
|
|||
|
|
"region": "north",
|
|||
|
|
"created_at": "2025-09-18T15:25:05.000Z",
|
|||
|
|
"updated_at": "2025-09-18T15:25:05.000Z",
|
|||
|
|
"deleted_at": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### admins 表数据示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "admin",
|
|||
|
|
"password_hash": "$2a$10$yQ2odJuDRDjPwiyT6v/NuO/V0wjTaUx9DlDmHqXwa.hMQ9km0cWPe",
|
|||
|
|
"phone": "13800138001",
|
|||
|
|
"email": "admin@niumall.com",
|
|||
|
|
"user_type": "admin",
|
|||
|
|
"status": "active",
|
|||
|
|
"created_at": "2025-09-18T15:04:28.000Z",
|
|||
|
|
"updated_at": "2025-09-18T15:04:28.000Z",
|
|||
|
|
"deleted_at": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用建议
|
|||
|
|
|
|||
|
|
1. **数据初始化**:当前数据库中已有一些基础数据,包括5个供应商、3个管理员用户和2个订单。在开发过程中可以直接使用这些数据进行测试。
|
|||
|
|
|
|||
|
|
2. **权限管理**:admins 表中包含了不同角色的用户(admin、client、supplier),可以通过 user_type 字段进行权限控制。
|
|||
|
|
|
|||
|
|
3. **订单状态管理**:orders 表中的 status 字段包含了完整的订单状态流程,从 pending(待确认)到 completed(已完成)或 cancelled(已取消)。
|
|||
|
|
|
|||
|
|
4. **索引优化**:已为 `transports` 表添加了 `order_id`、`driver_id`、`vehicle_id` 等字段的索引以提高查询性能。建议继续为经常查询的字段添加索引,如 `orders.status`、`orders.created_at` 等。
|
|||
|
|
|
|||
|
|
5. **字段命名统一**:已完成统一使用下划线命名法,所有字段均采用下划线命名规范,保持了命名一致性。
|
|||
|
|
|
|||
|
|
6. **数据完整性**:可以添加外键约束来保证数据完整性,例如在 `orders` 表中添加外键约束关联 `users` 表和 `suppliers` 表。
|
|||
|
|
|
|||
|
|
7. **扩展性考虑**:已为所有表添加了软删除字段 `deleted_at` 以支持数据恢复功能。
|
|||
|
|
|
|||
|
|
8. **字段类型优化**:部分字段可以考虑使用更合适的类型,例如 `orders.status` 可以使用 TINYINT 类型配合枚举值映射来节省存储空间。
|