6

これはこの質問に関連しています。例えば、この本、と考えさせられた。[Agriculture]およびの両方の子である代わりに[Other]、ツリー[Books > Catalogs > Agriculture]および[Business & Industrial > Agriculture & Forestry > Other]でそれぞれ、それらのレベルをタグとして持つだけで独立できます。

eBay のような Web サイトでは、データが適切に正規化されている場合、タグ [Agriculture付きのすべてのレコードをリストするパフォーマンス コストと、カテゴリCatalog]内のすべてのレコードをリストするパフォーマンス コストを大幅に上回るでしょうか?[Books > Catalogs > Agriculture]

これはおそらくばかげた質問だと思います (いや、次の eBay をプログラミングしているとは思いません) が、この好奇心を振り払うことはできません。誘惑; _ だから、後でばかげたことや無意味なことをするよりも、今はばかげているように聞こえて、自分の誤解を十分に把握したいのです。

4

2 に答える 2

10

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

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

製品を構成する注文を持っている顧客について考えてみてください。階層。必然的に、顧客からの注文に見られる製品についても考えたいと思うでしょう。まったく別の階層。また、顧客からの注文を生成する地域の営業担当者。または注文を行う顧客がいます。

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

于 2009-04-08T22:28:15.533 に答える
2

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

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

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

于 2009-04-08T22:05:25.200 に答える