データベースの基礎
関係データベースの表を正規化する主な目的はどれか。
- A表の数を減らして、どんな検索も結合なしで速く行えるようにすること
- Bデータを暗号化して、許可のない利用者に読まれないようにすること
- Cデータの重複をなくし、更新したときに内容が食い違うなどの異常を防ぐこと
答えと解説を見る
正解:C. データの重複をなくし、更新したときに内容が食い違うなどの異常を防ぐこと
正規化は、列どうしの関数従属(ある列の値が決まると、別の列の値が1つに決まる関係)に基づいて表を分割し、同じ事実が何か所にも記録されないようにする設計の手順です。例えば、社員表の各行に部署名まで書いておくと、部署名を変えるときに、その部署の社員の行をすべて書き換えなければならず、書き換え漏れがあると内容が食い違います(更新時異常)。ほかにも、社員がまだいない部署を登録できない(挿入時異常)、最後の1人の社員を削除すると部署の情報まで消える(削除時異常)といった問題が起きます。部署の情報を部署表に分けておけば、部署名は1か所を直すだけで済みます。一方、表が分かれる分、検索のときに結合が増えるので、正規化すると検索が速くなるとは限りません。
- A. 正規化では表は分割されて増え、検索に結合が必要になることが多くなります。
- B. 暗号化はセキュリティの対策で、正規化とは関係ありません。
- C. 正しい。重複をなくして、更新時異常・挿入時異常・削除時異常を防ぐことが目的です。