Saya menerapkan model berikut untuk menyimpan data terkait pengguna di tabel saya - Saya punya 2 kolom - uid
(kunci utama) dan meta
kolom yang menyimpan data lain tentang pengguna dalam format JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Apakah ini cara yang lebih baik (kinerja-bijaksana, desain-bijaksana) dari model satu-kolom-per-properti, di mana meja akan memiliki banyak kolom seperti uid
, name
, emailid
.
Yang saya suka tentang model pertama adalah, Anda dapat menambahkan sebanyak mungkin bidang tidak ada batasan.
Juga, saya bertanya-tanya, sekarang saya telah menerapkan model pertama. Bagaimana cara saya melakukan kueri, seperti, saya ingin mengambil semua pengguna yang memiliki nama seperti 'foo'?
Pertanyaan - Manakah cara terbaik untuk menyimpan data terkait pengguna (dengan mengingat bahwa jumlah bidang tidak diperbaiki) dalam basis data menggunakan - JSON atau kolom per bidang? Juga, jika model pertama diterapkan, bagaimana cara query database seperti dijelaskan di atas? Haruskah saya menggunakan kedua model, dengan menyimpan semua data yang dapat dicari oleh kueri di baris terpisah dan data lainnya di JSON (apakah baris berbeda)?
Memperbarui
Karena tidak akan ada terlalu banyak kolom di mana saya perlu melakukan pencarian, apakah sebaiknya menggunakan kedua model? Kunci-per-kolom untuk data yang saya butuhkan untuk mencari dan JSON untuk orang lain (dalam database MySQL yang sama)?