4D v16.3データベースの基本 |
||
|
4D v16.3
データベースの基本
データベースの基本
データベースは系統的な情報の集合体です。そのため効率よく使用することができます。電話帳はデータベースの良い例です。他にも辞書、カレンダー、レシピ集などがあります。 データベース上の情報は、レコード形式で構成されます。データベースの各レコードには、人物や物に関する情報のすべてが格納されています。例えば、電話帳の各レコードには、ある人物の名前、住所、電話番号が格納されています。 各レコードにはフィールドがあります。フィールドは特定の情報を格納するために使用します。例えば、電話帳のデータベースでは、1つのフィールドにある人物の名前を格納し、2つ目のフィールドにその人物の住所を格納し、3つ目のフィールドにその人物の電話番号を格納します。すべてのレコードはそれぞれこれらのフィールドを含み、またすべてのレコードはこれらのフィールドに情報を持つことができます。 通常フィールド名は、フィールドに格納される情報を識別します。通常フィールド名はName、Address、あるいはPhoneNumberのようになります。各フィールドはフィールドタイプを持っており、数値、日付、文字など、フィールドに入力できる情報の種類を特定します。各フィールドには特定のタイプのデータが含まれるため、フィールド上の情報を使用して計算や操作を行うことができます。例えば、2つのフィールドの数値を加算することができます。あるフィールドの日付を別のフィールドの日付と比較できます。住所ラベルの最初の行を作成するために、姓 (あるフィールドに保存されている) を名 (別のフィールドに保存されている) を結合できます。 すべてのレコードが集まり、1つのテーブルを構成します。データベースには多くのテーブルを含むことができます。以下の挿絵は、どのようにこれらのコンセプトが関連しているかを表していいます。 情報を役立つものにするため、4Dはレコードを再編成し、情報を基に計算を行なうことができます。例えば4Dはフィールドの総計を計算し、レポートに表示することができます。各営業マンの売上合計を計算し、売上高を比較するグラフを表示することができます。 4Dは1つのデータベースにつき1から32,767までのテーブルを作成できます。これはあなたのニーズに適合したストラクチャーを作成できることを意味します。 いくつかのデータベースは、1つのテーブルのみを使用します。従業員、企業、在庫など1つのカテゴリー情報に対して1つのテーブルを使用します。テーブルには必要な数のフィールドを持つことができます (32,767まで) 。
上の図では、同じタイプのデータがすべての従業員のレコードに対して必要です。データベースは、保存されている従業員の人数に応じて拡大します。 データベースは時に2つ以上のテーブルを使用すると、より効率よくデータを格納し、データへアクセスできるようになります。異なるタイプの情報は別のテーブルに格納するというルールを覚えておくとよいでしょう。 従業員と企業の2つの情報を追跡するデータベースがよい例です。従業員と企業のレコードは別のテーブルに格納されます。企業の所在地が変更された場合、企業のレコードのみを変更する必要があります。その企業の全従業員に対して新しい所在地を入力する必要はありません。 シングルテーブルでは、各個別のレコードに所在地を入力する必要があります。2つのテーブルでは、一度だけ情報を入力する必要があります。企業名が従業員のレコードに入力されると、4Dは企業のレコードを検索し、自動で正しい所在地を表示します。 以下の図は、2つのテーブルがリレートしている複数テーブルのデータベースストラクチャーを表しています。[Employees]Companyフィールドと[Company]Nameフィールドの間に描かれた矢印は、リレーションを示しています: 各従業員のデータは、[Employees] テーブルに保存されています。各企業のデータは、別途[Company] テーブル1に保存されています。 4Dはリレーショナルデータベースアプリケーションと呼ばれています。それは、複数のテーブルを用い、さまざまな方法でそれらのテーブルを関連付けるからです。例えば[Company] テーブルを検索する[Employees] テーブルのレポートを作成し、各従業員の会社に関する情報を自動的に表示し印刷できます。テーブル間のリレーションにより、各テーブルの情報がレポートで使用できるようになります。 また、リレートされたテーブルにデータを直接入力できます。例えば請求書データベースで、請求書画面内から[LineItems] テーブルに情報を書き込むことができます。更に4Dランゲージを使用してリレートされたテーブルにデータを書き込むこともできます。 時には、テーブルが直接リレートされていない複数テーブルのストラクチャーを必要とすることがあります。例えば連絡先リストや経費テーブルなどのさまざまな情報を1つのデータベースに格納させると便利な場合があります。 4Dでは各データベース上に32,767個までのテーブルを作成することができます。1つのテーブルには32,767個までのフィールドを作成することができます。複数テーブルを使用すると、事実上ほぼあらゆるタイプのデータベースストラクチャーを作成できます。 通常複数のテーブルが情報を共有するストラクチャーを作成する必要があります。例えば従業員と彼らが働く会社について追跡するデータベースを作成するケースについて考えてみましょう。 データベースストラクチャーには以下の図のように、従業員の情報を格納する[Employees]テーブルと会社の情報を格納する[Companies]テーブルが含まれます。 各々分割されたテーブルに格納された情報だけでは、情報追跡のニーズを満たすことはできません。 [Employees]テーブルのレコードを表示する際、その従業員が働く会社の情報も表示する必要があります。また[Companies]テーブルを表示する際には、その会社で働く全従業員の情報を表示する必要があります。 テーブルをリレートすると以下のことが可能となります:
下の図ではストラクチャーエディターで[Employees]テーブルと[Companies]テーブル間にひかれたリレーションを示しています: [Employees]テーブルには従業員ごとに1つのレコードがあります。[Companies]テーブルには会社ごとに1つのレコードがあります。 2つのテーブル間のリレーションを使用すれば両サイドのテーブルから情報にアクセス、入力、変更、および削除を行えます。例えば:
リレートしたフィールドとは、2つのテーブルをリレーションによって結び付けるフィールドです。リレートしたフィールドを使用することで、リレートしたテーブルの情報を表示できます。 外部キーフィールドのそれぞれの値は、リレートした他のテーブルの主キーフィール ドの1つの値と等しくなります。この例題では、[Employees]の外部キーフィールドの値は、[Companies]の主キーフィールドの1つの値 と完全に一致します。外部キーの値は重複不可ではありません (同じ会社の中で複数の従業員が働くことができるからです)。 4D v14以降、データベースのそれぞれのテーブルにおいて、プライマリーキーが明示的に定義されなければなりません。プライマリーキーフィールドの値は通常(4Dが生成する一連番号または開発者が記述したコードが生成するキーを割り当てることで)データベースによって自動的に割り当てられます。このような方法はキーフィールドがユニークであることを保証します。例えば [Companies]テーブルの主キーが会社名ではなく一連番号であれば、ユーザーは同じ会社名であっても所在地が異なる複数の会社を入力することが可 能となります。また会社名が変更になった場合も、2つのテーブル間のリレーションを壊すことなく、データベースに変更を行うことができます。 ユーザーが主キーフィールドに値を入力することができる設計の場合、 フィールドプロパティ にて重複不可と更新不可属性の両方をチェックし、最初の入力で重複する値がないことを検証し、後でこの値が変更されないように設定すべきです。更新不可属性を使用しない場合、主キーフィール ドの値が変更されたときに、リレートしたテーブル中でレコードが迷子にならないよう、別途手当てをする必要があります。 リレーションが設 定されると、あるテーブルで作業をしている間に、リレートしたテーブルの値を読み書きすることができるようになります。例えば従業員レコードに会社名を入 力すると、4Dは[Companies]テーブル中でそのレコードを検索し、その従業員レコードに会社の所在地と電話番号を表示します。会社レコードを表 示しているとき、4Dはその会社で働いている従業員を[Employees]テーブルから検索し、会社レコードに表示します。 これらのリ レーションは自動で実行できます (プログラムは必要ありません)。あるいはマニュアルリレーションを選択することもできます。後者の場合、リレートしたレコードのロードやアンロードはメ ソッドを使用して行い、リレートしたレコードの作成や変更、削除を制御できます。マニュアルリレーションは、2つ以上のテーブルが1つのテーブルにリレー トされているなど複雑なストラクチャーで利用されます。またリレートしたレコードのロードやアンロードを制御したい場合にも使用されます。自動またはマ ニュアルリレーションどちらを使用するかは、リレーションのプロパティで設定できます (リレーションプロパティ参照)。
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
デザインリファレンス ( 4D v16) |