Database design ax和对哪些产品征税。这会打断视图,但不会打断快照 规则变了。我们必须为客户提供一种方法,让他们可以推翻优惠券和价格匹配等规则。您可以通过覆盖快照价格来实现这一点,但不能使用视图 价格和税收的变化不是问题,因为它们在我的模式中是独立的实体,具有开始/结束日

Database design ax和对哪些产品征税。这会打断视图,但不会打断快照 规则变了。我们必须为客户提供一种方法,让他们可以推翻优惠券和价格匹配等规则。您可以通过覆盖快照价格来实现这一点,但不能使用视图 价格和税收的变化不是问题,因为它们在我的模式中是独立的实体,具有开始/结束日,database-design,schema,snapshot,Database Design,Schema,Snapshot,ax和对哪些产品征税。这会打断视图,但不会打断快照 规则变了。我们必须为客户提供一种方法,让他们可以推翻优惠券和价格匹配等规则。您可以通过覆盖快照价格来实现这一点,但不能使用视图 价格和税收的变化不是问题,因为它们在我的模式中是独立的实体,具有开始/结束日期以在给定时间查找其值。但很重要的一点是,快照将使数据对未来的数据消费者更加透明。还有一点更好:我的折扣规则令人头痛。使用我的方法,如果旧规则改变,我将不得不保存它们!谢谢你指出这一点!我试图对其进行编辑,以使其更清楚地表明,在我的示例中,改变

ax和对哪些产品征税。这会打断视图,但不会打断快照
  • 规则变了。我们必须为客户提供一种方法,让他们可以推翻优惠券和价格匹配等规则。您可以通过覆盖快照价格来实现这一点,但不能使用视图

  • 价格和税收的变化不是问题,因为它们在我的模式中是独立的实体,具有开始/结束日期以在给定时间查找其值。但很重要的一点是,快照将使数据对未来的数据消费者更加透明。还有一点更好:我的折扣规则令人头痛。使用我的方法,如果旧规则改变,我将不得不保存它们!谢谢你指出这一点!我试图对其进行编辑,以使其更清楚地表明,在我的示例中,改变的不是税额,而是计算税款的方式;它将需要不同的数据库架构。价格和税收的变化不是问题,因为它们在我的架构中是独立的实体,具有开始/结束日期以在给定时间查找其值。但很重要的一点是,快照将使数据对未来的数据消费者更加透明。还有一点更好:我的折扣规则令人头痛。使用我的方法,如果旧规则改变,我将不得不保存它们!谢谢你指出这一点!我试图对其进行编辑,以使其更清楚地表明,在我的示例中,改变的不是税额,而是计算税款的方式;它将需要不同的数据库架构。
    # display order items for a particular order on a particular date
    
    # get order, products and base prices from order_id
    
    order_products = SELECT * FROM order_has_product ohp
                              INNER JOIN price ON (price.product_id = ohp.product_id)
                              INNER JOIN order ON (order.id = ohp.order_id)
                              WHERE order_id = ?
    
    
    # calculate price of each product at order.datetime_opened
    
    for op in order_products:
    
        tax = SELECT SUM(tax.rate) FROM product_has_tax pht
                 INNER JOIN tax ON (tax.id = pht.tax_id)
                 WHERE pht.product_id = op.product_id
                     AND tax.date_start <= op.datetime_opened
                     AND tax.date_end >= op.datetime_opened
    
        discount_product = SELECT SUM(discount.rate) FROM product_has_discount phd
                 INNER JOIN discount ON (discount.id = phd.discount_id)
                 WHERE phd.product_id = op.product_id
                     AND discount.date_start <= op.datetime_opened
                     AND discount.date_end >= op.datetime_opened
    
        discount_customer = SELECT SUM(discount.rate) FROM customer_has_discount chd 
                 INNER JOIN discount ON (discount.id = chd.discount_id)
                 WHERE chd.customer_id = op.customer_id
                     AND discount.date_start <= op.datetime_opened
                     AND discount.date_end >= op.datetime_opened
                     AND (chd.date_used_limited IS NULL OR chd.date_used_limited = op.datetime_opened)
    
        discount = discount_product + discount_customer
    
        price = op.price * (1-discount) * (1+tax)