プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド
12c (12.2.1.1.0)
E77227-02
目次へ移動
目次

前
前へ
次
次へ

論理結合の定義

論理表間の関係は、論理結合によって表されます。

論理結合は、物理的な結合ではなく概念上の結合です。つまり、特定のキーまたは列を結合しません。1つの論理結合が可能な多くの物理結合に対応する場合があります。

論理結合の重要なプロパティの1つがカーディナリティです。カーディナリティは、ある表内の行が結合先の表の行とどのように関連するかを表します。1対多のカーディナリティは、最初の論理ディメンション表の各行に対応する行が、2つ目の論理表には0個、1個または多数あることを意味します。管理ツールでは、ある表が、その他の論理表に対応しているすべての論理結合において多の側である場合、その表は論理ファクト表と見なされます。

Oracle BIサーバーで必要なメタデータによってビジネス・モデルに対する論理リクエストが物理データ・ソースに対するSQL問合せに変換されるように、論理表結合を指定する必要があります。論理結合情報によって、Oracle BIサーバーに、論理表間の多対1関係の情報が提供されます。この論理結合情報は、Oracle BIサーバーで基礎となるデータベースに対する問合せが生成されるときに使用されます。

次の両方が当てはまる場合、ビジネス・モデルとマッピング・レイヤーで論理結合を作成する必要はありません。

ただし、多くの場合、ビジネス・モデルとマッピング・レイヤーでいくつかの論理結合を作成する必要があると思われます。これは、非常に単純なモデルの場合を除いて、すべての物理表を同時にドラッグ・アンド・ドロップすることはまれなためです。

結合マネージャまたはビジネス・モデル図を使用して、論理結合を作成できます。物理レイヤーで複合結合を作成する場合は、式、および結合を作成する特定の列を指定できます。ビジネス・モデルとマッピング・レイヤーで論理結合を作成する場合は、式も結合を作成する列も指定できません。物理レイヤーに結合が存在するからといって、ビジネス・モデルとマッピング・レイヤーに一致する結合が必要なわけではありません。

注意:

論理表には外部キーを指定しないことをお薦めします。ただし、「オプション」ダイアログで「論理外部キー結合作成の許可」を選択した場合は、下位互換性のために、結合マネージャを使用して、論理外部キー結合を作成できます。

ファクト表の論理キーは、属性表に結合されるキー列で構成する必要があります。Oracle BIサーバーが、特定のサード・パーティの問合せとレポート作成ツール用のODBCデータ・ソースとして使用される場合は、論理外部キー結合が必要なことがあります。

この項では、次の項目について説明します。

ビジネス・モデル図を使用した論理結合の定義

ビジネス・モデル図には、論理表とそれらの表の間に定義されている結合が表示されます。

ビジネス・モデル図を使用して、表の間に論理結合を定義できます。

ビジネス・モデル図を使用して論理結合を定義するには:

  1. 管理ツールで、ビジネス・モデルを右クリックして、「ビジネス・モデル図」を選択し、「図全体」を選択します。
  2. 管理ツールのツール・バーにある「新規結合」ボタンをクリックします。
  3. ビジネス・モデル図で、結合の1つ目の表(1対多結合の多を表す表)を左クリックして選択します。
  4. 結合対象の表(1対多結合の1を表す表)にカーソルを移動し、2つ目の表を左クリックして選択します。

    「論理結合」ダイアログが表示されます。

  5. (オプション)キーに駆動表を指定するには、「駆動表」リストから表を選択し、適切なカーディナリティを指定します。

    このオプションは、一方の表が非常に小さく、他方の表が非常に大きな場合に、Oracle BIサーバーでマルチデータベースの内部結合を処理する方法の最適化に有用です。マルチデータベース結合を実行しないかぎり、駆動表は選択しないでください。駆動表の詳細は、駆動表の指定を参照してください。

    注意:

    駆動表を指定するかどうかの決断には、十分な注意を払ってください。駆動表は、まれな状況で、駆動表が非常に小さい(1,000行未満)場合にのみ問合せの最適化に使用します。駆動表を間違って選択すると、重大なパフォーマンス低下をまねくおそれがあります。

  6. タイプ」リストから結合タイプを選択するか、デフォルト値をそのまま使用します。
  7. 結合の両側に「カーディナリティ」を設定するか、デフォルト値をそのまま使用します。
  8. OK」をクリックして、作業を保存します。

    ビジネス・モデル図で、結合は、選択した2つの表の間の線で表され、結合の「1」側が矢印になっています。この図は、ビジネス・モデル図での結合を示しています。

結合マネージャを使用した論理結合の定義

結合マネージャを使用して、論理結合の関係の表示と論理結合の作成を実行できます。

また、お薦めできませんが、「オプション」ダイアログで「論理外部キー結合作成の許可」を選択した場合は、結合マネージャを使用して、論理外部キー結合を作成できます。

この項では、次の項目について説明します。

結合マネージャを使用した論理結合の作成

ビジネス・モデルとマッピング・レイヤーでは、論理外部キー結合よりも論理結合をお薦めします。

結合マネージャを使用して論理結合を作成するには:

  1. 管理ツールで、「管理」を選択して、「結合」を選択します。

    「結合マネージャ」ダイアログが表示されます。

  2. 「アクション」「新規」「論理結合」を選択します。

    「論理結合」ダイアログが表示されます。

  3. 論理結合の名前を入力します。
  4. ダイアログの右側と左側にある「」リストで、論理結合で参照する表を選択します。
  5. (オプション)キーに駆動表を指定するには、駆動リストから表を選択し、適切なカーディナリティを指定します。

    このオプションは、一方の表が非常に小さく、他方の表が非常に大きな場合に、Oracle BIサーバーでマルチデータベースの内部結合を処理する方法の最適化に有用です。マルチデータベース結合を実行しないかぎり、駆動表は選択しないでください。駆動表の詳細は、駆動表の指定を参照してください。

    注意:

    駆動表を指定するかどうかの決断には、十分な注意を払ってください。駆動表は、まれな状況で、駆動表が非常に小さい(1,000行未満)場合にのみ問合せの最適化に使用します。駆動表を間違って選択すると、重大なパフォーマンス低下をまねくおそれがあります。

  6. タイプ」リストから結合タイプを選択するか、デフォルト値をそのまま使用します。
  7. 結合の両側に「カーディナリティ」を設定するか、デフォルト値をそのまま使用します。
  8. 「OK」をクリックします。

結合マネージャを使用した論理外部キー結合の作成

特定のサード・パーティの問合せおよびレポート作成ツールのODBCデータ・ソースとしてOracle BIサーバーを使用する予定の場合に、論理外部キー結合が必要なことがあります。

通常は、論理外部キーは作成してはいけません。

結合マネージャを使用して論理外部キー結合を作成するには:

  1. 管理ツールで、「ツール」を選択し、「オプション」を選択します。
  2. 「オプション」ダイアログの「一般」タブで、「論理外部キー結合の許可」を選択します。
  3. 「OK」をクリックします。
  4. 管理」を選択し、「結合」を選択して結合マネージャを表示します。
  5. 「アクション」「新規」「論理外部キー」を選択します。
  6. 「参照」ダイアログで、表をダブルクリックして、「論理外部キー」ダイアログを表示します。
  7. 外部キーの名前を入力します。
  8. ダイアログの左側にある「」リストで、外部キーで参照する表を選択します。
  9. 左の表から、外部キーで参照する列を選択します。
  10. 右の表から、外部キー列を構成する列を選択します。
  11. (オプション)キーに駆動表を指定するには、駆動リストから表を選択し、適切なカーディナリティを指定します。

    このオプションは、一方の表が非常に小さく、他方の表が非常に大きな場合に、Oracle BIサーバーでマルチデータベースの内部結合を処理する方法の最適化に有用です。マルチデータベース結合を実行しないかぎり、駆動表は選択しないでください。駆動表の詳細は、駆動表の指定を参照してください。

    注意:

    駆動表を指定するかどうかの決断には、十分な注意を払ってください。駆動表は、まれな状況で、駆動表が非常に小さい(1,000行未満)場合にのみ問合せの最適化に使用します。駆動表を間違って選択すると、重大なパフォーマンス低下をまねくおそれがあります。

  12. タイプ」リストから結合タイプを選択するか、デフォルト値をそのまま使用します。
  13. 結合の両側に「カーディナリティ」を設定するか、デフォルト値をそのまま使用します。
  14. 結合の式を入力するか、「式ビルダー」ボタンをクリックして、式ビルダーで式を定義します。
  15. OK」をクリックして、作業を保存します。

駆動表の指定

駆動表は、一方の表が非常に小さく、他方の表が非常に大きな場合に、Oracle BIサーバーでクロスデータベース結合を処理する方法の最適化に有用です。

駆動表の指定は、駆動表から選択された行数が結合先の表の行数よりはるかに少ない場合にのみ、問合せの最適化に使用できます。

注意:

問題が発生しないように、駆動表は、非常に小さい、つまり1,000行未満の場合にのみ指定します。

「論理結合」ウィンドウから論理結合に駆動表を指定できます。駆動表を指定した場合、Oracle BIサーバーでは、問合せ計画で駆動表の使用によって問合せ処理が最適化されると判断された場合に駆動表が使用されます。小さな表(駆動表)がスキャンされ、パラメータ化された問合せが大きな表に発行されて一致する行が選択されます。その後で、その他の表が、その他の駆動表を含めて、一緒に結合されます。

注意:

駆動表から行が多数選択された場合、駆動表の指定によって重大なパフォーマンス低下をまねくおそれがあり、MAX_QUERIES_PER_DRIVE_JOINの制限値を超えた場合は、問合せが終了します。

通常、駆動表は、内部結合に使用でき、駆動表が左外部結合の左の表である場合、または右外部結合の右の表である場合は、外部結合に使用できます。駆動表は、完全外部結合には使用されません。駆動表を指定する手順については、論理結合の定義を参照してください。

駆動表のパフォーマンスを制御およびチューニングする機能として、データベース機能表に2つのエントリがあります。

  • MAX_PARAMETERS_PER_DRIVE_JOIN

    これは、パフォーマンス・チューニング・パラメータです。通常、値が大きいほど、生成の必要があるパラメータ化問合せの数が少なくなります。値が大きすぎると、バックエンド・データベース制限によりパラメータ化問合せが失敗します。値を0 (ゼロ)に設定すると、駆動表結合がオフになります。

  • MAX_QUERIES_PER_DRIVE_JOIN

    これは、リソース集中型の駆動表結合を防ぐために使用します。パラメータ化問合せの数がこの値を超えると、問合せが終了し、エラー・メッセージがユーザーに返されます。

結合トリミングを決定する要因

物理問合せからトリミング可能な結合を決定する際に、Oracle BIサーバーでは、この項で説明する要因が考慮されます。

次の結合トリミングのルールが、論理表ソース内の表に対して施行されます。

  • 結合の外部性(内部、左外部、右外部、または完全外部)。

  • 結合カーディナリティ({0..1、1、N、不明}対{0..1、1、N、不明}。たとえば、0..1対Nはゼロまたは1対複数の結合を表します)。結合の少なくとも片側には、不明カーディナリティを除き、9つの結合カーディナリティの組合せがあります。

  • 論理表ソースにWHERE句のフィルタが含まれているかどうか。

  • 物理結合が複合結合または外部キー結合であるかどうか。

Oracle BIサーバーで結合をトリミングする場合、次の基準が満たされている必要があります。

  • トリミングされた表は、列の予測されるリストやWHERE句の中など、問合せ内のどの場所でも参照の対象にできません。

  • トリミングされた表によって結果セットのカーディナリティが変更されることがあってはいけません。結合を削除することによって選択した行数が変更される可能性がある場合、Oracle BIサーバーでは結合をトリミングしません。

    次の条件のいずれかがtrueである場合、結合には、結果セットの行数を変更する可能性があるものと見なされます。次の条件のいずれでもtrueである場合、結合は問合せからトリミングされません。

    • この結合は完全外部結合です。内部結合、左外部結合および右外部結合のみがトリミングの候補です

    • いずれかの側で結合カーディナリティが不明です。

    • トリミングされる表が結合の複数の側にあります。つまり、マスター/詳細の関係にある詳細表をトリミングすることはできません

    • トリミングされる表のカーディナリティが0..1であり、結合が内部結合です。カーディナリティ0..1は、表内に一致する行が存在する場合と、存在しない場合があることを意味します。そのため、一方の側に0..1のカーディナリティが設定されている結合は、実質的にフィルタのように機能します。したがって、その結合をトリミングする場合は、選択した行数を変更する必要があります。

    • トリミングされる表が、左外部結合の左側、または右外部結合の右側にあります(つまり、行を維持する表ではトリミングは行われません)。このルールでは、DISTINCT句が問合せに追加される属性のみを選択する問合せに対して、例外が1つあります。DISTINCT句であるため、行を維持する表をトリミングしてもNull指定の表から返される行数に影響はありません。そのため、属性に対する個別の問合せの特殊なケースでは、外部結合の行を維持する表をトリミングすることができます。

次の表に、Oracle BIサーバーで問合せから結合をトリミングできる例を示します。

シナリオ 結果
従業員 内部結合 部門

従業員 内部結合 部門

部門は内部結合の「1」の側にあるため、トリミングできます

従業員は内部結合の複数の側にあるため、トリミングできません

従業員 左外部結合 部門

従業員 左外部結合 部門

部門は結合の「1」の側にあり、左外部結合(つまり、Nullを指定する表)の右側にあるため、トリミングできます

従業員は結合の複数の側にあり、左外部結合(つまり、行を維持する表)の左側にあるため、トリミングできません

従業員 右外部結合 部門

従業員 右外部結合 部門

部門は右外部結合(つまり、行を維持する表)の右側にあるため、トリミングできません

従業員は結合の複数の側にあるため、トリミングできません

従業員 内部結合 従業員情報

従業員 内部結合 従業員情報

両方の表が内部結合の「1」の側にあるため、いずれの側でもトリミングできます

従業員 左外部結合 従業員情報

従業員 左外部結合 従業員情報

従業員情報は結合の「1」の側にあり、左外部結合(つまり、Nullを指定する表)の右側にあるため、トリミングできます

従業員は左外部結合(つまり、行を維持する表)の左側にあるため、トリミングできません

従業員 右外部結合 従業員情報

従業員 右外部結合 従業員情報

従業員情報は右外部結合(つまり、行を維持する表)の右側にあるため、トリミングできません

従業員は結合の「1」の側にあり、右外部結合(つまり、Nullを指定する表)の左側にあるため、トリミングできます

従業員 内部結合 部門

従業員 内部結合 部門

部門は内部結合の0..1の側にあるため、トリミングできません

従業員は内部結合の複数の側にあるため、トリミングできません

従業員 左外部結合 部門

従業員 左外部結合 部門

部門は外部結合の0..1の側にあり、左外部結合(つまり、Nullを指定する表)の右側にあるため、トリミングできます

Oracle BIサーバーでは、外部結合の0..1の側にあるNullを指定する表のトリミングが許可されますが、この場合は、問合せから部門をトリミングしても従業員表から選択した行数が変更されないためです。

従業員は外部結合の複数の側にあるため、トリミングできません

従業員 完全外部結合 部門

従業員 完全外部結合 部門

結合が完全外部結合であるため、いずれの側もトリミングできません

従業員 複数対複数 プロジェクト

従業員 複数対複数 プロジェクト

結合が複数対複数であるため、いずれの側もトリミングできません

従業員 不明 部門

従業員 不明 部門

結合のカーディナリティが不明であるため、いずれの側もトリミングできません

論理オブジェクトにマップする物理表の特定

物理図には、選択した論理オブジェクトにマップする物理表と、各表間の物理結合が示されます。

結合オプションの1つである「ビジネス・モデル内のオブジェクトと直接結合」は、論理レイヤーに特有のオプションです。このオプションによって、次の両方の条件を満たす表の物理図が作成されます。

  • 選択されたオブジェクト内の表、および直接結合する表

  • ビジネス・モデル内でマップされている(ビジネス・モデルの論理表ソースに存在する)表

論理オブジェクトの物理図を開くには:

  1. 管理ツールのビジネス・モデルとマッピング・レイヤーで、ビジネス・モデル、論理表または論理表ソースを右クリックします。
  2. 物理図」を選択して、いずれかの結合オプションを選択します。
  3. 1対多などの関係線をより明確に表示するには、任意のオブジェクトをクリックしてドラッグします。