PHP(CodeIgniter)とMySQLを使用してウェブサイト用のMLMツリーを実装しています。私は、データベースにバイナリツリーの実装が必要です。以下のものが考慮されるべきである:各ノードに対してPHP + MySQLを使用したバイナリツリー
、左の部分木の子供たち/ノード数と子どもの数の最小値は、/右サブツリー内のノードがペアと呼ばれています。各ノードの1つのノードは1ポイントを取得します(ノードはユーザーを表します)。
新しいノードが作成されると、ノードのペアの多くが増分される可能性があります。したがって、ノードが作成されるたびに、すべてのノードのポイントを更新する必要があります(適用可能な場合は、1つずつ増やす必要があります)。
任意のノードが100ポイントを超えることはできません。
また、ツリーを構築(ウェブページで表示)する必要があります。表示されるのは4〜5レベルのみです。
データベースは、私は、MySQLでhieararchicalデータをimplemmentingための主に4モデル、PHP
- 隣接リスト
- パス列挙
- を発見した100000のノード
を持っている可能性があります入れ子セット
- クロージャテーブル
私は挿入オーバーヘッドを減らし、適用可能なすべてのノードのポイントを正常に更新するソリューションを探したいと思います。
私は隣接リストソリューションを試しました。
node (id, parentid, leftChildId,rightChildId,leftCount,rightCount)
userStat(id,sdate,pairs,mlmIncome)
一つのノードが挿入されるたびに、私は上向きに行くと子供をインクリメント保つには、.IF新しいペアが、私は、ストアドプロシージャでこれらをやっている ..私はまたことをインクリメントし、ポイントをインクリメント、その後行われるカウントします。
このソリューションをネストセットで選択したのは、各ノードが挿入されるたびに です。ネストされたセットで更新するノードの数は、常に隣接リストより多いためです。
木を構築する速度は挿入以上ですが、そしてネストされたセットは木を作る上でより良いです。
私は正しい方向にいますか?助けてください !
Thnx in Advance!このブログはmanaging hierarchy data
であなたを助けるかもしれない
を理解することはできませんが、完全に合理的な質問はそうです! +1 – dmp
thnx danp、解決策を教えてもらえますか? –
私はcodeigniterでClosure Table階層を実装していますが、このコードを見ると便利でしょうか? – dmp