多対多 (データモデル)

サムネイル|250x250ピクセル|ジャンクションテーブルとの1対多の関係のペアとしての著者と本の多対多の関係
システム解析では、多対多 (英: many-to-many) の関係は、2つの実体実体関連モデルを参照すること。 AとBの間の関係を指すカーディナリティの一種であり、AにはBに多くの子が存在する親インスタンスが含まれる場合があり、その逆も同様である。

たとえば、Aを著者、Bを本と考えてみよう。著者は複数の本を書き、本は複数の著者によって書かれる。

リレーショナルデータベース管理システムでは、このような関係は通常、連想テーブル（もしくは結合テーブル、ジャンクションテーブル、相互参照テーブル）の方法で実装される。つまり、たとえば AB は2つの1対多の関係A→ ABとB→ ABを通して実装される。この場合、ABの論理主キーは、2つの外部キー（つまり、AとBの主キーのコピー）から形成される。

CakePHPやRuby on RailsなどのWebアプリケーションフレームワークでは、論理モデルデータベーステーブルによって表されるエンティティタイプ間の多対多の関係は、HasAndBelongsToMany（HABTM）リレーションシップと呼ばれることがある3.7.6.5 hasAndBelongsToMany (HABTM) . Cakephp.org。 

 関連項目 

 連想エンティティ
 1対1 (データモデル)
 1対多（データモデル）

 脚注 

Category:データモデリング