4D v16.3

リレーションプロパティ

ホーム

 
4D v16.3
リレーションプロパティ

リレーションプロパティ  


 

 

リレーションは常にNテーブルから1テーブルに向けて描画します。

リレートされるフィールドは同じか互換性のある型でなければなりません。以下のフィールド型を主キーおよび外部キーフィールドとして使用できます:

  • 文字列 (文字およびテキスト)
  • 数値 (実数, 整数, 倍長整数, 64ビット整数, またはフロート)
  • 時間
  • ブール
  • 日付

主キーには通常インデックスを設定します (必須ではありません)。リレーションプロパティは インスペクターパレット 、または特定の項目についてはリーレーションを右クリックして表示されるコンテキストメニューから設定できます。

定義  

定義エリアには外部キーと主キーフィールドが表示されます。

  • 開始: “開始”フィールドにはこのリレーションのNテーブルの外部キーが表示されます。コンテキストメニュー中でこのフィールドはNフィールドと呼ばれます。
  • 1フィールド: “1フィールド”には1テーブルの主キーフィールドが表示されます。コンテキストメニュー中でもこのフィールドは“1フィールド”と呼ばれます。
    リレーションはNテーブルの外部キーから1テーブルの主キーに向かって描画します。
  • カラー: このポップアップメニューを使用して、ストラクチャーエディターに表示されるリレーションの線のカラーを設定できます。リレーションのカラーはプロパティーとはリンクされていません。
    このカラーはリレーションのコンテキストメニューを使用して設定することもできます。

N対1オプションはNテーブルのレコードが開かれたときの動作に影響します。

  • 名前: N対1リレーションの名前を入力するエリア (任意)。
    注: 4D Mobileリンクの一部として、この名前はWakanda側のモデル内で対応したリレーショナル属性を作成するために使用されます(詳細は4D Mobile マニュアルのリレーションの使用 を参照して下さい)。この場合、JavsScript のルールに従った名前を使用する必要があります。
  • 手動/自動: このメニューで、Nテーブルから1テーブルへリンクされたリレーションの動作モードを設定します。自動オプションを選択すると、自動機能が有効になりま す。例えばアプリケーションモードで[Employees]テーブルのレコードが開かれると、自動で対応する[Companies]テーブルのレコードも 開かれます。この設定では従業員が働く会社の情報を4Dが自動で表示します。
    デフォルトでは手動オプションが選択されています。この場合、ランゲージを使用して開発者が1テーブルのレコードのロードとアンロードを管理しなくてはなりません。
    この点に関する詳細は自動およびマニュアルリレーションを参照してください。
    リレーションのコンテキストメニューを使用して自動1リレーションを設定することもできます。
  • 自動ワイルドカードサポート: このチェックボックスにチェックが入れられていると、ユーザーがタブキーを押したり、フィールド外をクリックしたときに、Nテーブルの外部キーに入力され た値に自動で見えないワイルドカード文字 (@) が追加されます。ユーザーが値の一部を入力すると、4Dは1テーブルから一致する値を探します。4Dが1つだけレコードを見つけると、その値が自動で入力 されます。4Dが複数のレコードを見つけると、それらがリスト表示され、ユーザーはその中から一つを選択できます。
  • リレートした1レコードがないとき知らせる: このチェックボックスをチェックすると、リレートした1レコードが存在しない場合にそのレコードをユーザーが作成できるようにするダイアログボックスを、 4Dが表示します。ここにチェックされていると、Nテーブルからリレートしたフィールドに値を入力すると、4Dはリレートした1テーブルに対応するレコー ドが存在するかどうかを検証します。一致するレコードを見つけることができない場合、以下のダイアログが表示されます:

    こ のダイアログボックスから、Nテーブルにデータを入力中に、対応する1テーブルのレコードを作成することができます。例えば[Invoices]と [Customers]テーブルからなる請求データベースがあるとします。[Customers]テーブルにまだ登録されていない顧客あての請求データを [Invoices]テーブルに登録すると、[Invoices]テーブルのレコードを受け入れる際に、4Dは対応するレコードを[Customers] テーブルに作成するか尋ねてきます。
    リレートした1レコードがないとき知らせるのチェックを外すと、このダイアログボックスを表示させないようにできます。これはメソッドでリレートした1テーブルのレコードを作成するような場合に行います。
  • ワイルドカード選択リスト
    ワイルドカードフィールドのリストを使用して、 (ユーザーがデータ入力する際リレートしたフィールドにワイルドカード@を入力すると表示される) 値のリストに追加で表示されるフィールドを選択できます。普通、レコードを識別するために適切なフィールドを選択します。
    デー タ入力時にこの機能は以下のように動作します: 4DはユーザーがNテーブルの外部キーフィールドにデータを入力する際、1テーブルの値を参照できるようにします。ユーザーはリレートしたフィールドに標 準のワイルドカード文字 (@) を使用します。そうすると4Dはリレートした1テーブル中で対応する入力を検索します。
    ワイルドカード文字は2つの方法で使用できます: 部分的な入力を補完する、または有効な値のリストを表示する。リストが表示されたら、ユーザーはリスト中から値を選択できます。追加のワイルドカード選択フィールドをリレートしたフィールドに表示できます。
    例 えばユーザーが[Employees]テーブルにレコードを作成しているとします。会社名フィールドにAcme Unlimitedとタイプする代わりに、ユーザーはAc@とタイプし、タブキーを押して次のフィールドに移動できます。@は4Dのワイルドカード文字な ので、この入力は"Acで始まる文字列"を意味します。4Dはリレートしたテーブルでこの入力に一致するレコードを探します。1つだけ見つかると、その データがフィールドに入力され、データ入力順に従い次のフィールドが選択されます。
    次の図はワイルドカードを使用することでどのように動作するかを示しています。

    4Dが複数のレコードを見つけると、見つかった値のリストが表示され、ユーザーはそのうち1つを選択できます。次の図はこのときに表示されるリストです:

    選択する会社をユーザーが見つけやすくするために、リストに追加で表示するフィールドを選択できます。これがワイルドカード選択フィールドで、インスペクターパレットのリレーションプロパティで設定します。
    上の図では会社名のほかに都市名も表示されています。このワイルドカード選択フィールドにより、ユーザーはAccents, Inc.またはAcme Unlimitedの中から、会社がChicagoにあることを思い出して、選択できます。
    [Company]テーブルのすべての会社をリストするには、@だけを入力します。4Dはすべての会社をリスト表示し、ユーザーはその中から目的の会社を選択できます。次の図はすべての会社がリスト表示された様子です:

    レコード選択ウィンドウはサイズ変更できます。

1対Nオプションは逆方向の自動リレーションを制御します。

  • 名前: 1対Nリレーションの名前を入力するエリア (任意)。
    注: 4D Mobileリンクの一部として、この名前はWakanda側のモデル内で対応したリレーショナル属性を作成するために使用されます(詳細は4D Mobile マニュアルのリレーションの使用 を参照して下さい)。この場合、JavsScript のルールに従った名前を使用する必要があります。
  • 手動/自動: このメニューで、1テーブルからNテーブルへリンクされたリレーションの動作モードを設定します。自動オプションを選択すると、自動機能が有効になりま す。例えばアプリケーションモードで[Company]テーブルのレコードが開かれると、自動で対応する[Employees]テーブルのレコードもロードされます。この設定では会社で働く従業員をサブフォームに4Dが自動で表示します。
    デフォルトでは手動オプションが選択されています (自動動作なし)。この点に関する詳細は自動およびマニュアルリレーションを参照してください。リレーションのコンテキストメニューを使用して自動1対Nリレーションを設定することもできます。
  • サブフォームにリレート値を自動代入する: このオプションを使用すると、データ入力中に、Nテーブルの外部キーフィールドに1テーブルの主キーの値を自動で代入させられます。このオプションは1対Nリレーションで自動オプションが選択されている場合にのみ利用価値があります。
    このオプションは、リレートしたNテーブルのサブフォームを持つ1テーブルの詳細フォームでデータを入力する際に影響があります (サブフォームについてはサブフォームとウィジェットを参照)。 サブフォームにリレート値を自動代入するが選択されていると、ユーザーがサブフォームにレコードを追加する際に、リレート値がNテーブルの外部キーフィールドに自動で代入されます。
    [Company]と[Employees]テーブルのリレーションにおいて、[Company]テーブルが1テーブルであり[Employees]はリレートしたNテーブルです。各会社毎に[Company]テーブルに1レコードが作成され、[Employees]テーブルにはその従業員レコードが複数あります。Nテーブルの外部キーフィールドがサブフォームに表示されていれば、このオプションの効果を視認することができます。サブフォーム中でサブレコードが追加されるたびに、自動でフィールドの値がコピーされます。

    このオプションはNテーブルの外部キーフィールドがサブフォームに表示されていなくても動作します。主キーフィールドの値は"内部的に"自動で外部キーフィールドにコピーされます。
    サブフォームにリレート値を自動代入するにチェックが入れられていない場合、作成されたサブレコードは自動では適切にリレートされません。この場合は以下の方法でサブレコードをリンクしなければなりません:  
    • 手作業でリレートのための値を入力する。先の例題においては作成したサブレコードごとに、会社名フィールドに“Howard Battery Co.”を入力します。
    • またはサブレコードを作成する際に
       [TableN]Field1:=[Table1]Field1
      のようなコードを実行します。
    注: Nテーブルのリレートレコードを作成した後に1テーブルの主キー値を変更するような場合、サブフォームにリレート値を自動代入するは効果がありません。このようなケースでは手作業あるいはコードを使用して外部キーの値も変更しなければなりません。

削除制御オプションでは、1テーブルのレコードが削除される際のNテーブルのリレートしたレコード削除のルールを指定します。通常ユーザーはカレントテーブルでないテーブルのレコードを削除することはできません。これは例えば[Employees]テーブルのレコードを削除するためには、まずこのテーブルをカレントテーブルにする必要があることを意味します。デザインモードではテーブルリスト中で目的のテーブルを選択することで、カレントテーブルにできます。

  • リレートしたNレコードを残す: このラジオボタンを選択すると、ユーザーが1テーブルのレコードを削除しても、Nテーブルのレコードはそのまま残されます。結果Nテーブルには1テーブルに対応するレコードが無いレコードが残されることになります。この場合、Nテーブルのレコードがフォームにロードされても、1テーブルから対応するレコードはロードされません。
  • リレートしたNレコードを削除: このラジオボタンを選択すると、ユーザーが1テーブルのレコードを削除すると、4Dは自動でリレートするNテーブルのレコードをすべて削除します。このプロパティを選択すると、1テーブルのレコードが削除されるときにNテーブル中に迷子のレコードが発生することを避けることができます。
  • リレートしたNレコードがあれば削除しない: このラジオボタンを選択すると、Nテーブルにリレートしたレコードがある場合、1テーブルのレコードの削除を禁止します。このプロパティにより、誤ってレコードが削除されることを防ぐことができます。Nテーブルのレコードは、この選択に関わらず削除ができる点に留意してください。

リレートしたNレコードを削除リレートしたNレコードがあれば削除しないラジオボタンはデータベース理論で参照整合性と呼ばれるものを強化します。参照整合性が有効であるとき、4DはリレートされたNテーブル中の各レコードが常に1テーブルの1つのレコードに関連付けられていることを確信することができます。

複数のリレートしたテーブルがある場合、削除制御は各リレーションごとに連鎖して適用されます。例えば以下のようなストラクチャーで考えます。リレートしたNレコードを削除がそれぞれのリレーションで選択されているとき、[Postal Rates]テーブル (1テーブル) からレコードが削除されると、4Dはまず[Company]テーブルから関連するレコードを削除し、次に削除された会社に属する従業員レコードを[Employees]テーブルから削除します。

削除制御設定に矛盾する状態にが発生した場合、4Dは削除を許可しません。例えば[Company]テーブルと[Postal Rates]テーブル間のリレーションにリレートしたNレコードを削除が設定されていて、[Employees]テーブルと[Company]テーブル間にはリレートしたNレコードがあれば削除しないが設定されている場合、削除は行われず、[Company]と[Employees]テーブルに変更はありません。

SQL  

インスペクターパレットのSQLエリアにはSQLランゲージからストラクチャーを操作する際に有用な情報が表示されます。
リレーションの場合エリアにはFOREIGN KEYとREFERENCESプロパティが表示されます。

 
プロパティ 

プロダクト: 4D
テーマ: データベースストラクチャーの作成

 
履歴 

 
ARTICLE USAGE

デザインリファレンス ( 4D v16)
デザインリファレンス ( 4D v16.1)
デザインリファレンス ( 4D v16.3)