PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ide yang baik untuk menyimpan array sebagai nilai bidang, atau menyimpan nilai array sebagai catatan?

Saya rasa Anda harus membaca tentang normalisasi database dan putuskan sendiri. Singkatnya, ada sejumlah masalah dengan proposal Anda, tetapi Anda dapat memutuskan untuk menerimanya.

Yang paling jelas adalah:

  1. Bagaimana jika tag tambahan ditambahkan ke baris(1)? Apakah harus di parsing dulu, cek apakah sudah ada kemudian update baris menjadi tags.append(newTag) .
  2. Lebih buruk lagi menghapus tag? Cari tag, ada, buat ulang tag.
  3. Bagaimana jika sebuah tag adalah untuk mengubah nama - beberapa proses moderasi, mungkin?
  4. Lebih buruk lagi, bagaimana dengan orang yang berbeda yang menentukan nama tag secara berbeda - akan sulit untuk merasionalisasikannya.
  5. Bagaimana jika Anda ingin mengkueri data berdasarkan tag? Permintaan Anda menjadi jauh lebih kompleks daripada yang seharusnya.
  6. Presentasi:Klien harus mengurai tag untuk menggunakannya. Bagaimana dengan bidang pemisah? Ubah itu dan semua klien harus berubah.

Singkatnya, semua operasi ini menjadi lebih sulit dan lebih rumit. Normalisasi dirancang untuk mengatasi masalah tersebut. Mungkin satu-satunya alasan untuk melakukan apa yang Anda katakan, IMO, adalah bahwa Anda menangkap data sebagai satu kali dan itu hanya informasi - yaitu, masuk akal bagi pengguna tetapi tidak untuk sistem itu sendiri. Ini seperti mengatakan bahwa sebaiknya dihindari (sekali lagi, IMO).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array awal berfungsi untuk menggabungkan array multi-dimensi

  2. Penggabungan Koneksi PostgreSQL:Bagian 3 – Pgpool-II

  3. Mencari array jsonb di PostgreSQL

  4. Apakah mungkin untuk menyediakan parameter untuk nama tabel atau kolom di Pernyataan yang Disiapkan atau QueryRunner.update()?

  5. Masalah membangun klausa di mana untuk memasukkan nilai null/0