一対多関係では、関連先テーブルの各行が関連先テーブルの多くの行に関連づけることができます。 これにより、頻繁に使用される情報は、あるテーブルに一度だけ保存し、他のすべてのテーブルで何度も参照することができます。 テーブルAとテーブルBの1対多の関係では、テーブルAの各行はテーブルBの0、1または多くの行にリンクされます。
1対多の関係を説明するために、以下のサンプルテーブル設計とデータを考えてみましょう。
著者テーブル
column |
|
author_id |
primary key |
lastname |
|
firstname |
|
books table
column |
|
book_id |
主キー |
title |
|
author_id |
外部キー- |
|
outside key authors テーブルの author_id へのリンク |
author_id |
lastname |
firstname |
0001 |
henry |
john |
0002 |
smith |
ADAM |
0003 |
JOHNSON |
MARY |
0004 |
Bailey |
Harry |
book_id |
title |
author_id |
の順です。
0001 |
データベース入門 |
0001 |
0002 |
データウェアハウス構築 |
0001 |
0003 |
Teach myself SQL |
0001 |
0004 |
101 exotic recipes |
0002 |
0005 |
Visiting europe |
0004 |
authors テーブル内の各行には 0.0 が関連していますことに注意してください。 1行、またはbooksテーブルの多くの行になります。 これは直感的に理解できます。なぜなら、一人の著者は0冊、1冊、あるいはそれ以上の本を書くことができるからです。 上の例では、John Henryは3冊、Adam Smithは1冊、Mary Johnsonは1冊、Harry Baileyが1冊書いています。
注意深く見ると、上のauthorsテーブルとbooksテーブルの関係は、1対多の関係になっていることが分かります。 裏を返せば、booksテーブルとauthorsテーブルの関係は多対一の関係です。
以下も参照してください。 一対一の関係と多対一の関係
参照