2017-11-07 6 views
0

複数のテーブルを結合する場合、データがフィルタリングされている場合でも、返されるデータが大量に重複する危険性があります。私たちは、descriptiontype列に重複を見ることができるhttp://sqlfiddle.com/#!17/eda08/3ジョインでの値重複の処理

は、ここで簡単な例です。

これはほんの一例であり、「あまりにも悪い」とは見えません。しかし、より多くのテーブルとより大きな1:Mテーブルでは、データ転送サイズが問題になる点まで、まで重複の量が気球になります

これらの問題を解決するための一般的なアプローチは何ですか?集約の使用?別々のクエリ?

投票に投票しました:第二の考えでは、私は存在しない魔法の答えを探していると思います。リレーショナル・モデルはリレーショナル・モデルであり、結合は1:Nの関係を持つ重複値を生成します。

+0

テーブルを結合すると、データを非正規化することができます。あなたの質問への答えは、あなたが望む正確な出力に依存します。 –

+0

あなたの例では、各レコードは一意です(すべてのフィールドを考慮する場合)。 Tim Biegeleisen氏は、まず、必要なデータを正確に把握する必要があります。 Yousは重複を避けるために '選択的な区別'を行うことができます。関連する場合は –

+0

はい、各行は一意です。しかし、それはデータが重複していないことを意味するものではありません。これからインボイスオブジェクトを生成するORMを考えてみましょう。 'Product'を持つ' LineItem'を作成し、 'Type'のリストを作成したいと思うかもしれません。しかし、「ProductA」は何度も返されますが、これは必須ではありません。 –

答えて

0

質問はかなり広範囲ですが、レコードのようにフラットなデータ構造をエクスポートする必要はありません。

あなたは確かに、そのようなあなたはSQLで直接それをしなければならない場合、私は知りませんが、あなたはJavaやC#のエンティティから始めることができるならば、それは一枚のあるべき JSONまたは XML

などのフォーマットにそれらをシリアル化する必要がある

ケーキ。

+0

私は存在しない魔法の答えを探していると思う。質問は純粋にSQLの使用に関するものです。 –

+0

@DanGravellはい、確かに。データを別々にエクスポートして(テーブルで正規化しておく)、データをこれらの形式にエクスポートするストアドプロシージャを作成しようとするかもしれませんが、それが価値があるとは思いません。 –

関連する問題