関係データベースを構築するに当たり, データの正規化を行う目的はどれか。
平成22年度 秋期 ITパスポート試験 問63
テクノロジ系データベース › データベース設計
この問題の解説と、これまでの解答の記録です。
問63
頻出度★★★
解説
問 63
不正解ア
チェックサムは、データからある計算規則で求めた検査用の値を付けておき、後で再計算して一致するかを見ることで、破損や改ざんを検出する誤り検出の技術である。データが壊れていないかを確かめる仕組みであって、表の構造を整えて重複をなくす正規化とは目的も手段も別物である。
- イ
正解 正解は イ。正規化とは、関係データベースを設計するときに、一つの表に詰め込まれた項目を関連ごとの表へ分割し、同じ事実が何箇所にも重複して保持される状態 (データの冗長性) を取り除く作業である。例えば受注表の中に得意先名や住所まで書いていると、同じ得意先が受注のたびに何行にも重複して現れる。ここで得意先の住所が変わると全行を直さねばならず、直しもれた行が残れば同じ得意先なのに住所が食い違うという矛盾 (更新時異常) が生じる。正規化して得意先表を分け、受注表には得意先コードだけを持たせておけば、住所の修正は得意先表の一行を直すだけで済み、矛盾も起こらない。つまり冗長性の排除が、変更のしやすさ・データの整合性維持、すなわち保守性の向上につながる。この因果を述べている イ が正しい。
不正解ウ
文字コード (文字集合や符号化方式) の統一は、他システムとデータをやり取りするときに文字化けを防ぐための、データの表現形式をそろえる話である。正規化が扱うのは表と項目をどう分けるかという論理設計であり、値をどの符号で表すかは正規化の対象ではない。
不正解エ
暗号化はデータを第三者に読めない形へ変換して機密性を守るセキュリティ対策である。正規化はデータの中身を秘匿するものではなく、むしろ構造を整理して扱いやすくする設計手法なので、目的が異なる。
ここがポイント
- 正規化の目的は、データの重複 (冗長性) を排除して更新時異常などの矛盾を防ぎ、変更しやすい状態すなわち保守性を高めること。関連ごとに表を分割し、他の表は主キーで参照する形にするのが基本の考え方である。
- 正規化はあくまで表構造の論理設計の話であり、チェックサム (誤り検出)・文字コード統一 (表現形式の統一)・暗号化 (機密性確保) といった、目的の異なる別技術と混同しないこと。
用語