У меня есть список продуктов. Каждый из них предлагается 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, есть ли лучший подход, чем тот, который я использую?