sql >> データベース >  >> RDS >> Mysql

SQLでの階層的タグ付け

    2つの列を使用して実装しました。タグ名を別の言語にローカライズする必要があるため、別のフィールド/テーブルに保持する必要があるため、ここでは少し簡略化します。

    • タグ
    • パス

    たとえば、次の行を見てください。

    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/
    

    など

    likeを使用する パスフィールドの演算子を使用すると、必要なすべてのタグ行を簡単に取得できます:

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

    階層内のノードを移動するときに、すべての子も変更する必要があるなど、実装の詳細がいくつかありますが、難しくはありません。

    また、パスの長さが十分に長いことを確認してください。私の場合、パスのタグ名ではなく、別のフィールドを使用して、パスが長くなりすぎないようにしました。



    1. World Backup Day:データベースをいつどのようにバックアップする必要がありますか?

    2. MySQLの列値の前に文字列を追加するにはどうすればよいですか?

    3. Androidを使用してsqliteで行数を取得するにはどうすればよいですか?

    4. UTC_TIMESTAMP()の例– MySQL