情報ラボ > データベースとSQL
表の形でデータを管理するリレーショナルデータベースを、SQLやボタンで操作して確かめます。
条件に合う行(レコード)だけを取り出します。
残したい列(フィールド)だけを取り出します。
2つの表を、共通の列の値が等しい行どうしでつなぎます。
たくさんのデータを、あとから探したり、追加したり、書きかえたりしやすいように、決まった形で整理して蓄えたものをデータベースといいます。学校の名簿や成績、図書館の蔵書、ネットショップの商品と注文、交通系ICカードの利用記録など、身の回りの情報システムの多くは、裏側でデータベースを使っています。
データベースを管理するソフトウェアをDBMS(データベース管理システム)といいます。DBMS は、データを決まった構造で蓄えるだけでなく、データの矛盾が起きないように保つこと(一貫性)、必要なデータを効率よく取り出すこと、たくさんの人が同時に使っても困らないようにすること、障害が起きたときに元に戻すことなどを受け持ちます。
データベースにはいくつかの種類がありますが、最も広く使われているのがリレーショナルデータベース(関係データベース)です。データを、行と列からなる表(テーブル)で管理します。
外部キーを使うと、表どうしを関連づけられます。生徒の表に部活の名前や活動場所を書かなくても、部活IDを手がかりに部活の表から取り出せるのです。
リレーショナルデータベースでは、表から必要なデータを取り出すために、次の3つの関係演算がよく使われます。
| 操作 | 内容 | SQL での書き方 |
|---|---|---|
| 選択 | 条件に合う行だけを取り出す | WHERE 組 = 2 |
| 射影 | 必要な列だけを取り出す | SELECT 氏名, 組 |
| 結合 | 共通の列で2つの表をつなぐ | JOIN 部活 ON 生徒.部活ID = 部活.部活ID |
「選択・射影・結合」のタブでは、これらをボタンで1つずつ試せます。操作をするたびに、同じ結果を作る SQL 文が下に表示されます。たとえば、生徒の表と部活の表を結合すると、部活IDが空の生徒(斎藤)は、相手の表に同じ値がないので結果に入りません。
リレーショナルデータベースを操作するための言語が SQL です。SQL は国際規格(ISO/IEC 9075)で定められていて、多くの DBMS で同じように使えます。データを取り出すときは SELECT 文を使い、次の順に書きます。
SELECT 取り出す列 FROM 表 JOIN 別の表 ON つなぐ条件 WHERE 行の条件 GROUP BY まとめる列 HAVING まとめた結果の条件 ORDER BY 並べる列 DESC LIMIT 件数;
WHERE では、=、<>(等しくない)、>= などで比べ、AND・OR・NOT で組み合わせます。LIKE '%木%' は「木」をふくむ、という意味ですGROUP BY を使うと、同じ値の行をまとめて、COUNT(件数)、SUM(合計)、AVG(平均)、MAX(最大)、MIN(最小)で集計できますORDER BY は並べ替えです。ASC は小さい順(省略できます)、DESC は大きい順ですSQL には、データを追加する INSERT、書きかえる UPDATE、削除する DELETE などもあります。このページでは、データを壊さずに試せるよう、検索の SELECT 文だけを実行できるようにしています。
1枚の表にすべてを書きこむと、同じ情報が何度も出てきます。たとえば、部活の活動場所を生徒1人ずつの行に書くと、同じ部活の生徒の数だけ活動場所がくり返されます。このとき、次のような困りごと(異常)が起きます。
こうした問題が起きないように、表を適切に分けることを正規化といいます。くり返しをなくして1つのセルに1つの値だけにした形を第1正規形、主キーの一部だけで決まる列を別の表に分けた形を第2正規形、主キー以外の列で決まる列をさらに分けた形を第3正規形といいます。正規化を進めると、どの情報も1か所だけに書かれるようになり、書きかえは1回で済みます。「正規化」のタブで、表の形を変えながら同じ操作をして、結果を比べてください。
銀行の口座や座席の予約のように、たくさんの人が同時に同じデータを書きかえる場面では、処理の順番によっては残高や空き席の数が合わなくなるおそれがあります。DBMS は、ひとまとまりの処理(トランザクション)を、すべて行うか、まったく行わないかのどちらかにしたり、だれかが書きかえている間はほかの人が同じデータを書きかえられないようにしたり(排他制御)して、データの整合性を保っています。
データベースは表の形のものだけではありません。項目(キー)と値(バリュー)の組でデータを記録するキー・バリュー形式のデータベースなどもあり、こうした表以外の形式に対応したデータベースは、まとめて NoSQL と呼ばれます。大量のデータを扱う場面で使われています。
このページの生徒や成績のデータは、すべて架空のものです。小数は小数第3位を四捨五入して表示しています。
情報Ⅰ 授業の進め方ガイドでは、この教材を次の授業で使います。ねらい・導入の問い・50分の流れ・確認問題をまとめています。