预订与杂费计费数据库schema正确性验证及优化方案咨询
现有设计可行性判断
你当前的设计核心业务表的划分逻辑是合理的,但缺少支付记录和费用来源的关联链路,完全无法区分每笔支付对应的是预订费用还是杂费,无法满足对账、核销的基础业务要求,因此不算适配当前场景的可行方案。
具体优化调整建议
- 新增费用核销中间表
payment_allocation,承接支付和各类费用的关联关系,推荐字段如下:id主键payment_id外键,关联支付表主键idbooking_fee_id外键,关联预订费用表主键id,可空misc_fee_id外键,关联杂费表主键id,可空allocated_amount本次核销的对应费用金额,支持一笔支付核销多笔费用、多笔支付合并核销一笔费用的灵活场景create_time核销操作时间
- 新增表级约束:
booking_fee_id和misc_fee_id必须有且仅有一个非空,确保每一条核销记录明确对应唯一一类费用,不会出现关联歧义 - 可选优化1:支付表新增
biz_type枚举字段,枚举值可设为预订支付、杂费支付、预存充值、退款等,无需联表即可快速筛选不同业务类型的支付记录 - 可选优化2:如果高频查询需要直接展示支付对应费用类型,可在支付表冗余
fee_category字段,枚举值为预订费/杂费,写入核销记录时同步更新该字段,降低日常查询的联表消耗
上述设计同时支持一笔支付同时核销部分预订费+部分杂费的复杂场景,不会出现关联冲突,适配绝大多数线下计费业务的核销需求。

内容的提问来源于stack exchange,提问作者Aybanooo
相关产品推荐
相关产品推荐

