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