階層データと階層データの長所と短所は何ですか?パフォーマンス (および分類) における関連データは?

StackOverflow https://stackoverflow.com/questions/731983

質問

これに関連するのは、 この質問. 。たとえば、次のように考えました。 この本. 。両方の子供である代わりに [Agriculture] そして [Other], 、木々の中で [Books > Catalogs > Agriculture] そして [Business & Industrial > Agriculture & Forestry > Other], 、それぞれ、代わりにこれらのレベルをタグとして持つだけで自立することもできます。

eBay のような Web サイトで、すべてのレコードを タグ [Agriculture そして Catalog] すべてのレコードをリストすることよりもはるかに重要です。 [Books > Catalogs > Agriculture] カテゴリー, データが適切に正規化されていれば?

おそらくこれが愚かな質問であることはわかっていますが (いや、私は次の eBay をプログラムしているとは思っていません)、でもこの好奇心を払拭することはできません。の 誘惑;だから、後で愚かなことや無意味なことをするよりも、今は愚かなことを言って、自分の誤解をよく理解したいと思います。

役に立ちましたか?

解決

リレーショナル モデルが初めて登場したとき、支配的なデータベース パラダイムは階層型でした。そして (今もそうなのですが) 階層型の方が効率的です。本質的に、部分的に事前結合されたクエリから始めることができるからです。

ただし、1 つの静的な階層構造に基づいているだけです。データのビューを別のルート ディメンションから取得するように変更したい場合、大きな困難が生じます。(リレーショナル データベースが実際に使用できるほど効率的であるかどうかは、激しく議論された問題でした。ムーアの法則を熱心に適用することですぐに解決します。)

製品を構成する注文を受けた顧客について考えてみましょう。階層。必然的に、顧客からの注文に含まれる製品についても考えることができるようになります。まったく別の階層。そして、顧客からの注文を生み出す地域の営業担当者。または注文を行う顧客がいます。

リレーショナル データベースを使用すると、ほぼ同等の効率で階層を自由に再構築できます。他のデータベース形式でのみ得られる利点は、複数の直交階層を埋め込むというコストを伴います。この場合、データの変更、追加、削除にかかるコストは天文学的なものになります。

他のヒント

リレーショナル モデルの主な目的は、重複を防ぐことです。階層データは手動で取得するのが簡単ですが、重複の問題が発生します。

時期尚早な最適化を行うのではなく、データに最も適合するモデルを使用してください。

私はリレーショナル データからプレゼンテーション用の階層ツリーを構築する傾向があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top