3

私は MySQL でツリー構造の構築に取り組んでおり、データを表現するさまざまな方法を試しています。しかし、いくらスライスしても欠点があります。

ネストされたセット モデルを使用すると、ツリーのブランチ全体を簡単に選択できます。これを行う必要があります。ただし、ノードの直接の子を選択するのはそれほど簡単ではありません。

隣接リスト モデルは直接の子を取得するのには適していますが、ツリーのブランチ全体を返すにはあまり適していません。

このようなツリー構造を構築することについて特に悪いことはありますか?

TABLE: Tree
    ID
    name
    lft
    rgt
    parentID

だから私が持っているのは、隣接リストモデルとネストされたセットモデルがすべて同じテーブルにあります。そうすれば、選択対象の状況に応じて、/ またはのいずれかを使用できます。

人々の考えは何ですか?これは許されますか?(ピーナッツバターとチョコレートがついに一緒に?) それともこれは悪いデザインと見なされますか?

前もって感謝します、

4

2 に答える 2

1

いいえ、決して悪いデザインではありません。少なくとも私の意見では。

ただし、実装するのは 1 つだけです。たとえば、新しい要素を追加して取得する主要な方法として隣接リスト モデルを使用しました.. (取得は非常に簡単なので、明らかに取得しています)。しかし、ネストされたセットのparentIdsも追加しました。

これの利点は、いつでも ALM を再構築でき、parentIds を保持していれば、物事をすばやく簡単に移動できることです。

ただし、コードで両方を使用することはありません。バックグラウンドで使用するだけです...

編集されたコメント

あなたは、直系の子供を選ぶのはそれほど簡単ではないと言いました。あなたは何か間違ったことをしているかもしれないと思います。隣接リストでも、直接の子を選択するのは非常に簡単です。

新しい質問を作成していただければ、その中でやり方をお答えします。

于 2010-02-23T14:14:56.033 に答える
1

私自身、強くお勧めします。これは CakePHP がツリー構造に使用するスタイルであり、ご指摘のとおり、非常に柔軟です。ツリーの整合性を確保するためにもう少し作業を行う必要がありますが、それだけの価値はあります。

于 2010-02-23T14:16:15.267 に答える