テーブル リレーションシップ
テーブルの関連付けは、データベース内で行を相互に関連付ける方法を定義します。 単純なレベルでは、テーブルに検索列を追加すると、2 つのテーブル間に新しい 1: N (一対多) の関連付けが作成され、その検索列をフォームに配置できるようになります。 検索列を使用すると、ユーザーはそのテーブルの複数の 子 の行を 1 つの 親 テーブル行に関連付けることができます。
行を他の行に関連付ける方法を単に定義するだけでなく、1: N のテーブルの関連付けでは、次の質問に対応するデータも提供されます:
- 行を削除すると、その行に関連する行も削除されますか?
- 行を割り当てるときに、その行に関連付けられているすべての行を新しい所有者にも割り当てる必要がありますか?
- 既存の行のコンテキストで新しい関連する行を作成したときに、どのようにしてデータ入力プロセスを効率化できますか?
- 行を表示するユーザーは、どのようにして関連行を表示できますか?
2 つのテーブルの任意の数の行が相互に関連している場合、テーブルは N:N (多対多) の関連付けもできます。
テーブルの関連付けや接続を使用するかどうかを決定
テーブルの関連付けはデータベースに変更を加えるメタデータのことです。 これらの関係により、クエリが関連データを効率的に取得できるようになります。 テーブルの関連付けを使用して、テーブルを定義する、または、ほとんどの行が使用できる正式な関連付けを定義します。 たとえば、顧客となる可能性のない営業案件は役に立ちません。 営業案件テーブルには、競合企業テーブルとの N:N の関連付けもあります。 これにより、複数の競合企業を営業案件に追加できます。 このデータを取得し、競合企業を表示するレポートを作成することができます。
行間のあまり正式でない関連付けは、つながり と呼ばれます。 たとえば、2 人の取引先担当者が結婚していること、または職場外の友人であること、またはある取引先担当者が以前別の取引先企業で働いていたことなどを把握しておくと便利な場合があります。 ほとんどの業種では、この種の情報を使用してレポートを作成したり、入力を要求することがないため、テーブルの関連付けを作成するに値しません。 詳細: つながりロールを構成する
テーブルの関連付けの種類
ソリューション エクスプローラーを見ると、3 種類のテーブルの関連付けがあると思うかもしれません。 次の表に示したとおり実際は 2 つだけです。
リレーションシップの種類 | 内容 |
---|---|
1:N (1 対多) | 関連テーブルの検索列によって、プライマリ テーブル の 1 つのテーブル行を他の複数の 関連テーブル 行に関連付けることができるテーブルの関連付け。 プライマリ テーブル行を表示する際に、それに関連付けられた関連テーブル行の一覧を表示できます。 Power Apps ポータル では、現在のテーブル はプライマリ テーブルを表します。 |
N:N (多対多) | 特別な 関係テーブル に基づくテーブルの関連付けで、「交差テーブル」と呼ばれることもあり、1 つのテーブルの複数の行を別のテーブルの複数の行に関連付けることができます。 いずれかのテーブルの行を N:N の関連付けで表示するときに、それに関連付けられている他のテーブルのすべての行の一覧を表示できます。 |
デザイナーはテーブルでグループ分けされたビューを表示するため、N:1 (多対一) の関連付けの種類はユーザー インターフェイスにあります。 1:N の関連付けは、実際にはテーブル 間 に存在し、プライマリ/現在のテーブル または 関連テーブル のいずれかとして各テーブルを参照します。 子 テーブルとも呼ばれる関連テーブルには、検索列があり、親 テーブルとも呼ばれるプライマリ テーブルから行への参照を格納をできます。 N:1 の関連付けは、単に、関連テーブルから見た 1:N の関連付けにすぎません。
テーブルの関連付け動作
関連テーブルの動作は、データ整合性が確保され、会社のビジネス プロセスを自動化できるため重要です。
データ整合性の維持
他のテーブルをサポートするために存在するテーブルもあります。 それらは単独では意味がありません。 通常は、サポートするプライマリ テーブルにリンクするために検索列が必須です。 プライマリ行が削除されると、どうなりますか?
関連付けの動作を使用して、ビジネスのルールに従って関連する行に何が起こるかを定義することができます。 詳細: 高度なリレーションシップの動作を追加する
ビジネス プロセスを自動化する
例えば、新しい営業担当者ができて、現在別の営業担当者に割り当てられている既存の取引先企業の数を割り当てたいとします。 各取引先企業の行には、それに関連付けられた複数のタスク活動があります。 以前の所有者に再割り当てしたいまたは新しい営業担当者に割り当てたいアクティブな取引先企業を簡単に見つけることができます。 しかし、取引先企業に関連付けられているタスク活動の場合にはどうですか。 各タスクを開き、新しい営業担当者に割り当てるかどうかを一つずつ考慮したいですか。 したくないでしょう。 その代わり、関連付けが標準規則を自動的に適用するようにできます。 これらの規則は、再割り当てを行っている取引先企業に関連付けられているタスク行にのみ適用されます。 次のオプションがあります。
- すべてのタスク活動を再割り当てします。
- すべてのタスクを再割り当てします。
- タスクを全く再割り当てしません。
- 現時点では、すべてのタスクを取引先企業の以前の所有者に再割り当てします。
関連付けは、プライマリ テーブル行の行で実行されたアクションが、関連テーブル行にどのようにカスケードされるかを制御できます。
動作
特定の操作を実行するときに適用できる複数の種類の動作があります。
動作 | 内容 |
---|---|
アクティブ レコードのみに伝播 | すべてのアクティブな関連テーブル行でアクションを実行します。 |
すべてのレコードに伝播 | すべての関連テーブル行でアクションを実行します。 |
伝播しない | 何もしません。 |
関連付けの解除 | 関連するすべての行の検索値を削除します。 |
制限 | 関連テーブル行が存在する場合に、プライマリ テーブル行が削除されないようにします。 |
同一所有者のレコードのみに伝播 | プライマリ テーブル行と同じユーザーによって所有されているすべての関連テーブル行でアクションを実行します。 |
アクション
これらは、特定の動作をトリガーできる操作です。
カラム グラフ | 内容 | オプション |
---|---|---|
割り当て | プライマリ テーブル行が他のユーザーに割り当てられた場合、どうなりますか? | すべてにカスケード アクティブにカスケード 同一所有者のレコードのみに伝播 伝播しない |
リペアレント | 上位下位の関連付けで関連テーブルの検索値が変更された場合、どうなりますか? 詳細: テーブルの上位下位の関連付け |
すべてにカスケード アクティブにカスケード 同一所有者のレコードのみに伝播 カスケードなし |
共有 | プライマリ テーブル行が共有されると、どうなりますか? | すべてにカスケード アクティブにカスケード 同一所有者のレコードのみに伝播 カスケードなし |
削除 | プライマリ テーブル行が削除されると、どうなりますか? | すべてにカスケード 記事のリンク解除 制限 |
共有の解除 | プライマリ テーブル行の共有が解除されると、どうなりますか? | すべてにカスケード アクティブにカスケード 同一所有者のレコードのみに伝播 カスケードなし |
統合 | プライマリ テーブル行が結合されると、どうなりますか? | すべてにカスケード カスケードなし |
ロールアップ ビュー | この関連付けに関連付けられているロールアップ ビューの希望する動作は何ですか。 | すべてのレコードに伝播 アクティブ レコードのみに伝播 同一所有者のレコードのみに伝播 伝播しない |
注意
次の状況では、割り当て、削除、マージ、リペアレントのアクションは実行されません。
- 元の親行と要求されたアクションに同じ値が含まれている場合。 例: 割り当てのトリガーを試行し、すでに行の所有者である取引先担当者を選択しようとした場合
- すでにカスケード アクションを実行している親行に対してアクションを実行しようとした場合
注意
割り当てを実行すると、行で現在アクティブになっているワークフローまたはビジネス ルールは、再割り当てが行われた際に、自動的に非アクティブになります。 行の新たな所有者が、ワークフローまたはビジネス ルールを引き続き使用する場合は、そのワークフローまたはビジネス ルールを再アクティブ化する必要があります。
テーブルの上位下位の関連付け
1:N の関連付けを持つことができる各テーブルのペアは、それらの間に複数の 1:N の関連付けを持つことができます。 しかし、通常は、そのような関連付けの中の 1 つだけが、テーブルの上位下位の関連付けであると考えられます。
テーブルの上位下位の関連付けは、次の表の 上位下位 列のカスケード オプションのいずれかが真である 1:N テーブルの関連付けです。
目的 | 上位下位である | 上位下位ではない |
---|---|---|
割り当て | すべてのレコードに伝播 同一所有者のレコードのみに伝播 アクティブ レコードのみに伝播 |
伝播しない |
削除 | すべてのレコードに伝播 | リンクの解除 制限する |
リペアレント | すべてのレコードに伝播 同一所有者のレコードのみに伝播 アクティブ レコードのみに伝播 |
伝播しない |
共有 | すべてのレコードに伝播 同一所有者のレコードのみに伝播 アクティブ レコードのみに伝播 |
伝播しない |
共有の解除 | すべてのレコードに伝播 同一所有者のレコードのみに伝播 アクティブにカスケード |
カスケードなし |
たとえば、新しいカスタム テーブルを作成し、取引先企業テーブルとの 1:N のテーブルの関連付けを追加して、カスタム テーブルが関連テーブルである場合、上位下位 列のオプションを使用するように、そのテーブルの関連付けに対するアクションを構成できます。 後で、参照テーブルとしてカスタム テーブルに別の 1:N テーブルの関連付けを追加する場合は、上位下位ではない 列のオプションを使用するようなアクションだけを構成できます。
通常、これは各テーブル ペアには上位下位の関連付けが 1 つだけ存在することを意味します。 関連テーブルの検索では、複数の種類のテーブルに対して、関連付けが可能な場合があります。
たとえば、テーブルに顧客検索がある場合、取引先担当者または取引先企業テーブルを参照できます。 2 つの異なる上位下位の 1:N テーブルの関連付けが存在します。
すべての活動テーブルには、関連する検索列を使用して関連付けることができるテーブルに対する、類似の一連のテーブルの上位下位の関連付けがあります。
設定できる動作の制限
上位下位の関連付けのため、テーブルの関連付けを定義するときを覚えておく必要があるいくつかの制限があります。
- カスタム テーブルは、カスケードする関連システム テーブルとの関連付けで、プライマリ テーブルにすることはできません。 つまり、プライマリ カスタム テーブルと関連システム テーブル間で、すべてにカスケード、アクティブにカスケード、または ユーザー所有にカスケード に設定されたアクションとの関連付けを設定できません。
- アクションが すべてにカスケード、アクティブにカスケード、または ユーザー所有にカスケード に設定された別の関連付けの関連テーブルとして、その関連付けの関連テーブルが既に存在する場合、新しい関連付けにアクションを すべてにカスケード、アクティブにカスケード、または ユーザー所有にカスケード に設定することはできません。 これにより、複数の親関連付けを持つ関連付けの作成を防ぎます。
継承されたアクセス権のクリーンアップ
リペアレントおよび共有カスケード動作を使用すると、関連テーブル間の行へのアクセスを提供する場合に役立ちます。 ただし、これによってカスケード動作設定の変更を必要とするプロセス、または設計に変更が生じる可能性があります。
テーブルの関連付けがリペアレント、または共有を使用し、カスケード動作がカスケードなしに変更された場合、テーブルの関連付けは、新しい権限の変更が関連する子テーブルにカスケードされなくなります。 さらに、カスケード動作がアクティブな間に付与された継承済みアクセス許可を取り消す必要があります。
継承済みアクセス権のクリーンアップは、カスケード動作がカスケードなしに変更された後に残存する古い継承済みアクセス権をクリーンアップするシステム ジョブです。 このクリーンアップは、テーブルへのアクセスを直接許可されたユーザーには影響しませんが、継承によってのみアクセスを付与されたユーザーのアクセス権を削除します。
以下が継承済みアクセス権のクリーンアップのしくみです :
- 更新された親とカスケード関係にあったすべてのテーブルを識別して収集します。
- 継承されたアクセスを通じて、関連テーブルへのアクセスを許可されたユーザーを識別して収集します。
- 関連テーブルへの直接のアクセスが許可されているユーザーをチェックし、コレクションから削除します。
- 収集されたテーブルで収集されたユーザーの継承済みアクセスを削除します。
クリーンアップの実行後、カスケード機能のためにのみ関連テーブルにアクセスできたユーザーは、行にアクセスできなくなり、セキュリティが強化されます。 クリーンアップが成功しない場合があります。 継承済みアクセスをクリーンアップする方法に関する詳細情報
参照
システム ジョブを監視する
1:N (一対多) または N:1 (多対一) の関連付けを作成および編集する
多対多 (N:N) のテーブルの関連付けを作成する
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。