You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.0 KiB
3.0 KiB
赠品表设计文档
表结构说明
表名:gift
用途:存储系统中的赠品信息,包括赠课和代金券等赠品类型
字段说明
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id |
int(11) | AUTO_INCREMENT | 赠品主键ID |
gift_name |
varchar(255) | '' | 赠品名称 |
gift_type |
varchar(50) | '' | 赠品类型:course(赠课),voucher(代金券) |
gift_time |
int(11) | 0 | 赠送时间(时间戳) |
giver_id |
int(11) | 0 | 赠送来源人员ID |
resource_id |
int(11) | 0 | 赠品归属资源ID |
order_id |
int(11) | 0 | 赠品使用的订单ID(0表示未使用) |
gift_status |
tinyint(4) | 1 | 赠品状态:1=未使用,2=已使用,3=已过期,4=已作废 |
use_time |
int(11) | 0 | 赠品使用时间(时间戳) |
create_time |
int(11) | 0 | 创建时间(时间戳) |
update_time |
int(11) | 0 | 更新时间(时间戳) |
delete_time |
int(11) | 0 | 删除时间(时间戳,0表示未删除) |
索引设计
主键索引
PRIMARY KEY (id)- 主键索引,自动创建
普通索引
-
IDX_gift_giver_id- 赠送人员索引- 用途:根据赠送人员ID查询赠品
- 场景:统计某个人员赠送的所有赠品
-
IDX_gift_resource_id- 资源ID索引- 用途:根据资源ID查询相关赠品
- 场景:查询某个资源相关的所有赠品
-
IDX_gift_order_id- 订单ID索引- 用途:根据订单ID查询使用的赠品
- 场景:查询某个订单中使用了哪些赠品
-
IDX_gift_status- 状态索引- 用途:根据赠品状态快速筛选
- 场景:查询未使用、已使用、已过期等状态的赠品
-
IDX_gift_type- 类型索引- 用途:根据赠品类型快速筛选
- 场景:分别查询赠课或代金券
-
IDX_gift_time- 赠送时间索引- 用途:根据赠送时间范围查询
- 场景:统计某个时间段的赠品发放情况
业务逻辑说明
赠品状态流转
- 未使用(1) → 已使用(2):用户使用赠品时更新
- 未使用(1) → 已过期(3):系统定时任务检查过期
- 未使用(1) → 已作废(4):管理员手动作废
- 已使用(2):终态,不可再变更
关键业务场景
- 赠品发放:创建记录,设置
gift_status=1 - 赠品使用:更新
order_id、use_time、gift_status=2 - 赠品过期:定时任务更新
gift_status=3 - 赠品作废:管理员操作更新
gift_status=4
性能优化建议
-
复合索引考虑:
- 如果经常按状态+类型查询,可考虑创建复合索引
(gift_status, gift_type) - 如果经常按时间范围+状态查询,可考虑创建复合索引
(gift_time, gift_status)
- 如果经常按状态+类型查询,可考虑创建复合索引
-
分区表考虑:
- 如果数据量很大,可考虑按时间分区
-
归档策略:
- 定期归档已删除或过期的赠品数据