関係モデルとは(全体像)
関係モデルとは、データを「表(行と列)」の形で表す、データベースのモデルのことだ。関係データベース(RDB)の土台になっている。
表は、次の3つで成り立つ。
- 表(テーブル) … データ全体のまとまり
- 行(レコード) … 1件分のデータ(横の並び)
- 列(カラム) … データの項目(縦の並び)
ここでカギになるのが、キーだ。
- 主キー … 各行を一意に見分けるための列。同じ値が重複せず、空(NULL)にできない。1つの表に1つ。
- 外部キー … 他の表の主キーを参照して、表どうしをつなぐ列。
クラスの名簿でたとえると分かりやすい。主キーは「出席番号」(一人ひとりを重複なく見分ける)。外部キーは、別の表から「この出席番号の生徒」を指すための参照だ。
ここで一番のポイント。主キーは、各行を一意に見分け、空(NULL)にできない。「主キーは空でもよい」と思い込むと誤りになる。
詳しく:主キーと外部キーの違い
ここが心臓部。キーを表で押さえよう。
関係モデルのキー
| キー | やさしい意味 |
|---|---|
| 主キー | 各行を一意に見分ける列(NULL不可・1表に1つ) |
| 外部キー | 他の表の主キーを参照して、表どうしをつなぐ |
| 複合キー | 複数の列を組み合わせて1つの主キーにする |
主キーと外部キーは、役割が違う。ここで一番のポイント。外部キーは、他の表の主キーを参照するものだ。主キーが「自分の表で各行を見分ける」のに対し、外部キーは「他の表とつなぐ」役目。「外部キーと主キーは同じもの」と思い込むと誤りになる。なお、複数の列を組み合わせて1つの主キーにする複合キーもある。
わかりやすく言い換えると
身近なたとえで整理しよう。
関係モデルは、「データを表(行と列)の形で表すモデル」のイメージ。表の集まりでデータを管理する。
主キーは、「出席番号のように、各行を重複なく見分ける列(空にできない)」こと。要するに、行を一意に特定する。
外部キーは、「別の表から、その行を指すための参照。表どうしをつなぐ」こと。つまり、主キーが自分の表用、外部キーが表をつなぐ用、と役割が違う。
試験のツボ
🔴 一番出る:主キー
①各行を一意に見分けるための列
②空(NULL)にできない、1つの表に1つ
🔴 次に出る:外部キー
①他の表の主キーを参照する列
②表どうしをつなぐ役目(主キーとは役割が違う)
🟡 押さえると安定:構成と複合キー
①表(テーブル)・行(レコード)・列(カラム)で構成
②複数の列を組み合わせる複合キーもある
よくある間違い
①「主キーは、空(NULL)にしてもよい」→ ✗ 主キーは各行を一意に見分けるため、空(NULL)にできない。
②「外部キーと主キーは、同じものだ」→ ✗ 主キーは自分の表で各行を見分ける列、外部キーは他の表の主キーを参照してつなぐ列。役割が違う。
③「関係モデルは、データを表ではなく、文章で表すモデルだ」→ ✗ 関係モデルは、データを表(行と列)の形で表すモデル。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(関係モデルの正体)
関係モデルに関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- データを、表(行と列)の形で整理して表すモデルのことである
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 2 です。
関係モデルは、データを、表(行と列)の形で表すモデルなのです。関係データベース(RDB)の土台なります。
選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✓ | データを表の形で表すモデルで正しい |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(主キー)
主キーに関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、使われるものだとされている
- 取引先へ請求書を郵送するときだけ、使われるものだとされる
- 主キーは、空(NULL)にしてもよいものだとされているのである
- 各行を一意に見分ける列で、空(NULL)にできず1表に1つだ
解答は 4 です。
主キーは、各行を一意に見分ける列で、空(NULL)にできず1表に1つなのです。出席番号のように、重複なく見分けるなります。
選択肢1の給与、選択肢2の請求書、選択肢3の「空にしてもよい」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✗ | 請求書のときだけではない |
| 3 | ✗ | 主キーは空(NULL)にできない |
| 4 | ✓ | 一意に見分け・NULL不可・1表に1つで正しい |
オリジナル問題3(外部キー)
外部キーに関する次の記述のうち、最も適切なものはどれか。
- 他の表の主キーを参照して、表どうしをつなぐための列である
- 社員の給与を計算するときだけ、使われるものだとされている
- 取引先へ請求書を郵送するときだけ、使われるものだとされる
- 外部キーと主キーは、まったく同じものだとされているのである
解答は 1 です。
外部キーは、他の表の主キーを参照して、表どうしをつなぐ列なのです。主キーとは役割が違うなります。
選択肢2の給与、選択肢3の請求書、選択肢4の「主キーと同じ」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 他表の主キーを参照してつなぐで正しい |
| 2 | ✗ | 給与計算のときだけではない |
| 3 | ✗ | 請求書のときだけではない |
| 4 | ✗ | 外部キーと主キーは役割が違う |
まとめ
押さえどころ
- 🔴 関係モデル = データを表(行と列)の形で表すモデル。表・行(レコード)・列(カラム)で構成。
- 🔴 主キー = 各行を一意に見分ける列。空(NULL)にできず、1つの表に1つ。
- 🟡 外部キー = 他の表の主キーを参照して、表どうしをつなぐ列。主キーとは役割が違う。
次に学ぶ
- データベース ── データを整理してためるしくみ。関係モデルは、その代表的な考え方。
- SQL ── 関係データベースを操作する言語。主キーや外部キーを使って、データを扱う。
執筆: SikakuQuest編集部