gpt4 book ai didi

database-design - 订单/发票信息的建议数据库架构是什么?

转载 作者:行者123 更新时间:2023-12-04 01:07:25 28 4
gpt4 key购买 nike

我必须对电子商务系统进行一些更改以添加一些附加信息,并希望借此机会进行一些改进并使其更加灵活。当客户下订单时,我们必须为每个订购的商品存储几项信息;例如,产品价格、运费、征收的税款、所做的任何调整。

我正在讨论这些字段是否应该离散存储,例如(简化示例):

ORDER_LINE_ITEM
OrderLineItemID
ProductID
Qty
Price
Shipping
Handling
SalesTax
Adjustment

例如,我可以计算客户支付的总价:
SELECT Qty*(Price+Shipping+Handling+SalesTax) As TotalCollected FROM ORDER_LINE_ITEM

或者,如果我应该使用更间接的结构:
ORDER_LINE_ITEM
OrderLineItemID
ProductID
Qty

ORDER_LINE_ITEM_ENTRIES
OrderLineItemEntryID
OrderLineItemID
EntryType
Value

例如:
1 | 1 | Price      | $10
2 | 1 | Shipping | $5
3 | 1 | Handling | $1
4 | 1 | SalesTax | $1
5 | 1 | Adjustment | -$3.50

这样做的好处是我可以稍后在不更改表架构的情况下存储其他信息。然而,检索信息和运行报告变得更加复杂和缓慢。

是否有将此信息存储在订单/发票数据库中的最佳实践?

提前致谢,

最佳答案

我会做一个混合的方法,有两个:

ORDER_LINE_ITEM
OrderLineItemID
ProductID
Qty
Price
Shipping
Handling
SalesTax
Adjustment
Extras

ORDER_LINE_ITEM_ENTRIES
OrderLineItemEntryID
OrderLineItemID
EntryType
Value

然后做
SELECT Qty*(Price+Shipping+Handling+SalesTax+Extras) As TotalCollected FROM ORDER_LINE_ITEM

然后您可以在大部分时间使用单个表格工作,但是如果您需要搜索商品的详细信息(或添加影响价格的新内容),您可以这样做(使用额外字段)。

在另一个主题中,我会考虑所有这些字段是否真的应该在 ORDER_LINE_ITEM 上。我不了解您的业务,但在我知道的业务中,运输、处理甚至价格是针对整个订单计算的,而不仅仅是针对一件商品(而且并不总是可以将其拆分为单独的商品)。拥有“管理员”用户或密码的情况也很常见,他可以随心所欲地出售任何东西,为所有内容输入任意字段,而忽略所有正常的业务规则。因此,您可能会考虑执行以下操作:
ORDER_LINE_ITEM
OrderLineItemID
OrderId
ProductID
Qty

ORDER
OrderId
ItemsTotalPrice
Shipping
Handling
SalesTaxes
Adjusment
FinalPrince

您可以创建一个详细信息表来指定订单的值(税、运费等)是如何创建的...

总的来说,我发现最好的方法是拥有一个包含所有订单(或操作)的最终信息的实体,然后是指定如何计算“总”值的附加子实体。

关于database-design - 订单/发票信息的建议数据库架构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com