4D v14.3

リレーションについて

ホーム

 
4D v14.3
リレーションについて

リレーションについて  


 

 

この章のコマンド、特にRELATE ONERELATE MANYは自動リレートおよび自動でないリレートを設定、管理するものです。この章のコマンドを使用する前に、テーブル間のリレートの作成について4D Design Referenceマニュアルを参照してください。

2つのテーブルは自動リレートで関連付けることができます。一般的にテーブルの自動リレートは、リレート先テーブルのレコードをロード、または選択するために使用します。リレートを使用することで多くの処理を実行することができます。

以下のような処理が含まれます:

  • データ入力
  • 出力フォームによる画面上のリスト出力
  • 帳票の印刷
  • セレクションに対する検索、ソート、フォーミュラでの更新

性能を最大限に引き出すために、4Dは1レコードがテーブルのカレントレコードになる場合にのみ自動リレーションを実行します。上記のリストに示した各操作を行ったときに、以下の原則に従って、リレートレコードがロードされます:

  • リレーションがリレートしたテーブルの1つのレコードのみを選択する場合、そのレコードはディスクからロードされます。
  • リレーションがリレートしたテーブルの複数のレコードを選択する場合、新しいレコードセレクションがそのテーブルに作成され、セレクション内の先頭レコードがディスクからロードされます。

以下の図のテーブルストラクチャを例にとってみましょう。[Employees]テーブルをデータ入力のためにロードした場合は、[Companies]テーブルからリレート先レコードが選択され、ロードされます。同様に[Companies]テーブルをロードしてデータ入力用に表示した場合には、[Employees]テーブルから関連するレコードが選択されます。

上図において、[Employees]テーブルはnテーブルとして参照され、[Companies]テーブルは1テーブルとして参照されます。これを解かりやすくするために、多くの人が1つの会社に関連しており、各会社には多くの人がいると考えてください。

同様に[Employees]Companyフィールドはnフィールドとして参照され、[Companies]Nameフィールドは1フィールドとして参照されます。

リレートフィールドが、いつもユニーク(重複しない)とは限りません。例えば、[Companies]Nameフィールドは同じ値を含んだ会社のレコードをいくつも持っているかもしれません。こういう場合は、常にユニークであるリレート先テーブルの別のフィールドでリレート作成することにより、簡単に処理することができます。このようなフィールドの例として、会社IDフィールドがあります。

以下の表に掲げたコマンドは、コマンドの実行中にリレート先のリレートレコードをロードするために自動リレートを使用します。これらのコマンドはすべてn対1の自動リレートを使用します。1対nの欄が○になっているコマンドのみが自動の1対nリレートに対応します。

コマンド1対n
ADD RECORD O
ADD SUBRECORD X
APPLY TO SELECTION X
DISPLAY SELECTION X
EXPORT DIF X
EXPORT SYLK X
EXPORT TEXT X
EXPORT DATA X
MODIFY RECORD O
MODIFY SUBRECORD X
MODIFY SELECTION O (データ入力中)
ORDER BY X
ORDER BY FORMULA X
QUERY BY FORMULA O
QUERY SELECTION O
QUERY O
PRINT LABEL X
PRINT SELECTION O
QR REPORT X
SELECTION TO ARRAY X
SELECTION RANGE TO ARRAY X

自動リレートとは、コマンドがレコードをロードするたびに、そのテーブルに関連する1つまたは複数のレコードを自動的に選択するという意味ではありません。レコードをロードするコマンドを使用した後で、リレート先データにアクセスする必要がある場合、RELATE ONERELATE MANYを使用して、リレート先レコードを明示的に選択することが必要なケースもあります。

前ぺ-ジの表に掲げたコマンドの一部(QUERYコマンド等)は、処理の終了後にカレントレコードをロードします。この場合、ロードされたレコードは、リレート先の関連するレコードを自動的には選択しません。ここでも、リレート先データにアクセスする必要がある場合、RELATE ONERELATE MANYを使用してリレート先レコードを明示的に選択する必要があります。

 
プロパティ 

プロダクト: 4D
テーマ: リレーション

 
参照 

CREATE RELATED ONE
GET AUTOMATIC RELATIONS
GET FIELD RELATION
OLD RELATED MANY
OLD RELATED ONE
RELATE MANY
RELATE MANY SELECTION
RELATE ONE
RELATE ONE SELECTION
SAVE RELATED ONE
SET AUTOMATIC RELATIONS
SET FIELD RELATION

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v12.4)
ランゲージリファレンス ( 4D v11 SQL Release 6)
ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v13.5)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)