JBI オンラインスタディR [リレーション]
【ながにぃ式リレーション応用編】
仕組みを紐解く
◆ ながにぃ式リレーションの再確認
紐解きをするためにも、まずは『ながにぃ式リレーション』を再確認してみます。
左側の TO・・・初期&メイン(レイアウトでも使用)
右側の TO・・・リレーション用(左側 TO を複製して配置)
◆ 一方向に限定することで「管理コスト」を減らす
リレーションは、双方向でレコード情報を参照することができます。これはセッション『リレーションの実践【仕組みの理解】』の「◆ リレーションがどういうことかを深掘りしてみる」でお話ししています。
もし、何も考えず隣同士の TO を繋げていくと、双方向に繋がる状態のリレーションばかりになります。
双方向に繋げ続けると、倍々的に、神経が繋がっていくように、何かと双方向を気にする必要が出ます。これは 管理コストが高い状態 にあると言えます。
そうなると、リレーションを変更・削除するのが怖くて出来なくなる事態になります。
「データが表示されなくなった」
「スクリプトが動かなくなった」
「計算が合わなくなった」
今まで問題なかったのに、少しリレーションを変えてみたらおかしくなった、そういうことが起きてくるからです。最悪の場合、元の状態がわからなくなって、どうにも出来なくなることさえ起こり得ます。
結果、リレーションを削除できないので追加することしかできなくなり、悪循環のまま増殖を続けることになります。そうなると、何かが起きた時にはシステムが破綻してしまうというリスクを常にはらんだ事態になってしまうのです。
◆ レイアウトの TO を基点にする
そこで、双方向ではなく一方向に限定したリレーションにしようというのが『ながにぃ式リレーション』です。
"今見ているレイアウト" が出発点(基点)、と上述しました。
(希望)今見ているレイアウト上に表示したい。
(何を?)別テーブルのレコード情報を。
(条件は?)照合フィールドが一致したもの。
この「基点」となるのが、リレーションシップグラフの左側の TO です。
リレーションは双方向から情報を見に行けますが、あえて一方向だけに限定してシンプルな流れにすることで制作者の考えが見えやすく、管理もしやすくなります。
解説ばかりで頭でっかちになってもいけないので、また少し実践をしてみることにしましょう。
◆ リレーションを追加してみる
リレーションは目的があって設定が行われます。ここからは想定になりますが、次の目的(要望)が出たとします。
「購入記録で、カテゴリ(「電源機器」など)に一致する販売会社を見たい。なぜなら、次回購入時に別の販売会社も候補にしておきたいから。」
(*少々無理がある想定かもしれませんがご了承ください・・・)
つまり、次のようなロジックが想定されます。
(希望)購入記録のレイアウトに表示したい。
(何を?)次の購入先候補になる販売会社を。
(条件は?)「カテゴリ」照合フィールドに一致するもの。
ただ、販売会社テーブルには「カテゴリ」に相当するフィールドが無いため、事前に下準備が必要になります。
【 リレーションの前の下準備 】
① 販売会社テーブルに「カテゴリ」フィールドを追加
② 「カテゴリ」フィールドへのデータ格納。
復習がてら一緒に下準備を行っていきます。
では、ひとまず「販売会社_リスト形式」レイアウトを表示してください。ここに「カテゴリ」フィールドを追加します。
データベース管理を開き、フィールドタブを表示します。
下準備が整いました。
では、どこに「カテゴリ販売会社」を表示するかですが、「購入記録_フォーム形式」にしたいと思います。(← この目的がとても重要です。何をしたいかによって手段が変わってくるからです。)
理由は、今回のリレーションは「1対多」の関係になり、「カテゴリ販売会社」が複数存在する可能性があるからです。
*「1対多」の場合はポータルを使って複数レコードを表示させます。
さあ、リレーションをしてみましょう。
基点になるのは「購入記録」TO です。「購入記録_フォーム形式」レイアウトに情報を表示したいからです。その情報は、別テーブルである販売会社テーブルのレコード情報を見に行きます。
では、どの TO を複製することになるでしょうか?
✻ リレーションの紐(!?)
どうやら特別な呼び方は無いようです。(もしご存知だったら必ず教えてください笑)
そこで名前を付けることにします。
TO ライン(ティーオーライン)と呼ぶことにします。これは JBI の独自の呼び方になります。
リレーションは設定できました。ではレイアウトを編集してみましょう。レイアウトモードでポータルをボディに配置します。
ポータル設定が出てきますが、関連テーブルのところをご覧ください。
どのリレーション用 TO を選択すればいいかが一目瞭然になっていないでしょうか。長い TO 名をわざわざ書いていた理由がここにあります。さらに、@で照合フィールドまで分かるので、「購入記録_販売会社@」までは同じ名前の TO ですが、どちらを選択すればいいかも一目瞭然になっています。
ブラウズモードで見てみます。左上のレコード移動ボタンで、カテゴリが「電源機器」になっている購入記録を見てみてください。
販売会社テーブルでは2社が「電源機器」になっていました。その2社がポータルで表示できていることをご確認ください。
さて、ながにぃ式リレーションのメリットである 分かりやすさ をもう一度見てみます。
ポータル設定のときに非常に選択しやすくなっています。現在のテーブル(「購入記録」)に対して、「購入記録_・・・・・・」と購入記録にだけ関係する TO が関連テーブルに表示されます。
参考までに、もし、ながにぃ式リレーションではなく、前のセクションでやった仕組みの理解用のリレーションでやった場合どうなるか。
多くの繋がった状態(双方向で繋がった状態)が生じて、関連テーブルばかりになります。すると、どの TO を選択すればいいかが分からなくなってしまいます。
レイアウトの TO を基点にリレーションをすれば、関連テーブルが絞られます。断然こちらのほうが管理しやすいのです。
✻ 照合フィールドのタイプ
上で追加したリレーションの照合フィールドは「カテゴリ」でした。ID のフィールドではありません。
そのことから分かるように、リレーションの照合フィールドは ID のフィールド以外でも可能です。(*但し、一部の計算タイプのフィールドでは照合フィールドに使えない場合もあります。「索引」が作られないことが関係します。)
よって、「電源機器」などの日本語データでも照合フィールドに使えますが、注意点もあります。日本語はひらがなやカタカナ、旧漢字など多種多様で、少しでも違う文字が混じるとリレーションされません。「電源きき」は「電源機器」とは別の文字扱いになります。当然、「電源危機」など誤字脱字もしかりです。
日本語を照合フィールドに使う場合は、手入力よりも値一覧での選択入力や自動入力などを使って、統一したデータが格納されるように工夫することが重要です。
◆ アンカーブイ方式
ながにぃ式リレーションは、FileMaker 業界で一般的に使われている「アンカーブイ方式」というものを応用しています。
*アンカーブイ方式
アンカー(錨)とブイ(浮標)の形に例えた方式で、FileMaker 業界では広く一般的に知られている方式。
基点となる TOを一番左に置き(アンカー=錨)、 関連するテーブルを右に並べていく(ブイ=浮標)
上の図を横にしてみると、ながにぃ式リレーションの形に似ていますね。基点の TO がアンカーでリレーション用 TO がブイです。
アンカーブイ方式では、いくつかの小さくまとまったグループが構成されます。(テーブルオカレンスグループ、TOグループと呼ばれる)
例えば先の例では、「購入記録」に関するグループと、「販売会社」に関するブループです。
これにより、何か問題が起きたときは原因を特定しやすくなります。
例えば「購入記録」のレイアウト上でポータルの表示がおかしいときは、「購入記録」グループのリレーションに絞って原因を探ることができます。
また、新規で TO を追加するときもやりやすくなります。
例えば「販売会社」のレイアウトに購入記録テーブルから新たに別の情報を表示させたいときは、「販売会社」グループのほうでリレーションを追加していけばいいんだな、と考えやすくなります。
(*もしこれが、双方向で考えないといけない隣同士のリレーションにしてしまうと、問題のあるリレーションがどれなのか、新たなリレーションをどこに追加すればいいのか、TO が多くなればなるほど難しくなります。)
✻ 左側の TO はそのままに
(続きを見るためのお申込みはこちら)
インターネット上では何やら複雑な、難しいリレーションが散見されます。それは TO の特徴や性質を「充分理解して応用して使っている」か、「よく分かっていない」かのどちらかです。
ながにぃ式リレーションでは、FileMaker 未経験者や初級者にとって、なるべく自然に、なるべくシンプルに、それでいて応用性が高く管理しやすい方法を独自にご提案するものになります。
このページは以上になります。続きは次のセクションにて。
ここまでお疲れ様でした!
✻ 本スタディは以上となります。ここまでだけでも何かお役に立てていたら幸いです。
✻ 本スタディで不明な点や質問が出た場合は、Q&Aセミナーのリクエストをお送りください。