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

Menyimpan array dengan panjang yang tidak diketahui

Jika Anda menemukan diri Anda dalam situasi di mana Anda mulai memiliki column1 , column2 di atas meja - kemungkinan besar desain Anda cacat, dan Anda sebaiknya membuat tabel terpisah - di mana setiap columnX mendapat barisannya sendiri. Itu (hampir) selalu lebih baik untuk memiliki tabel terpisah jika Anda mendapati diri Anda memiliki beberapa kolom berulang pada tabel yang sama.

Dengan begitu, Anda menghindari menyimpan nilai yang dipisahkan koma di kolom, Anda menghindari kerusakan kode/kueri jika Anda tiba-tiba harus memasukkan nilai lain column{X+1} - dan sebagai gantinya dapat memiliki nilai input sebanyak atau sesedikit yang Anda butuhkan.

Bagi Anda, itu akan menjadi sesuatu seperti tabel baru bernama land_owner_input , di mana Anda memiliki nilai (yang akan Anda masukkan ke columnX ), dan referensi ke baris di land_owner di mana nilainya.

Pola desain yang khas akan menjadi seperti ini.

CREATE TABLE land_owner_input (
    land_owner_input_id INT(11) AUTO_INCREMENT
    land_owner_id INT(11), 
    land_owner_input_value VARCHAR(MAX)
);

Ingatlah bahwa land_owner_id . Anda di tabel baru harus memiliki jenis dan ukuran yang sama persis dengan ID yang dirujuk.

Anda juga dapat membuat batasan kunci asing antara land_owner_id dan ID land_owner tabel untuk memastikan integritas data.

Setelah Anda memiliki tabel baru, Anda dapat mengkuerinya bersama-sama dengan menggunakan LEFT JOIN (atau JOIN biasa jika Anda hanya ingin mengembalikan baris jika memiliki nilai input).

SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
    ON loi.land_owner_id = lo.land_owner_id 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Milvus :melatih dan mencari di mesin terpisah

  2. Tambahkan kolom kunci utama ke tabel lama tanpa kunci utama

  3. MySQL:ON UPDATE CASCADE untuk id tabel sederhana | induk | teks, tidak mungkin?

  4. Bagaimana cara memasukkan array ke mysql menggunakan PDO dan bindParam?

  5. Masalah dengan mengunggah data ke database