Ich habe eine Liste von Produkten. Jeder von ihnen wird von N Anbietern angeboten.
Jeder Anbieter bietet uns einen Preis für einen bestimmten Termin an. Dieser Preis gilt so lange, bis dieser Anbieter einen neuen Preis festlegt. In diesem Fall gibt der Anbieter den neuen Preis mit einem neuen Datum an.
Der MySQL-Tabellenheader sieht derzeit folgendermaßen aus:
provider_id, product_id, price, date_price_effective
Jeden zweiten Tag erstellen wir eine Liste der Produkte / Preise, die für den aktuellen Tag gültig sind. Für jedes Produkt enthält die Liste eine sortierte Liste der Anbieter, die dieses bestimmte Produkt haben. Auf diese Weise können wir bestimmte Produkte bei demjenigen bestellen, der gerade den besten Preis anbietet.
Um die effektiven Preise zu erhalten, habe ich eine SQL-Anweisung, die alle Zeilen zurückgibt, die haben date_price_effective >= NOW()
. Diese Ergebnismenge wird mit einem Ruby-Skript verarbeitet, das die Sortierung und Filterung vornimmt, die erforderlich sind, um eine Datei zu erhalten, die wie folgt aussieht:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
Für unsere Zwecke funktioniert dies einwandfrei, aber ich habe immer noch das Gefühl, dass eine SQL-Tabelle wahrscheinlich nicht der beste Weg ist, um diese Art von Informationen zu speichern. Ich habe das Gefühl, dass diese Art von Problem auf andere kreativere Weise gelöst wurde.
Gibt es eine bessere Möglichkeit zum Speichern dieser Informationen als in SQL? Oder gibt es bei Verwendung von SQL einen besseren Ansatz als den, den ich verwende?