Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Gắn thẻ phân cấp trong SQL

Tôi đã triển khai nó bằng cách sử dụng hai cột. Tôi đơn giản hóa nó ở đây một chút, vì tôi phải giữ tên thẻ trong một trường / bảng riêng biệt vì tôi phải bản địa hóa nó cho các ngôn ngữ khác nhau:

    thẻ
  • đường dẫn

Hãy xem các hàng này chẳng hạn:

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/

vv

Sử dụng like trên trường đường dẫn, bạn có thể dễ dàng nhận được tất cả các hàng thẻ cần thiết:

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

Có một số chi tiết triển khai như khi bạn di chuyển một nút trong hệ thống phân cấp, bạn cũng phải thay đổi tất cả các nút con, v.v., nhưng không khó.

Ngoài ra, hãy đảm bảo rằng độ dài của đường dẫn của bạn đủ dài - trong trường hợp của tôi, tôi không sử dụng tên thẻ cho đường dẫn mà sử dụng một trường khác để đảm bảo rằng tôi không nhận được đường dẫn quá dài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - Cách thoát / thoát khỏi thủ tục được lưu trữ

  2. Cơn ác mộng cơ sở dữ liệu kế thừa MySQL cuối cùng

  3. Mã hóa mật khẩu và tạo muối Crypt (), được thực thi tốt?

  4. Làm cách nào để tích hợp Apache Spark với MySQL để đọc các bảng cơ sở dữ liệu dưới dạng khung dữ liệu tia lửa?

  5. ColdFusion - Chèn các ký tự tiếng Ả Rập / tiếng Ba Tư vào mysql