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

Model Daftar Kedekatan vs Model Kumpulan Bersarang untuk data hierarki MySQL?

Model Kumpulan Bersarang saat ini tidak umum digunakan dalam database, karena lebih kompleks daripada Model Daftar Adiacency, mengingat fakta bahwa memerlukan pengelolaan dua "pointer" bukan satu. Sebenarnya, Model Kumpulan Bersarang telah diperkenalkan di database ketika itu kompleks atau tidak mungkin untuk melakukan kueri rekursif yang melintasi hierarki.

Sejak 1999, SQL standar menyertakan apa yang disebut Ekspresi Tabel Umum Rekursif, atau CTE Rekursif, yang membuat lebih sederhana (dan terstandarisasi!) untuk membuat kueri yang melintasi jalur rekursif dalam hierarki dengan apa saja jumlah level.

Semua sistem DBMS utama sekarang telah menyertakan fitur ini, dengan pengecualian khusus:MySQL. Tetapi di MySQL Anda dapat mengatasi masalah ini dengan menggunakan prosedur tersimpan. Lihat, misalnya, postingan ini di StackOverflow , atau postingan ini di dba.stackexchange .

Jadi, secara ringkas, ini adalah saran saya:

  1. Jika Anda masih dapat memutuskan DBMS mana yang akan digunakan, pertimbangkan beberapa alternatif:misalnya, jika Anda ingin tetap menggunakan database open source, gunakan PostgreSQL , gunakan Model Daftar Adiacency, dan gunakan CTE Rekursif untuk kueri Anda.
  2. Jika Anda tidak dapat mengubah DBMS, Anda tetap harus menggunakan Model Daftar Adiacency, dan menggunakan prosedur tersimpan seperti yang dikutip dalam referensi.

PERBARUI

Situasi ini berubah dengan MySQL 8, yang saat ini dalam pengembangan dan yang akan mengintegrasikan CTE Rekursif , sehingga dari versi tersebut Model Daftar Adiacency akan lebih mudah digunakan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sistem Login/Registrasi dengan php dan mysql

  2. Bagaimana cara mengambil cadangan database MySQL menggunakan MySQL Workbench?

  3. Cadangkan tabel dengan kolom GEOMETRI menggunakan mysqldump?

  4. Menyimpan informasi kartu kredit di database MySQL?

  5. Permintaan MYSQL untuk mencari melalui SEMUA bidang?