関係データベース(relational database)
データを行と列からなる表の形で持ち、表どうしを値でつなげるデータベース。いま最も広く使われている形式。
もう少し詳しい説明
関係データベースは、データを行と列からなる表の形で持つデータベースです。リレーショナルデータベースとも呼び、RDBと略します。
いま業務で使われているデータベースの大半がこの形です。
用語が2組ある
同じものに、理論上の言い方と、実務上の言い方があります。試験ではどちらも出ます。
| 理論上の言い方 | 実務上の言い方 | 中身 |
|---|---|---|
| 関係(リレーション) | 表(テーブル) | 全体 |
| 組(タプル) | 行(レコード) | 横1本 |
| 属性(アトリビュート) | 列(カラム、フィールド) | 縦1本 |
| 定義域(ドメイン) | — | その列に入れてよい値の範囲 |
| 次数 | — | 列の数 |
| 基数 | — | 行の数 |
「次数は列、基数は行」は、そのまま出題されます。
つなぎ方が、値である
ここが関係データベースの、いちばん大事なところです。
表どうしを結び付けているのは、共通する列に同じ値が入っていることだけです。あらかじめ「この行とこの行をつなぐ」という線を張っているわけではありません。
社員表の「部署コード」と、部署表の「部署コード」に同じ値が入っていれば、その2行はつながります。外部キーが指しているのは、この値です。
値でつなぐことの意味は、関係データベースより前に主流だった2つの方式と比べると見えます。1960年代から80年代にかけて使われていた、階層型データベースと網型データベースです。
| 方式 | つなぎ方 | 組合せを変えたいとき |
|---|---|---|
| 階層型 | 親から子へ、木の形 | 構造を作り直す |
| 網型(ネットワーク型) | ポインタ(そのデータが置いてある場所を指し示す印)を張っておく | ポインタを張り直す |
| 関係型 | 共通する列の値 | 問合せを書き換えるだけ |
階層型や網型では、取り出し方を先に決めてからデータを入れます。あとで別のつなぎ方をしたくなると、構造ごと作り直すことになります。
関係型は、値さえそろっていればあとからどんな組合せでもつなげます。何に使うかを先に決めなくてよい、という点が、業務で広く使われている理由です。
表に入れるときの決まり
関係データベースの表には、守る決まりがあります。
- 行に順番はない … 「3行目」という指定はできません。ほしい行は条件で指す
- 列に順番はない … 列は名前で指します
- 同じ行が2本あってはならない … すべての列の値がそろって同じ、という行を2本は持てません。1つの列だけが同じなのは構いません。主キーがこれを保証します
- 1つのマスに入るのは1つの値 … 「商品名」の欄に3つ並べて書くことはできません
1つのマスに1つの値へ直す
4つ目の決まりだけは、守られていない表を先に見かけることが多いところです。たとえば、1回の注文を1行にまとめて書いた表です。
| 注文番号 | 注文者 | 商品名 |
|---|---|---|
| 1 | 佐藤 | 鉛筆、消しゴム、定規 |
「商品名」の欄に3つ並んでいます。この形では、「消しゴムを買った人を探す」ことも、「鉛筆が何本売れたかを数える」こともできません。欄の中身が1つの文字列なので、機械から見れば「鉛筆、消しゴム、定規」という1つの値です。
そこで、1つのマスに1つの値になるように、行を分けます。
| 注文番号 | 注文者 | 商品名 |
|---|---|---|
| 1 | 佐藤 | 鉛筆 |
| 1 | 佐藤 | 消しゴム |
| 1 | 佐藤 | 定規 |
行は増えますが、どのマスにも値が1つずつ入りました。この直し方が正規化の第1段階で、こうなった表を第1正規形と呼びます。
「行に順番はない」は見落とされやすいところです。画面に並んで見えるのは、取り出すときに並べ替えているからで、表そのものに順番はありません。並び順がほしければ、SQLで明示します。
DBMSが引き受けていること
関係データベースを動かす仕掛けをDBMS(データベース管理システム)と呼びます。
表の形でデータを持つだけなら、ファイルでもできます。DBMSが引き受けているのは、そこから先です。
| 引き受けていること | なければ起きること |
|---|---|
| 排他制御 | 2人が同時に書き換えて、片方が消える |
| トランザクション | 途中で止まって、中途半端な状態が残る |
| 障害回復 | 壊れたら戻せない |
| 機密保護 | 誰でも全部見られる |
| インデックス | 件数が増えるほど遅くなる |
試験では、データの持ち方(関係モデル)と、DBMSが提供する機能が別の問題として出ます。混ざらないようにしてください。
試験ではこう出る
科目A(旧・午前)では、用語の言いかえがよく出ます。「組」「属性」「次数」「基数」が、行・列・列の数・行の数のどれにあたるかです。
階層型・網型との違いも出ます。「ポインタで関係を表す」と書いてあれば網型、「木構造(1つの根から枝が分かれていくデータの持ち方)でたどる」なら階層型、「共通の項目の値で関係を表す」なら関係型です。
「行に順番がない」を突いた選択肢も出ます。「先頭の行から順に処理する」といった記述は誤りになります。
応用情報では、関係モデルそのものより、正規化・SQL・トランザクションの形で問われます。このページは、その土台にあたります。
関連する用語
- 主キー
- 表の中の行を1つに決めるための列。関係データベースの土台
- 外部キー
- 別の表の主キーを指す列。表どうしをつなぐのはこの値
- 正規化
- 表の持ち方を整える手順。重複と矛盾をなくす
- 実表と導出表
- 本体として保存している表と、問合せの結果として作られる表
- SQLの句
- 関係データベースを操作する言語。表から表を作る
ミニクイズ
関係データベースの特徴として、最も適切なものはどれか。
正解は 2番:表どうしのつながりを、共通する列の値によって表す
関係データベースでは、表どうしを結び付けるのは「共通する列に同じ値が入っていること」です。あらかじめ経路を作っておくのではないので、必要になったときに好きな組合せでつなげます。ポインタでつなぐのは網型(ネットワーク型)、親から子へ木の形にたどるのは階層型で、どちらも関係データベースより前に使われていた方式です。鍵と値の組だけで持つのはキーバリュー型と呼ばれるNoSQLの一種で、表の構造を持ちません。
この分野をまとめて解く → データベースのミニテスト(全35問)
最終更新:2026-10-20