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

MySQLオペレーティング階層データ

    私が使っているのはデザインが違うので、制限はありますが、耐えられればとてもシンプルで効率的です。

    鳥の分類ツリーの例を次に示します。階層はクラス/目/科/属/種です。種は最下位レベル、1行=1種です:

    CREATE TABLE `taxons` (
      `TaxonId` smallint(6) NOT NULL default '0',
      `ClassId` smallint(6) default NULL,
      `OrderId` smallint(6) default NULL,
      `FamilyId` smallint(6) default NULL,
      `GenusId` smallint(6) default NULL,
      `Name` varchar(150) NOT NULL default ''
    );
    

    およびデータの例:

    +---------+---------+---------+----------+---------+-------------------------------+
    | TaxonId | ClassId | OrderId | FamilyId | GenusId | Name                          |
    +---------+---------+---------+----------+---------+-------------------------------+
    |     254 |       0 |       0 |        0 |       0 | Aves                          |
    |     255 |     254 |       0 |        0 |       0 | Gaviiformes                   |
    |     256 |     254 |     255 |        0 |       0 | Gaviidae                      |
    |     257 |     254 |     255 |      256 |       0 | Gavia                         |
    |     258 |     254 |     255 |      256 |     257 | Gavia stellata                |
    |     259 |     254 |     255 |      256 |     257 | Gavia arctica                 |
    |     260 |     254 |     255 |      256 |     257 | Gavia immer                   |
    |     261 |     254 |     255 |      256 |     257 | Gavia adamsii                 |
    |     262 |     254 |       0 |        0 |       0 | Podicipediformes              |
    |     263 |     254 |     262 |        0 |       0 | Podicipedidae                 |
    |     264 |     254 |     262 |      263 |       0 | Tachybaptus                   |
    

    カテゴリがツリー内のレベルを変更しない限り、この方法で必要なすべての操作を非常に簡単に実行できるため、これはすばらしいことです。



    1. 自動インクリメントされた主キーを外部キーとしても使用するにはどうすればよいですか?

    2. タイムスタンプフィールドと日付フィールドを含むJPA選択クエリが結果の取得に失敗する

    3. MySQLクエリは、特定のタグの組み合わせに基づいて行をフェッチすると、不要な行を返します

    4. RAILS:すべての関連付けにnull以外の属性を持つすべてのオブジェクトをクエリする方法