88 lines
2.9 KiB
SQL
88 lines
2.9 KiB
SQL
-- 创建数据库
|
|
CREATE DATABASE IF NOT EXISTS nxxmdata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- 使用数据库
|
|
USE nxxmdata;
|
|
|
|
-- 创建用户表
|
|
CREATE TABLE users (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
email VARCHAR(100) UNIQUE NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 创建角色表
|
|
CREATE TABLE roles (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
name VARCHAR(50) UNIQUE NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 创建用户角色关联表
|
|
CREATE TABLE user_roles (
|
|
user_id INT NOT NULL,
|
|
role_id INT NOT NULL,
|
|
assigned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (user_id, role_id),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 创建产品表
|
|
CREATE TABLE products (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
price DECIMAL(10,2) NOT NULL,
|
|
stock INT DEFAULT 0,
|
|
status ENUM('active', 'inactive') DEFAULT 'active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 创建订单表
|
|
CREATE TABLE orders (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
user_id INT NOT NULL,
|
|
total_amount DECIMAL(10,2) NOT NULL,
|
|
status ENUM('pending', 'paid', 'shipped', 'delivered', 'cancelled') DEFAULT 'pending',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 创建订单项表
|
|
CREATE TABLE order_items (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
order_id INT NOT NULL,
|
|
product_id INT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
price DECIMAL(10,2) NOT NULL,
|
|
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 插入基础角色数据
|
|
INSERT INTO roles (name, description) VALUES
|
|
('admin', '系统管理员'),
|
|
('user', '普通用户'),
|
|
('guest', '访客');
|
|
|
|
-- 插入示例用户数据
|
|
INSERT INTO users (username, email, password) VALUES
|
|
('admin', 'admin@example.com', '$2b$10$rVHMOB./a2mFmE4EEdI3QO4f./bN3LYb.dpDvtX9gRUM9gNwspj1a'),
|
|
('john_doe', 'john@example.com', '$2b$10$rVHMOB./a2mFmE4EEdI3QO4f./bN3LYb.dpDvtX9gRUM9gNwspj1a');
|
|
|
|
-- 为示例用户分配角色
|
|
INSERT INTO user_roles (user_id, role_id) VALUES
|
|
(1, 1), -- admin用户具有admin角色
|
|
(2, 2); -- john_doe用户具有user角色
|
|
|
|
-- 插入示例产品数据
|
|
INSERT INTO products (name, description, price, stock) VALUES
|
|
('示例产品1', '这是一个示例产品', 99.99, 100),
|
|
('示例产品2', '这是另一个示例产品', 149.99, 50); |