![見出し画像](https://assets.st-note.com/production/uploads/images/97207714/rectangle_large_type_2_7ed5fad36f92f127de2330acfd705635.png?width=1200)
Tableau のリレーションシップ機能 その9 ~ 参照整合って何?① ~
リレーションシップにあるもう一つのパフォーマンスオプション「参照整合」。これは何だろう? 言葉からして難しい。 イメージが沸かない。英語で言うと、"Referential Integrity" integrity には完全性といった意味もあるので、データが完全に揃ってる状態か否か?、みたいなほうが解りやすいかもしれません。
このオプションの選択肢は、「一部のレコードが一致」(some records match) と「すべてのレコードが一致」(all records match) の二つ。これのよってどんな違いが出てくるのか? 今回も、結果と SQL から確認してみたいと思います。
確認にあたり、二つのケースを見ていく必要があります。「参照整合」は、リレーションに使われているキーをワークシート上で使っている場合と、使ってない場合で挙動が異なります。先ず、リレーションに使われているキーを使用していない場合を見ていきましょう。
今回も、シンプルな TRAN_01.CSV と CST_01.CSV を CST_CD でリレーションして確認します。
![](https://assets.st-note.com/img/1675466607978-oxUkKkO3uf.png?width=1200)
カーディナリティ は 多対多で、
① 一部のレコードが一致 対 一部のレコードが一致
② 一部のレコードが一致 対 すべてのレコードが一致
③ すべてのレコードが一致 対 一部のレコードが一致
④ すべてのレコードが一致 対 すべてのレコードが一致
の4つのパターンを見てみましょう。
① 一部のレコードが一致 対 一部のレコードが一致
![](https://assets.st-note.com/img/1675467959577-AEQB2ddVjH.jpg)
その3でも説明していますが、完全外部結合の状態になります。
(その3はこちら)
② 一部のレコードが一致 対 すべてのレコードが一致
![](https://assets.st-note.com/img/1675468800335-o5XzJO2d9Z.jpg)
TRAN_01 の全ての T_ORD_CD が全て表示され、これに合致する C_CST_NAME が表示されます。左結合の状態です。
③ すべてのレコードが一致 対 一部のレコードが一致
![](https://assets.st-note.com/img/1675469102897-830rpmdVXR.jpg)
CST_01 の全ての C_CST_NAME が表示され、これに合致する T_ORD_CD が表示されます。右結合の状態です。
④ すべてのレコードが一致 対 すべてのレコードが一致
![](https://assets.st-note.com/img/1675469387797-oiZb1oKZJj.jpg)
両方のテーブルに共通する CST_CD だけが表示されました。内部結合の状態です。
どちらの集計値を使うかによって、結合の方法が変わることは、その2、その3 で説明しましたが、両方のテーブルの集計を行っていても、内部結合、左結合、右結合、完全外部結合を使い分けた時はあると思います。そのような場合は、参照整合を定義することによって、結合の方法を変えること出来るようです。
すべてのレコードが一致 というのは、日本語的には、関係先と「一致するものだけ」にする、と解釈したほうが解り易いかも知れません。一部のレコードが一致 は、関係先と「一致しないものも含める」でしょうか。
なお、今回は、カーディナリティを 多対多 で検証しましたが、カーディナリティを 1対多(多対1)、1対1に変えても同じ結果が得られました。
では、それぞれどんな SQL が書かれているのか? それは次回見ていきましょう。