問題タブ [hierarchical-data]

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

apache-flex - HierarchicalData dataProviderが更新されたときにAdvancedDataGridが更新されないのはなぜですか?

HierarchicalData dataProviderを備えたAdvancedDataGrid(ADG)があります。

モデルにHierarchicalDataインスタンスを最初に設定すると、期待どおりに表示されます。

parentItemsは、ParentItemvalueObjectsのコレクションです。

ただし、子アイテムをある親から別の親に(ドラッグアンドドロップで)移動すると、次のコードを使用して更新が表示されません。

ただし、何らかの理由で、これは機能します。

ArrayCollectionのソースを更新する必要があるのはなぜですか?

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

apache-flex - AdvancedDataGrid の dataProvider から階層カーソルを作成するにはどうすればよいですか?

私が書いた以前のアプリケーションでは、拡張されたクラスAdvancedDataGrid(ADG) がありました。次のコードが含まれていました。

この実装では、関数setOpenNodes()は正常に機能しました。まさに私が意図したことを実行し、数値を渡し、dataProviderそのレベル以下のすべてのノードを開きました。

現在、新しい ADG クラスを作成しており、この機能を再現したいと考えています。

dataProvider親コンポーネントで設定されます。

reportData別のファイルに設定されています:

ただし、実行時エラーが発生します。

dataProviderとしてキャストしてみましたICollectionViewICollectionViewasをキャストしてみましたIHierarchicalCollectionView。あらゆる種類のキャストを試しましたが、何も機能していないようです。以前の実装のように、この新しい実装でこれが機能しないのはなぜですか? 私は何をする必要がありますか?

*** アップデート:

これをデバッグし始めました。dataProvider がいつ設定されているかを確認するために、ADG クラスにオーバーライド セッターを追加しました。

このセッターと setOpenNodes() 関数にブレークポイントを追加しました。案の定、dataProvider は setOpenNodes() が呼び出される前に設定されており、それは HierarchicalData です。ただし、setOpenNodes() を実行すると、デバッガーは dataProvider が null ArrayCollection であると通知します。これが根本的な問題のようです。

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

sql-server - SQL Server 2005: 階層データのサイクルの検出

ID、parentId 形式の階層データの典型的なテーブルがあります。

既存のデータで以下のようなサイクルを検出する必要があります。

Id は別のテーブルからのものであるため、ソリューションの一部として Id の順序付けを使用することはできません。約 1/2 百万行あります。データは、高さ 1 ~ 5 の多数の独立したツリーです。その意図は、データをクリーンアップしてサイクルを排除し、トリガーをテーブルに追加して将来のサイクルを防ぐことです。

サイクル検出 アルゴリズムを知っています。それは一般的な問題であるべきだと私には思えます。そこで、最小限のコードでこれを実現する便利な方法が SQL Server の「ボックス」にあるのではないかと考えていました。

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

mysql - MySQL データベースでリンクされたリストを取得しています

次の構造の MySQL データベース テーブルがあります。

リンクされたリストの順序でデータを取得する必要があります。たとえば、次のデータがあるとします。

id=1、2、4、3、9 の行をこの順序でフェッチする必要があります。データベースクエリでこれを行うにはどうすればよいですか? (私はクライアント側でそれを行うことができます。データベース側でこれを行うことができるかどうか興味があります。したがって、不可能だと言っても大丈夫です(十分な証拠があれば))。

終了ポイントもあると便利です (たとえば、10 回のフェッチの後、または行の条件が真になったときに停止します) が、これは必須ではありません (クライアント側で実行できます)。循環参照をチェックする必要がないことを願っています。

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

database - 複合パターン (階層データ) をデータベースに格納する

複合パターンをリレーショナル データベースに保存するための「ベスト プラクティス」とは何ですか?

Modified Preorder Tree Traversal を使用しています。これにより、ツリー全体を構築するのは非常に高速ですが、新しいノードを挿入または削除するには非常に時間がかかります (すべての左右の値を調整する必要があります)。また、ノードの子のクエリは簡単ではなく、非常に時間がかかります。

私たちが気付いたもう 1 つのことは、ツリーが乱雑にならないようにする必要があるということです。トランザクション ロックが必要です。そうしないと、左と右の値が破損する可能性があり、破損した左右のツリーを修正するのは簡単なことではありません。

ただし、Modified Preorder Tree Traversal は非常にうまく機能しますが、より良い代替手段があるかどうか疑問に思っていました。

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

database-design - データベースでユーザー定義の階層関係をモデル化する最良の方法は何ですか?

基本的に、ユーザーが階層モデルを定義できるようにしたいのですが、その場合、ユーザーが定義したモデル内にデータを保存できるようにする必要があります。これは理にかなっていますか?したがって、ユーザーは新しい「ユニット タイプ」を作成して階層的に編成し、これらのタイプのユニットをどのように編成できるかを決定できます。簡単な例: 私の架空のインターフェースでは、ユーザーはトランク、ブランチ、リーフの 3 つのユニット タイプを作成します。次に、ユーザーはそれらの間の関係を定義します。リーフは階層内の任意のポイントに存在でき、ブランチは親としてトランクを持つ必要があります。次に、ユーザーはこれらのユニット タイプのインスタンスを (ユニットとして) 作成し、モデルで定義されたルールに従ってそれらを編成できます...データベースでこれを行う良い方法はありますか?

0 投票する
9 に答える
26247 参照

c# - LINQ で再帰を表現する

LINQ プロバイダーを階層データ ソースに記述しています。API をどのように使用したいかを示す例を作成し、それらのユース ケースをサポートするようにコーディングすることで、API を設計するのが最も簡単だと思います。

私が問題を抱えていることの1つは、LINQステートメントで「深いクエリ」または再帰を表現する簡単/再利用可能/エレガントな方法です。言い換えれば、次のものを区別する最良の方法は何ですか。

対:

編集:上記の例のどちらも、必要なクエリの構造を必ずしも反映していないことに注意してください。再帰/深さを表現する良い方法に興味があります)

このようなプロバイダーを実装する方法や、再帰を可能にする方法で IQueryable または IEnumerable を記述する方法を尋ねているわけではないことに注意してください。LINQ クエリを作成し、プロバイダーを利用している人の立場から質問しています。再帰するかどうかを直感的に表現する方法は何ですか?

データ構造は一般的なファイル システムに似ています。フォルダーにはサブフォルダーのコレクションを含めることができ、フォルダーにはアイテムのコレクションを含めることもできます。したがって、myFolder.Folders は myFolder の直接の子であるすべてのフォルダーを表し、myFolder.Items には myFolder 内のすべてのアイテムが含まれます。以下は、フォルダーとページを含むファイルシステムによく似た、サイト階層の基本的な例です。

私が書く場合:

クエリがライト トラックの下にあるすべてのアイテムを取得する、またはすぐ近くのアイテムのみを取得するという意図を表現する最も直感的な方法は何ですか? 2 つの意図を区別するための、最も侵入的でなく、摩擦の少ない方法は?

私の一番の目標は、この LINQ プロバイダーを、LINQ を平均的に理解している他の開発者に引き渡し、再帰ラムダの作成に関するチュートリアルを提供することなく、再帰クエリとリスト クエリの両方を作成できるようにすることです。良さそうな使い方があれば、それに対してプロバイダーをコーディングできます。

追加の説明: (私はこれを伝えるのが本当に苦手です!) - この LINQ プロバイダーは外部システムに対するものであり、単にオブジェクト グラフをウォークするだけではありません。また、この特定のケースでは、再帰が実際にあらゆる種類の真の再帰アクティビティに変換されることもありません。フードの下。「深い」クエリと「浅い」クエリを区別する方法が必要なだけです。

では、どう表現するのがベストだと思いますか?それとも、私が見逃した標準的な表現方法はありますか?

0 投票する
4 に答える
3513 参照

sql - ネストされたセットのツリー構造を更新するにはどうすればよいですか?

Managing Hierarchical Data in MySQLを見てきましたが、実際にはネストされたセット モデルのノードの追加と削除のみを扱います。

子ノードの有無にかかわらずノードを移動できる必要があります。

どうすればいいですか?

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

oracle - Oracle の系図クエリ

Oracle データベースから動物の家系図を取得しようとしています。

ここにテーブルがあります:

動物を指定すると、次のようなものを使用して、そのすべての子孫 (男性側) を取得できます。

動物を指定すると、両方の親を取得してから、そのすべての子孫を取得するように、これを拡張する方法を見つけようとしています。

何かご意見は?(これは Oracle 9.2 です)