Ürün listem var. Her biri N sağlayıcılar tarafından sunulmaktadır.
Her sağlayıcı bize belirli bir tarih için bir fiyat veriyor. Bu fiyat sağlayıcı, yeni bir fiyat belirlemeye karar verene kadar geçerlidir. Bu durumda, sağlayıcı yeni fiyatı yeni bir tarihle verir.
MySQL tablo başlığı şu anda şuna benziyor:
provider_id, product_id, price, date_price_effective
Her geçen gün, o gün için geçerli olan ürünlerin / fiyatların bir listesini derliyoruz. Her ürün için, listede söz konusu ürüne sahip sağlayıcıların sıralanmış bir listesi bulunur. Bu şekilde, en iyi fiyatı sunmak için olanlardan belirli ürünleri sipariş edebiliriz.
Etkili fiyat almak için, tüm satırları döndüren bir SQL deyim var date_price_effective >= NOW()
. Bu sonuç kümesi, şuna benzeyen bir dosyayı elde etmek için gereken sıralama ve filtrelemeyi yapan bir yakut komut dosyası ile işlenir:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
Bu bizim amaçlarımız için gayet iyi fakat hala bir SQL tablosunun bu tür bilgileri depolamak için en iyi yol olmadığını belirten bir kaşıntıya sahibim. Bu tür problemlerin daha önce başka yaratıcı yollarla çözüldüğünü hissediyorum.
Bu bilgiyi SQL dışında saklamanın daha iyi bir yolu var mı? veya, eğer SQL kullanıyorsanız, kullandığımdan daha iyi bir yaklaşım var mı?