リレーションシップグラフを読み解いてみよう
2015年06月01日 03:46 PM
はじめの一歩
FileMakerで高度な処理や複雑なシステムを実現する為には、リレーションシップの作成がほぼ必須になります。
ですが、自分で作成したくても、概念がわからないのでどのように作成すれば良いかわからない…
という方は多いのではないでしょうか。
今回は、リレーションシップグラフを読み解く方法のご紹介通じて、「リレーションってそういうことか!」が
わかるブログになることを目指して少し書いてみたいと思います。
下記のような見積書入力画面があるとします。
この見積書は、2つのテーブルで構成されています。
1つめは茶色背景部分の「見積書テーブル」
2つめはオレンジ背景部分の「見積書―見積明細テーブル」です。
(正式にはテーブルオカレンスですが、ここでは説明簡略化の為テーブルと表記します)
この二つのテーブルは、次のようなリレーションでつながっています。
「何が書いてあるか全然わからない…」という方が多いと思います。
上から順に、一つずつ説明していきたいと思います。
仮に、「見積書テーブル」に2枚の見積書のデータが存在しているとします。
それぞれに、見積書IDが発番されています。
1つ目は見積書IDが「001」
2つ目は見積書IDが「002」です。
次に、「見積書明細テーブル」には、全部で4件のデータが登録されているとします。
次の画像のようなイメージです。
この中で、見積書IDが「001」の見積書に表示させたいデータは4つのうちどれでしょうか?
という考えの元に、リレーションシップグラフは設定されています。
この場合だと、利用者が見積書入力画面を表示しているという前提の上で、
① (今見ている画面の)見積書IDと、見積書明細の見積書IDが同じ。
② (今見ている画面の) Flg_0フィールドの値と、見積書明細の削除フラグフィールドの値が同じ
という2つのものを表示させたい、という条件になっています。
まずシンプルに、①「見積書IDと、見積書明細の見積書IDが同じ」について説明したいと思います。
今利用者の方が、見積書ID「001」の見積書を表示しているとします。
そこで、手元のメモ帳に001と手書きで記入します。
次に、表示させたい見積書明細の情報を探すために、見積書明細の画面に移動し、
検索モードに切り替え、見積書ID欄にメモ帳にメモした「001」を入力して検索実行します。
すると、3件のデータがHITします。
この内容は、リレーションシップの1つめの条件で表示させたいデータの指定と同じです。
つまりリレーションとは、「そのテーブルに移動したとき、その条件で検索してHITするものだけを、
その画面に表示させて下さいね」という指定をしている…というイメージなのです。
ここまでわかったところで、2つめの条件
AND Flg_0 = 削除フラグ について説明していきたいと思います。
まずAND ですが、これは1行目の条件にも該当するし、2つ目の条件にも該当するものだけを
表示させて下さいね、という意味です。
次にFlg_0 = 削除フラグ について説明したいと思います。
これは、「削除したものをデータとして本当に削除してしまうと、後で戻すことが出来ないので、削除しましたよ、
というフラグをたてておいて通常は表示しないようにしよう。」という論理削除という概念を反映させたものです。
(ちなみに、論理削除に対して本当にデータを削除することを物理削除と呼びます。)
ですが、見積書の削除フラグが「0」であっても、見積書明細の削除フラグが常に「0」とは限りません。
黄色背景の×ボタンを押すと、削除フラグが「1」になる仕組みだからです。
こんなときは、表示させたい画面のテーブルに、「Flg_0」というような計算フィールドを作成することで、
問題を解決することが出来ます。(フィールド名は何でもOKです。)
計算式の内容は次の通りです。
え、これだけ!?という感じですよね。
でも本当にこれだけなんです。
こうしておくことで、「常に0という値が入力されるフィールド」を作成することができます。
つまり下の図は、
「見積書IDが同じで、削除フラグが0のものだけを表示して下さいね」という意味になります。
これは、見積書明細テーブルに移動して、検索モードに切り替え、
見積書IDフィールドに001、削除フラグに0と入力して検索実行した結果と同じになります。
上の図の場合だと、上から2行が該当しますね!
ただ実際は表示させるだけでなく、見積書入力の画面でどんどん見積書明細のレコードを
作成していきたいですよね。
指定しているリレーションの条件が全て「=」の場合は、「このリレーションシップを利用して、
このテーブルでのレコードの作成を許可」というオプションにチェックをいれることができます。
この図の場合だと、見積書テーブルのレイアウトにいるときに、見積書明細にデータを書き込んだら、
見積書IDと削除フラグを自動入力して見積書明細のデータを作成して下さいね!という指示です。
このチェックをつけておくことで、見積書画面のまま見積書明細のデータが作成できるのでとても便利ですね。
(ちなみに、その下のチェックは「見積書が物理削除されたら、関連する見積書明細のデータも
物理削除してくださいね」という指示になります)
いかがでしたでしょうか。
「リレーションは難しそう…」と感じている皆様のソリューション製作に役立てて頂ければとても嬉しいです。