``
sql,CREATE TABLE Products (, ProductID INT PRIMARY KEY,, ProductName VARCHAR(255),, Category VARCHAR(100),, Price DECIMAL(10, 2),, Stock INT,);,,CREATE TABLE Users (, UserID INT PRIMARY KEY,, Username VARCHAR(255),, Password VARCHAR(255),, Email VARCHAR(255),);,,CREATE TABLE Orders (, OrderID INT PRIMARY KEY,, UserID INT,, OrderDate DATETIME,, FOREIGN KEY (UserID) REFERENCES Users(UserID),);,,CREATE TABLE OrderDetails (, OrderDetailID INT PRIMARY KEY,, OrderID INT,, ProductID INT,, Quantity INT,, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),, FOREIGN KEY (ProductID) REFERENCES Products(ProductID),);,
``在创建商城数据库表结构时,我们需要考虑到商品、用户、订单等实体及其相互关系,以下是一个基本的商城数据库表结构设计:
1、用户表(User)
字段名 | 数据类型 | 约束 | 说明 |
user_id | int | PRIMARY KEY, AUTO_INCREMENT | 用户ID |
username | varchar(50) | NOT NULL, UNIQUE | 用户名 |
password | varchar(255) | NOT NULL | 密码 |
varchar(100) | NOT NULL, UNIQUE | 邮箱 | |
phone | varchar(20) | 电话 | |
created_at | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
updated_at | datetime | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
2、商品表(Product)
字段名 | 数据类型 | 约束 | 说明 |
product_id | int | PRIMARY KEY, AUTO_INCREMENT | 商品ID |
name | varchar(100) | NOT NULL | 商品名称 |
description | text | 商品描述 | |
price | decimal(10,2) | NOT NULL | 价格 |
stock | int | NOT NULL, DEFAULT 0 | 库存数量 |
created_at | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
updated_at | datetime | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
3、商品分类表(Category)
字段名 | 数据类型 | 约束 | 说明 |
category_id | int | PRIMARY KEY, AUTO_INCREMENT | 分类ID |
name | varchar(50) | NOT NULL, UNIQUE | 分类名称 |
parent_id | int | DEFAULT NULL | 父级分类ID,用于实现多级分类 |
created_at | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
updated_at | datetime | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
4、商品与分类关联表(ProductCategory)
字段名 | 数据类型 | 约束 | 说明 |
product_id | int | PRIMARY KEY, FOREIGN KEY REFERENCES Product(product_id) ON DELETE CASCADE | 商品ID |
category_id | int | PRIMARY KEY, FOREIGN KEY REFERENCES Category(category_id) ON DELETE CASCADE | 分类ID |
5、订单表(Order)
字段名 | 数据类型 | 约束 | 说明 |
order_id | int | PRIMARY KEY, AUTO_INCREMENT | 订单ID |
user_id | int | FOREIGN KEY REFERENCES User(user_id) ON DELETE CASCADE | 用户ID |
total_price | decimal(10,2) | NOT NULL | 总价 |
status | varchar(20) | NOT NULL, DEFAULT 'pending' | 订单状态,如:待支付、已支付、已发货、已完成、已取消等 |
created_at | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
updated_at | datetime | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
6、订单商品表(OrderItem)
字段名 | 数据类型 | 约束 | 说明 |
order_item_id | int | PRIMARY KEY, AUTO_INCREMENT | 订单商品ID |
order_id | int | FOREIGN KEY REFERENCES Order(order_id) ON DELETE CASCADE | 订单ID |
product_id | int | FOREIGN KEY REFERENCES Product(product_id) ON DELETE CASCADE | 商品ID |
quantity | int | NOT NULL, DEFAULT 1 | 购买数量 |
price | decimal(10,2) | NOT NULL | 单价,可能与商品表中的价格不同,因为可能存在促销活动等 |
7、购物车表(Cart)
字段名 | 数据类型 | 约束 | 说明 |
cart_id | int | PRIMARY KEY, AUTO_INCREMENT | 购物车ID |
user_id | int | FOREIGN KEY REFERENCES User(user_id) ON DELETE CASCADE | 用户ID |
product_id | int | FOREIGN KEY REFERENCES Product(product_id) ON DELETE CASCADE | 商品ID |
quantity | int | NOT NULL, DEFAULT 1 | 购买数量 |
added_at | datetime | DEFAULT CURRENT_TIMESTAMP | 加入购物车时间 |
8、地址表(Address)
字段名 | 数据类型 | 约束 | 说明 |
address_id | int | PRIMARY KEY, AUTO_INCREMENT | 地址ID |
user_id | int | FOREIGN KEY REFERENCES User(user_id) ON DELETE CASCADE | 用户ID |
recipient_name | varchar(50) | NOT NULL | 收货人姓名 |
phone | varchar(20) | NOT NULL | 电话 |
province | varchar(50) | NOT NULL | 省份 |
city | varchar(50) | NOT NULL | 城市 |
district | varchar(50) | NOT NULL | 区县 |
detail | varchar(255) | NOT NULL | 详细地址 |
is_default | tinyint(1) | NOT NULL, DEFAULT 0 | 是否为默认地址,1表示是,0表示否 |
9、评论表(Review)
字段名 | 数据类型 | 约束 | 说明 |
review_id | int | PRIMARY KEY, AUTO_INCREMENT | 评论ID |
product_id | int | FOREIGN KEY REFERENCES Product(product_id) ON DELETE CASCADE | 商品ID |
user_id | int | FOREIGN KEY REFERENCES User(user_id) ON DELETE CASCADE | 用户ID |
rating | int(11) | NOT NULL, CHECK (rating >= 1 AND rating<= 5) | 评分,1-5分 |
content | text | NOT NULL, CHECK (LENGTH(content) > 0) | 评论内容,要求非空且长度大于0个字符 |