一対多関係では、関連先テーブルの各行が関連先テーブルの多くの行に関連づけることができます。 これにより、頻繁に使用される情報は、あるテーブルに一度だけ保存し、他のすべてのテーブルで何度も参照することができます。 テーブル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テーブルの関係は多対一の関係です。
以下も参照してください。 一対一の関係と多対一の関係
参照