データベース設計と正規化の基礎【ウェブデザイン技能検定 1級学科範囲】

データベース設計において効率的で一貫性のあるデータ管理を実現するためには「正規化」が欠かせません。
本記事では非正規形から始まり第3正規形(3NF)までの正規化のプロセスを順を追って解説しその役割や利点を詳しく説明します。

非正規形(UNF: Unnormalized Form)とは?

非正規形(UNF)は、まだ正規化されていないデータ構造を指します。
この状態では、以下のような問題が発生します。

  1. 繰り返しデータを含む
    1つのセルに複数の値やリストが含まれることがあり、データ操作が複雑になります。
  2. 冗長性が高い
    同じデータが複数回記録されるため、ストレージの無駄が発生します。
  3. データの整合性が保証されない
    更新や削除の際にデータの矛盾が発生しやすくなります。

非正規形の例

顧客ID顧客名購入商品
1田中リンゴ, バナナ, みかん
2山田パン, 牛乳
  • 問題点:
    • 購入商品列に複数の値が含まれ、管理が難しい。

正規化のプロセス

第1正規形(1NF)

  1. 各セルが単一の値のみを持つ。
  2. 列(カラム)に同じ型のデータを保持。

変換例

非正規形のデータを第1正規形に変換します。

顧客ID顧客名購入商品
1田中リンゴ
1田中バナナ
1田中みかん
2山田パン
2山田牛乳
  • 結果: 各セルに単一の値を保持。

第2正規形(2NF)

  1. すべての非キー属性が主キーに完全関数従属していること。
  2. 部分関数従属性を排除する。

変換例

顧客ID顧客名購入商品ID
1田中A1
1田中A2
2山田B1
購入商品ID商品名
A1リンゴ
A2バナナ
B1パン
  • 結果: 主キー以外のデータの重複を分割して排除。

第3正規形(3NF)

  1. 推移的関数従属性を排除する。
  2. 非キー属性同士が依存しない。

推移的関数従属性とは?

推移的従属性とは、以下のような間接的な依存関係を指します。

  • 例:
    主キー ABC のような関係が存在する場合、AC は推移的従属性。

修正前(推移的従属性がある状態)

学生ID学生名学科ID学科名
1田中A1情報学科
2山田B1経済学科
  • 問題点:
    • 学科名学科ID に依存し、学科ID学生ID に依存しています。

修正後(第3正規形に分割)

学生ID学生名学科ID
1田中A1
2山田B1
学科ID学科名
A1情報学科
B1経済学科
  • 結果: 推移的従属性が排除され、各データが一意に管理可能。

正規化の利点と欠点

利点

  1. データの一貫性
    冗長性を排除し、データの整合性を向上。
  2. 保守性の向上
    構造がシンプルになるため、変更や拡張が容易。
  3. ストレージ効率
    不必要な重複が減り、ストレージを節約。

欠点

  1. クエリの複雑化
    多くのテーブルに分割されるためクエリが複雑になる場合があります。
  2. パフォーマンスの低下
    データを取得する際に複数のテーブルを結合する必要があり処理速度に影響が出る場合があります。

非正規形が利用される場面

  • 一時的なデータストレージ
    初期段階で要件が固まっていない場合に利用。
  • 非構造化データの管理
    ログデータやNoSQL環境など、柔軟性を重視する場合。

まとめ

非正規形から第3正規形までの正規化はデータベース設計における重要なステップです。
正規化を通じてデータの一貫性を保ち効率的な管理を実現できます。
ただし、特定の要件や環境では非正規形や正規化の一部を意図的に採用することもあります。
データベースの使用目的に応じて最適な設計を選択しましょう。

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

おすすめの記事

 

スポンサードリンク