以下是使用 MySQL 创建商品表(Product
)及其关联的商品类别表(Category
)的 SQL 语句:
sql
复制代码
-- 创建商品类别表
CREATE TABLE Category (
CategoryID INT AUTO_INCREMENT PRIMARY KEY, -- 商品类别ID(主键)
CategoryName VARCHAR(255) NOT NULL -- 商品类别名称
);
-- 创建商品表
CREATE TABLE Product (
ProductID INT AUTO_INCREMENT PRIMARY KEY, -- 商品ID(主键)
ProductName VARCHAR(255) NOT NULL, -- 商品名称
Description TEXT, -- 商品描述
CategoryID INT, -- 商品类别ID(外键)
Price DECIMAL(10, 2) NOT NULL, -- 商品价格
Stock INT NOT NULL, -- 商品库存数量
ImageURL VARCHAR(255), -- 商品图片链接
Specification TEXT, -- 商品规格
ListedTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 商品上架时间
FOREIGN KEY (CategoryID) REFERENCES Category(CategoryID) -- 外键约束
);
-- 创建用户角色表
CREATE TABLE Role (
RoleID INT AUTO_INCREMENT PRIMARY KEY, -- 用户角色ID(主键)
RoleName VARCHAR(100) NOT NULL -- 用户角色名称(如买家、卖家、管理员)
);
-- 创建用户表
CREATE TABLE User (
UserID INT AUTO_INCREMENT PRIMARY KEY, -- 用户ID(主键)
UserName VARCHAR(100) NOT NULL, -- 用户名
Password VARCHAR(255) NOT NULL, -- 用户密码
Email VARCHAR(255) UNIQUE NOT NULL, -- 用户邮箱(唯一约束)
PhoneNumber VARCHAR(15) UNIQUE NOT NULL, -- 用户手机号(唯一约束)
RegistrationTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 注册时间,默认为当前时间
RoleID INT NOT NULL, -- 用户角色ID(外键)
FOREIGN KEY (RoleID) REFERENCES Role(RoleID) -- 外键约束,指向Role表
);
-- 创建订单状态表
CREATE TABLE OrderStatus (
OrderStatusID INT AUTO_INCREMENT PRIMARY KEY, -- 订单状态ID(主键)
StatusName VARCHAR(100) NOT NULL -- 状态名称(如未支付、已支付、已发货、已完成)
);
-- 创建支付方式表
CREATE TABLE PaymentMethod (
PaymentMethodID INT AUTO_INCREMENT PRIMARY KEY, -- 支付方式ID(主键)
MethodName VARCHAR(100) NOT NULL -- 支付方式名称(如支付宝、微信支付、信用卡)
);
-- 创建订单表
CREATE TABLE `Order` (
OrderID INT AUTO_INCREMENT PRIMARY KEY, -- 订单ID(主键)
UserID INT NOT NULL, -- 用户ID(外键)
OrderStatusID INT NOT NULL, -- 订单状态ID(外键)
PaymentMethodID INT NOT NULL, -- 支付方式ID(外键)
PaymentTime DATETIME, -- 支付时间
ShipmentTime DATETIME, -- 发货时间
DeliveryTime DATETIME, -- 收货时间
Amount DECIMAL(10, 2) NOT NULL, -- 支付金额
FOREIGN KEY (UserID) REFERENCES User(UserID), -- 外键约束,指向User表
FOREIGN KEY (OrderStatusID) REFERENCES OrderStatus(OrderStatusID), -- 外键约束,指向OrderStatus表
FOREIGN KEY (PaymentMethodID) REFERENCES PaymentMethod(PaymentMethodID) -- 外键约束,指向PaymentMethod表
);
-- 订单-商品中间表
CREATE TABLE Order_Product (
OrderID INT NOT NULL ,
ProductID INT NOT NULL,
Quantity INT NOT NULL,
PRIMARY KEY (OrderID, ProductID),
FOREIGN KEY (OrderID) REFERENCES `Order` (OrderID),
FOREIGN KEY (ProductID) REFERENCES Product(ProductID)
);
-- 创建物流状态表
CREATE TABLE LogisticsStatus (
LogisticsStatusID INT AUTO_INCREMENT PRIMARY KEY, -- 物流状态ID(主键)
StatusName VARCHAR(100) NOT NULL -- 物流状态名称(如已发货、运输中、已送达)
);
-- 创建物流表
CREATE TABLE Logistics (
LogisticsID INT AUTO_INCREMENT PRIMARY KEY, -- 物流ID(主键)
OrderID INT NOT NULL, -- 订单ID(外键)
LogisticsCompany VARCHAR(255) NOT NULL, -- 物流公司
TrackingNumber VARCHAR(255) NOT NULL UNIQUE, -- 物流追踪号码(唯一约束)
ShipmentTime DATETIME NOT NULL, -- 发货时间
EstimatedArrival DATETIME NOT NULL, -- 预计到达时间
LogisticsStatusID INT NOT NULL, -- 物流状态ID(外键)
FOREIGN KEY (OrderID) REFERENCES `Order`(OrderID), -- 外键约束,指向Order表
FOREIGN KEY (LogisticsStatusID) REFERENCES LogisticsStatus(LogisticsStatusID) -- 外键约束,指向LogisticsStatus表
);
sql
复制代码
INSERT INTO LogisticsStatus (StatusName)
VALUES
('已发货'),
('运输中'),
('已送达');
插入订单状态数据:
INSERT INTO OrderStatus (StatusName)
VALUES ('未支付'), ('已支付'), ('已发货'), ('已完成');
插入支付方式数据:
INSERT INTO PaymentMethod (MethodName)
VALUES ('支付宝'), ('微信支付'), ('信用卡');
插入角色数据:
INSERT INTO Role (RoleName) VALUES ('买家'), ('卖家'), ('管理员');
INSERT INTO Category (CategoryName) VALUES ('电子产品'), ('家居用品'), ('服饰'),VALUES ('图书');