1

我正在为在亚马逊市场上销售的卖家创建一个网络应用程序。这个应用程序使用亚马逊的 API 下载他们的订单,然后计算他们支付给亚马逊的费用。这是应用程序的主要功能。它用于根据这些数据生成易于理解的报告。每个订单里面有 1 个或多个订单商品,每个订单商品都有特定的属性,例如重量、尺寸等。

亚马逊向卖家收取一系列不同的费用,例如每笔订单的费用、每笔订单商品的费用、如果使用亚马逊物流计划的订单商品履行费用、基于订单商品重量的重量费等。总的来说,我计算了大约 30 个不同的变量,涉及卖家支付某种费用的不同场景。

对于数据库,我目前有 6 个与我的问题相关的表: amazon_order_items 表,其中包含每个订单和该订单中的每个订单项目以及计算费用的所有必要属性。我还有另外 4 个专门用于存储费用的表格。由于它们的类型不同,我为所有这些费用创建了单独的表格。

目前,我有一个 INSERT 触发器设置,只要将新的订单项目行插入 amazon_order_items 表就会触发。然后它从这 4 个其他费用表中提取并将匹配的行插入到 amazon_order_items_fees 表中。有一段时间,它工作得很好,尽管是一个非常丑陋的触发器。我选择了一个触发器,因为我认为在插入订单项目时将费用自动插入数据库会非常有益。这正在变成一场灾难。

亚马逊不断地改变他们的费用结构,而且事实证明,使用我使用的触发器来保持准确的费用数字是极其困难的。我的问题是,我应该继续使用 DB 触发器来计算费用并将它们插入到 DB 表中,还是应该将设计全部废弃并简单地使用 PHP 插入订单项目和相应的费用?

4

1 回答 1

2

触发器更适合您的应用程序不一定知道数据库中的更改/事件的情况。如果您将逻辑保留在实际应用程序中,那么在应用程序级别发生的事情总是会更加透明。

一般来说,触发器更难维护,如果某些东西的行为不正常,则更难调试。仅出于这些原因,我建议将插入内容插入应用程序的 amazon_order_items_fees 表部分,尤其是因为您已经提到他们经常更改费用结构。

希望能帮助你做出决定!

于 2013-09-09T23:07:30.697 回答