問題タブ [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.
php - 多階層の「ツリー」を作成するにはどうすればよいですか? (木と呼べるなら)
courses
私は言うとcertificates
とのリストを持っていますfun_days
。これらはすべて と呼ばれobjects
ます。すべてのオブジェクトには要件がありますobject_requirements
。要件は、それらの 1 つobjects
または複数のいずれかです。
としてobject
なし で任意を取ることができます。「誰もがそれらのオブジェクトを持つことを許可されています。」object_requirements
starting point
したがって、次のようになる可能性があります。
Introduction_course
出発点です(要件はありません)Introduction_certificate
をお持ちの方が取得できますIntroduction_course
(これcourse
はこれの要件ですcertificate
)Funday_swimming
をお持ちの方が取得できますIntroduction_certificate
(証明書は の要件ですfun_day
)。
このシステムの階層的またはある程度構造化されたフローを視覚的に表現する方法はありますか? この例はかなり単純ですが、「ツリー」内の任意の場所に複数の要件が存在する可能性があります。
これは私が要件を保存する方法です:
ああ、私はPHPとMySQLを使用しています。しかし、これらの視覚的表現を生成できるソフトウェアも大歓迎です!
.net - 階層データとBerkeleyDB
朗報です!バージョン4.8以降、BerkeleyDBにはc#インターフェイスがあります。BerkeleyDBは、SQL以外の性質があるため、私にとって非常に興味深いものです。誰かが多くのキーと値のペアを保存したい場合、それは優れたツールであることを私は知っています。そして、私は「アタッチ可能な」テーブルについて知っています。私が知らないのは、BerkeleyDBを使用して階層データを保存する方法です。一般的にこれに適していますか?
私がやりたいこと?dmoz.orgのデータを保存したい。これで、すべてのrdfsがMySQLデータベースにインポートされました。ただし、ストアドプロシージャやその他の複雑な機能は必要ありません。オンラインRSSリーダーのデータストアとしてBerkeleyDBを使用したいと思います。したがって、カテゴリツリーにはフィードがあります(私がdmozからインポートしたカテゴリを言ったように、たくさんのフィードとフィードがあります-数百万)。そして...私はフィードアイテムを忘れました。BerkleyDBでそれらも保存したい:-)。
すべての関係を手動で実装する必要があるようです、、、大丈夫です...しかし、私が尋ねる最も重要なことは速度です。BerkeleyDBを使用したソリューションは、MySQL(または一般的なRDBMS)をベースにしたソリューションよりも高速になりますか?
sql-server - TSQL CTE とソートのグラフ
次の構造とサンプル データのテーブルを使用します。
次のことを達成するために CTE クエリを作成することは可能でしょうか。
再帰ステートメントで行を返すのを止めるものを書くのに苦労しています。
何か案は?
編集
GetActivities('a') を明確にします。この関数は、'a' の 'Start' アクティビティを検出し、'a' の 'Transfer' アクティビティを検出します。その時点で、関数は「b」を使用して再帰し、その結果、サンプル データを使用して「c」を使用できます。クエリは、「Transfers」を介して「a」に関連するすべてのアクティビティを返す必要があります。このアクティビティのネストは、必要なだけ深くすることができ、不明です (つまり、union はありません)。私が抱えている問題は、'b' -> 'a' など、別の 'Transfer' バックダウンがあることです。これにより、再帰クエリでループがどのように作成されるかがわかります。
もう 1 つ明確にします。アクティビティ テーブル内の転送は、スタックとして動作します。テーブルにデータが入力される方法を次に示します (C# の場合)。
model-view-controller - 階層システムの MVC URL スキームの設計
MVC Web アプリケーションを使用してマルチ ユーザー ダンジョン システムを構築しているとします。プレイヤーが探索できるエリアを説明するために、システムには、部屋とドア (ドアが 2 つの部屋を接続する場所) で構成される多数のマップを含めることができます。システムのオーサリング部分について考えてみましょう。マップの作成は簡単です。次のような URL が必要です。
ルーティング スキームの使用: /Author/{controller}/{action}/{ID}
助けが必要なのはルームの URL です。新しいルームを作成するときは、作成対象のマップを知る必要があります。
次に、部屋の詳細を編集します。
このルーティング スキームは機能しますか? また、マップのすべてのルームを一覧表示するビューは、MapID が渡されたルーム コントローラーの「インデックス」アクションにする必要がありますか、それともマップ コントローラーの「ルーム」アクションにする必要がありますか?
ありがとう。
sql - 再帰的な自己結合を行う最も簡単な方法は?
SQL Server で再帰的な自己結合を行う最も簡単な方法は何ですか? 次のようなテーブルがあります。
そして、特定の人から始まる階層に関連するレコードのみを取得できるようにしたいと考えています。したがって、PersonID=1 で CJ の階層を要求すると、次のようになります。
EB の場合は次のようになります。
私はこれに少しこだわっていますが、結合の束に基づく固定深度の応答とは別に、これを行う方法を考えることができません。レベルが多くないので、これはたまたまですが、適切に行いたいと思います。
ありがとう!クリス。
select - Firefoxの階層ドロップダウンの非フレームワーク実装
<select><option/></select>
ブラウザ、できればFirefox内で使用するには、階層的なドロップダウンが必要です。jQueryのようなフレームワークは使いたくない。理由についての質問は控えてください。
mysql - カテゴリとそのサブカテゴリに属するすべての投稿をカウントする
私の問題について助けていただければ幸いです:
次のように(簡略化して)レイアウトされた2つのMySQLテーブル、カテゴリ、および投稿があります。
カテゴリ:
CATID - 名前 - 親 ID
投稿:
PID - 名前 - カテゴリ
私がやりたいのは、サブカテゴリの投稿を含め、各カテゴリの投稿の合計数を取得することです。
現在、次のようにして、各(トップレベル)カテゴリ(サブカテゴリではない)の投稿の総数を取得しています。
ここでも問題は、関連する各サブカテゴリの合計を含む各カテゴリの合計を取得するにはどうすればよいかということです。
既存のシステムを維持しているため、データベースをネストされたセット形式に再構築することはできません。
ご協力いただきありがとうございます!
sql - 大規模な階層データセットを分割するためのデータベース パターン
大量の階層データを分割するためのベスト プラクティス/パターン、または一般的なアドバイスはありますか?
たとえば、特定の国のすべての人々のデータベースと、誰が誰と一緒に仕事をしたかを追跡することを考えてみてください。「人」エンティティを分離して考えると、各人について多くのデータを保持する場合、人口を複数の水平パーティションに分割するのが自然なアプローチのようです。ただし、関係 (誰が誰と協力したか) はパーティションをまたがる可能性があります (またそうするでしょう)。これらの関係でのクラスタリング (つまり、相互パーティション参照を最小限に抑えるために、たとえば雇用主をパーティション キーとして使用する) は、データがますます相互リンクされるにつれて、時間の経過とともに実行できなくなります。このようなクラスタリングは、スケーラビリティを妨げる不均衡なパーティションにもなります。
私は今かなり立ち往生しているので、提供された助けがあれば非常に助かります。
ありがとう。
mysql - MySql データベース テーブルのツリー データ
階層ストレージに隣接リスト モデルを使用するテーブルがあります。したがって、この表で最も関連性の高い列は次のとおりです。
次に、挿入前にティガーを作成し、列Level
とにデータを入力しParentTrail
ました。auto_increment
最後の列には現在のアイテムの ID も含まれているため、挿入前のトリガーでは列を使用できないため、トリガーでトリックを使用する必要がありました。だから私はテーブルからその値を取得しinformation_schema.tables
ます。
アイテムがその親を変更したときにアイテムとその子孫を更新する更新トリガーを作成しようとするまで、すべて正常に機能します(ParentId
変更されました)。しかし、更新トリガー内でテーブルを更新できません。私ができることは、現在のレコードの値を変更することだけですが、他のレコードの値は変更できません。
階層データに別のテーブルを使用することもできますが、それは、これら 2 つのテーブルを結合するビュー (1:1 の関係) も作成する必要があることを意味し、これをできるだけ避けたいと考えています。
これらすべてを同じテーブルに配置して、これらのフィールド (Level
およびParetTrail
) がトリガーを使用して自動的に設定/更新されるようにする方法はありますか?
entity-framework - エンティティ コンテキスト (EF1) にエンティティ参照を設定するよう説得する
自己参照を持つエンティティがあります (エンティティ デザイナーによって生成されます):
テーブルからノードのサブツリー (直接の子だけでなくMyEntity
) を返し、オブジェクトのリストを返すストアド プロシージャを作成しました。ストアド プロシージャを使用して、任意の深いツリーの遅延読み込みを回避しています。このようにして、関連するサブツリー ノードを 1 回の呼び出しで DB から取得します。
大丈夫だ。しかし、 をチェックするnodes[0].Children
と、Count
0 に等しくなります。しかし、デバッグして をチェックするcontext.MyEntities.Results view
と、Children 列挙が入力されます。私の結果を確認すると、私のnode[0]
.
Parent
エンティティ コンテキストにインメモリ マジックを実行させ、プロパティとプロパティに正しい参照を配置するようにプログラムで強制するにはどうすればよいChildren
ですか?
更新 1
電話してみた
GetSubtree()
リレーションを適切に設定する私の呼び出しの後、 DBから同じノードを再度フェッチします。それはまだ単なる回避策です。しかし、 でセット全体を取得するよりはましcontext.MyEntities().ToList()
です。
更新 2
EF Extensions プロジェクトを使用して、これを確実に解決しました。以下の私の答えを確認してください。