Tergantung,
Berapa banyak kategori yang akan Anda miliki, seberapa sering Anda perlu memperbaruinya?
Saya telah mengambil pendekatan sebelumnya di mana saya menambahkan Enum, tetapi juga menulis metode statis di kelas dan menyimpan nama yang valid di sana
class Item{
public static function get_categories()
{
// only works in php >=5.4 otherwise use return array('Category1'...);
return [
'Category1' => 'Category1',
'Category2' => 'Category2',
'Category3' => 'Category3'
];
}
}
Melakukan hal di atas, Anda dapat dengan mudah mendapatkan akses ke array dengan Item::get_categories(), yang harus sesuai dengan nilai dalam bidang ENUM di database. Jika Anda perlu menambahkan lebih banyak kategori, tambahkan ke database dan kemudian ke fungsi ini. Anda dapat menggunakan ini untuk memvalidasi pilihan pengguna dan menghasilkan opsi javascript.
Namun!!!!
Anda menyebutkan penyemaian yang mengisi tabel Anda, ini tidak akan dapat dengan mudah memperbarui ENUM Anda untuk Anda.
Saya akan menggunakan ENUM, karena
1). Sangat mudah untuk setup2). Ini sedikit lebih mudah daripada menggabungkan dua tabel (tetapi GABUNG adalah kartu as ketika Anda mempelajarinya)3). Jika Anda menggunakan tabel sekunder, Anda (seperti yang Anda tunjukkan) harus mencari nilai dari tabel itu terlebih dahulu, lalu menyisipkan, atau jika kategori digunakan dalam dropdown, gunakan id kategori dan namanya untuk mengisi dropdown (saya akan melakukannya dengan cara ini)
Pikiran terakhir
Kinerja kedua cara (tabel pencarian, dan ENUM) Anda akan melihat perbedaannya bahkan kecuali situs Anda sangat sangat sibuk. Anda masih harus memperbarui tabel kategori dengan setiap versi dua arah, tetapi akan sedikit lebih mudah untuk MENGGUNAKAN pernyataan INSERT daripada ALTER TABLE
Cara mana pun yang Anda pilih, jika Anda tidak menyukainya, akan sangat mudah untuk memperbarui kode Anda.
Semoga membantu, dan selamat mencoba
Ingat Keep It Simple Stupid K.I.S.S