【问题标题】:PHP/MYSQL solution for e-commerce approach电子商务方法的 PHP/MYSQL 解决方案
【发布时间】:2012-09-24 10:37:32
【问题描述】:

例如,假设用户在20th sept 2012 上购买了名为soap 的产品,价格为1.50。这已记录在purchase 表下的数据库中,productIDdate

假设在 2012 年 9 月 22 日,管理员将 soap 的价格更改为 1.20,现在报告价格因此而更改。

确保为旧报告存储1.50 的旧数据和为新报告存储1.20 的最佳方法是什么?我应该将所有数据(包括产品名称、产品价格)插入到purchase 表中吗?

【问题讨论】:

  • 创建另一个具有历史项目价格的表,并在打印报告时检查日期 x 和 y 之间的购买,然后输入价格 a
  • 是的,这是最好的解决方案
  • 存储价格将是个好主意.....它将帮助您进行其他数学计算,如利润和税收

标签: php mysql


【解决方案1】:

您的问题的简单答案是肯定的。

对于财务系统,任何可能需要审计“交易”的系统都应该完整地存储在“文档”或“记录”中。

还有其他方法,例如使用“标志”(例如当前、已删除、已修改等)、“from_date”和“to_date”记录每次删除或修改,而不是实际删除或修改数据库中的数据,但是这将使用更多的服务器资源,并且编程不仅在 mySQL 中而且在 PHP 中也更加复杂。但它允许您同时只提供记录之间的关系。

我的建议是保持简单,并将所有需要的数据存储在一条记录中。如果需要对系统进行审核,您将更加安全,您将节省时间和合法地。

祝你好运,希望对你有帮助!

【讨论】:

    【解决方案2】:

    我认为没有必要在购买表中存储产品名称,但我认为应该存储的产品价格。

    此外,如果您不将产品名称存储在购买表中,则应注意删除产品。也许删除它们不是最好的主意,因此您应该将它们从商店中隐藏,但不要从数据库中删除它们。

    【讨论】:

      【解决方案3】:

      我通常将产品的价格与 productID 和日期一起存储在 purchase 表中,或者如果您可以在购物车中有多个商品,您将有一个 purchase 表和一个 purchase_product 表。也就是说,如果您添加了优惠券代码或其他类似内容,您将始终能够看到该人在该特定购买中为该商品支付的费用。

      【讨论】:

        【解决方案4】:

        我最近一直在研究与您描述的产品相近的产品。而且我相信您的答案取决于您愿意实施项目的复杂程度。最简单的方法是将产品信息存储在发票记录中。但随着时间的推移,这会导致冗余。

        另一方面,您可以实施修订机制,以便随时跟踪记录的更改。这可以通过为您的记录使用两个 id 而不是一个来轻松完成。这是一个示例表:

        CREATE TABLE IF NOT EXISTS `product` (
          `product_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
          `entity_id` bigint(20) unsigned NOT NULL,
          `name` varchar(255) NOT NULL,
          `price` double NOT NULL DEFAULT '0',
          PRIMARY KEY (`product_id`),
          KEY `inx_entity_id` (`entity_id`)
        ) DEFAULT CHARSET=utf8 ;
        

        product_id 是您的普通自动增量 ID,而 entity_id 是一个特殊 ID,对于同一产品的所有记录都是相同的。在这种设计中,您永远不会删除记录,也不会更新它。您将始终只插入表格,当您需要获取产品列表时,您只需要记住entity_id 上的分组是按顺序排列的。产品信息可以在product_id最大的记录中找到。也许您可能想要创建一个实体表来跟踪entity_ids。

        这种设计比将产品信息复制到发票更复杂。但它有很多很大的好处。就像您可以跟踪产品的价格变化一样。或者您可以使用product_id 的外键来指向产品的一个特定版本,或者使用entity_id 来指示产品类型而不是它的某个特定版本。当然,它的复杂性会让您付出代价,但您可以判断它是否值得。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 2012-02-14
          相关资源
          最近更新 更多