[英]Structuring a Daily Sales Database
我想建立一个非常基本的每日销售报告。 我正在尝试决定如何构造数据库以最好地完成此任务。 这是一个用例:
我目前的结构是:
PROVIDER table
PRODUCT table
start_date
和end_date
是产品销售可能发生的时间。 它仅用于参考,不会真正影响其他任何内容。
SALES table
sales
将是该产品销售的每日收益($)。
我不太确定如何存储销售额。 销售额将仅作为每种产品的每日总和来计算。 构造SALES
表的最佳方法是什么? 谢谢。
产品表:
销售表:
通过上述设置,您可以根据product
表中的内容更改价格,但不会影响sales_transaction
表中记录的已发生的销售额。
伪模式:
product
:
sales_transaction
:
provider
:
现在,您可以运行查询以获取任何提供商的任何日期的任何产品的摘要,如您在问题中所要求的那样。
示例查询:
# On Jan 5, 2011, Provider A makes $500 total off of its products
SELECT prov.*, SUM(sales.price)
FROM
provider AS prov
INNER JOIN
sales_transaction AS sales on sales.provider_id = prov.id
WHERE
provider.name = 'Provider A'
AND
sales.created_at BETWEEN '2012-01-05 00:00:00' AND '2012-01-05 23:59:59'
GROUP BY
prov.id
所提供的架构本质上是骨架,因此可以根据业务需求指示随意添加列,但是它应该使您朝正确的方向前进。
另外,最后一条建议,我建议您将日期时间存储在UTC中。 如果您选择存储在本地时区,那么如果您进行任何需要从本地时区转换的销售,都会遇到很多麻烦。
为什么销售表中没有日期字段? 这将使每条记录都记录特定产品在特定日期的销售总额。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.