Ms-access-relating-data

提供:Dev Guides
移動先:案内検索

MS Access-データの関連付け

この章では、関連データの基本を理解します。 異なるデータ間の関係を説明する前に、それが必要な理由を確認しましょう。 すべてが正規化に戻ります。

正規化

データベースの正規化、または単に正規化は、データの冗長性を最小限に抑えるために、リレーショナルデータベースの列(属性)とテーブル(関係)を整理するプロセスです。 これは、データを複数のテーブルに分割して、全体的なパフォーマンス、整合性、および寿命を改善するプロセスです。

  • 正規化は、データベース内のデータを整理するプロセスです。
  • これには、データの保護と、冗長性と一貫性のない依存関係を排除してデータベースの柔軟性を高めるように設計されたルールに従って、テーブルを作成し、それらのテーブル間の関係を確立することが含まれます。

データを含む次の表を見てみましょうが、問題はこのデータが非常に冗長であるため、データ入力中にタイプミスや一貫性のないフレージングが発生する可能性が高くなることです。

CustID Name Address Cookie Quantity Price Total
1 Ethel Smith 12 Main St, Arlington, VA 22201 S Chocolate Chip 5 $2.00 $10.00
2 Tom Wilber 1234 Oak Dr., Pekin, IL 61555 Choc Chip 3 $2.00 $6.00
3 Ethil Smithy 12 Main St., Arlington, VA 22201 Chocolate Chip 5 $2.00 $10.00

この問題を解決するには、次の3つの表に示すように、データを再構築し、複数のテーブルに分割して、これらの冗長性の一部を排除する必要があります。

3つのテーブル

ここでは、Customers用のテーブルが1つあり、2 ^ nd ^テーブルはOrders用、3 ^ rd ^テーブルはCookie用です。

ここでの問題は、データを複数のテーブルに分割するだけでは、あるテーブルのデータが別のテーブルのデータにどのように関係しているかを知るのに役立たないことです。 複数のテーブルのデータを接続するには、 Orders テーブルに外部キーを追加する必要があります。

関係の定義

リレーションシップは、キー列のデータを一致させることで機能します。通常、両方のテーブルで同じ名前の列になります。 ほとんどの場合、関係は1つのテーブルの主キーと一致します。これにより、各行に一意の識別子が提供され、他のテーブルの外部キーにエントリがあります。 テーブル間の関係には3つのタイプがあります。 作成される関係のタイプは、関連する列の定義方法によって異なります。

ここで、3種類の関係を見てみましょう-

1対多の関係

1対多の関係は、最も一般的なタイプの関係です。 このタイプの関係では、テーブルAの行はテーブルBの多くの一致する行を持つことができますが、テーブルBの行はテーブルAの一致する行を1つだけ持つことができます。

たとえば、CustomersテーブルとOrdersテーブルには1対多の関係があります。各顧客は多くの注文を出すことができますが、各注文は1人の顧客からのみ行われます。

多対多の関係

多対多の関係では、テーブルAの行はテーブルBの多くの一致する行を持つことができ、逆もまた同様です。

そのような関係を作成するには、 junction table と呼ばれる3番目のテーブルを定義します。このテーブルの主キーは、テーブルAとテーブルBの両方からの外部キーで構成されます。

たとえば、CustomersテーブルとCookiesテーブルには、これらの各テーブルからOrdersテーブルへの1対多の関係で定義される多対多の関係があります。

一対一の関係

1対1の関係では、テーブルAの行はテーブルBの一致する行を1つしか持つことができません。逆も同様です。 両方の関連列が主キーであるか、一意の制約がある場合、1対1の関係が作成されます。

この方法で関連するほとんどの情報はすべて1つのテーブルにあるため、このタイプの関係は一般的ではありません。 あなたは1対1の関係を使用するかもしれません-

  • テーブルを多くの列に分割します。
  • セキュリティ上の理由から、テーブルの一部を分離します。
  • 寿命が短く、テーブルを削除するだけで簡単に削除できるデータを保存します。
  • メインテーブルのサブセットにのみ適用される情報を保存します。