JBI オンラインスタディR [リレーション]
【ながにぃ式リレーション応用編】
更にいろいろなパターン
◆ 外部データソースとのリレーション
これまでは同じファイルの中にあるテーブル同士でのリレーションを想定してお話ししてきました。
FileMaker は別のファイル同士をリレーションすることもできます。例えば「社員マスタ.fmp12」ファイルといったマスタ関連を別ファイルにして運用する(*) こともあります。
(内容をご覧頂くにはお申込みが必要です)
まず、本セクションで使用するサンプルファイルをダウンロードしてください。(*ご利用のパソコンが Mac でファイル名が化けた場合は手でファイル名を変更してください。)
「社員マスタ.fmp12」をダウンロード (※ダウンロードのためのお申込みはこちら)
(内容をご覧頂くにはお申込みが必要です)
いかがでしょうか。うまくできましたでしょうか。
この章を要約しますと、外部データソースによる別ファイルとのリレーションでは、TO 名の頭に「外|」を付けると名前を見ただけで状況が分かり易く、管理がしやすいということです。
✻ 社員マスタファイルに複数テーブルがあったら TO 名はどうする?
(内容をご覧頂くにはお申込みが必要です)
✻ なぜ別ファイルにするのか?
(内容をご覧頂くにはお申込みが必要です)
◆ レコードの作成を許可してポータルへの追加をラクにする
レイアウト「販売会社_フォーム形式」を見てください。下の方に前のセクションで追加した購入記録のレコードを表示するポータルがあるかと思います。(削除してしまった場合はもう一度作ってみてください)
このポータルは、販売会社ID が一致したレコードを表示します。既に購入記録テーブルにレコードが存在していたら表示されます。現状では、購入記録のレイアウトでレコードを追加しないとポータルには表示されません。
それを、このポータルの中で購入記録にレコードを追加しようというものです。
ではやってみますが、それほど難しいことではありません。
データベース管理を開いて、このポータルで使っているリレーションを編集します。
(内容をご覧頂くにはお申込みが必要です)
つまり、ポータルの最終行に入力することで、購入記録に「104 株式会社プラグ」のレコードをどんどん追加することができます。
ただ、入力ユーザーとしては非常に分かりづらいです。そこで、「プレースホルダテキスト」を使うことを推奨します。
レイアウトモードにして、ポータルの「購入品」を選択し、インスペクタの「プレースホルダテキスト」に文字を入れてみます。
(内容をご覧頂くにはお申込みが必要です)
✻「他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除」というチェックについて
(内容をご覧頂くにはお申込みが必要です)
◆ 動的値一覧(ながにぃ式リレーションを使う方法)
「値一覧」は既に使っていることと思います。(もし「なにそれ?」という場合はお尋ねください。)
では「動的値一覧」とはなんでしょうか。
複数の値一覧があって、プルダウンで選択していくと選択肢が絞り込まれていくことを動的値一覧と呼んでいます。
具体的には次のような感じです。
通常、値一覧を「販売会社ID_外部キー」に設定すると、全ての販売会社のリストがプルダウンされます。
これを、例えば「カテゴリ」の選択内容に応じてプルダウンの中身を絞り込むようにします。動的にプルダウンが変動するので動的値一覧と呼びます。
*カテゴリが「電源機器」のときプルダウンは2件
*カテゴリが「録音機器」のときプルダウンは1件
動的値一覧はリレーションを使って設定します。但し、通常のリレーションと概念が違うため、少し特殊な位置づけになります。
では一緒にやってみましょう。
念のため最初から、普通に値一覧を設定するところからやっていきます。(値一覧を既にご存じの方は飛ばして先へ進んでください。)
「カテゴリ」と「販売会社ID_外部キー」の2つに設定します。
レイアウトモードでまずは「カテゴリ」フィールドを選択し、インスペクタの「データタブ>コントロールスタイル」で「ドロップダウンリスト」を選択します。
値一覧のプルダウンでまだ設定がない場合は、鉛筆マークのボタンで値一覧の管理ダイアログを出します。
*メニューバー「ファイル>管理>値一覧」からも開けます。
新規作成をして、値一覧名は「カテゴリ」とし、値は「フィールドの値を使用」を選択します。
(内容をご覧頂くにはお申込みが必要です)
復習ですが、
【考え順①】で全レコードを捉え、【考え順②】でリレーションにより関連レコードに絞り込む、という流れです。繰り返しますが、まずは全項目を出す設定にしておき(①)、次にリレーションによって絞り込む(②)、という流れです。
そのため大前提として「何をフィールドに格納するのか」という【考え順①】が重要です。スタートを間違えるとゴールも変な所に行き着いてしまいますから。
制作の経験値が積まれていけば、リレーションがだんだん理解できてくるはずです。
それまでは「型」どおりにやれば何とかできる、という状態になって欲しいと思っています。
【考え順①】と【考え順②】、そして動的値一覧専用の TO 、これらを「型」として色々トライしてみてください。
*ここで示した方法はあくまで JBI 独自の方法です。他のサイトや会社では全く別の方法を使っていたりします。どれが正解ということはありません。ながにぃ式は分かり易いと自負していますが、最終的には使い易く分かり易い方法を採用してください。
◆ 複数が繋がってリレーションがうまくいかない!? それは「多対多」かも
「多対多」という関係になっている場合、リレーションがうまくいかないことがあります。『[準備]リレーションの概要』セッションで「中間テーブル」が出てきたと思いますが、まさにこの「多対多」の場合に中間テーブルを必要とします。
ここでは購入記録と販売会社を例にして解説を試みます。・・・・・・
(内容をご覧頂くにはお申込みが必要です)
このページは以上になります。
ここまでお疲れ様でした!
✻ 本スタディは以上となります。ここまでだけでも何かお役に立てていたら幸いです。
✻ 本スタディで不明な点や質問が出た場合は、Q&Aセミナーのリクエストをお送りください。