🍰 蛋糕店拼字活动小程序 - 数据库ER关系图

15+
数据库表
5
核心模块
MySQL
数据库类型

📊 ER关系图(Entity Relationship Diagram)

说明:展示蛋糕店小程序的核心数据表及其关系
erDiagram User ||--o{ UserCard : "拥有" User ||--o{ Order : "下单" User ||--o{ CartItem : "购物车" User ||--o{ PointLog : "积分流水" User ||--o{ BalanceLog : "余额流水" User ||--o{ UserCoupon : "持有" User ||--o{ UserAddress : "收货地址" User ||--o{ PointOrder : "兑换" User ||--o{ ExchangeRecord : "兑换记录" Activity ||--o{ ActivityCard : "包含字卡" Activity ||--o{ ExchangeRecord : "兑换记录" ActivityCard ||--o{ UserCard : "用户持有" Store ||--o{ Order : "所属门店" Store ||--o{ Product : "销售商品" Store ||--o{ CartItem : "购物车" Category ||--o{ Product : "分类" Product ||--o{ ProductSku : "规格" Product ||--o{ OrderItem : "订单明细" Product ||--o{ CartItem : "购物车" Order ||--o{ OrderItem : "订单明细" PointGoods ||--o{ PointOrder : "兑换商品" Coupon ||--o{ UserCoupon : "用户优惠券" Coupon ||--o{ Order : "使用优惠券" User { bigint id PK varchar openid UK varchar nickname varchar avatar varchar phone decimal balance int points int member_level datetime create_time } Store { bigint id PK varchar name varchar address varchar phone point location json business_hours int status } Product { bigint id PK bigint category_id FK varchar name text description decimal price int stock int sales int status } Activity { bigint id PK varchar name text description datetime start_time datetime end_time json reward_config int status } ActivityCard { bigint id PK bigint activity_id FK varchar card_name varchar card_image int drop_weight int rarity int stock_limit } UserCard { bigint id PK bigint user_id FK bigint activity_id FK bigint card_id FK int count datetime create_time } Order { bigint id PK varchar order_no UK bigint user_id FK bigint store_id FK decimal total_amount int order_type int status datetime create_time } CartItem { bigint id PK bigint user_id FK bigint store_id FK bigint product_id FK bigint sku_id FK int count } PointGoods { bigint id PK varchar name int points decimal price int stock int limit_count int status } PointOrder { bigint id PK varchar order_no UK bigint user_id FK bigint goods_id FK int points decimal price int status }

👤 用户模块数据表

user(用户表)
核心字段:openid(微信OpenID), nickname, avatar, phone, balance(余额), points(积分), member_level(会员等级)
用途:存储用户基本信息和资产信息
user_address(用户地址)
核心字段:user_id, name(收货人), phone, province, city, district, detail, is_default
用途:存储用户收货地址
point_log(积分流水)
核心字段:user_id, type(获得/消费), points, balance, remark
用途:记录积分变动历史
balance_log(余额流水)
核心字段:user_id, type(充值/消费/退款), amount, balance, remark
用途:记录余额变动历史

🎲 拼字活动模块数据表(核心)

activity(活动表)
核心字段:name, description, start_time, end_time, reward_config(JSON),chance_config(JSON), status
用途:存储拼字活动基本配置
activity_card(活动字卡)
核心字段:activity_id, card_name, card_image, drop_weight(掉落权重), rarity(稀有度), stock_limit
用途:存储活动中的字卡配置和概率
user_card(用户字卡)
核心字段:user_id, activity_id, card_id, count(持有数量)
用途:存储用户持有的字卡
draw_record(抽卡记录)
核心字段:user_id, activity_id, card_id, create_time
用途:记录用户抽卡历史
exchange_record(兑换记录)
核心字段:user_id, activity_id, reward_type, reward_content, status
用途:记录用户兑换奖励的历史

🏪 门店与商品模块数据表

store(门店表)
核心字段:name, address, phone, location(经纬度), business_hours(JSON), status
用途:存储门店信息
category(商品分类)
核心字段:name, icon, parent_id, sort, status
用途:商品分类管理
product(商品表)
核心字段:category_id, name, description, price, stock, sales, status
用途:存储商品基本信息
product_sku(商品规格)
核心字段:product_id, spec_name, price, stock, sku_code
用途:存储商品的不同规格
cart_item(购物车明细)
核心字段:user_id, store_id, product_id, sku_id, count
用途:服务端购物车,支持跨设备同步

📦 订单模块数据表

order(订单表)
核心字段:order_no, user_id, store_id, total_amount, order_type(自取/外送), status, pay_type
用途:存储订单主表信息
order_item(订单明细)
核心字段:order_id, product_id, sku_id, product_name, price, count
用途:存储订单商品明细
payment(支付记录)
核心字段:order_id, pay_type, amount, transaction_id, status
用途:记录支付流水

🎁 积分商城模块数据表

point_goods(积分商品)
核心字段:name, points(所需积分), price(现金部分), stock, limit_count(限购), status
用途:存储积分商城商品
point_order(积分兑换订单)
核心字段:order_no, user_id, goods_id, points, price, status
用途:记录积分兑换订单

🎫 优惠券模块数据表

coupon(优惠券)
核心字段:name, type(满减/折扣), value, condition(使用条件), valid_days, total_count
用途:存储优惠券模板
user_coupon(用户优惠券)
核心字段:user_id, coupon_id, status(未使用/已使用/已过期), expire_time
用途:用户持有的优惠券

🔍 重要索引设计

性能优化建议:
  • user表:openid(唯一索引),phone(普通索引)
  • order表:order_no(唯一索引),user_id + status(复合索引),create_time(普通索引)
  • product表:category_id + status(复合索引),sales(普通索引)
  • cart_item表:user_id + store_id(复合索引)
  • user_card表:user_id + activity_id(复合索引)
  • activity_card表:activity_id + drop_weight(复合索引,用于概率查询)

详细的表结构设计请参考 数据库结构.md

文档生成时间: 2025-12-27 | 版本: v1.0