問題タブ [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.
apache-flex - 階層データ構造の子フィールドから計算された親データ
flex 3では、階層的なデータ構造があります。その内容をツリーで表示したいのですが。私の問題は、データが子ノードから計算されたノードがあることです。子のデータが変更された場合に、それらの親ノードに自動的に変更を加えるように階層を構築するにはどうすればよいですか?例えば:
- すべてのノードには警告フラグがあります。子の警告フラグの一部がtrueに変更された場合、親の警告フラグは自動的にtrueに設定されて変更されます。
- ノード整数フィールドは子整数フィールドの合計であり、子のいずれかが変更された場合、親整数フィールドはその合計をすぐに「計算」します。
優れた構造変更が自動的に行われる簡単な解決策はありますか、それともいくつかのカスタム関数を作成する必要がありますか?
ありがとう!
google-app-engine - 階層データを Google App Engine Datastore に保存しますか?
Google App Engine データストアに階層データを保存して簡単にクエリを実行する方法を誰かが説明できますか?
c# - 複数のテーブルを持つデータセットをasp.netツリービューコントロールにバインドする方法は?
複数のデータ テーブルを含むデータセットをバインドし、それらの間に関係を持たせる必要があるツリー ビュー コントロールがあります。
どうすればそれができるか教えてもらえますか、私は多くの方法を試しましたが、どれも役に立たなかった...
ありがとう
sql - 「壊れた」階層データセットを視覚化するにはどうすればよいですか?
次のような構造のかなり大きなデータテーブルがあります。
等....
つまり、一意の ID、階層内のレベル (グレード)、上司 ID の記録、および上位の監督者の ID です。(2、3、4 などは、その特定のグレードのボスを指します)。
このシステムは厳密な階層構造に依存しています。あなたが私の上司 (/parent) である場合、あなたの上司は私の祖父母でなければなりません。
残念ながら、このルールはデータ モデル内では適用されず、データは最終的に、ルールを知らない、ましてやルールを守らない他のシステムから取得されます。だからあなたと私は同じ上司を共有するかもしれませんが、私たちの上司の上司は同じではありません.
ノート:
- データモデルを変更できません
- ソースでデータを修正できません。
そのため(当面は)データが整ったら修正する必要があります。2 週間に 1 回、誰かがモデルを壊すようなことをするので、解決するにはプロシージャを少し変更する必要があります。理想的ではありませんが、私は今後 6 か月間これに固執しています。
とにかく、特定のクエリを作成するのは簡単ですが、全体像を追跡するのは難しいと思います. この上にあるアプリケーションは問題なく動作しますが、システム内を移動すると非常に混乱します。だから私の質問は:
- この種の状況である種の「壊れたツリー」ダイアグラムを生成するためのツール (または手法) を推奨できる人はいますか?
物事を修正したり、統計分析を試みたりするものは望んでいませんが、少なくとも、一度にどれだけ壊れているかを視覚的に示すものは必要です。
注: 現時点では、これは SQL Server データベースにありますが、C#、Perl、または Python を利用するアイデアを受け入れています。
linq-to-sql - LinqtoSQLを使用した階層データバインディング
私は、LinqToSQLを使用したかなり単純なデータバインディングシナリオであると思うことを試みています。
FacultyMembersのテーブルがあり、そのスキーマは次のようになっています。
- FacultyMemberID-int PK
- 名前-nvarchar
- UniversityID-大学テーブルへのintFK
などなど。他にもさまざまな文字列プロパティがあります。
LTSDataClassesを生成します。LinqDataSourceとGridViewをページにドロップし、両方の更新と削除を有効にして、順調に進んでいます。コードはありません。文字列のプロパティを更新できます。UniversityIDのDropDownListを少し操作すると、その1対多の関係も更新できます。わーい。
ここで、多対多のマッピングテーブルを投入するとします。FacultyMembersをDivisionsにマップするDivisionMembershipsとしましょう。DivisionMembershipは、シンプルで明白なスキーマを使用します。
- FacultyMemberID-int PK、FKからFacultyMembersテーブル
- DivisionID-int PK、FKからDivisionsテーブル
ここで、GridViewの行をEditModeにすると、多対多の関係を更新する方法がわからないため、問題が発生します。私はいくつかの選択肢をいじくり回しました、そして今私はそこでListViewを動作させようとしています。私はこのようなことをしています:
などなど。上記のおしゃべりの一部は削除されていますが、ListViewはそのままではかなり冗長なので、ページをオーバーロードしたくありません。
ここで注意すべきこと:
- 大学の関連付けでは、新しいLinqDataSourceを使用して、UniversityIDが一致するアイテムをクエリし、新しいUniversityID(DDL値)をFacultyMemberにバインドしますが、DivisionMembershipsでは、プロパティに直接バインドします(ここで説明します) 。
- DataBinderを使用しています。私はDataBinderを使用していますが、UniversityIDのBind() 。DivisionMembershipsのEval() 。
DivisionMembershipsのBind()に切り替えると、EntitySetのNotSerializableExceptionが発生します。Eval()を使用する場合は、ListViewのOnDeleteメソッドとOnInsertメソッドを自分で作成する必要があり、FacultyMember行全体がEditModeを終了するまで、DivisionMembershipsを削除または挿入したくありません。更新のためにDivisionMembershipsをマークする別の方法がないため、おそらくDataContextを作成し、これをセッションに貼り付けます。
このシナリオは、箱から出してすぐに有効にするのは非常に簡単だと思いますが、私は迷っています。ここからどこへ行くべきかについて何かアドバイスはありますか?具体的には、Bind()と格闘して、EntitySetをシリアル化できるようにする必要がありますか、OnRowUpdatingイベントが発生するまで、セッションにDataContextを格納するための上記のややハックなコードを作成する必要がありますか、それとも完全に間違った方向に進んでいますか?
mysql - MySQL の階層データ
MySQL データベースで、ある種のツリーのようなものが発生しています。
カテゴリを持つデータベースがあり、各カテゴリにはサブキャットがあります。すべてのカテゴリを 1 つのテーブルにまとめているので、列は次のようになります。
データベース内の各アイテムは、次のいずれかのカテゴリに割り当てられます。
問題は、誰かがすべての TOY (親カテゴリ) を見たい場合、アイテム データベースから情報を取得する最良の方法は何かということです。私が方法を知っている唯一の方法は、次のようなことをすることです
しかし、Toys の下に 10 個のカテゴリがある場合、この結合とクエリを 10 回実行する必要があります。
これを処理するより良い方法はありますか?
mysql - ネストされたセット階層内の複数のテーブル
ツリー階層に配置したい、さまざまな MySQL テーブルに多数の個別のアイテムが格納されています。隣接リスト モデルを使用して、parent_id フィールドを各テーブルに追加し、外部キー関係を使用してテーブルをリンクできます。
ただし、ネストされたセット/変更されたプレオーダー ツリー トラバーサル モデルを使用したいと思います。データは、読み取りに大きく偏った環境で使用され、実行すると予想される種類のクエリでは、このアプローチが好まれます。
問題は、ネストされたセットに関するすべての情報が、単一のテーブルに格納された 1 つのタイプのアイテムしかないと仮定していることです。私が考えることができるこれを回避する方法は次のとおりです。
- テーブル/項目タイプごとに 1 つずつ、ツリーに複数の外部キー フィールドがあります。
- ツリー構造のアイテム テーブルの名前とアイテム ID を格納します。
どちらのアプローチも控えめに言っても洗練されていないので、これを行うためのより良い方法はありますか?
ms-access - クラスインスタンスの適切な使用
Access 2003 VBA を使用して、製造 BOM の再帰データを処理しています。メイン テーブルに静的スコープを持たせるクラス モジュールを作成しました。これにより、再帰が単純化されているように思えます。これにより、BOM をトラバースするときにレベルをカウントダウンしたりカウントアップしたりする必要がなくなります。同じレコードセットを重複して開いているわけではありません。代わりにたくさんフィルタリングしています。
これを開始した後、オブジェクト リレーション モデリングについて読み、レコードセットではなくレコードをインスタンス化することにしました。次に、そのレコードのフィールドをプロパティにすることができます。多くの作業と多くの勝利のスリルを味わった後、Access はテーブルベースであるため、このアプローチには利点がないことに気付きました。
私のクラスモジュールは以前と同じように役立ちます。私の質問は、以下の 2 つの代替バージョンについてです。最初のものは 2 つのインスタンス (親、子) を使用します。2 つ目は 1 つを使用し、それを再利用します。明らかに、最初のものは ORM の影響を受けています。
これらのいずれかを選択する理由はありますか? また、最後のイタリック体の行に注意してください。それが必要ない場合 (親に関するこれ以上の情報は必要ないため)、答えは変わりますか? 一般的に私の考えを手伝ってくれる人はいますか?
(私はレコードセットを閉じますが、クラス インスタンスは閉じないことに注意してください。私の理解では、VBA インスタンスはそれ自体を閉じており、それを許可することは受け入れられている慣行です。私は疑似コードを新しいレベルの疑似レベルに引き上げたようです...目標は明快さです。できます。)
sql - 階層SQLで重複/繰り返し行を見つける
階層テーブル内の重複/反復値を検出しようとしています。
次の (少し不自然な) 例を考えてみましょう。
戻り値...
私が実際に欲しいのは...
つまり、各行がサブクエリに存在する回数だけ返されるようにします (順序を無視します)。START WITH は IN 句を使用しているため、繰り返される値は抑制されています。これを実行できるように SQL を再編成することはできますか?
私の場合、サブ句は UNION ではなく、テーブルから複数の (重複する可能性がある) 値を返す可能性のある SELECT であることに注意してください。
PL/SQL で値を一時テーブルに書き込んでから GROUPing + COUNTing を実行することもできますが、可能であれば SQL でのみ行うことをお勧めします。
明確化が必要な場合はお知らせください。
ありがとう :-)
編集:
サブクエリから返される 0...N の値が存在する可能性があることに注意してください。