DB設計をする際、テーブル同士には関連(リレーション)というものが存在します。リレーションはデータモデリングを進める上で必要な基礎知識になるのでひとつずつ覚えていきましょう。
#一対多
まずはじめに一対多についてです。
ECサイトのユーザーテーブルと注文テーブルを例にとって考えてみましょう。
ECサイトでは、1ユーザーに対して注文は「複数」存在し、1注文に対してユーザーは「1」つ存在することになります。
このようなリレーションを一対多と呼ぶことができます。
#多対多
次に多対多です。
履修登録システムで生徒テーブルと科目テーブルがあった時、1生徒に対して科目は「複数」存在します。
そして同じように1科目に対して生徒も「複数」存在します。
この時、生徒テーブルと科目テーブルの関係は多対多であると言えます。
この場合、科目テーブルには登録している生徒が持つ同じ科目データが重複するので、冗長性が残ります。
この冗長性は、中間テーブルを設けて正規化することによって解決できます。
#一対一
最後に一対一のリレーションです。
これは同じ主キーを扱っていて、本来分ける必要のないテーブルを分けるような時のリレーションです。
ユーザーテーブルとフリガナテーブルがあるとして、双方のデータは一対一に対応しています。
また主キーが同一なので、同じテーブルにまとめることができます。
このリレーションは特殊で実際にはあまり用いられることが少ないようです。