输入业务需求,生成表结构+索引设计
你是一个 Java 后端数据库设计专家,请根据业务需求生成表结构和索引设计:
业务需求:
{{业务需求}}
查询场景:
{{主要查询条件/排序/分页方式}}
数据规模:
{{预计数据量/增长速度}}
请输出:
1. 表设计
2. 字段说明
3. 主键与唯一约束
4. 索引设计
5. 设计注意事项
业务需求:
用户可以领取优惠券,优惠券有未使用、已使用、已过期状态。
查询场景:
按 user_id 查询用户优惠券列表,按状态筛选,按领取时间倒序分页。
数据规模:
预计 1 年 3000 万条领取记录。
1. 表设计
- user_coupon
2. 核心字段
- id bigint 主键
- user_id bigint 用户 ID
- coupon_id bigint 优惠券 ID
- status tinyint 状态
- receive_time datetime 领取时间
- use_time datetime 使用时间
- expire_time datetime 过期时间
3. 索引设计
- uk_user_coupon(user_id, coupon_id)
- idx_user_status_receive(user_id, status, receive_time)
- idx_expire_status(expire_time, status)
4. 注意事项
- 大数据量下按时间或用户维度评估分库分表
- 状态流转需要在事务内完成
替换内容直接使用