複数のテーブルを結合する場合、データがフィルタリングされている場合でも、返されるデータが大量に重複する危険性があります。私たちは、description
とtype
列に重複を見ることができるhttp://sqlfiddle.com/#!17/eda08/3ジョインでの値重複の処理
:
は、ここで簡単な例です。
これはほんの一例であり、「あまりにも悪い」とは見えません。しかし、より多くのテーブルとより大きな1:Mテーブルでは、データ転送サイズが問題になる点まで、まで重複の量が気球になります。
これらの問題を解決するための一般的なアプローチは何ですか?集約の使用?別々のクエリ?
投票に投票しました:第二の考えでは、私は存在しない魔法の答えを探していると思います。リレーショナル・モデルはリレーショナル・モデルであり、結合は1:Nの関係を持つ重複値を生成します。
テーブルを結合すると、データを非正規化することができます。あなたの質問への答えは、あなたが望む正確な出力に依存します。 –
あなたの例では、各レコードは一意です(すべてのフィールドを考慮する場合)。 Tim Biegeleisen氏は、まず、必要なデータを正確に把握する必要があります。 Yousは重複を避けるために '選択的な区別'を行うことができます。関連する場合は –
はい、各行は一意です。しかし、それはデータが重複していないことを意味するものではありません。これからインボイスオブジェクトを生成するORMを考えてみましょう。 'Product'を持つ' LineItem'を作成し、 'Type'のリストを作成したいと思うかもしれません。しかし、「ProductA」は何度も返されますが、これは必須ではありません。 –