MSAccess-データの関連付け
この章では、関連データの基本を理解します。異なるデータ間の関係について話し、作成する前に、なぜそれが必要なのかを確認しましょう。それはすべて正規化に戻ります。
正規化
データベースの正規化、または単に正規化は、データの冗長性を最小限に抑えるために、リレーショナルデータベースの列(属性)とテーブル(関係)を編成するプロセスです。これは、データを複数のテーブルに分割して、全体的なパフォーマンス、整合性、および寿命を向上させるプロセスです。
正規化は、データベース内のデータを整理するプロセスです。
これには、データを保護し、冗長性と一貫性のない依存関係を排除することでデータベースをより柔軟にするように設計されたルールに従って、テーブルを作成し、それらのテーブル間の関係を確立することが含まれます。
データを含む次の表を見てみましょう。ただし、問題は、このデータが非常に冗長であり、データ入力中にタイプミスや一貫性のないフレージングが発生する可能性が高くなることです。
CustID | 名前 | 住所 | クッキー | 量 | 価格 | 合計 |
---|---|---|---|---|---|---|
1 | エセル・スミス | 12 Main St、Arlington、VA 22201 S | チョコチップ | 5 | $ 2.00 | $ 10.00 |
2 | トムウィルバー | 1234 Oak Dr.、Pekin、IL 61555 | チョコチップ | 3 | $ 2.00 | $ 6.00 |
3 | Ethil Smithy | 12 Main St.、Arlington、VA 22201 | チョコチップ | 5 | $ 2.00 | $ 10.00 |
この問題を解決するには、次の3つの表に示すように、データを再構築して複数のテーブルに分割し、それらの冗長性の一部を排除する必要があります。
ここでは、顧客用のテーブルが1つあり、2つ目は注文用、3つ目はCookie用です。
ここでの問題は、データを複数のテーブルに分割するだけでは、あるテーブルのデータが別のテーブルのデータとどのように関連しているかを判断するのに役立たないことです。複数のテーブルのデータを接続するには、外部キーをに追加する必要がありますOrders テーブル。
関係の定義
関係は、キー列のデータ、通常は両方のテーブルの同じ名前の列を照合することによって機能します。ほとんどの場合、関係は、各行に一意の識別子を提供する1つのテーブルの主キーと、他のテーブルの外部キーのエントリと一致します。テーブル間の関係には3つのタイプがあります。作成される関係のタイプは、関連する列がどのように定義されているかによって異なります。
ここで、3つのタイプの関係を調べてみましょう-
1対多の関係
1対多の関係は、最も一般的なタイプの関係です。このタイプの関係では、テーブルAの行はテーブルBの多くの一致する行を持つことができますが、テーブルBの行はテーブルAの1つの一致する行のみを持つことができます。
たとえば、CustomersテーブルとOrdersテーブルには1対多の関係があります。各顧客は多くの注文を行うことができますが、各注文は1人の顧客からのみ行われます。
多対多の関係
多対多の関係では、テーブルAの行はテーブルBの多くの一致する行を持つことができ、その逆も可能です。
このような関係は、と呼ばれる3番目のテーブルを定義することによって作成します。 junction table、その主キーはテーブルAとテーブルBの両方からの外部キーで構成されます。
たとえば、CustomersテーブルとCookiesテーブルには、これらの各テーブルからOrdersテーブルへの1対多の関係によって定義される多対多の関係があります。
1対1の関係
1対1の関係では、テーブルAの行にテーブルBの一致する行を1つだけ含めることができ、その逆も同様です。関連する両方の列が主キーであるか、一意の制約がある場合、1対1の関係が作成されます。
このタイプの関係は一般的ではありません。この方法で関連するほとんどの情報がすべて1つのテーブルにあるためです。あなたは1対1の関係を使用するかもしれません-
- テーブルを多くの列に分割します。
- セキュリティ上の理由から、テーブルの一部を分離します。
- 有効期間が短く、テーブルを削除するだけで簡単に削除できるデータを保存します。
- メインテーブルのサブセットにのみ適用される情報を格納します。