准备阶段
创建用户
CREATE USER 'luck'@'localhost' IDENTIFIED BY '1111';
GRANT ALL PRIVILEGES ON test_db.* TO 'luck'@'localhost';
root修改普通用户权限
GRANT ALL PRIVILEGES ON . TO 'existinguser'@'%' IDENTIFIED BY 'password';
刷新
FLUSH PRIVILEGES;
删除用户
DROP USER 'Luck'@'localhost';
创建数据库
CREATE DATABASE shop_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
设计数据表
-
用户表(users)
- 字段:
user_id
:INT,自增主键,用户唯一标识。username
:VARCHAR(50),用户名。password
:VARCHAR(255),密码(加密存储)。phone_number
:VARCHAR(20),手机号码。wechat_id
:VARCHAR(50),微信 ID(可选)。created_at
:TIMESTAMP,用户注册时间。
- 说明:存储用户的基本信息,用于用户注册和登录。
- 字段:
-
商品分类表(product_categories)
- 字段:
category_id
:INT,自增主键,分类唯一标识。category_name
:VARCHAR(50),分类名称(如日用品、食品、农资等)。
- 说明:用于对商品进行分类管理。
- 字段:
-
商品表(products)
- 字段:
product_id
:INT,自增主键,商品唯一标识。category_id
:INT,外键关联 product_categories 表的 category_id,商品所属分类。product_name
:VARCHAR(100),商品名称。description
:TEXT,商品描述。price
:DECIMAL(10, 2),商品价格。stock
:INT,库存数量。image_path
:VARCHAR(255),商品图片路径。created_at
:TIMESTAMP,商品创建时间。
- 说明:存储商品的详细信息。
- 字段:
-
购物车表(carts)
- 字段:
cart_id
:INT,自增主键,购物车记录唯一标识。user_id
:INT,外键关联 users 表的 user_id,购物车所属用户。product_id
:INT,外键关联 products 表的 product_id,购物车中的商品。quantity
:INT,商品数量。
- 说明:记录用户购物车中的商品信息。
- 字段:
-
订单表(orders)
- 字段:
order_id
:INT,自增主键,订单唯一标识。user_id
:INT,外键关联 users 表的 user_id,订单所属用户。total_price
:DECIMAL(10, 2),订单总价。payment_method
:VARCHAR(50),支付方式。status
:VARCHAR(20),订单状态(如已下单、已发货、已送达等)。created_at
:TIMESTAMP,订单创建时间。
- 说明:存储订单的基本信息。
- 字段:
-
订单商品表(order_products)
- 字段:
order_product_id
:INT,自增主键,订单商品记录唯一标识。order_id
:INT,外键关联 orders 表的 order_id,所属订单。product_id
:INT,外键关联 products 表的 product_id,订单中的商品。quantity
:INT,商品数量。price
:DECIMAL(10, 2),商品价格(记录下单时的价格)。
- 说明:记录订单中具体的商品信息。
- 字段:
-
农产品表(agricultural_products)
- 字段:
product_id
:INT,自增主键,农产品唯一标识(可与商品表的 product_id 关联)。product_name
:VARCHAR(100),农产品名称。description
:TEXT,农产品描述。image_path
:VARCHAR(255),农产品图片路径。is_reservable
:BOOLEAN,是否可预定。
- 说明:存储可预定的农产品信息。
- 字段:
-
农产品预定表(agricultural_reservations)
- 字段:
reservation_id
:INT,自增主键,预定记录唯一标识。product_id
:INT,外键关联 agricultural_products 表的 product_id,预定的农产品。user_id
:INT,外键关联 users 表的 user_id,预定用户。quantity
:INT,预定数量。delivery_time
:DATETIME,配送时间。status
:VARCHAR(20),预定状态(如已预定、生产中、已配送等)。
- 说明:记录农产品的预定信息。
- 字段:
-
配送信息表(delivery_info)
- 字段:
delivery_id
:INT,自增主键,配送信息唯一标识。user_id
:INT,外键关联 users 表的 user_id,配送信息所属用户。address
:VARCHAR(255),配送地址。delivery_range
:VARCHAR(100),配送范围。delivery_fee
:DECIMAL(10, 2),配送费用。delivery_time
:DATETIME,选择的配送时间。
- 说明:存储用户的配送信息。
- 字段:
-
棋牌室与台球桌表(recreation_rooms)
- 字段:
room_id
:INT,自增主键,房间唯一标识。room_type
:VARCHAR(50),房间类型(棋牌室或台球桌)。is_available
:BOOLEAN,是否可用。price
:DECIMAL(10, 2),价格。
- 说明:存储棋牌室和台球桌的信息。
- 预定时间段表(reservation_slots)
- 字段:
slot_id
:INT,自增主键,时间段唯一标识。room_id
:INT,外键关联 recreation_rooms 表的 room_id,所属房间。start_time
:DATETIME,开始时间。end_time
:DATETIME,结束时间。
- 说明:存储棋牌室和台球桌的可用时间段。
- 房间预定表(room_reservations)
- 字段:
reservation_id
:INT,自增主键,预定记录唯一标识。user_id
:INT,外键关联 users 表的 user_id,预定用户。room_id
:INT,外键关联 recreation_rooms 表的 room_id,预定的房间。slot_id
:INT,外键关联 reservation_slots 表的 slot_id,预定时间段。payment_status
:VARCHAR(20),支付状态(如已支付定金、已支付全款等)。
- 说明:记录棋牌室和台球桌的预定信息。
- 收藏夹表(favorites)
- 字段:
favorite_id
:INT,自增主键,收藏记录唯一标识。user_id
:INT,外键关联 users 表的 user_id,收藏用户。product_id
:INT,外键关联 products 表的 product_id,收藏的商品。
- 说明:存储用户的收藏商品信息。
- 优惠券表(coupons)
- 字段:
coupon_id
:INT,自增主键,优惠券唯一标识。coupon_code
:VARCHAR(50),优惠券代码。discount_amount
:DECIMAL(10, 2),折扣金额。expiry_date
:DATETIME,过期时间。
- 说明:存储优惠券信息。
- 用户优惠券表(user_coupons)
- 字段:
user_coupon_id
:INT,自增主键,用户优惠券记录唯一标识。user_id
:INT,外键关联 users 表的 user_id,拥有优惠券的用户。coupon_id
:INT,外键关联 coupons 表的 coupon_id,优惠券。used_status
:BOOLEAN,是否已使用。
- 说明:记录用户拥有的优惠券信息。
- 消息通知表(notifications)
- 字段:
notification_id
:INT,自增主键,通知唯一标识。user_id
:INT,外键关联 users 表的 user_id,通知接收用户。message
:TEXT,通知内容。notification_type
:VARCHAR(50),通知类型(如订单状态通知、促销活动通知等)。is_read
:BOOLEAN,是否已读。
- 说明:存储发送给用户的消息通知。
二、数据表之间的关系
-
用户表与其他表的关系:
- 用户表(users)与购物车表(carts):一对多关系,一个用户可以有多个购物车记录。
- 用户表(users)与订单表(orders):一对多关系,一个用户可以有多个订单。
- 用户表(users)与农产品预定表(agricultural_reservations):一对多关系,一个用户可以有多个农产品预定记录。
- 用户表(users)与房间预定表(room_reservations):一对多关系,一个用户可以有多个棋牌室或台球桌预定记录。
- 用户表(users)与收藏夹表(favorites):一对多关系,一个用户可以有多个收藏商品记录。
- 用户表(users)与用户优惠券表(user_coupons):一对多关系,一个用户可以有多个优惠券记录。
- 用户表(users)与消息通知表(notifications):一对多关系,一个用户可以有多个消息通知。
-
商品表与其他表的关系:
- 商品表(products)与商品分类表(product_categories):多对一关系,一个商品属于一个分类。
- 商品表(products)与购物车表(carts):一对多关系,一个商品可以在多个购物车记录中出现。
- 商品表(products)与订单商品表(order_products):一对多关系,一个商品可以在多个订单中出现。
-
农产品表与其他表的关系:
- 农产品表(agricultural_products)与农产品预定表(agricultural_reservations):一对多关系,一个农产品可以有多个预定记录。
-
棋牌室与台球桌表与其他表的关系:
- 棋牌室与台球桌表(recreation_rooms)与预定时间段表(reservation_slots):一对多关系,一个房间可以有多个可用时间段。
- 棋牌室与台球桌表(recreation_rooms)与房间预定表(room_reservations):一对多关系,一个房间可以有多个预定记录。
-
优惠券表与其他表的关系:
- 优惠券表(coupons)与用户优惠券表(user_coupons):一对多关系,一个优惠券可以被多个用户拥有。