FE EXAM

関係データベース(RDB)

データを行と列からなる表形式で管理し、表同士を関連づけるデータベース。

DIAGRAM
主キー
外部キー / 関連
顧客表(テーブル)顧客ID 🔑氏名C001田中 太郎C002佐藤 花子C003鈴木 次郎← 1行 = 1件のデータ(レコード)/ ↑ 列 = 項目(属性)注文表(テーブル)注文No顧客ID商品1001C001書籍1002C003文具1003C001雑貨表同士を「関連づけ」顧客ID で結合(JOIN)注文表の「顧客ID」(外部キー)が、顧客表の主キーを指し示す→ どの顧客が何を注文したかをたどれる
解説

📌
RDBとは

列(属性)列(属性)行↓

関係データベース(RDB=Relational Database)とは、データを行と列からなる「表(テーブル)」で管理し、複数の表を共通の値で関連づけられるデータベースのことです。現在もっとも広く使われているデータベースの形式です。

身近な例で考えると、Excel の表(スプレッドシート)に似ています。1行が1件のデータ(例:顧客1人分の情報)、1列が1つの項目(例:氏名・住所)にあたります。違うのは、RDB では複数の表を「同じ顧客ID」のような共通の値でつなげて、横断的にデータを取り出せる点です。

上の図解では「顧客表」と「注文表」を顧客IDで結びつけて、誰が何を注文したかをたどれる様子を示しています。データを操作するときは SQL(=データベース専用の言語)という共通の命令を使います。

📌
表形式の構造

顧客ID主キー🔑顧客表顧客ID外部キー注文表

RDB の表は、次の要素で構成されます。用語はそれぞれ別名(数学用語)でも呼ばれます。
表(テーブル / 関係):データのまとまり。1つのテーマ(顧客・商品など)を表す
行(レコード / タプル):1件分のデータ。横一列
列(属性 / フィールド):項目の種類。氏名・住所など

表同士を関連づけるために、2種類の重要な「キー(鍵となる列)」があります。
主キー(primary key):その表の中で行を一意に識別する列。値の重複・空欄(NULL)は許されない(例:顧客ID)
外部キー(foreign key)別の表の主キーを参照する列。これで表と表がつながる

図書館の本に例えると、主キーは本ごとの「蔵書番号」のようなものです。番号が重複しないからこそ、1冊を正確に指し示せます。外部キーは「貸出記録に書かれた蔵書番号」で、どの本が貸し出されたかを記録とたどれるようにする役割です。

📌
NoSQLとの違い

RDB に対して、NoSQL(=Not only SQL)は表形式にとらわれない多様な形式のデータベースの総称です。両者の主な違いを整理します。

項目RDB(関係DB)NoSQL
データ形式表(行と列)に固定キー値・文書・グラフなど多様
スキーマ事前に列を定義(厳格)柔軟(後から項目追加が容易)
操作言語SQL製品ごとに異なる
得意な場面整合性が重要な業務データ大量・多様なデータの高速処理

RDB は表の形が事前にきっちり決まっているため、銀行の取引や在庫管理のように「データの正確さ・整合性」が何より大事な場面に向いています。一方 NoSQL は形が自由なので、SNS の投稿やセンサーのログのように形がバラバラで量が膨大なデータを素早くさばくのに向いています。

どちらが優れているという話ではなく、扱うデータの性質に応じて使い分けるのが基本です。整然と整理したい帳簿は RDB、雑多なメモの山は NoSQL、とイメージすると分かりやすいでしょう。

📌
なぜ表形式で管理するのか

表形式(RDB)行・列が揃い見やすいバラバラなファイル顧客_田中.txtorder2024.csvmemo_suzuki.xlsx統一された操作ができない

表形式が選ばれる理由は、「どんなデータも同じ構造に揃えることで、統一した操作ができる」からです。

表形式を使うことで得られる主なメリットは次のとおりです。
一貫した操作:顧客データも商品データも、同じSQL命令(SELECTINSERTなど)で扱える
表同士を結びつけられる:主キーと外部キーで複数の表をつなげ、「誰が・何を・いつ注文したか」を一度にたどれる
整合性を保ちやすい:列の型(文字列・数値・日付など)と制約(空欄禁止・重複禁止)を事前に決めておける

バラバラなファイルでデータを管理していたころは、顧客の名前が1つのファイルでは「田中太郎」、別のファイルでは「田中 太郎」(スペースあり)と表記がズレて検索できない、といった問題が頻発しました。表形式にまとめることで「どこを見ても同じルール」が保証されます。これが RDB が広く使われる根本の理由です。

📌
正規化とは

正規化前(重複あり)注文No / 顧客名 / 商品名1001田中書籍1002田中文具1003鈴木雑貨「田中」が2行に重複正規化正規化後(分割)顧客表C001 田中C003 鈴木注文表1001 C0011002 C0011003 C003重複を排除して分割

正規化(normalization)とは、データの重複や矛盾をなくすために、表を適切に分割して整理する作業のことです。RDB の設計でとても重要な考え方です。

なぜ正規化が必要なのか。たとえば「田中さん」の住所が変わったとき、正規化していない表では「田中」という名前が含まれる全行を直さなければなりません。修正漏れがあると、同じ人の住所が行によって違う、という矛盾が生まれます。

正規化すると、顧客情報は顧客表の1行だけにまとめられます。住所が変わっても1か所を直すだけで済み、注文表には顧客IDの参照だけが残るため矛盾が起きません。正規化には段階(第1正規化・第2正規化・第3正規化など)がありますが、共通の目的は「同じ情報を1か所にだけ持つ」ことです。
更新しやすくなる:1か所を直すだけで全体に反映される
矛盾が起きにくい:同じデータが複数の場所にあることで生じる不整合を防ぐ
容量が減る:重複データがなくなるため、記憶域を節約できる

✏️
練習問題

Q1.関係データベース(RDB)でデータを管理する基本的な形式はどれか。

Q2.RDB の表において、各行を一意に識別するために設定する列(または列の組)を何というか。

Q3.ある表の列が、別の表の主キーを参照して表同士を関連づける役割を持つとき、その列を何というか。

関連コンテンツ