タグ付けされた質問 「hierarchical-data」

7
リレーショナルデータベースに階層データを格納するためのオプションは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 10か月前に閉鎖。 良い概要 一般的に言って、あなたは速い読み込み時間(例えば、入れ子になったセット)または速い書き込み時間(隣接リスト)の間で決定を下しています。通常、ニーズに最も適合する以下のオプションの組み合わせになります。以下に、いくつかの詳細な資料を示します。 もう1つのネストされた間隔と隣接リストの比較:隣接リスト、マテリアライズドパス、ネストされたセット、ネストされた間隔の最も優れた比較。 階層データのモデル:トレードオフと使用例の適切な説明を含むスライド MySQLでの階層の表現:特にネストされたセットの概要 RDBMSの階層データ:私が見た中で最も包括的でよく整理されたリンクのセットですが、説明の仕方はあまりありません オプション 私が知っているものと一般的な機能: 隣接リスト: 列:ID、ParentID 実装が簡単です。 安価なノードが移動、挿入、削除されます。 レベル、祖先と子孫、パスを見つけるのに費用がかかる それらをサポートするデータベースの共通テーブル式によるN + 1を回避する ネストされたセット(別名Modified Preorder Tree Traversal) 列:左、右 安い祖先、子孫 O(n/2)揮発性エンコーディングのため、非常に高価な移動、挿入、削除 ブリッジテーブル(別名クロージャテーブル/ wトリガー) 先祖、子孫、深さ(オプション)で個別の結合テーブルを使用します 安い祖先と子孫 O(log n)挿入、更新、削除にかかるコスト(サブツリーのサイズ) 正規化されたエンコーディング:RDBMS統計と結合のクエリプランナーに適しています ノードごとに複数の行が必要 系統列(別名マテリアライズドパス、パス列挙) 列:系統(例:/ parent / child / grandchild / etc ...) 接頭辞クエリによる安い子孫(例LEFT(lineage, #) = '/enumerated/path') O(log n)挿入、更新、削除にかかるコスト(サブツリーのサイズ) …

14
フラットテーブルをツリーに解析する最も効率的でエレガントな方法は何ですか?
順序付けられたツリー階層を格納するフラットテーブルがあるとします。 Id Name ParentId Order 1 'Node 1' 0 10 2 'Node 1.1' 1 10 3 'Node 2' 0 20 4 'Node 1.1.1' 2 10 5 'Node 2.1' 3 10 6 'Node 1.2' 1 20 これが図[id] Nameです。ルートノード0は架空のものです。 [0]ルート / \ [1]ノード1 [3]ノード2 / \ \ [2]ノード1.1 [6]ノード1.2 [5]ノード2.1 / [4]ノード1.1.1 …

15
MySQL階層再帰クエリを作成する方法
次のようなMySQLテーブルがあります。 id | name | parent_id 19 | category1 | 0 20 | category2 | 19 21 | category3 | 20 22 | category4 | 21 ...... ここで、IDを指定するだけの単一のMySQLクエリを作成します(たとえば、 'id = 19'と言います)、そのすべての子IDを取得する必要があります(つまり、結果にはID '20、21,22 'が必要です)。 ...また、子の階層は不明である場合があります。 また、forループを使用した解決策はすでにあります...可能であれば、単一のMySQLクエリを使用して同じことを実現する方法を教えてください。

5
再帰的な自己結合を行う最も簡単な方法は?
SQL Serverで再帰的な自己結合を行う最も簡単な方法は何ですか?私はこのようなテーブルを持っています: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 5 YT NULL 6 IS 5 また、特定の人から始まる階層にのみ関連するレコードを取得できるようにしたいと考えています。したがって、PersonID = 1でCJの階層を要求した場合、次のようになります。 PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 そしてEBのために私は得るでしょう: PersonID | Initials | …

8
CSV列を階層関係に変換する方法はありますか?
分類レベルが列になっている700万の生物多様性レコードのcsvがあります。例えば: RecordID,kingdom,phylum,class,order,family,genus,species 1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens 2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis 3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana 4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris D3でビジュアライゼーションを作成したいのですが、データ形式はネットワークである必要があり、列の異なる値はそれぞれ、特定の値の前の列の子です。私はcsvからこのようなものに行く必要があります: { name: 'Animalia', children: [{ name: 'Chordata', children: [{ name: 'Mammalia', children: [{ name: 'Primates', children: 'Hominidae' }, { name: 'Carnivora', children: 'Canidae' }] }] }] } 1000のforループを使用せずにこれを行う方法については、思いつきませんでした。誰かがこのネットワークをpythonまたはjavascriptで作成する方法について提案がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.