問題タブ [adjacency-list-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
1593 参照

sql - 階層内のノードを並べ替える SQL

隣接リスト モデル (以下を参照) を使用する「タスク リスト」データベースがあるので、各「タスク」は無制限のサブタスクを持つことができます。テーブルには「TaskOrder」列があるため、すべてがツリービューで正しい順序でレンダリングされます。

指定された親のすべての子ノードを選択し、兄弟が削除されたときに TaskOder 列を更新する SQL ステートメント (MS-SQL 2005) はありますか?

何か案は?ありがとう。

0 投票する
1 に答える
1789 参照

php - 2 つのテーブルを持つ隣接リスト モデル

したがって、私の問題は2つの質問に要約されると思います。

  1. パフォーマンスを考慮しながら隣接リスト モデル アプローチを使用してツリーが MySQL (2 つのテーブル間) に格納されている場合、PHP でトラバース可能なツリー構造を構築するにはどうすればよいですか?

  2. トラバーサル コードを複製したり、if/else ステートメントや switch ステートメントでロジックを散らかしたりせずに、必要な形式でツリーを表示するための保守可能なアプローチは何ですか?

詳細は以下のとおりです。

Zend フレームワークを使用しています。

問診票を扱っています。これは、質問と質問グループの 2 つの別個のテーブル間の MySQL データベースに保存されます。各テーブルは、適切な Zend_Db_Table_* クラスを拡張します。階層は、隣接リスト モデル アプローチを使用して表されます。

私が直面している問題は、ツリー構造を RDBMS に詰め込んでいるという事実が原因である可能性が高いことを認識しているため、代替手段を受け入れています。ただし、アンケートの回答者とその回答も保存しているため、別のアプローチでそれをサポートする必要があります。

アンケートは、さまざまな HTML 形式で表示する必要があります。

  1. 回答を入力するためのフォームとして (Zend_Form を使用)
  2. 質問別またはグループ別の回答を表示するためのリンクとして、質問 (およびいくつかのグループ) を含む順序付けられた (ネストされた) リストとして。
  3. 各質問に回答が追加された順序付きリスト (ネストされた) として。

質問はリーフ ノードであり、question_groups には他の question_group や質問を含めることができます。組み合わせると、処理および表示する行が 100 行を少し超えます。

現在、再帰を使用してすべての処理を行い、question_group の子 (2 つのテーブル間で UNION を実行するクエリ: QuestionGroup::getChildren($id)) を取得するビュー ヘルパーがあります。さらに、質問の回答とともにアンケートを表示する場合、各質問に対する回答者とその回答を取得するために、追加の 2 つのクエリが必要です。

ページの読み込み時間はそれほど長くはありませんが、このアプローチは間違っているように感じます. ほとんどすべてのノードに対して再帰と複数のデータベース クエリを実行しても、内部が非常に暖かくぼんやりしているとは感じません。

UNION から返された完全なツリー配列に対して再帰のない方法と再帰的な方法を試し、トラバースして表示する階層配列を構築しました。ただし、グループと質問が別々のテーブルに格納されているため、ノード ID が重複しているため、これはうまくいかないようです。多分私はそこに何かが欠けている...

現在、上記の形式でツリーを表示するロジックは非常に混乱しています。トラバーサル ロジックをいたるところに複製することは避けたいと思います。ただし、いたるところにある条件は、保守が最も容易なコードを生成するものでもありません。私はビジター、デコレータ、およびいくつかの PHP SPL イテレータについて読みましたが、Zend_Db_Table、Zend_Db_Table_Rowset、および Zend_Db_Table_Row を拡張するクラスとすべてがどのように連携するかについては、まだよくわかりません。特に、データベースから階層を構築するという以前の問題を解決していないためです。新しい表示形式を追加する (または既存のものを変更する) のは、いくらか簡単にできるとよいでしょう。

0 投票する
1 に答える
407 参照

php - 列 PHP MySQL (Modified Preorder Tree Trasversal) にデータを表示する際の支援

こんにちは、以下のコードで複数列の表示を取得しようとしています (そう呼び出すことができる場合)。結果は次のとおりです代替テキスト 。これらの葉が壊れている理由を誰かが理解できますか?または、どちらが優れているか教えてください: サブカテゴリにリンクされたカテゴリ テーブル、または隣接モデル リスト。

連載版リンクテキスト

0 投票する
1 に答える
696 参照

php - 隣接リスト モデル + Web サイト ナビゲーション

隣接リスト モデルを使用して、Web サイト内のサブ カテゴリを検索しています。すべてのカテゴリとサブカテゴリを見つけるために PHP コードを使用していますが、それを使用してナビゲーション システムを作成する方法がわかりません。非常に基本的なサイトの仕組みは次のとおりです。

URL 文字列 メイン カテゴリがあり、その後にレベルが続きます

index.php?category=カテゴリ名&level1=サブカテゴリ&level2=別のサブカテゴリ&level3=コンテンツ項目

後で、SEO に適したリンクを作成します。

サブカテゴリのない URL レベル 1 がコンテンツ アイテムである場合

www.website.com/category/content-item/

レベル 1、2、3 などがサブ カテゴリであり、最終レベルがコンテンツ アイテムであるサブ カテゴリを含む URL

www.website.com/category/sub-category/sub-category-2/content-item/

カテゴリとサブカテゴリを見つけるために使用しているコードは次のとおりです。現在、すべてのカテゴリとサブカテゴリのリストと、各子供のレベルの番号を出力するだけです。これが役立つかどうかはわかりませんが、リストを作成するだけです。

0 投票する
1 に答える
158 参照

database-design - ネストされたセットの構築

私が取り組んでいるプロジェクトについて支援が必要です。すべての入力が特定の順序で行われないと仮定して、入れ子集合モデルで左右を計算するにはどうすればよいですか。

4つのフォームが配布され、各フォームには4人が参加し、各4人にはさらに4人が参加します。ネットワークは7世代までダウンワードに成長します。任意のレベルでノードを選択することにした場合、ダウンライナーとアップライナーを見つけるにはどうすればよいですか?

説明:

などなど。第7世代では、停止が発生します。その間、各ノードは系統のダウンワードを開始します。

0 投票する
0 に答える
436 参照

mysql - ファイル権限のネストされたセットまたは隣接リスト モデル (MySQL)

質問:

すべてのユーザー ファイル/フォルダーのアクセス許可を MySQL データベースに格納する場合、どのような設計を使用する必要がありますか?

詳細:

入れ子になったセットに必要な挿入時間が長すぎるのか、隣接リストが階層データでアクセスに時間がかかりすぎるのかを判断するのに苦労しています。ファイル/フォルダーの数が増えると、ネストされたセットに非常に長い時間がかかると確信しています。たとえば、ノード (行) を挿入するには、通過したノードの後に​​すべてのノードを更新する必要があります。パス (つまり、、、) で文字列のトークン化を/home/user/pictures --> /使用/home/home/user、それをクエリで使用して、可変長の隣接リスト モデルに相当するものを使用することは可能ですか? 3 番目のオプションはparent_folders、まったく同じ機能を実行するが、より多くの時間ではなくより多くのスペースを使用するテーブルを持つことです。

filesおよびfoldersテーブルの最小限の説明を次に示します。

ファイル:

フォルダ:

上記の 2 つのテーブルを次に示します。変更され、潜在的なparent_foldersテーブルがあります。

ファイル:

フォルダ:

親フォルダー:

0 投票する
0 に答える
249 参照

php - 隣接モデルを使用するように Jstree を適応させる方法は?

Jstree はネストされたセットのアプローチを使用し、静的コンテンツではこれが機能しましたが、テーブルを再利用して各ユーザーがテーブルを操作できるようにすることについて、Ivan Bozhanov と要件について話し合ったところ、代わりに Adjacency モデルを使用する必要があると提案されました。

このライブラリは最後の手段だったので、PHPClasses で見つけました。jstree.com/demo のドキュメントにはあまり記載されていませんが、jstree で使用する場合に必要な手順は何でしょうか。効果的に?

http://www.phpclasses.org/package/6135-PHP-Create-and-manipulate-adjacency-lists-in-MySQL.html

あなたが提供できるガイダンスを事前にありがとう!JP-

0 投票する
1 に答える
510 参照

php - 隣接リストの子をアルファベット順に並べ替える

id/parent_id で並べ替えられた隣接リストがある場合、親のすべての子を 3 番目のテキスト フィールド (「名前」など) でアルファベット順に並べ替える簡単な方法はありますか?

http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/で提供されている情報を使用して、MySQL に並べ替えられた隣接リストを返させました。理想的には、これにより 3 番目の列で子を並べ替えることができますが、その例ではテスト データ セットに余分な列はまったく含まれていません。

クエリを実行すると、データは次のようになりますが、子孫でアルファベット順に並べ替える必要があります。

または:

これを次のようにソートする必要があります。

ありがとう!

0 投票する
1 に答える
623 参照

mysql - 隣接リスト モデルのカテゴリと親の階層関係にあるテーブルに製品を挿入する

私は隣接リストモデルで構成されたテーブルカテゴリを持っています:

および product_category テーブル:

製品テーブルがあります:

親IDへのリンクがあり、順番にカテゴリへのリンクがあるテーブルに製品を挿入するにはどうすればよいですか。parent_id とカテゴリから製品を取得できるようにします。そして、parent_idを主キーとして定義する必要があります..助けていただければ幸いです..事前に感謝します..

0 投票する
1 に答える
961 参照

asp.net - 隣接リストモデルを使用したオンラインシステムのデータベース設計

asp.net c#とmysqlを使用してオンラインショッピングアプリケーションを作成しようとしています。2つのレベルのサブカテゴリを持つ多くのカテゴリがあり、一部のカテゴリには次のようなサブカテゴリがありません。

*私の最初の質問は-*隣接リストモデルについて学び始め、隣接リストモデルで1つのルートノードのみが使用されている例を見たので、隣接リストモデルを使用してカテゴリごとに個別のテーブルを作成する必要があります。
*私の2番目の質問は-*隣接リストモデルに複数のルートノードを追加でき、追加の製品を追加して、親を使用して特定のカテゴリにトラバースできるかどうかです。ありがとう..感謝します..