リレーションシップグラフを読み解いてみよう


1

 

FileMakerで高度な処理や複雑なシステムを実現する為には、リレーションシップの作成がほぼ必須になります。

 

ですが、自分で作成したくても、概念がわからないのでどのように作成すれば良いかわからない…

という方は多いのではないでしょうか。

今回は、リレーションシップグラフを読み解く方法のご紹介通じて、「リレーションってそういうことか!」が

わかるブログになることを目指して少し書いてみたいと思います。

 

下記のような見積書入力画面があるとします。

2

 

 

この見積書は、2つのテーブルで構成されています。

1つめは茶色背景部分の「見積書テーブル」

2つめはオレンジ背景部分の「見積書―見積明細テーブル」です。

(正式にはテーブルオカレンスですが、ここでは説明簡略化の為テーブルと表記します)

 

この二つのテーブルは、次のようなリレーションでつながっています。

11

 

 

「何が書いてあるか全然わからない…」という方が多いと思います。

上から順に、一つずつ説明していきたいと思います。

 

仮に、「見積書テーブル」に2枚の見積書のデータが存在しているとします。

それぞれに、見積書IDが発番されています。

1つ目は見積書IDが「001」

2つ目は見積書IDが「002」です。

 

次に、「見積書明細テーブル」には、全部で4件のデータが登録されているとします。

次の画像のようなイメージです。

4

 

 

この中で、見積書IDが「001」の見積書に表示させたいデータは4つのうちどれでしょうか?

という考えの元に、リレーションシップグラフは設定されています。

 

この場合だと、利用者が見積書入力画面を表示しているという前提の上で、

①    (今見ている画面の)見積書IDと、見積書明細の見積書IDが同じ。

②    (今見ている画面の) Flg_0フィールドの値と、見積書明細の削除フラグフィールドの値が同じ

という2つのものを表示させたい、という条件になっています。

 

まずシンプルに、①「見積書IDと、見積書明細の見積書IDが同じ」について説明したいと思います。

 

今利用者の方が、見積書ID「001」の見積書を表示しているとします。

そこで、手元のメモ帳に001と手書きで記入します。

次に、表示させたい見積書明細の情報を探すために、見積書明細の画面に移動し、

検索モードに切り替え、見積書ID欄にメモ帳にメモした「001」を入力して検索実行します。

 

すると、3件のデータがHITします。

5

 

 

この内容は、リレーションシップの1つめの条件で表示させたいデータの指定と同じです。

6

つまりリレーションとは、「そのテーブルに移動したとき、その条件で検索してHITするものだけを、

その画面に表示させて下さいね」という指定をしている…というイメージなのです。

 

ここまでわかったところで、2つめの条件

AND Flg_0 = 削除フラグ について説明していきたいと思います。

まずAND ですが、これは1行目の条件にも該当するし、2つ目の条件にも該当するものだけを

表示させて下さいね、という意味です。

 

次にFlg_0 = 削除フラグ について説明したいと思います。

これは、「削除したものをデータとして本当に削除してしまうと、後で戻すことが出来ないので、削除しましたよ、

というフラグをたてておいて通常は表示しないようにしよう。」という論理削除という概念を反映させたものです。

 

(ちなみに、論理削除に対して本当にデータを削除することを物理削除と呼びます。)

 

ですが、見積書の削除フラグが「0」であっても、見積書明細の削除フラグが常に「0」とは限りません。

7

 

 

黄色背景の×ボタンを押すと、削除フラグが「1」になる仕組みだからです。

こんなときは、表示させたい画面のテーブルに、「Flg_0」というような計算フィールドを作成することで、

問題を解決することが出来ます。(フィールド名は何でもOKです。)

 

計算式の内容は次の通りです。

8

 

え、これだけ!?という感じですよね。

でも本当にこれだけなんです。

 

こうしておくことで、「常に0という値が入力されるフィールド」を作成することができます。

 

つまり下の図は、

9

「見積書IDが同じで、削除フラグが0のものだけを表示して下さいね」という意味になります。

 

これは、見積書明細テーブルに移動して、検索モードに切り替え、

見積書IDフィールドに001、削除フラグに0と入力して検索実行した結果と同じになります。

10

 

上の図の場合だと、上から2行が該当しますね!

 

ただ実際は表示させるだけでなく、見積書入力の画面でどんどん見積書明細のレコードを

作成していきたいですよね。

指定しているリレーションの条件が全て「=」の場合は、「このリレーションシップを利用して、

このテーブルでのレコードの作成を許可」というオプションにチェックをいれることができます。

11

 

この図の場合だと、見積書テーブルのレイアウトにいるときに、見積書明細にデータを書き込んだら、

見積書IDと削除フラグを自動入力して見積書明細のデータを作成して下さいね!という指示です。

 

このチェックをつけておくことで、見積書画面のまま見積書明細のデータが作成できるのでとても便利ですね。

 

(ちなみに、その下のチェックは「見積書が物理削除されたら、関連する見積書明細のデータも

物理削除してくださいね」という指示になります)

 

いかがでしたでしょうか。

「リレーションは難しそう…」と感じている皆様のソリューション製作に役立てて頂ければとても嬉しいです。