Jika Anda mengukur milidetik dan IO disk sistem Anda tidak terlalu lambat, maka opsi 2 akan menghasilkan kinerja yang lebih baik. Tapi , kita berbicara tentang keuntungan yang dapat diabaikan dalam waktu eksekusi. Karena Anda sudah akan menanyakan DB untuk mendapatkan item berita, itu akan sangat dioptimalkan untuk hanya mendapatkan nama kategori pada saat yang bersamaan. Saya akan menambahkan tabel pemetaan category-name-id ke nama-kategori . Dan bergabunglah saat mendapatkan item berita.
Dari sudut pandang fleksibilitas dan sudut pandang menghilangkan sebanyak mungkin sumber kesalahan, saya juga akan mengikuti ide saya di atas. Karena itu menambah fleksibilitas ke sistem Anda dan menyimpan semua data Anda di satu tempat. Mengubah nama kategori akan memerlukan pengeditan satu kolom di database alih-alih mengedit file konfigurasi php atau, jika opsi 1 digunakan, memperbarui setiap catatan berita.
Jadi saran terbaik saya, tambahkan tabel dengan category-name-id ke nama-kategori pemetaan dan kemudian membuat item berita berisi id dari kategori tempat mereka berada.
Untuk kinerja, Anda kemudian dapat menyimpan data yang Anda ambil tentang kategori yang ada dan data lain dalam cache sehingga Anda tidak perlu melakukan polling DB untuk informasi itu setiap saat.
Contohnya. Anda bisa, daripada bergabung sama sekali, mendapatkan semua kategori dari tabel kategori yang saya jelaskan di atas. Cache di aplikasi dan hanya dapatkan setelah cache tidak valid. yaitu terjadi timeout atau data dalam db dimanipulasi.