データベースとSQL基礎 | 中小企業診断士1次試験 経営情報システム

U

「データベース」という言葉は知っていても、「SQLって何?」「正規化って何のために?」と聞かれると、急に難しく感じてしまいませんか。
過去問を解いていて、E-R図やSQL文が出るたびに手が止まっていたので、今回は図解で整理してみました。

目次

「表で管理する」だけじゃない — データベースの種類

ある日の気づき:「データベース=Excelのような表」とざっくりイメージしていたのですが、実際には種類があって、用途によって使い分けられているそうです。整理してみると、すっきりしました。
種類特徴代表例・用途
リレーショナルDB(RDB)表(テーブル)形式。SQLで操作。試験の主役Oracle, MySQL / 販売管理・顧客管理
階層型DBツリー構造(親子関係)。高速だが柔軟性が低い銀行の勘定系(古いシステム)
ネットワーク型DB網の目構造。多対多の関係を表現できる製造業の部品管理(レガシー系)
NoSQL表以外の形式(文書・グラフ・列指向等)MongoDB / SNS・IoTデータ
U

試験で問われるのは、ほぼリレーショナルDB(RDB)の話です。SQLやE-R図・正規化はすべてRDBの文脈で登場します。

E-Rモデルで「関係」を図に描く

E-R図(Entity-Relationship図)は、データの「もの(エンティティ)」と「関係(リレーションシップ)」を視覚化するモデルです。

顧客
1対多
(1:N)
───→
注文
多対多
(M:N)
───→
商品

1人の顧客が複数の注文を持つ(1:N)。1つの注文に複数の商品が含まれ、1つの商品が複数の注文に登録される(M:N)。

正規化 — 「データの重複をなくす」3段階

正規化とは、テーブル設計の整備プロセスです。「第1正規形→第2正規形→第3正規形」と段階的に整理することで、データの重複・矛盾・更新時のトラブルを防ぎます。

1NF
第1正規形 — セルに1つだけ入れる
1つのセルに複数の値を詰め込まない。「商品A, B, C」ではなく、行を分けて1行1データにする。繰り返しグループの排除。
2NF
第2正規形 — 主キー全体に依存させる
複合主キーの一部にしか依存しない列を別テーブルに分離する(部分関数従属の排除)。例:「注文ID+商品ID」が主キーのとき、商品名は商品IDだけに依存→別テーブルへ。
3NF
第3正規形 — 主キー以外への間接依存をなくす
主キー→A→Bのように、主キーからAを経由してBに依存している場合(推移関数従属)、AとBを別テーブルに分離する。例:社員ID→部署コード→部署名 のとき、部署テーブルを分ける。

SQLの基本4命令 — 読み書き・更新・削除

SELECT — データを取り出す
SELECT 顧客名, 購入金額
FROM 顧客テーブル
WHERE 購入金額 >= 10000
ORDER BY 購入金額 DESC;
「購入金額が1万円以上の顧客を、金額の多い順に表示」
JOIN — テーブルを横につなぐ
SELECT 顧客名, 商品名
FROM 注文 INNER JOIN 商品
ON 注文.商品ID = 商品.商品ID;
「注文テーブルと商品テーブルを商品IDで結合」
INSERT・UPDATE — 追加・変更
— 新規追加
INSERT INTO 顧客 (顧客名) VALUES (‘山田’);
— 更新
UPDATE 顧客 SET 住所=’東京’ WHERE 顧客ID=1;
レコードの追加・更新操作(DML命令)
GROUP BY / HAVING — 集計
SELECT 部門, COUNT(*) AS 件数
FROM 注文
GROUP BY 部門
HAVING COUNT(*) >= 5;
「部門ごとの件数を集計し、5件以上の部門だけ表示」
U

SQLのコードを見ると難しそうですが、「どのテーブルから・どの条件で・どう並べて取り出すか」という会話をデータベースと交わしているイメージです。試験ではSQL文を読んで何を取り出しているかを判断する問題が出ます。

身近な場面で考えてみると — 図書館の貸出管理

図書館の貸出管理システムを想像してみてください。

テーブル名エンティティ主なカラム
利用者テーブル利用者利用者ID, 氏名, 住所
図書テーブル図書ID, タイトル, 著者, 分類
貸出テーブル貸出記録貸出ID, 利用者ID, 図書ID, 貸出日, 返却日

「Aさんが現在借りている本の一覧」を取り出すには、利用者テーブルと貸出テーブルをJOINして、返却日がNULLのレコードをWHEREで絞ります。正規化・E-R図・SQL操作がすべてここに凝縮されています。

トランザクションとACID特性

データベースで「送金処理」のような複数の操作を一塊として扱う仕組みがトランザクションです。ACID特性は試験頻出。

特性英語意味・覚え方
原子性Atomicity「全部成功」か「全部なかったこと」。途中で終わらない
一貫性Consistency処理前後でデータの整合性が保たれる
独立性Isolation複数のトランザクションが互いに干渉しない
永続性Durability確定した処理は障害が起きても消えない

過去問で確認する

中小企業診断士1次試験 経営情報システム データベース・SQL

関係データベースの正規化に関する記述として、最も適切なものはどれか。

  • ア 第1正規形とは、すべての列が主キーに対して関数従属していることをいう。
  • イ 第2正規形とは、主キーの一部に対する部分関数従属を排除したものをいう。
  • ウ 第3正規形とは、主キー以外の列間に推移関数従属がない状態をいう。
  • エ 正規化を進めると、データの冗長性が増す。
解答・解説
正解:ウ
ア:第1正規形は「繰り返しグループの排除(1セル1値)」であり、関数従属の話は第2・第3正規形です。
イ:第2正規形は「部分関数従属の排除」という説明は正しいですが、「主キーの一部に対する」という表現が第2正規形の定義そのもの。ただし「第2正規形=すべての列が主キー全体に従属」と言うべきで、この選択肢の表現は誤り。
ウ:第3正規形は推移関数従属(主キー→A→B)の排除。正しい。
エ:正規化を進めると冗長性は減ります(逆です)。

Uのメモ

  • データベースの種類:試験はほぼリレーショナルDB(RDB)が対象
  • E-Rモデル:エンティティ間の関係(1:1 / 1:N / M:N)を図で表現
  • 正規化:1NF(繰り返し排除)→2NF(部分従属排除)→3NF(推移従属排除)
  • SQLの基本:SELECT / WHERE / JOIN / GROUP BY / HAVING
  • ACID特性:原子性・一貫性・独立性・永続性(トランザクションの4原則)

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

中小企業診断士試験勉強中のアラフィフシングルマザーです。
大学卒業後から現在まで、数々の失敗をしながらずっと自営業として試行錯誤を重ねてきました。
もっときちんと経営やビジネスの知識を身につけて、将来は他の事業者の方のお役にも立てたらいいな、と思うようになり、中小企業診断士の試験に挑戦中です。

目次