前提
FileMaker7より前のバージョンでは、各ファイルに対して1つの "リレーションシップ"のリストがあり、これはリレーションシップの終点と照合フィールドとして使用されているフィールドが表示されていました。 FileMaker7以降では、これが一新され、現在のリレーションシップグラフおよびテーブルオカレンス(TO)が導入されました。しかし、1つのTOが他のTOに接続されている場合もあれば、関連テーブルが1つもないこともあり、更に100のTOと関連づけられている場合もあります。
例えばこのような単純なTOグループで考えてみましょう。
A、B、CのTOにはそれぞれレイアウトがあり、Cのフィールドを参照しているスクリプトがあるとします。
スクリプトが、Cをベーステーブルとして使用するレイアウトから呼び出された場合は、どのリレーションシップも使用されません。スクリプトがBのレイアウトから呼び出された場合、「B」-「C」間のリレーションシップは使用されていますが、「A」-「B」のリレーションシップは使用されていません。それがAに基づいたレイアウトから呼び出されている場合は、両方のリレーションシップが使用され、必須です。
しかし、実際にスクリプトを作るときはそれほど単純ではありません。スクリプトはAのレイアウトから呼び出されますが、計算式で設定されたスクリプト引数の値に基づいてレイアウトに移動するとします。異動先はどのレイアウトになりますか?その場合、どのリレーションシップを使用しますか?
それがわかる方法は残念ながらありません。
主な違いは、現在FileMaker7以降で使用されている機能はすべて、リレーションシップではなくTOを指すことです。 "TOname :: Field"のようなエンドポイントへの参照にどのパスが使用されるのかがわからなくなり、そのTO名がエンドポイントになります。そのため、Aに基づくレイアウトとCを参照する計算を考えると、両方のリレーションシップがある時点で使用される可能性があるとしか想定できません。
TOが参照されているかどうかの判断の基準はなんですか?
上の例で、Aがレイアウトコンテキストテーブルとして使われておらず、計算式や他のステップでも使用されていないことがわかっている場合は、他の機能や要素になんの影響もなくAを削除できます。
しかし、Bにレイアウトがなく、AとCの両方が参照されていても参照されていない場合、Bが使用されているかどうかはわかりません。これもまた、AおよびCへの参照がどのコンテキストで使用されているか、およびどこでどのように使用されているかによって異なります。
簡単な答えは、 TOがリレーションシップグラフのエンドポイントである場合のみ「参照されていない」とわかります。ある TOが1つのリレーションシップしか持っていない場合、またはリレーションシップが設定されてない場合、そのTOはグラフのエンドポイントにあります。(上記の例の場合はTO「C」がエンドポイントです)
未使用の関係を削除する
リレーションシップをもつTOを削除することによってのみ、関係を削除できます。そのため、リレーションシップの観点から考えるのではなく、TOの観点から考え、そこから作業します。
コメント
0件のコメント
サインインしてコメントを残してください。