テーブルのリレーションシップの種類 (Visual Database Tools)
リレーションシップは、キー列のデータを照合することで機能します。通常、キー列は両方のテーブルに存在する同じ名前の列です。ほとんどの場合、リレーションシップにより、あるテーブルの主キーと他のテーブルの外部キーのエントリが照合されます。主キーは、各行の固有の識別子になります。たとえば、titles
テーブルの title
_id
列 (主キー) と sales
テーブルの title
_id
列 (外部キー) の間にリレーションシップを作成することで、本の売上高と売れた特定の書名を関連付けることができます。
テーブル間のリレーションシップには、3 つの種類があります。作成されるリレーションシップの種類は、関連する列の定義方法によって決まります。
- 一対多リレーションシップ
- 多対多リレーションシップ
- 一対一リレーションシップ
一対多リレーションシップ
一対多リレーションシップは、最も一般的なリレーションシップの種類です。一対多リレーションシップでは、テーブル A の 1 つの行はテーブル B の複数の行と一致してかまいませんが、テーブル B の 1 つの行と一致できるテーブル A の行は 1 つだけです。たとえば、publishers
テーブルと titles
テーブルの関係は一対多リレーションシップです。つまり、1 つの出版社は複数の書籍を発行しますが、1 つの書籍はただ 1 つの出版社からしか出版されません。
関係する列のうち 1 つだけが主キーの場合、または 1 つだけに UNIQUE 制約が設定されている場合は、一対多リレーションシップを作成します。
一対多リレーションシップの主キーの側は、鍵の記号で示されます。リレーションシップの外部キーの側は、無限大の記号で示されます。
多対多リレーションシップ
多対多リレーションシップでは、テーブル A の 1 つの行とテーブル B の複数の行が一致でき、逆の関係も可能です。多対多リレーションシップは、結合テーブルと呼ばれる第 3 のテーブルを定義することで作成します。結合テーブルの主キーは、テーブル A とテーブル B の両方の外部キーによって構成されます。たとえば、authors
テーブルと titles
テーブルの間には多対多リレーションシップの関係があり、それぞれのテーブルから titleauthors
テーブルに対する一対多リレーションシップによって定義されています。titleauthors
テーブルの主キーは、au_id
列 (authors
テーブルの主キー) と title_id
列 (titles
テーブルの主キー) を組み合わせたものです。
一対一リレーションシップ
一対一リレーションシップでは、テーブル A の 1 つの行はテーブル B の 1 つの行としか一致することができず、テーブル B からテーブル A に対しても同じ関係が成立します。一対一リレーションシップは、関連する列が両方とも主キーの場合、または両方に UNIQUE 制約が設定されている場合に作成されます。
このような方法で関連しているほとんどの情報は 1 つのテーブルに格納されるため、この種のリレーションシップは一般的ではありません。一対一リレーションシップは次のような場合に使用します。
- 列の数が多いテーブルを分割する。
- セキュリティ上の理由からテーブルの一部を分離する。
- 保存期間が短く、単にテーブルを削除することで簡単に削除できるようなデータを格納する。
- 主テーブルのサブセットに対してだけ適用される情報を格納する。
一対一リレーションシップの主キーの側は、鍵の記号で示されます。外部キーの側も、鍵の記号で示されます。
参照
概念
参照整合性の概要 (Visual Database Tools)
その他の技術情報
リレーションシップの使用 (Visual Database Tools)
キーの使用 (Visual Database Tools)