導入
Microsoft Dataverse でデータをモデル化する場合、別のテーブルを使用して異なるオブジェクトおよび概念を表します。 組織は、より多くのテーブルを使用して、特定の情報のセキュリティの保護、データのリンク、他のプロパティの記述、またはレポートを簡単に行うことができます。 実際のオブジェクトは互いに関係づけられており、リレーションシップは Dataverse で 1 つのテーブルから別のテーブルに行をリンクするために使用されます。 また、リレーションシップを使用して、レコードでアクションが実行される際の制約と動作を指定することもできます。
基本的には、Dataverse テーブルとリレーションシップを連動させて、データについて説明することができます。 テーブルとリレーションシップを使用して Microsoft Power Apps からキャンバス アプリでの優れたユーザー エクスペリエンスを構築する際に、データ モデルから不要な複雑さを隠したいかもしれません。 そのタスクを実行するには、リレーションシップを使用することで式と使用状況がテーブルを効率的にナビゲートする必要があります。 このモジュールでは、Dataverse で提供されるさまざまなタイプのリレーションシップの使い方を説明します。
シナリオ: Contoso 社の共有ワークスペース
このモジュールでは、一般的な業務シナリオを使用して、Dataverse のリレーションシップがキャンバス アプリが機能する方法を紹介します。 Contoso 社では、多くの企業と同様に複数の場所があり、従業員の自宅勤務を認めています。 場合によっては、これらの従業員は出勤する必要があり、出勤時に使用するデスクが必要です。 以前、Contoso 社は従業員に対し、出勤時には使用可能なデスクをオフィスで探すよう指示しました。 その後、このタイプの共有ワークスペース システム (ホット デスクと呼ばれることがあります) が IT サポートとライセンスに対する課題を生み出していることを発見しました。 その結果、同社では、従業員が事前に利用可能なデスクを表示して予約することができるソリューションの構築を計画しています。 ソリューションを構築するチームは、Dataverse データ モデルの一部として次の表を特定しています。
テーブル名 | 説明 |
---|---|
場所 | この表は個々の建物を表し、住所や電話番号などの列を含んでいます。 それぞれの場所には、主要な連絡先担当者がいます。 |
デスク | この表は、担当者が予約できる実際のデスクを表しています。 デスクは、特定の場所に位置しています。 |
デスク機能 | デスクが異なると機能も異なります。 たとえば、一部のデスクにはスピーカーフォン、他のデスクは個室にある可能性があります。 デスクの機能の標準リストが用意されます。各デスクは、それらの機能のうち 1 つ以上を備えています。 |
ユーザー | ユーザーは、デスクを予約できる人を表したり、または場所の主要な連絡先になります。 |
予約 | 次の表は、特定の時間枠に特定の場所で特定のデスクを使用するある人の予約を表しています。 |
Dataverse のリレーションシップのタイプ
テーブル間のリレーションシップを作成する場合、リレーションシップのタイプはリレーションシップの両サイドの基数の制約を定義します。 Dataverse は、一対多および多対多のリレーションシップをサポートします。
一対多のリレーションシップ
一対多のリレーションシップ (1:N または親子とも呼ばれます) には、関連 (子) テーブルのルックアップ列を使用することで、個々の行を数多くの関連 (子) テーブル行に関連付けられる、主 (親) テーブルが含まれます。 プライマリ行は親行、関連テーブル行は子行と呼ばれます。 1 つの子行は 1 つの親行にのみ関連付けできます。
一対多のリレーションシップは、多対一 (またはN:1) のリレーションシップとも呼ばれます。この関係では、親を指している子から始まるリレーションシップを使用します。 これは同じ物理的なリレーションシップの定義ですが、アングルが異なります。 キャンバス アプリでは、子レコードを操作していて親からのプロパティを表示する場合は、子行で多対一のリレーションシップ ナビゲーション プロパティを使用します。
既定では、1 つのテーブルがプライマリとして使用され、ルックアップ列は常にそのテーブルからの行をポイントします。 また、Dataverse は複数テーブルのルックアップ (場合によってはポリモーフィックなルックアップと呼ばれる場合があります) をサポートします。これにより、ルックアップ フィールドは複数のテーブルの 1 つから行をポイントし、より複雑なデータ モデルを柔軟に使用できます。 たとえば、データ型顧客の列を作成することで、複数テーブルのルックアップ列を設定できます。 その後、顧客ルックアップ値を設定して、連絡先または勘定テーブル行をポイントできます。 すべてのアクティビティ テーブル (メールやタスクなど) で、該当する列がアクティビティの追跡に対して有効なテーブルをポイントできます。 また、複数テーブルのルックアップ 列タイプを使用して、カスタムの複数テーブル ルックアップ列を設定できます。 これらの複数テーブルのルックアップ列を Power Apps で使用する場合は、IsType 関数と AsType Microsoft Power Fx 関数を使用して親テーブルを決定し、データを使用します。
モジュールのデータ モデル例では、次の一対多のリレーションシップが、シナリオをサポートするために定義されています。
プライマリ テーブル | 関連テーブル | 説明 |
---|---|---|
場所 | デスク | それぞれのデスクには場所があります。 |
ユーザー | 場所 | それぞれの場所には主要な連絡先があります。 |
ユーザー | 予約 | デスクを予約したユーザー。 |
デスク | 予約 | 各予約は特定のデスクに対するものです。 |
1対多のリレーションシップを設定する場合は、リレーションシップ動作も設定できます。 動作によって、プライマリt テーブル行が削除、割り当て、共有、共有解除、またはリペアレントされる際に何が起こるべきかが決定します。 既定の動作は参照です。これは、プライマリ テーブル行が削除された場合に 2 つのテーブル間のリンクを削除するために設定されています。 たとえば、場所テーブルには複数のデスクがあり、既定の構成を使用します。そのため、キャンバス アプリによって場所行が削除されると、既定ですべての関連するデスクが孤立します。 場所の削除時に関連付けられているテーブル レコードを削除する業務要件がある場合は、ForAll 機能を選択して、関連付けられているすべてのデスク レコードを最初に削除します。 より優れたオプションは、リレーションシップの動作の親タイプを設定することです。 この動作タイプでは、プライマリ レコードが削除された場合に、関連するレコードが自動的に削除されます。 このアプローチによって、孤立したデスク レコードが確実に発生しなくなります。
キャンバス アプリを構築し、関連テーブルを使用している場合は、そのリレーションシップに対して動作がどのように設定されているのかを知ることにより、正しいロジックを実装できます。
多対多のリレーションシップ
多対多の関係 (N:N とも呼ばれます) には、リレーションシップ テーブルと呼ばれる特別な非表示テーブルが含まれます。これは、交差テーブルと呼ばれることもあります。 この表は、あるテーブルの多数の行を別のテーブルの多数の行に関連付けする方法をマッピングします。 多対多のリレーションシップは関連を追跡できますが、そのリレーションシップを説明するカスタム列を追加する交差テーブルを変更できません。
このモジュールの例では、デスクとデスクの機能には多対多のリレーションシップがあります。 デスク機能のリストがすべてのデスクによって共有されます。また、各デスクに関連付けられた機能が 1 つ以上ある場合があります。 多対多のリレーションシップによって、ユーザーはデスクに椅子があることがわかりますが、各デスクに何台の椅子があるかを保存することはできません。
テーブル間のリレーションシップの作成方法については、次のビデオをご覧ください。
すべてのテーブルとリレーションシップを作成したら、シナリオ例のデータ モデルは次の図に似たものになるはずです。
このモジュールの残りの部分では、キャンバス アプリからのこのデータ モデルを使用する方法を探ります。