Files
shopping/db/schema.sql
2026-01-13 17:15:10 +08:00

127 lines
4.0 KiB
SQL

CREATE DATABASE IF NOT EXISTS toyshop DEFAULT CHARSET utf8mb4;
USE toyshop;
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
phone VARCHAR(20),
email VARCHAR(100),
avatar VARCHAR(255),
role VARCHAR(20) NOT NULL,
enabled TINYINT(1) NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
);
CREATE TABLE IF NOT EXISTS categories (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(255)
);
CREATE TABLE IF NOT EXISTS products (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
category_id BIGINT,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL,
stock INT NOT NULL,
sales INT NOT NULL,
age_range VARCHAR(50),
safety_info VARCHAR(255),
on_sale TINYINT(1) NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
CREATE TABLE IF NOT EXISTS product_images (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id BIGINT NOT NULL,
url VARCHAR(255) NOT NULL,
sort_order INT NOT NULL,
FOREIGN KEY (product_id) REFERENCES products(id)
);
CREATE TABLE IF NOT EXISTS carousels (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
image_url VARCHAR(255) NOT NULL,
link_url VARCHAR(255),
sort_order INT NOT NULL
);
CREATE TABLE IF NOT EXISTS notices (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT,
created_at DATETIME NOT NULL
);
CREATE TABLE IF NOT EXISTS addresses (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
receiver_name VARCHAR(50) NOT NULL,
receiver_phone VARCHAR(20) NOT NULL,
detail VARCHAR(255) NOT NULL,
is_default TINYINT(1) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS cart_items (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
CREATE TABLE IF NOT EXISTS orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(50) NOT NULL UNIQUE,
user_id BIGINT NOT NULL,
status VARCHAR(30) NOT NULL,
total_amount DECIMAL(10,2) NOT NULL,
receiver_name VARCHAR(50) NOT NULL,
receiver_phone VARCHAR(20) NOT NULL,
receiver_address VARCHAR(255) NOT NULL,
logistics_no VARCHAR(50),
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS order_items (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
quantity INT NOT NULL,
price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
INSERT INTO categories (name, description) VALUES
('益智玩具', '启发思维与逻辑'),
('拼装积木', '动手能力训练'),
('毛绒玩具', '柔软安全');
INSERT INTO products (category_id, name, description, price, stock, sales, age_range, safety_info, on_sale, created_at, updated_at) VALUES
(1, '多功能益智盒', '多模块益智训练', 129.00, 100, 10, '3-6岁', 'CCC认证', 1, NOW(), NOW()),
(2, '创意拼装积木', '提升动手与空间感', 89.00, 200, 25, '4-8岁', '环保材质', 1, NOW(), NOW()),
(3, '可爱毛绒熊', '亲子陪伴', 59.00, 150, 30, '2-6岁', '亲肤材质', 1, NOW(), NOW());
INSERT INTO product_images (product_id, url, sort_order) VALUES
(1, 'https://picsum.photos/seed/toy1/600/400', 1),
(2, 'https://picsum.photos/seed/toy2/600/400', 1),
(3, 'https://picsum.photos/seed/toy3/600/400', 1);
INSERT INTO carousels (image_url, link_url, sort_order) VALUES
('https://picsum.photos/seed/banner1/1200/400', '', 1),
('https://picsum.photos/seed/banner2/1200/400', '', 2);
INSERT INTO notices (title, content, created_at) VALUES
('欢迎来到童飞玩具商城', '全场新品上架,欢迎选购。', NOW());