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