問題タブ [hierarchical-trees]

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 投票する
1 に答える
611 参照

php - Doctrine 1.2 NestedSet プロパティと先祖からの関係継承

複数のルートを持つ doctrine beahaviour NestedSet を使用してテーブルのツリー構造を作成するためにリファクタリングしている Doctrine 1.2 プロジェクトがあります。

私が必要としているのは、祖先から子孫への継承 (OO の常識ではありません) であり、子孫は、自身のプロパティが欠落している最も近い祖先からプロパティを継承します。関係でも同じことが起こります。

例を挙げて説明しましょう:

私が実行したいのは:

  • カテゴリがアクティブかどうかを取得します。つまり、すべての先祖がアクティブかどうかを確認します
  • 特定のカテゴリで another_property が欠落している場合は、存在する最も近い祖先から継承します
  • 特定のカテゴリのタグを取得します。タグが欠落している場合は、最も近い祖先から取得します

速度と柔軟性を最大化するための最善のアプローチとして何を提案しますか?

0 投票する
2 に答える
395 参照

sql - SQL または NoSQL データベース内の多数の小さなツリー構造

データベース内の多くの異なるツリーのノードに関する情報を保存したいと考えています。

まず、500 のツリー間で共有される 20000 を超えるノードがあり、各ノードには 5 つの数値属性があります。構築された各ノードは、直接のすべての子への参照を必要とし、他のノードは参照しません。

初期化時にメモリ内にすべてのツリーを構築し、プログラムがダウンタイムに入ったらノードを更新/追加する必要があります (おそらく 1 時間ごとに、より良いですが)。

各テーブルを構築するのに時間がかかりすぎるように思われるSQL隣接モデル(db呼び出しが多すぎる)、可能性はあるがツリーを展開するのがより複雑なネストされたセットモデルを見てきました。非常に基本的な構造とクエリ セットである可能性があるため、データベースの複雑さが増します。

私はMongoDbも調べましたが、それはJSONタイプのオブジェクトに向けられているようで、Javaを使用していて、殺し過ぎている可能性があります.これは将来の可能性であり、DBへの書き込み時間を増やすことができます。これも利点です)

これについてどうすればよいか、誰か提案はありますか?

NoSql dbs はやり過ぎですか? ツリー構造の保存がはるかに優れていますか? それらをSQLデータベースと一緒に使用するのは悪い習慣ですか?

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

mysql - 階層ツリー モデル

次の要件で最高のパフォーマンスを発揮する MySQL の階層ツリー モデルを探しています。

  • 複数のルート ノード (つまり、非常に多くのことを意味します)
  • 限られた深さ (最大 4 レベル)
  • 構造内でソートされた兄弟
  • すぐに使える (SELECT)
  • 管理が迅速である必要はない (CREATE、UPDATE、DELETE)
  • 管理および使用するための優れた PHP API がある

私は入れ子になったセットをよく使用しますが、この例では複数のルート ノードが心配です。一方、隣接リストは単純すぎるかもしれません。

Drupal がどのようにメニューを処理するか (パス モデル???) を見てきましたが、このアプローチの長所と短所に関する多くの情報を見つけることができませんでした。また、簡単にアクセスできる API 情報があるかどうかもわかりません。でも面白そうです。

他の提案/参考文献はありますか?

0 投票する
3 に答える
11385 参照

oracle - 子が検索文字列に一致するレコードの完全なツリーのみを返す Oracle 階層クエリが必要

以下は、検索文字列に一致するノードがないツリーの剪定を行わない、このクエリの完全なデータ セットの例です。

ユーザーが「foo」を検索した場合、次を返す必要があります。

実際のケースはもう少し複雑です (つまり、ツリー内の 3 つのレベルを返したい) が、これで問題を捉えることができます。英語では、テキスト列の一致するノードから始まる検索文字列に一致するノードの祖先ツリーを返し、すべての祖先を返します。

私はOracleを初めて使用し(少なくとも最近)、成功せずにCONNECT BY句に追加しようとしました-常に次を返します:

PS - これに関するオラクルのドキュメントと例は、 CONNECT_BY_ROOT が祖先をキャプチャすることを暗示していますが、トップレベル (ROOT) の値を返すだけのようです。

0 投票する
2 に答える
2436 参照

php - PostgreSQL 階層、カテゴリ ツリー

ENV : postgresql-8.4

カテゴリ ツリーを作成しようとしています。基本的に、次のような最終出力を期待しています:

例:

テーブル構造は

p>

これまでのところ、私はこれを持っていますが、機能していません。どんな助けでも大歓迎です:

データベースからのサンプル

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

php - 子IDから親ID(ルート親)を取得する方法

重複の可能性:
関数は 1 回しか返さないのはなぜですか?

私のデータベース構造は次のようになります

パラメータとして id の親 (つまり、親 = 0) を取得する関数が必要です。たとえば、.. get_parent(6)== 1 を返します

この MySQL テーブルの行の「親 ID」を再帰的に取得するにはどうすればよいですか?

この関数を作ってみました

で電話をかけます

しかし、私の方法は間違っています。どこで私は間違えましたか?

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

sql - 階層クエリ: 各ノードの直接の子の数を取得する

私は階層クエリを初めて使用し、それに関するほとんどの投稿を確認しました。

改善したい質問があります。

私のシナリオは次のようなものです:

表データは次のとおりです。

結果を次のようにしたい:

DIRECT_CHILDREN_COUNT を除くすべての列を提供する次のクエリを作成しました

ノードのすべての子 (直接の子だけでなく) の数を取得する方法に関する多くの投稿がありますが、それらは私には当てはまりません。

1.直接の子の数のみが必要です。2.可能であれば、 joins
を使用せずにこれを達成したいと考えています。

直接の子を各レコードの列値としてカウントする方法がわかりません。とにかく、階層クエリを使用して DIRECT_CHILDREN_COUNT を取得できますか?

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

algorithm - 階層グラフ内のノードのアルゴリズム最適配置

階層グラフを動的かつプログラム的に構築することを探しています。

このようなグラフ: (出典: graphviz.org )例

衝突を避けるためにノードを適切に配置する方法がわかりません。

私が使用できるアルゴリズムのアイデアはありますか?

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

php - MySQL - 階層的に連結されたタグを取得する

JOIN次の構造を持つ一時テーブルがあります (同じクエリで 2 回開くことができないため、これは重要です)。

いくつかのサンプルデータを使用:

必要なもの

value_idユーザーが必要とするすべてのカテゴリがレポートに含まれている場合にのみ、カテゴリに従って連結する必要があります。

したがって、この例で、ユーザーが「レポートをcategory_id1、2、3ごとに表示したい」と言った場合、次のように表示する必要があります。

ご覧のとおり、ID 1 のレポートにはカテゴリ 1 がないため、結果セットから非表示にする必要があります。また、ID 2 のレポートにはカテゴリ 2 の 2 つの値があるため、組み合わせのツリーごとに 1 つずつ、2 つの結果を表示する必要があります。 .

に 3 つの値がcategory_id = 3ある場合、ツリーの可能な組み合わせをすべて取得する必要があります。

私もPHPを使用しているので、データを解析して操作するソリューションも正しいものになる可能性があります。

GROUP_CONCAT()HAVING COUNT(category_id)およびを使用しようとしましたがORDER BY FIELD(category_id)、JOIN を使用できないため、考えられるすべての組み合わせの結果を表示することができませんでした。

ご協力いただき、ありがとうございました。