1 つ以上のテーブルの関連付け - 導入
構築するソリューションの多くを効率的でスケーラブルなものにするには、データを複数のコンテナー (テーブル) に分割する必要があります。 1 つのコンテナーにすべてのデータを格納しようとすると、効率が悪くなったり、データを把握しづらくなる可能性があります。
次の例は、この概念を説明したものです。
たとえば、販売注文を管理するシステムを作成する必要があるとします。 そのためには、販売する品目のマスター リストと、手持在庫、品目の原価、および販売価格のデータを用意する必要があります。 また、住所や与信限度額を含んだ、顧客のマスター リストも必要です。 最後に、売上の請求書を管理する必要があるので、請求データを保存する手段も必要になります。 請求書には、請求書情報 (日付、請求書番号、営業担当者など)、住所や与信限度額などの顧客情報、および請求書に記載された各品目の明細行品目を含める必要があります。 明細行品目には、販売した品目への参照を含める必要があります。また、各品目に対して適切なコストと価格の指定を可能にすると共に、その明細行品目の販売数量に基づいて、手持数量の削減を可能にする必要があります。
前に説明した機能を単一のテーブルで実現しようすることは、非効率であり、賢明ではありません。 このビジネス シナリオの場合、次の 4 つのテーブルを作成するのが正しいアプローチと言えます。
- 顧客
- 製品
- 請求書
- 品目
これらの各項目に対応するテーブルを作成し、それらを相互に関連付けることで、拡張性とパフォーマンスに優れた、効率的なソリューションを構築できます。 また、データを複数のテーブルに分割することで、反復的なデータを保存したり、大量の空データを含む大きな行をサポートする必要もなくなります。 これは、データの正規化と呼ばれます。 さらに、データを複数のテーブルに分割した場合、レポート作成も容易になります。
相互に関連付けられたテーブルは、リレーショナルに接続されます。 Microsoft Dataverse の基盤となっているテクノロジは、Microsoft によってクラウドで管理されるリレーショナル データベースです。 テーブル間のリレーションシップにはさまざまな形式のものがありますが、最も一般的なのは、一対多と多対多の 2 つです。これらは、どちらも Dataverse よってサポートされています。
一対多のリレーションシップは、親子リレーションシップとも呼ばれます。 前の請求書の例では、請求書テーブルが親で、明細行品目が子テーブルになります。 請求書には、ゼロ、1 つ、または複数の明細行品目 (子行) を含めることができますが、品目は常に、1 つの請求書 (親行) に関連付けられます。 通常、子行は親行がないと存在しません。
親行は、一意の値のみが許可される列を使用して識別されます。 この一意の列は、キーと呼ばれます。 関連する子行にも、同じ値 (親キー) が格納されます。 親キーの値を格納するために子行が使用される場合、この列は外部キーと呼ばれます。 親行のキー値に一致する外部キー値を持つ子行は、フィルター処理を使用して表示されます。 これにより、特定の親行 (前の例では請求書) に属する子行 (前の例では明細行品目) を、アプリケーションで表示できるようになります。 この概念は、多くのビジネス ソフトウェア アプリケーションの基盤となっています。
ヒント
データを複数のテーブルに分割するアプローチは、拡張性のある効率的なソリューション設計に役立ちますが、データをテーブルに分割する方法について理解することは、簡単ではありません。 Dataverse には、多くの組織で必要とされるテーブルが多数含まれています。 標準のテーブルを使用し、それを拡張するアプローチをとれば、ソリューションで使用されるデータを保存するための、実績と拡張性に優れた方法でソリューションを構築することができます。