Dalam kebanyakan kasus, saya akan menggunakan skema yang dinormalisasi
dengan tabel option_tag
mengimplementasikan hubungan banyak ke banyak antara tabel option
dan tag
. Implementasi referensi di sini:
Ini mungkin bukan opsi tercepat dalam segala hal, tetapi menawarkan fungsionalitas DB lengkap, termasuk integritas referensial, batasan, berbagai tipe data, semua opsi indeks, dan pembaruan murah.
Untuk kelengkapan, tambahkan ke daftar opsi Anda:
hstore
(opsi bagus)xml
lebih bertele-tele dan lebih kompleks daripadahstore
ataujsonb
, jadi saya hanya akan menggunakannya saat beroperasi dengan XML.- "string nilai yang dipisahkan koma" (sangat sederhana, sebagian besar opsi buruk)
- EAV (Entity-Attribute-Value) atau "pasangan nama-nilai" (sebagian besar opsi buruk)
Detail di bawah pertanyaan terkait ini di dba.SE:
Jika daftar hanya untuk tampilan dan jarang diperbarui, saya akan mempertimbangkan array biasa, yang biasanya lebih kecil dan berkinerja lebih baik daripada yang lain.
Baca entri blog oleh Josh Berkus @a_horse ditautkan ke dalam komentarnya. Namun perlu diketahui bahwa ini berfokus pada kasus baca yang dipilih. Josh mengakui:
Dan di situlah pendekatan yang dinormalisasi menang besar, terutama ketika Anda banyak mengubah tag tunggal di bawah beban bersamaan.
jsonb
hanya merupakan pilihan yang baik jika Anda tetap akan beroperasi dengan JSON, dan dapat menyimpan dan mengambil JSON "sebagaimana adanya".