Saya punya daftar produk. Masing-masing ditawarkan oleh penyedia N.
Setiap penyedia mengutip kami dengan harga untuk tanggal tertentu. Harga itu efektif hingga penyedia memutuskan untuk menetapkan harga baru. Dalam hal ini, penyedia akan memberikan harga baru dengan tanggal baru.
Header tabel MySQL saat ini terlihat seperti:
provider_id, product_id, price, date_price_effective
Setiap hari, kami menyusun daftar produk / harga yang efektif untuk hari ini. Untuk setiap produk, daftar tersebut berisi daftar penyedia yang diurutkan yang memiliki produk tertentu. Dengan begitu, kita dapat memesan produk tertentu dari siapa pun yang kebetulan menawarkan harga terbaik.
Untuk mendapatkan harga efektif, saya memiliki pernyataan SQL yang mengembalikan semua baris yang ada date_price_effective >= NOW()
. Kumpulan hasil itu diproses dengan skrip ruby yang melakukan penyortiran dan penyaringan yang diperlukan untuk mendapatkan file yang terlihat seperti ini:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
Ini berfungsi dengan baik untuk tujuan kita, tetapi saya masih merasa gatal bahwa tabel SQL mungkin bukan cara terbaik untuk menyimpan informasi semacam ini. Saya merasa bahwa masalah semacam ini telah diselesaikan sebelumnya dengan cara yang lebih kreatif lainnya.
Apakah ada cara yang lebih baik untuk menyimpan informasi ini selain di SQL? atau, jika menggunakan SQL, apakah ada pendekatan yang lebih baik daripada yang saya gunakan?