我正在开发一个应用程序并寻找一个数据库模式,以便以与价格相关的有效方式存储产品销售。所以我正在寻找一个数据库模式和一个示例查询来计算该月的价格
背景信息:
到目前为止我看到的是这样的:
的销售 的
sale_id --PK (auto_incr)
company_id
product_type --FK on products.product_type
sale_date
的产品 的
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_id --PK (auto_incr)
vat_percentage
valid_from
valid_until
我认为“sales_max”和“sales_min”列存在问题。此外,我怀疑这是否是存储东西的最佳方式。一些建议是受欢迎的。 (如果可能的话,使用示例查询)
如何在不影响之前价格的情况下输入新价格。
答案 0 :(得分:1)
为什么不在订单完成时将销售价格和当前增值税值直接写入“销售”表?这是历史数据,因此可以从产品表中复制它。
如果我理解你的“price_packages”表应该如何工作,它将是这样的:
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)
将“$ sales”替换为此产品的销售数量(将计数器列添加到产品表或从“sales”表中计算)
将“$ product_ids”替换为实际订单中的产品。
如果您有疑问,请告诉我。