我有一个产品清单。每个都由N个提供者提供。
每个提供商都为我们提供特定日期的价格。该价格一直有效,直到该提供商决定设置新价格。在这种情况下,提供商将使用新日期给出新价格。
MySQL表标头当前看起来像:
provider_id, product_id, price, date_price_effective
每隔一天,我们会汇总当天有效的产品/价格列表。对于每种产品,该列表包含具有该特定产品的提供者的排序列表。这样,我们可以从碰巧提供最佳价格的任何人那里订购某些产品。
为了获得有效的价格,我有一条SQL语句返回所有具有的行date_price_effective >= NOW()
。该结果集由ruby脚本处理,该脚本进行必要的排序和过滤以获取如下所示的文件:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
对于我们的目的来说,这很好用,但是我仍然觉得SQL表可能不是存储此类信息的最佳方法。我感到这种问题以前已经以其他更具创造性的方式解决了。
除了在SQL中,还有其他更好的方法来存储此信息吗?或者,如果使用SQL,是否有比我正在使用的方法更好的方法?