Sql 如何设计不重复保存历史的数据库模式?
概述:商务优惠折扣。用户可以使用折扣。商务部提供多种折扣,但只能连续提供。意思是,最初如果你没有使用任何折扣的某个企业。。。您只享受折扣1。一旦你使用折扣1,你有资格获得2,然后一旦你使用2,你有资格获得3 需要的功能:Sql 如何设计不重复保存历史的数据库模式?,sql,postgresql,architecture,database-schema,Sql,Postgresql,Architecture,Database Schema,概述:商务优惠折扣。用户可以使用折扣。商务部提供多种折扣,但只能连续提供。意思是,最初如果你没有使用任何折扣的某个企业。。。您只享受折扣1。一旦你使用折扣1,你有资格获得2,然后一旦你使用2,你有资格获得3 需要的功能: 用户可以查看他们过去申请的所有折扣 使用可以查看他们的所有可用折扣,正确找出您符合每笔业务的折扣编号(1 | 2 | 3) Biz可以查看他们提供的所有交易 即使企业改变了折扣,申请的折扣也不会改变。用户历史记录也不会改变 Biz应该能够获得所有已申请且未过期折扣的列表 我的第
- 生意
- 使用者
- 折扣
- 用户折扣
第三是每次业务更新或删除其折扣时只需在折扣中创建新记录。但是现在我必须为每个折扣添加一个标志,如果这是活动的,在有3条记录之前,现在可能有100条,取决于业务部门更新其资料的次数。为了避免更改历史记录的问题并尽量减少重复,您不应该编辑折扣表中的记录,而是在需要时添加新记录。您可以添加折扣是否有效的标志,但最好使用生效日期/到期日期。您可以进行的一个优化是允许编辑尚未使用的折扣,以最小化表中未使用的行。在数据仓库中,这是通过SCD2实现的。同一项目的每个配置都有开始和结束日期。如果有多个配置,则当前配置有一个标志指示该配置。如果需要存储多个状态,则无法存储多个记录。你的第三个选择对我来说最有意义。记录会膨胀,但这就是数据库的用途