MYSQL数据设计实践
设计数据库时,也靠考虑一些关键的业务问题。实践过程,通过processon作为ER图设计的协作工具,大家基于ER图达成共识后,直接创建云数据库,云上把库建好,导出sql,交付老师作业。
车站区间
车站区间的意义:便于查询。
策略1: 自动生成,根据站点顺序,全量生成;
策略2: 由人工设置
策略3: 根据售卖天数逐步释放车站区间
我们采用策略1来自动全量生成所有的车站区间。
车票价格计算
车票价格 = 运行距离 * 价格系数 * 优惠系数
运行距离
运行距离就是车次区间距离,根据两个站点距离始发站的距离相见可得;
价格系数
价格系数根据每一个影响要素的价格系数综合得出
影响要素:
- 车次级别:快车K / 特快T / 直达Z / 高铁G,
- 车厢类别:一等座/二等座/卧铺/软卧
- 座位类别:硬座/上铺/下铺
优惠策略
根据儿童,学生等身份,设置优惠策略。
其他策略
不再考虑: 可能根据旅游季、淡季等因素,还会有一定的价格浮动率。
车票生成策略
车票会将所有的车票提前生成好, 在购票时,方便资源争抢,直接锁定一个车票资源。车票业务有特殊性,不太利于使用库存这个概念,和传统电商有差别。
生成车票
生成车票分为两个阶段
- 首先发布车次时,会生成车票模板,车次中所有车厢的每一个座位生成一个车票模板;
- 每天基于所有的车票模板生成具有日期属性的车票
车票就是最终要售卖的商品。
车票数量
根据车厢类型汇总代售状态的车票。
车票售卖
订单锁定车票时,赋予车票 乘车人、乘车区间、乘车日期、乘车价格等属性;订单过期未支付,则释放车票资源。
车票售出后,不再根据车次区间,重新生成新的车票。