こんにちは。いよいよゴールデンウイークですね!帰れなくなった故郷に帰る、俺の中にあるのはこれだけだ。
さて、今回はDataverse上で多対多のリレーションシップを作っていきます。
多対多のリレーションシップ
まずは多対多のリレーションシップとはどのようなものなのかを見ていきます。
下の画像のように学生テーブルと科目テーブルがあるとします。レコード間に結ばれた線は学生がどの科目を履修しているかを表しています。
ここで、各学生は複数の科目を履修するので、学生 : 科目 = 1 : nの関係があります(一対多の関係)。
一方で科目目線で見ると、各科目は複数の学生に履修されるので学生 : 科目 = n : 1の関係もあります。
このような場合、これらのテーブル間には多対多の関係があると言います。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-001-1-1024x719.png)
それではこの関係をDataverseで作成していきます。
多対多のリレーションシップの作成
・テーブルを用意
画像のように学生テーブルと科目テーブルを用意し、レコードを追加しておきます。列は最低限のもので十分です。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-002-1024x651.png)
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-003-1024x647.png)
・多対多のリレーションシップの作成
学生テーブルを開く ⇒ [リレーションシップ]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-004-1024x569.jpg)
[+リレーションシップの追加]を選択 ⇒ [+多対多]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-005-1024x593.jpg)
テーブルのドロップダウンを選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-006-1024x674.png)
科目テーブルを選択 ⇒ [完了]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-007-1024x665.png)
[テーブルの保存]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-008-2-1024x628.jpg)
これで学生テーブルと科目テーブルの間に多対多のリレーションシップが作成されました。
レコードどうしを結び付ける
次に、学生のレコードと科目のレコードを結び付けていきます。
・フォームの作成
学生テーブルを開く ⇒ [フォーム]を選択 ⇒ フォームの種類がMainとなっているフォームを開く
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-009-1-1024x497.png)
フォームの編集画面が開きます。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-010-1-1024x559.png)
[+コンポーネント]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-011-1024x564.jpg)
左の一覧から[1列のセクション]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-012-1024x557.jpg)
追加したセクションの中に[サブグリッド]を挿入
すると下の画像のようなダイアログが現れます。
[関連レコードの表示]にチェックを入れる ⇒ テーブルのドロップダウンで科目テーブルを選択 ⇒ [完了]
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-013-1024x549.jpg)
右のブレードでラベルを履修科目に変更 ⇒ [保存] ⇒ [公開]
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-014-1024x535.jpg)
これでフォームのカスタマイズは終了です。
・学生レコードに科目レコードを結び付ける
それでは学生レコードに科目レコードを紐づけていきます。
学生テーブルを開く ⇒ [レコードの編集]
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-015-1024x431.png)
先ほど作成したフォームが現れます。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-016-1024x577.png)
[既存の科目の追加]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-017-1024x581.png)
右のブレードでレコードの検索を選択 ⇒ Enterキーを押す
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-018-1024x588.png)
科目テーブル内のレコードが一覧で表示されるので、必要なものを選択 ⇒ [追加]を選択
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-019-1024x587.png)
この学生に3つの科目を紐づけることができました。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/beforemigration/2022-04-28-dataverse-many-to-many-relationship-020-1024x519.png)
おわりに
従業員に複数の役職を持たせたい場面などにも使えます。