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

Penandaan hierarkis dalam SQL

Saya menerapkannya menggunakan dua kolom. Saya menyederhanakannya di sini sedikit, karena saya harus menyimpan nama tag di bidang/tabel terpisah karena saya harus melokalkannya untuk bahasa yang berbeda:

  • tag
  • jalan

Lihat baris ini misalnya:

tag            path
---            ----
database       database/
mysql          database/mysql/
mysql4         database/mysql/mysql4/
mysql4-1       database/mysql/mysql4-1/
oracle         database/oracle/
sqlserver      database/sqlserver/
sqlserver2005  database/sqlserver/sqlserver2005/
sqlserver2005  database/sqlserver/sqlserver2008/

dll.

Menggunakan like operator di bidang jalur Anda dapat dengan mudah mendapatkan semua baris tag yang diperlukan:

SELECT * FROM tags WHERE path LIKE 'database/%'

Ada beberapa detail implementasi seperti ketika Anda memindahkan sebuah node dalam hierarki, Anda juga harus mengubah semua turunan, dll., tetapi itu tidak sulit.

Pastikan juga panjang jalur Anda cukup panjang - dalam kasus saya, saya tidak menggunakan nama tag untuk jalur tersebut, tetapi bidang lain untuk memastikan bahwa saya tidak mendapatkan jalur yang terlalu panjang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengabaikan stopword teks lengkap mysql dalam kueri

  2. mysql — Bagaimana menangani pencarian kueri dengan karakter khusus /(garis miring ke depan) dan \(garis miring terbalik)

  3. Grup MySQL Berdasarkan dan Pesan Berdasarkan

  4. Bagaimana saya bisa mencari di dalam tabel nilai yang dipisahkan koma?

  5. Kapan menggunakan SQL_NO_CACHE