2

さまざまなトピックの親子構造を持つ Web サイトを構築しています。(もう少し説明しすぎると、実際には 4 つのレベルがあるので :)parent < child < 2nd child < 3rd child現在、MySQL に各レベルのテーブルがあります。各子には、親の ID と主キーを参照する行があります。私が抱えている問題は、以下に示すようなサブトピックを表示するリストを作成する方法がないことです:

Food 
    Fruit  
        Red  
           Cherry  
        Yellow  
           Banana  
    Meat  
        Beef  
        Pork 

そのような単一の階層テーブルを使用することを考えました: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/そのようなリストを出力できることがわかっています。

ただし、その問題は、テーブルに何百万もの投稿が簡単に含まれる可能性があり (これがうまくいくと仮定すると)、ページが要求されるたびにそれを並べ替える再帰関数は、読み込みに時間がかかるように思われることです。

私はそれが優れた質問と回答のサイトではないことを認識しています. 誰でも情報を提供できるカテゴリ/サブカテゴリ データベースを持つサイトはありますか?

上記のようなリストが必要な場合は、単一の階層テーブル (隣接するリスト モデルまたは変更された事前注文ツリー構造のいずれか) を使用する必要がありますか、それとも php、sql、および javascript を使用して、現在のリストを作成することができますか?持ってる; それは子供のレベルごとにそれぞれ4つのテーブルですか?

4

1 に答える 1

0

各レベルにテーブルは必要ありません。「n」個のレベルを作成できる再帰的な関係ベースのテーブルが必要です。

これは単純な概念です。次のフィールドを持つテーブルを考えてみましょう:

id(primary key) - item_name - parent_id(foreign key {default=0})

ここで、parent_id は同じテーブル ID 列を参照します。

例:

id - name - parent_id
1 - ABC - 0
2 - XYZ - 0
3 - ABX - 1
4 - JKK - 1
5 - KHM - 3
6 - KHJ - 5

ここで、ABC はレベル 0 (つまり、親を持たない) ですが、ABX は KHM の親であり、ABC の子でもあります。

于 2012-10-19T13:04:16.183 に答える