次の方法で共有


テーブルのリレーションシップの種類

更新 : 2007 年 11 月

リレーションシップは、キー列のデータを一致させることで機能します。通常、キー列は両方のテーブルに存在する同じ名前の列です。ほとんどの場合、リレーションシップにより、あるテーブルの主キーとほかのテーブルの外部キーのエントリが一致します。主キーは、各行の固有の識別子になります。たとえば、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 つのテーブルに格納されるため、この種のリレーションシップは一般的ではありません。一対一リレーションシップは次のような場合に使用します。

  • 列の数が多いテーブルを分割する。

  • セキュリティ上の理由からテーブルの一部を分離する。

  • 保存期間が短く、単にテーブルを削除することで簡単に削除できるようなデータを格納する。

  • 主テーブルのサブセットに対してだけ適用される情報を格納する。

一対一リレーションシップの主キーの側は、鍵の記号で示されます。外部キーの側も、鍵の記号で示されます。

参照

概念

参照整合性の概要

その他の技術情報

リレーションシップの使用

キーの使用