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

Apakah desain yang buruk untuk menggunakan array dalam database?

Jawaban singkat untuk judul :Tidak

Jawaban yang sedikit lebih panjang :

Anda harus belajar menggunakan array bila perlu. Array bukanlah desain yang buruk, mereka sama atomnya dengan bidang yang bervariasi karakter (array of character, bukan?) Dan mereka ada untuk membuat hidup kita lebih mudah dan database kita lebih cepat dan lebih ringan. Ada masalah mempertimbangkan portabilitas (kebanyakan sistem database tidak mendukung array, atau melakukannya dengan cara yang berbeda dari Postgres)

Contoh:

Anda memiliki blog dengan postingan dan tag, dan setiap postingan mungkin memiliki 0 tag atau lebih. Hal pertama yang terlintas dalam pikiran adalah membuat tabel yang berbeda dengan dua kolom postid dan tagid dan tetapkan tag di tabel itu.

Jika kita perlu menelusuri postingan dengan tagid, maka tabel tambahan diperlukan (dengan indeks yang sesuai tentunya).

Tetapi jika kita hanya ingin informasi tag ditampilkan sebagai info tambahan posting, maka kita dapat dengan mudah menambahkan kolom array integer di tabel posting dan mengekstrak informasi dari sana. Ini masih dapat dilakukan dengan tabel tambahan, tetapi menggunakan array mengurangi ukuran database (tidak diperlukan tabel tambahan atau baris tambahan) dan menyederhanakan kueri dengan membiarkan kita menjalankan kueri pilihan dengan menggabungkan satu tabel lebih sedikit dan tampaknya lebih mudah dipahami oleh mata manusia (bagian terakhir ada di mata yang melihatnya, tapi saya pikir saya berbicara untuk mayoritas di sini). Jika tag kita telah dimuat sebelumnya, maka tidak perlu satu pun bergabung.

Contohnya mungkin buruk, tetapi itu yang pertama kali terlintas dalam pikiran.

Kesimpulan :

Array tidak diperlukan. Mereka bisa berbahaya jika Anda salah menggunakannya. Anda dapat hidup tanpanya dan memiliki database yang hebat, cepat, dan dioptimalkan. Ketika Anda mempertimbangkan portabilitas (misalnya menulis ulang sistem Anda untuk bekerja dengan database lain), maka Anda tidak boleh menggunakan array.

Jika Anda yakin akan tetap menggunakan Postgres, maka Anda dapat dengan aman menggunakan array yang menurut Anda sesuai. Mereka ada karena suatu alasan dan bukan desain yang buruk atau tidak sesuai. Ketika Anda menggunakannya di tempat yang tepat, mereka dapat membantu sedikit dengan kesederhanaan struktur database dan kode Anda, serta pengoptimalan ruang dan kecepatan. Itu saja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada sesuatu seperti fungsi Zip() di PostgreSQL yang menggabungkan dua array?

  2. PostgreSQL:bagaimana cara mengonversi dari zaman Unix hingga saat ini?

  3. Memulai Dengan Postgres 13 di Ubuntu 20.04

  4. Bandingkan varchar dengan char

  5. Optimalkan kueri GROUP BY untuk mengambil baris terbaru per pengguna