第43話 多対多の関連をレイアウトに配置

エヌ・ケイ・カスタマイズの泉です。

今回は、「第25話 テーブル設計について(テーブルの役割、ER図、関連の種類)」で、少し触れた「多対多の関連」について、リレーションシップの作成からレイアウトへの配置までを実践したいと思います。

その前に、関連の種類について少しだけおさらいしたいと思います。
というのも、私はいつも関連を作成するときに『こういう場合、1対多?多対多?、どっち?』とわからなくなることが多いです。
なので、「1対多」と「多対多」について、自分なりの(恐らく一般的)切り分け方法を表で示したいと思います。

  切り分け
1対多 親は複数の子を選べるが、
子は1人の親しか選べない
伝票と明細
映画と配役
タスクと添付ファイル
多対多 親は複数の子を選べ、
子も複数の親を選べる
伝票と商品(間を取り持つ「明細」)
映画と俳優(間を取り持つ「配役」)
タスクと担当者(間を取り持つ「担当者割当」)

ただし、設計によっては、「多対多」が「1対多」となることもありえます。
「タスク」と「担当者」の場合
・1つのタスクを不特定多数の人数で対応する場合→「多対多」
・1つのタスクを特定の複数人(例えばメイン担当、サブ担当、サポート担当)で対応する場合→「1対多」

おさらいは、このくらいにして、さっそく「多対多の関連」について、実践していきます。

リレーションシップを作成

  1. Macユーザーは「Shift + command + d」キー同時押しで、[データベースの管理]ダイアログを開き、「リレーションシップ」タブをクリック。
  2. 「タスク担当者」TOを作成。

  3. 「担当者割り当て」TOを作成。

  4. 3つのTOのつなげるために、まず、「タスク管理」TOと「担当者割り当て」TOのリレーションを作成。

  5. 続けて、「担当者割り当て」TOと「タスク担当者」TOのリレーションを作成。

  6. リレーションシップを確認後、「OK」をクリックしてダイアログを閉じます。

レイアウトを作成(ポータル配置)

「タスク詳細」レイアウトに、担当者のポータルを配置します。

  1. Macユーザーは「command + L」でレイアウトモードに切り替えます。
  2. ポータルをレイアウトに配置。

  3. 続けて表示される「ポータルにフィールドを追加」ダイアログで、まず、「担当者割り当て」TOのフィールドを追加。

  4. 次に、「タスク担当者」TOのフィールドを追加。

  5. ダイアログが閉じ、ポータルにフィールドが設定されたことを確認。

ポータルでの入力確認

出来上がったポータルで担当者を入力してみます。

「担当者外部キー」に”20″ を入力すると、リレーションで設定した「このリレーションシップを使用して、このテーブル(ここでは「タスク担当者」)のレコードの作成を許可」が機能して、レコードが作成されたことにより、指定した担当者の情報(「姓」と「名」)が表示されました。
ちなみに、『泉房子』さんとは私は、一切深い関係はございませんので、Googleなどでの検索はお控えください。

さいごに

今回は、「多対多の関連」に伴うリレーションシップの作成と、レイアウトへのポータルの配置を行いました。
今回の作業では、「担当者」の主キーを知っていたので、ポータルで入力することができましたが、実際のユーザーは「コード」のような情報を覚えて作業することは、ほとんどありません。
したがって、本来であれば「担当者」を容易に入力できるよう、レイアウトをカスタマイズする必要がありますが、それは、またいつかの記事で書かせていただきます。

それでは、また次回の記事をお楽しみに。

Follow me!