Ada dua jenis yang sangat cocok untuk menyimpan kamus secara keseluruhan:hstore
dan json
- atau jsonb
yang paling unggul
di Postgres 9.4 atau lebih baru.
Postgres juga memiliki xml
khusus
tipe data, tapi saya lebih suka memilih salah satu dari tiga opsi sebelumnya. XML relatif bertele-tele dan lebih kompleks (belum dikatakan berbelit-belit) dan mungkin berlebihan untuk tujuan Anda.
Jika semua yang Anda inginkan dari DB adalah untuk menyimpan dan mengambil seluruh kamus, ini adalah opsi yang bagus. Lihat:
Anda juga akan menemukan diskusi ekstensif tentang pro dan kontra seputar eav (entity-attribute-value) penyimpanan dalam database relasional.
Jika Anda menginginkan hal-hal lain dari DB, seperti integritas referensial, kunci asing atau berbagai kendala lainnya, akses mudah ke nilai individual, ukuran penyimpanan minimal, indeks sederhana, dll. Saya menyarankan satu atau lebih tabel dengan dedicated (dinormalisasi ) kolom.
Tata letak tabel yang dinormalisasi
Dari apa yang saya kumpulkan, "MyObject" (m
) menyimpan koleksi referensi ke "OtherObject" (o
). Setiap m
terkait dengan (24) o
dan setiap o
terkait dengan 0-n m
- yang dapat diimplementasikan dalam hubungan n:m klasik. Berikut adalah petunjuk detailnya: