Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kolom json vs beberapa kolom

Jawaban Singkat, Banyak kolom.

Jawaban Panjang:

Demi cinta semua yang suci di dunia, tolong jangan simpan banyak kumpulan data dalam satu kolom teks

Saya berasumsi Anda akan memiliki tabel yang akan menjadi

+------------------------------+      +----------------------+
| User |  cell | office | home |  OR  | User | JSON String   |
+------------------------------+      +----------------------+

Pertama saya akan mengatakan kedua solusi ini bukan solusi terbaik tetapi jika Anda memilih dari keduanya, yang pertama adalah yang terbaik. Ada beberapa alasan terutama meskipun kemampuan untuk memodifikasi dan query secara khusus sangat penting. Pikirkan tentang algrothim untuk mengubah opsi kedua.

SELECT `JSON` FROM `table` WHERE `User` = ?

Then you have to do a search and replace in either your server side or client side language

Finally you have to reinsert the JSON string

Solusi ini berjumlah 2 kueri dan algoritma pencarian dan penggantian. Tidak Bagus!

Sekarang pikirkan tentang solusi pertama.

SELECT * FROM `table` WHERE `User` = ?

Then you can do a simple JSON encode to send it down

To modify you only need one Query.

UPDATE `table` SET `cell` = ? WHERE `User` = ?

to update more than one its again a simple single query 

UPDATE `table` SET `cell` = ?, `home` = ? WHERE `User` = ?

Ini jelas lebih baik tapi bukan yang terbaik

Ada solusi ketiga Katakanlah Anda ingin pengguna dapat memasukkan nomor telepon dalam jumlah tak terbatas.

Mari kita gunakan tabel relasi untuk itu jadi sekarang Anda memiliki dua tabel.

              +-------------------------------------+
+---------+   |      Phone                          | 
| Users   |   +-------------------------------------+ 
+---------+   | user_name| phone_number | type      |
| U_name  |   +-------------------------------------+
+---------+

Sekarang Anda dapat menanyakan semua nomor telepon pengguna dengan sesuatu seperti ini

Sekarang Anda dapat menanyakan tabel melalui gabungan

PILIH Pengguna., telepon. FROM Phone, Users WHERE phone.user_name =? DAN Pengguna.U_name =?

Sisipan sama mudahnya dan pemeriksaan jenis juga mudah.

Ingat ini adalah contoh sederhana tetapi SQL benar-benar memberikan banyak kekuatan untuk struktur data Anda, Anda harus menggunakannya daripada menghindarinya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django ORM query GROUP BY beberapa kolom digabungkan dengan MAX

  2. Mysqldump:buat nama kolom untuk sisipan saat mencadangkan

  3. Tampilan Daftar admin Django + ForeignKey =Daftar Ubah Kosong

  4. Bagaimana cara mudah mengimpor beberapa file sql ke database MySQL?

  5. Formulir HTML / Php tidak ditambahkan ke database SQL