テーブル間の一対多のリレーションシップの作成
このユニットでは、Microsoft Dataverse で次の手順を使用して一対多のリレーションシップを実装する方法を示します。
ヒント
一方の側または反対側からリレーションシップを参照する場合、一対多または多対一のリレーションシップは同じです。
一対多のリレーションシップ
Power Appsメーカー ポータルにサインインします
トップ メニュー バーのドロップダウン リストを使用して、作業する環境を選択します。
サイド ナビゲーション パネルでテーブルを選択し、使用可能なテーブルの一覧を表示します。
別のテーブルとのリレーションシップを作成できるテーブルを選択します。
結果のテーブル ビュー画面で、スキーマ ウィンドウを探し、リレーションシップを選択してテーブルと他のテーブルのリレーションシップを表示します。
リレーションシップ ビュー画面に、テーブルが持つ現在のすべてのリレーションシップが表示されます。 一対多、多対一、または多対多のリレーションシップが存在する可能性があります。 新しいリレーションシップを作成する場合、コマンド バーから + 新しいリレーションシップを選択します。
次に、多対一、一対多、または多対多のリレーションシップ オプションを選択できます。 この例では、一対多のリレーションシップを選択します。
画面の右側に、選択したリレーションシップの種類の名前 (この場合は一対多) と、関連するテーブルを選択できるドロップダウン フィールドを含むウィンドウが表示されます。
ヒント
いずれかのオプションを選択すると、主テーブルにルックアップ列が作成されます。
関連する (多数の) テーブル フィールドでは、このリレーションシップを作成するテーブルを選択できます。
テーブルを選択することで、Dataverse が自動的にルックアップ列と、このテーブルを親テーブルに関連付けるために必要なすべてのものを作成します。
新しいリレーションシップを保存するには、完了を選択します。
新しいリレーションシップを保存すると、リレーションシップの一覧に表示されます。
これで、ビジネス ソリューションでこのリレーションシップとルックアップを使用できるようになります。 ルックアップ列を使用して、すべての (子) 行を表示することができます。
一対多のリレーションシップの動作
一部のテーブルはそれ自体では意味をなさず、通常は他のテーブルやプロセスをサポートするために作成されます。 通常、サポートするプライマリ テーブルにリンクするために必須のルックアップ列があります。 たとえば、関連する取引先企業なしではプロジェクト行が存在してはならないというビジネス要件があるとします。 この場合、プロジェクト テーブルには取引先企業テーブルと多対一のリレーションシップがあり、取引先企業のルックアップ列はビジネス必須と設定されます。
行を他の行に関連付ける方法を単に定義するだけでなく、一対多のテーブル リレーションシップでは、次の質問に対応するメタデータも提供されます。
行を削除すると、その行に関連する行も削除されますか?
行を新しい所有者に割り当てるときに、関連付けられているすべての行を新しい所有者にも割り当てる必要がありますか?
既存の行のコンテキストで関連する新しい行を作成するとき、どのようにすればデータ入力プロセスを合理化できますか?
行を表示するユーザーは、どのようにして関連する行を表示できますか?
一対多のリレーションシップでリレーションシップの動作を使用すると、テーブル リレーションシップの多側の行が親行に対する割り当て、共有、削除などの操作によってどのような影響を与えるかを定義できます。 リレーションシップの動作は、データの整合性を確保するのに役立つため重要です。
動作
特定のアクションが発生したときに適用できる動作には、次のいくつかのタイプがあります。
動作 | 説明 |
---|---|
すべてのレコードに伝播 | 関連するすべてのテーブル行に対してアクションを実行します。 |
アクティブ レコードのみに伝播 | 関連するすべてのアクティブなテーブル行に対してアクションを実行します。 |
同一所有者のレコードのみに伝播 | プライマリ テーブル行と同じユーザーが所有するすべての関連するテーブル行に対してアクションを実行します。 |
伝播しない | 何もしません。 |
リンクの削除 | 関連するすべての行のルックアップ値を削除します。 |
制限 | 関連するテーブル行が存在する場合、プライマリ テーブル行が削除されないようにします。 |
アクション
動作によって制御されるアクションは次のとおりです。
列 | 説明 | 動作 |
---|---|---|
削除 | プライマリ テーブル行を削除するとどうなりますか? | すべてのレコードに伝播、リンクの削除、制限 |
割り当て | プライマリ テーブル行を他の人に割り当てるとどうなりますか? | すべてのレコードに伝播、アクティブ レコードのみに伝播、同一所有者のレコードのみに伝播、伝播しない |
リペアレント | 親子関係にある関連テーブルのルックアップ値を変更するとどうなりますか? | すべてのレコードに伝播、アクティブ レコードのみに伝播、同一所有者のレコードのみに伝播、伝播しない |
共有 | プライマリ テーブル行を共有するとどうなりますか? | すべてのレコードに伝播、アクティブ レコードのみに伝播、同一所有者のレコードのみに伝播、伝播しない |
共有の解除 | プライマリ テーブル行の共有を解除するとどうなりますか? | すべてのレコードに伝播、アクティブ レコードのみに伝播、同一所有者のレコードのみに伝播、伝播しない |
結合 | プライマリ テーブル行を結合するとどうなりますか? | すべてのレコードに伝播、伝播しない |
ロールアップ ビュー | このリレーションシップに関連付けられたロールアップ ビューに必要な動作は何ですか? | すべてのレコードに伝播、アクティブ レコードのみに伝播、同一所有者のレコードのみに伝播、伝播しない |
注
動作は、アクションが親行で実行される場合にのみ関連する行に対して行われ、関連する行で実行されるアクションの場合は行われません。つまり、動作は多対一の方向ではなく、一対多の方向で動作します。
動作のタイプ
リレーションシップ動作の設定を簡素化するために、Microsoft では動作を次のタイプに分類しています。
タイプ | 説明 |
---|---|
親 | 親テーブルの行に対して実行されるアクションは、関連する子テーブルの行に対しても実行されます。 |
参照、削除制限 | 関連する行に移動できます。 親行に対して実行されたアクションは子行には適用されませんが、子行が存在する間は親行を削除できません。 |
参照、リンクの削除 | 関連する行に移動でき、一方の行に対して実行されたアクションはもう一方の行に影響しなくなります。 これは既定です。 |
カスタム | 考えられる各アクションの動作を選択できます。 |
一対多のリレーションシップのマッピング
1 対多のリレーションシップを持つテーブル間で列をマップできます。 これにより、別の行のコンテキストで作成された行に既定値を設定できます。 マッピングは、ユーザーがモデル駆動型アプリで親行のフォームから関連する新しい行を作成するときに、データ入力プロセスを合理化するために使用されます。
たとえば、取引先企業行が開かれ、関連する新しい連絡先が作成されると、この機能により、オフィスの住所、代表電話番号など、取引先企業行から選択された情報が連絡先フォームに事前に入力されます。
マッピングの考慮事項:
モデル駆動型アプリは機能ですか
一対多のリレーションシップにのみ適用されます。
新しい関連行を親行フォームのコンテキスト内から作成している場合にのみ適用されます。
関連する行がルックアップ列を選択して作成およびリンクされる場合は適用されません。
親行の列の値が子行にコピーされます。
同じデータ型の列のみマップできます。
ユーザーは行を作成する前に値を上書きできます。
値のコピーは作成時に一度だけ行われ、それ以降の同期は行われません。
注
リレーションシップのマッピングを構成するには、従来のソリューション エクスプローラーを使用します。
階層リレーションシップ
Dataverse の一部の標準テーブルには、既に取引先企業などの階層が定義されています。 階層内の行は、モデル駆動型アプリで視覚的に表示できます。
階層リレーションシップを定義するオプションは、自己参照関係でのみ使用できます。 自己参照リレーションシップは、テーブルとそれ自体の間の一対多のリレーションシップであり、同じテーブルがプライマリ テーブルと関連するテーブルの両方として定義されます。
テーブル リレーションシップに関する詳細については、テーブル リレーションシップを参照してください。