我正在创建一个基于 Web 的销售点(例如收银机)解决方案,以 Django 作为后端。我一直采用“经典”方法对发票及其行项目进行建模。
\nInvoiceTable\n id\n date\n customer\n salesperson\n discount\n shipping\n subtotal\n tax\n grand_total\n [...]\n\nInvoiceLineItems\n invoice_id // foreign key\n product_id\n unit_price\n qty\n item_discount\n extended_price\n [...]\nRun Code Online (Sandbox Code Playgroud)\n在尝试研究最佳实践后,我发现没有很多 - 至少没有广泛使用的明确来源。
\nKimball Group 建议:“我们建议您将标题的所有维度都归结为行项目,而不是保留交易标头 \xe2\x80\x9c 对象、\xe2\x80\x9d 的操作概念。”
\n请参阅http://www.kimballgroup.com/2007/10/02/design-tip-95-patterns-to-avoid-when-modeling-headerline-item-transactions/和http://www.kimballgroup.com/ 2001/07/01/design-tip-25-为父子应用程序设计维度模型/。
\n我是开发新手(之前只使用过桌面数据库软件) - 但根据我的理解,这是有道理的,因为我们可以以任何我们想要的方式钻取数据以用于报告目的(尽管我想我们可以对第一个做同样的事情)方法通过连接表)。
\n我的问题
\n每行都需要重复发票 ID(这样我们就可以生成发票总计等数据)。这是这种数据建模方式的故意特征吗?
\nWe often have invoice level data like notes, discounts, shipping charges, etc. - How do we represent these using this method? Some discounts …