FileMaker考察:「テーブル」と「テーブルオカレンス」の違いについて
2015年07月02日 10:16 PM
はじめの一歩
FileMakerには、「テーブル」という概念と、「テーブルオカレンス」という概念があります。
似ている言葉のようですが、FileMakerにおけるそれぞれの役割は全く別のものです。
あくまでも個人的な見解ですが
■テーブル:データの保存場所
■テーブルオカレンス:テーブルのデータをレイアウトに表示させる為の機能
と理解しています。
この2つの違いを理解する為には、テーブルとテーブルオカレンスの他に、「レイアウト」について理解する必要があります。
1)FileMakerユーザーは、レイアウトを通して、テーブルに格納されている情報を見ることが出来る
2)レイアウトは、必ず1つのテーブルオカレンスを指定している
3)テーブルオカレンスは、必ず1つのテーブルを指定している
「テーブルオカレンス」とは、「テーブル」と「レイアウト」をつなぐ接着剤のようなもの!という表現もできるかもしれません。(極端ですか?)
テーブルもテーブルオカレンスも、「ファイル」→「管理」→「データベース」の中にあります。
「テーブル」は、「テーブルタブ」の中にある行のことです。
一方で「テーブルオカレンス」は、「リレーションシップタブ」の中にある、四角いかたまりの1つ1つのことです。
テーブルを作成したとき、テーブルと同じ名前のテーブルオカレンスが、1つだけ自動作成されます。
テーブルオカレンスの四角の上でダブルクリックをすると、「テーブルを指定」という画面が表示されます。
「見積書」という名前のテーブルオカレンスの場合、「見積書テーブル」がデータソースとして指定されています。
「データソース」とは、「どのテーブルにあるデータを参照しますか?どこにデータを保存しますか?」という条件の指定で、「テーブル」を選択することが出来ます。
1つのテーブルに対して、そのテーブルをデータソースとするテーブルオカレンスは、いくつでも作成することが出来ます。
例えば、この画像キャプチャに利用しているファイルの場合、「受注―見積書」という名前のテーブルオカレンスも存在しています。
次にレイアウトの説明をしたいと思います。
全てのレイアウトは、必ず1つの「テーブルオカレンス」を指定しています。
「テーブル:見積書」と表記がありますが、「テーブルオカレンス:見積書」という意味です。
FileMakerでは、データは全て「テーブルオカレンス」を通じて「テーブル」に保存されていきます。
そして、保存されたデータを表示できる方法は次の2通りです。
1)現在画面に表示されているレイアウトが指定するテーブルオカレンスのレコードとしてデータを表示する
2)現在画面に表示されているレイアウトが指定するテーブルオカレンスのリレーションを利用して、関連する別のテーブルオカレンスのデータを表示する。
2は、ポータル機能などで利用することが多いかと思います。
1)の表示方法の場合、
画面に表示しているレイアウトが指定するテーブルオカレンスのデータソースが同じ場合、表示されるレコードは全く同じものになります。
ですが、2)の表示方法の場合、
画面に表示しているレイアウトが指定するテーブルオカレンスと、表示させたい別のテーブルオカレンスに「どのようなリレーションが設定されているか」により表示データが変わります。
例えば、次のような見積書の詳細画面があります。
左側の赤いポータルには、「見積書ー見積書明細」のテーブルオカレンスの情報を表示させています。
また、右側の青いポータルには、「見積書ー見積書明細2」の情報を表示させています。
青いポータルには商品名「りんご」の情報が表示されているのに、赤いポータルにはデータが表示されていませんね。
では、どのようなリレーションを設定しているのか見ていきたいと思います。
「見積書」と「見積書ー見積書明細2」は「見積書ID=見積書ID」という条件が1つのリレーションで繋がっているのに対し、
「見積書」と「見積書明細」は「見積書ID=見積書ID」と「Flg_0=削除フラグ」という条件が2つのリレーションで繋がっています。 ※1
1つのテーブルに対して、そのテーブルをデータソースとするテーブルオカレンスは、いくつでも作成することが出来る、という特性を利用して、
表示条件を様々に変えることができるのでとても便利ですよね。
また、この機能を活用することで、機能ごとに整理された、見やすく、利用しやすく、処理も早いリレーションを形成していくことが出来ます。
■テーブル:データの保存場所
■テーブルオカレンス:テーブルのデータをレイアウトに表示させる為の機能
あくまでも個人的でちょっと偏った考え方かもしれませんが
テーブルとテーブルオカレンスについての考え方がご理解いただけると嬉しいです。
※1
Flg_0や削除フラグは、「論理削除」という機能のため作成しているフィールドになります。
論理削除や、この図の解読方法については下記の記事をご参照ください。
※ポータルの作り方については、下記の記事をご参照ください。