|
|
|
|
-- 创建名为`secondhandtransactions`的数据库
|
|
|
|
|
CREATE DATABASE `secondhandtransactions`;
|
|
|
|
|
|
|
|
|
|
-- 使用`secondhandtransactions`数据库
|
|
|
|
|
USE `secondhandtransactions`;
|
|
|
|
|
|
|
|
|
|
-- 创建`role`表,用于定义系统中的角色
|
|
|
|
|
CREATE TABLE role
|
|
|
|
|
(
|
|
|
|
|
role_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID(主键)',
|
|
|
|
|
role_name VARCHAR(18) NOT NULL COMMENT '角色名称',
|
|
|
|
|
remark VARCHAR(128) NULL COMMENT '备注',
|
|
|
|
|
status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态(0:禁用,1:启用)',
|
|
|
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 插入角色数据
|
|
|
|
|
INSERT INTO role (role_name, remark, status)
|
|
|
|
|
VALUES ('管理员', '拥有平台所有管理权限,负责审核、管理用户和商品', 1),
|
|
|
|
|
('普通用户', '可以浏览商品、发布商品、进行交易', 1),
|
|
|
|
|
('配送员', '负责配送商品,完成交易,管理自己的订单', 1),
|
|
|
|
|
('商家', '商家可以发布商品,管理自己的商品和订单', 1);
|
|
|
|
|
|
|
|
|
|
-- 创建`users`表,用于定义系统中的用户
|
|
|
|
|
CREATE TABLE users
|
|
|
|
|
(
|
|
|
|
|
user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID(主键)',
|
|
|
|
|
head_pic_url VARCHAR(128) NULL COMMENT '头像',
|
|
|
|
|
nick_name VARCHAR(18) NULL COMMENT '昵称',
|
|
|
|
|
username VARCHAR(18) NOT NULL COMMENT '用户名',
|
|
|
|
|
mobile VARCHAR(15) NOT NULL COMMENT '手机号',
|
|
|
|
|
password VARCHAR(255) NOT NULL COMMENT '加密后的密码',
|
|
|
|
|
sex CHAR(1) NOT NULL COMMENT '性别(0:女,1:男) ',
|
|
|
|
|
email VARCHAR(255) NOT NULL comment '邮箱',
|
|
|
|
|
address VARCHAR(70) NOT NULL COMMENT '地址',
|
|
|
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
|
|
|
|
CONSTRAINT nick_name UNIQUE (nick_name), -- 确保昵称唯一性
|
|
|
|
|
CONSTRAINT username UNIQUE (username) -- 确保用户名唯一性
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`deliveries`表,用于定义配送员信息
|
|
|
|
|
CREATE TABLE deliveries
|
|
|
|
|
(
|
|
|
|
|
delivery_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '配送ID',
|
|
|
|
|
order_id INT NOT NULL COMMENT '订单ID(外键引用 orders)',
|
|
|
|
|
delivery_person_id INT NOT NULL COMMENT '配送员ID(外键引用 users)',
|
|
|
|
|
delivery_status ENUM ('pending', 'in_progress', 'delivered') NOT NULL DEFAULT 'pending' COMMENT '配送状态',
|
|
|
|
|
delivered_at TIMESTAMP NULL COMMENT '配送完成时间',
|
|
|
|
|
CONSTRAINT order_id_fk_delivery FOREIGN KEY (order_id) REFERENCES orders (order_id), -- 外键引用orders表
|
|
|
|
|
CONSTRAINT delivery_person_id_fk_delivery FOREIGN KEY (delivery_person_id) REFERENCES users (user_id) -- 外键引用users表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`user_roles`关联表,用于用户和角色之间的多对多关系
|
|
|
|
|
CREATE TABLE user_roles
|
|
|
|
|
(
|
|
|
|
|
user_id INT NOT NULL COMMENT '用户ID(外键引用 user 表)',
|
|
|
|
|
role_id INT NOT NULL COMMENT '角色ID(外键引用 role 表)',
|
|
|
|
|
PRIMARY KEY (user_id, role_id),
|
|
|
|
|
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES role (role_id) -- 外键引用role表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
INSERT INTO users (nick_name, mobile, username, password, sex, email, address)
|
|
|
|
|
VALUES ('user001', '13800000001', 'user001', 'password123', '1', 'user001@example.com', '中区1'),
|
|
|
|
|
('user002', '13800000002', 'user002', 'password456', '1', 'user002@example.com', '中区1'),
|
|
|
|
|
('admin', '13800000003', 'admin', 'password789', '1', 'admin@example.com', '中区1'),
|
|
|
|
|
('deliveries', '13800000004', 'deliveries', 'password147', '1', 'deliveries@example.com', '中区1');
|
|
|
|
|
|
|
|
|
|
# -- 将用户与普通用户角色关联
|
|
|
|
|
# INSERT INTO user_roles (user_id, role_id)
|
|
|
|
|
# VALUES (LAST_INSERT_ID(), 2);
|
|
|
|
|
#
|
|
|
|
|
# -- 将用户与商家角色关联
|
|
|
|
|
# INSERT INTO user_roles (user_id, role_id)
|
|
|
|
|
# VALUES (LAST_INSERT_ID(), 3);
|
|
|
|
|
|
|
|
|
|
-- 创建`orders`表,用于存储订单信息
|
|
|
|
|
CREATE TABLE orders
|
|
|
|
|
(
|
|
|
|
|
order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID(主键)',
|
|
|
|
|
buyer_id INT NOT NULL COMMENT '买家用户ID',
|
|
|
|
|
item_id INT NOT NULL COMMENT '商品ID',
|
|
|
|
|
seller_id INT NOT NULL COMMENT '卖家用户ID',
|
|
|
|
|
address VARCHAR(255) NOT NULL COMMENT '收货地址',
|
|
|
|
|
total_amount DECIMAL(10, 2) NOT NULL COMMENT '订单总金额',
|
|
|
|
|
status ENUM ('pending', 'paid', 'shipped', 'completed', 'cancelled') NOT NULL DEFAULT 'pending'
|
|
|
|
|
COMMENT '订单状态:pending-订单已创建,等待支付;paid-订单已支付,等待发货;shipped-订单已发货,等待收货;completed-订单已完成;cancelled-订单已取消',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间',
|
|
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单更新时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT buyer_id_fk_orders FOREIGN KEY (buyer_id) REFERENCES users (user_id), -- 外键引用users表(买家)
|
|
|
|
|
CONSTRAINT seller_id_fk_orders FOREIGN KEY (seller_id) REFERENCES users (user_id), -- 外键引用users表(卖家)
|
|
|
|
|
CONSTRAINT item_id_fk_orders FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`items`表,用于定义商品信息
|
|
|
|
|
CREATE TABLE items
|
|
|
|
|
(
|
|
|
|
|
item_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID(主键)',
|
|
|
|
|
user_id INT NOT NULL COMMENT '发布商品的用户ID(外键引用 users)',
|
|
|
|
|
item_name VARCHAR(255) NOT NULL COMMENT '商品名称',
|
|
|
|
|
description VARCHAR(500) NULL COMMENT '商品描述',
|
|
|
|
|
category_id INT NOT NULL COMMENT '商品类别ID(外键引用 categories 表)',
|
|
|
|
|
price DECIMAL(10, 2) CHECK (price >= 0) NOT NULL COMMENT '商品价格',
|
|
|
|
|
status ENUM ('available', 'sold', 'removed') NOT NULL DEFAULT 'available'
|
|
|
|
|
COMMENT '商品状态:available(可售)、sold(已售出)、removed(已下架)',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '商品创建时间',
|
|
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '商品更新时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT user_id_fk_items FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT category_id_fk_items FOREIGN KEY (category_id) REFERENCES item_categories (category_id) -- 外键引用item_categories表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`categories`表,用于定义商品类别
|
|
|
|
|
CREATE TABLE item_categories
|
|
|
|
|
(
|
|
|
|
|
category_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '类别ID',
|
|
|
|
|
category_name VARCHAR(50) NOT NULL COMMENT '类别名称'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`item_images`表,用于存储商品的图片信息
|
|
|
|
|
CREATE TABLE item_images
|
|
|
|
|
(
|
|
|
|
|
image_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '图片ID(主键)',
|
|
|
|
|
item_id INT NOT NULL COMMENT '商品ID',
|
|
|
|
|
image_path VARCHAR(255) NULL COMMENT '图片路径',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '图片创建时间',
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT item_id_fk_image FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`item_comments`表,用于存储商品的评论信息
|
|
|
|
|
CREATE TABLE item_comments
|
|
|
|
|
(
|
|
|
|
|
comment_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '评论ID(主键)',
|
|
|
|
|
user_id INT NOT NULL COMMENT '评论用户ID',
|
|
|
|
|
item_id INT NOT NULL COMMENT '被评论的商品ID',
|
|
|
|
|
content VARCHAR(1000) NOT NULL COMMENT '评论内容',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '评论创建时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT user_id_fk_comment FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT item_id_fk_comment FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`item_likes`表,用于存储商品的点赞信息
|
|
|
|
|
CREATE TABLE item_likes
|
|
|
|
|
(
|
|
|
|
|
like_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '点赞ID(主键)',
|
|
|
|
|
user_id INT NOT NULL COMMENT '点赞用户ID',
|
|
|
|
|
item_id INT NOT NULL COMMENT '被点赞的商品ID',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '点赞创建时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT user_id_fk_like FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT item_id_fk_like FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`item_favorites`表,用于用户收藏的商品信息
|
|
|
|
|
CREATE TABLE item_favorites
|
|
|
|
|
(
|
|
|
|
|
favorite_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '收藏ID(主键)',
|
|
|
|
|
user_id INT NOT NULL COMMENT '用户ID(外键引用 users)',
|
|
|
|
|
item_id INT NOT NULL COMMENT '商品ID(外键引用 items)',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT user_id_fk_favorite FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT item_id_fk_favorite FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 创建`item_offers`表,用于存储物品下架的信息
|
|
|
|
|
CREATE TABLE item_offers
|
|
|
|
|
(
|
|
|
|
|
offer_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '物品下架ID(主键)',
|
|
|
|
|
user_id INT NOT NULL COMMENT '用户ID(外键引用 users)',
|
|
|
|
|
item_id INT NOT NULL COMMENT '商品ID(外键引用 items)',
|
|
|
|
|
reason VARCHAR(500) NOT NULL COMMENT '下架理由',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下架时间',
|
|
|
|
|
|
|
|
|
|
-- 外键约束
|
|
|
|
|
CONSTRAINT user_id_fk_offer FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表
|
|
|
|
|
CONSTRAINT item_id_fk_offer FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表
|
|
|
|
|
);
|