任何一个电商系统,都离不开运营,所以任何一个电商系统也都少不了卡券营销。
现将做火票务时关于优惠券的数据库设计梳理如下。

设计概要

优惠券系统设计分两个层次,业务架构层和系统架构层。
业务架构层指在一定时间内可预见到的业务发展范围内,有可能出现的营销方式及所对应的限制条件。
系统架构层指在可预见的业务发展的范围内,应该有整体,系统,灵活的设计。
产品经理的职责是业务架构,架构师的职责是系统架构。

业务架构

优惠券的种类:

  1. 优惠券
  2. 折扣券
  3. 抵扣券

优惠券的使用范围:
1、针对影片
2、针对影院
3、针对影厅
4、针对地区
5、针对节假日
6、针对普通用户

用户使用优惠券满足的条件:
1、订单金额
2、影院/影片/影厅限制
3、节假日限制
4、用户个人条件限制,如生日,性别(女生节)等

系统对接范围:
1、内部的电影票务系统
2、对接合作方
3、作为集团公司,为未来集团子公司的其他业务接入留有余地

优惠券互斥:
某一部分优惠券与其他优惠券互斥,即不可与其他优惠券共同使用

系统架构

从整个业务场景考虑,每一个优惠券的生成都有对应的使用范围,优惠券的使用必须有相应的使用者,即订单。
因此整个业务场景包括优惠券,优惠券的使用范围(规则),优惠券的使用者(订单)

优惠券的使用规则包括:影院,影片,影厅,地区,时间等,从逻辑层面看所有的规则可概括为三种逻辑:
1、个体逻辑(是非)
2、有限个体逻辑(枚举)
3、有限范围无限个体逻辑(边界)

这样只需要做一次,就可以由运营人员自己在后台自由的进行规则组合,

表结构UML图如下(非详细):
因此表结构设计如下:
优惠券组表
groupid

优惠券表
id
groupid
code
uid
passwd

优惠券规则表
groupid
rule_type
start
end
enum
condition
value

优惠券使用表
id
code
order_code
uid
value
film_id
cinema_id
screen_id