データベースの仕組み
コンビニの販売記録、学校の成績、SNSの投稿 — 現代社会は膨大なデータの上に成り立っています。大量のデータを整理して保存し、必要なものをすばやく取り出す仕組みがデータベースです。この講義では、最も広く使われるリレーショナルデータベースとSQLの基礎を学びます。
データベースとDBMS
データベースは、一定の規則で整理されたデータの集まりです。データベースを管理するソフトウェアをDBMS(データベース管理システム)と呼び、①複数人が同時に使っても矛盾が起きないようにする(同時実行制御)、②障害からデータを守る、③アクセス権を管理する、といった役割を担います。ファイルを個人がバラバラに管理するのと違い、データを一元管理して共有できるのが強みです。
リレーショナルデータベース(RDB)
現在最も普及しているのがリレーショナルデータベースです。データを行と列からなる表(テーブル)の形で管理し、表の横1行をレコード(1件分のデータ)、縦1列をフィールド(項目)と呼びます。
各レコードを一意に識別するための列を主キーと呼びます。主キーは値が重複してはならず、空(NULL)であってもならないという条件があります。学籍番号や会員IDが典型例です。また、他の表の主キーを参照する列を外部キーと呼び、これによって複数の表を関連づけられます。
正規化 — 表をきれいに分ける
上の例のように、データの重複をなくすように表を分割・整理する作業を正規化と呼びます。1つの表に何でも詰め込むと、同じ生徒の氏名があちこちに重複して記録され、修正漏れによる矛盾(更新時異状)が起きやすくなります。正規化によって「1つの事実は1か所にだけ記録する」状態に近づけるのがデータベース設計の基本です。
SQL — データベースへの問い合わせ言語
RDBの操作にはSQLという言語を使います。データを取り出す基本形は次のとおりです。
SELECT 列名 FROM 表名 WHERE 条件;
たとえば SELECT 氏名 FROM 生徒表 WHERE クラス = '2A'; は、「生徒表から、クラスが2Aである生徒の氏名を取り出す」という意味です。ほかに、追加のINSERT、更新のUPDATE、削除のDELETEなどの命令があります。
- DBMSはデータの一元管理・同時実行制御・障害対策・アクセス権管理を担う。
- RDBは表形式。行=レコード、列=フィールド。
- 主キーは「重複しない」「NULLでない」の2条件。外部キーで表どうしを関連づける。
- 正規化=重複をなくすよう表を分けること。更新時の矛盾を防ぐ。
- SELECT 列 FROM 表 WHERE 条件 がSQLの基本形。
練習問題
- 主キーが満たさなければならない条件を2つ答えなさい。
SELECT 氏名 FROM 生徒表 WHERE 学年 = 2;というSQL文の意味を日本語で説明しなさい。- データベースの正規化を行う目的を説明しなさい。
解答・解説
- 解答:①値が重複しないこと(一意であること)、②空(NULL)でないこと
解説:この2条件により、どのレコードも主キーの値で必ず1件に特定できる。 - 解答:生徒表から、学年が2である生徒の氏名をすべて取り出す。
解説:SELECTが「取り出す列」、FROMが「対象の表」、WHEREが「絞り込み条件」を指定する。 - 解答:データの重複をなくし、更新・削除の際に矛盾(同じ情報の一部だけ直して食い違う等)が生じるのを防ぐため。
解説:「1つの事実は1か所に」が原則。重複が減ることで記憶容量の節約にもつながる。