1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| CREATE DATABASE IF NOT EXISTS shop_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE shop_db;
CREATE TABLE users ( id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', password VARCHAR(100) NOT NULL COMMENT '密码', email VARCHAR(50) UNIQUE COMMENT '邮箱', phone CHAR(11) UNIQUE COMMENT '手机号', avatar VARCHAR(255) COMMENT '头像URL', status TINYINT UNSIGNED DEFAULT 1 COMMENT '状态: 1正常 0禁用', create_time DATETIME DEFAULT NOW() COMMENT '创建时间', update_time DATETIME DEFAULT NOW() ON UPDATE NOW() COMMENT '更新时间', INDEX idx_username (username), INDEX idx_phone (phone) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
CREATE TABLE categories ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '分类ID', name VARCHAR(50) NOT NULL COMMENT '分类名称', parent_id INT UNSIGNED DEFAULT 0 COMMENT '父分类ID', sort_order INT DEFAULT 0 COMMENT '排序', create_time DATETIME DEFAULT NOW(), INDEX idx_parent_id (parent_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';
CREATE TABLE products ( id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID', name VARCHAR(100) NOT NULL COMMENT '商品名称', category_id INT UNSIGNED COMMENT '分类ID', price DECIMAL(10, 2) NOT NULL COMMENT '售价', stock INT UNSIGNED DEFAULT 0 COMMENT '库存', description TEXT COMMENT '商品描述', status TINYINT UNSIGNED DEFAULT 1 COMMENT '状态: 1上架 0下架', create_time DATETIME DEFAULT NOW(), update_time DATETIME DEFAULT NOW() ON UPDATE NOW(), FOREIGN KEY (category_id) REFERENCES categories(id), INDEX idx_category_id (category_id), INDEX idx_price (price), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
CREATE TABLE orders ( id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID', order_no VARCHAR(32) NOT NULL UNIQUE COMMENT '订单编号', user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID', total_amount DECIMAL(10, 2) NOT NULL COMMENT '订单总金额', status TINYINT UNSIGNED DEFAULT 0 COMMENT '状态: 0待支付 1已支付 2已发货 3已完成 4已取消', address VARCHAR(200) COMMENT '收货地址', create_time DATETIME DEFAULT NOW(), pay_time DATETIME COMMENT '支付时间', FOREIGN KEY (user_id) REFERENCES users(id), INDEX idx_user_id (user_id), INDEX idx_order_no (order_no), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';
CREATE TABLE order_items ( id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, order_id BIGINT UNSIGNED NOT NULL COMMENT '订单ID', product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID', product_name VARCHAR(100) COMMENT '商品名称(快照)', price DECIMAL(10, 2) NOT NULL COMMENT '单价', quantity INT UNSIGNED NOT NULL COMMENT '数量', subtotal DECIMAL(10, 2) NOT NULL COMMENT '小计', FOREIGN KEY (order_id) REFERENCES orders(id), INDEX idx_order_id (order_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单详情表';
|