-- 创建名为`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表 );