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

2015年05月19日 09:00 AM

はじめの一歩


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

201505181

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

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

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

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

 

 

 


 

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

 

 

201505182

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

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

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

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

 

 

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

 

 

 

2015051811

 

 

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

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

 

 

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

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

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

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

 

 

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

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

201505184

 

 

 

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

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

 

 

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

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

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

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

 

 

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

 

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

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

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

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

 

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

201505185

 

 

 

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

201505189

 

 

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

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

 

 


 

 

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

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

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

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

 

 

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

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

「削除しましたよ。」、というフラグをたてておいて通常は表示しないようにしよう。」という

論理削除という概念を反映させたものです。

 

 

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

 

 

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

201505187

 

 

 

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

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

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

 

 

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

201505188

 

 

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

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

 

 

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

 

つまり(下の図)は、

201505189

 

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

 

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

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

2015051810

 

 

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

 

 

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

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

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

「このリレーションシップを利用して、このテーブルでのレコードの作成を許可」

というオプションにチェックをいれることができます。

201505183

 

 

 

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

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

 

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

 

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

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

 

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

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