开发者

database layout storing price packages

I'm working on an application and looking for a database schema to store product sales in a efficient manner relating to the prices. So I'm looking for a database schema and an example query to calculate the price for that month

background info:

  • the product price is based on the amount of sales for that month
  • An identical product can have different p开发者_StackOverflowrices (depending on price negotiation per company)
  • need to be able to change prices without affecting earlier sales/invoices
  • store prices without VAT, VAT can change

What I have got so far looks something like this:

sales

sale_id --PK (auto_incr)
company_id
product_type --FK on products.product_type
sale_date

products

product_id --PK (auto_incr)
company_id (company_id & product_type = Unique_key)
product_type

*price_packages*

product_id --FK on products.product_id
sales_min (total sales need to be between sales_min and sales_max)
sales_max
price
valid_from
valid_until
vat_id --FK on vat.vat_id

vat

vat_id --PK (auto_incr)
vat_percentage
valid_from
valid_until

I think that there is something wrong with the "sales_max" and "sales_min" columns. Also I'm doubting if this is the best way to store things. Some Advise is welcome. (if possible with an example query)

How would you enter new prices without affecting previous prices.


Why don't you write sale price and current VAT value directly into "sales" table when the order is done? This is historical data, so it's ok to duplicated it from products table.

If I understand correctly how your "price_packages" table is supposed to work it will be like this:

SELECT
   product_id
   , price
FROM
   price_packages
WHERE
   NOW() BETWEEN valid_from AND valid_until
   AND $sales BETWEEN sales_min AND sales_max
   AND product_id IN ($product_ids)

Replace "$sales" with number of sales for this product (either add counter column to products table or calculate it from "sales" table)

Replace "$product_ids" with products from the actual order.

Let me know if you have questions.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜