データベース設計・ER図・正規化 | 中小企業診断士1次試験 経営情報システム

U

「データベースの正規化って何をしているの?」と最初は謎でした。でも「同じデータを2か所に書かなくて済むように整理する」という目的を知ってから、第1〜第3正規形の意味がすっと入ってきました。スプレッドシートで管理していたものをデータベースに移すとき、まさにこの問題に直面するんですよね。

この記事でわかること
  • リレーショナルデータベースの基本概念(テーブル・主キー・外部キー)
  • ER図(エンティティ関連図)の読み方と描き方
  • 正規化(第1〜第3正規形)のプロセスと目的
  • SQL基本文(SELECT・WHERE・JOIN・GROUP BY)の意味
  • ACID特性とトランザクション管理
目次

リレーショナルデータベースの基本

リレーショナルデータベース(RDB)は、データを「テーブル(表)」の形で管理し、テーブル間を「関係(リレーション)」で結びます。現在最も広く使われるデータベース形式です。

用語意味
テーブル(表)データを格納する表。行(レコード)と列(フィールド・属性)からなる「顧客テーブル」「商品テーブル」
主キー(PK)各レコードを一意に識別する列。重複・NULLは不可顧客ID・商品コード
外部キー(FK)他のテーブルの主キーを参照する列。テーブル間を結ぶ注文テーブルの「顧客ID」は顧客テーブルの主キーを参照
インデックス検索を高速化するための索引。主キーには自動作成される電話帳の「あいうえお」順索引
ビューSELECT文の結果を仮想テーブルとして保存したもの。実データは持たない「今月の売上ランキング」ビュー

ER図——データの設計図

ER図の3要素
エンティティ(Entity):管理対象(四角形で表す)。例:顧客・商品・注文
属性(Attribute):エンティティが持つ性質(楕円形で表す)。例:顧客名・住所・電話番号
リレーションシップ:エンティティ間の関係(ひし形で表す)。例:顧客が注文を「する」

カーディナリティ(多重度)の表記:
1対1(1:1)・1対多(1:N)・多対多(M:N)の3種類。
多対多は中間テーブル(関連テーブル)を設けて1対多×2に分解する。

正規化——データの重複を排除する

正規化とは、データの冗長性(重複)を取り除き、更新時の不整合を防ぐためにテーブルを分解するプロセスです。

正規形条件解決する問題
第1正規形(1NF)すべての属性が原子値(繰り返しグループなし)。各セルに1つの値のみ1つのセルに「商品A,商品B」と複数値が入っている問題を解消
第2正規形(2NF)第1NFを満たし、部分関数従属を排除。非キー属性が主キー全体に完全従属複合主キーの一部にしか依存しない属性を別テーブルへ分離
第3正規形(3NF)第2NFを満たし、推移的関数従属を排除。非キー属性が他の非キー属性に依存しない「顧客ID→郵便番号→住所」のような間接依存を別テーブルへ分離
正規化のトレードオフ
  • 正規化のメリット:データの一貫性確保・更新異常の防止・ストレージ節約
  • 正規化のデメリット:テーブル数が増えJOINが多くなり、参照系のクエリが遅くなる
  • 非正規化:参照パフォーマンスを優先して意図的に冗長性を持たせることもある(DWH・分析系DB)

SQLの基本——データを操作する言語

SQL文の種類コマンド例用途
データ定義(DDL)CREATE / ALTER / DROPテーブル・インデックスの作成・変更・削除
データ操作(DML)SELECT / INSERT / UPDATE / DELETEデータの検索・挿入・更新・削除
データ制御(DCL)GRANT / REVOKEアクセス権限の付与・取消
トランザクション制御(TCL)COMMIT / ROLLBACK処理の確定・取消
SELECT文の基本構造(試験頻出)
SELECT 列名 FROM テーブル名 WHERE 条件 GROUP BY グループ化列 HAVING グループ条件 ORDER BY 並び順

WHERE:行を絞り込む(集計前)
GROUP BY:指定列でグループ化してSUM・COUNT・AVG等の集計関数を使う
HAVING:グループ化後の条件(集計後に絞り込む)
JOIN:複数テーブルを結合。INNER JOIN(一致する行のみ)/ LEFT JOIN(左テーブルは全行)

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

特性英語意味
原子性Atomicityトランザクションは「すべて成功」か「すべて失敗(ロールバック)」のどちらか。中途半端な状態にならない
一貫性Consistencyトランザクション前後でデータの整合性制約が保たれる
独立性Isolation複数のトランザクションが同時実行されても、互いに干渉しない
永続性Durabilityコミットされたデータは障害が起きても失われない

Uのメモ

学習メモ
  • 主キー:一意識別、重複・NULL不可 / 外部キー:他テーブルの主キーを参照
  • ER図:エンティティ(四角)・属性(楕円)・関係(ひし形)。多対多→中間テーブルで分解
  • 正規化:第1(原子値)→第2(部分従属排除)→第3(推移従属排除)
  • SELECT文の順序:WHERE(絞込)→GROUP BY(集計)→HAVING(集計後絞込)→ORDER BY
  • ACID:原子性・一貫性・独立性・永続性
  • COMMIT:確定 / ROLLBACK:取消

関連記事

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

この記事を書いた人

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

目次