データベースの基礎

関係データベースの表を正規化する主な目的はどれか。

  1. A表の数を減らして、どんな検索も結合なしで速く行えるようにすること
  2. Bデータを暗号化して、許可のない利用者に読まれないようにすること
  3. Cデータの重複をなくし、更新したときに内容が食い違うなどの異常を防ぐこと
答えと解説を見る

正解:C. データの重複をなくし、更新したときに内容が食い違うなどの異常を防ぐこと

正規化は、列どうしの関数従属(ある列の値が決まると、別の列の値が1つに決まる関係)に基づいて表を分割し、同じ事実が何か所にも記録されないようにする設計の手順です。例えば、社員表の各行に部署名まで書いておくと、部署名を変えるときに、その部署の社員の行をすべて書き換えなければならず、書き換え漏れがあると内容が食い違います(更新時異常)。ほかにも、社員がまだいない部署を登録できない(挿入時異常)、最後の1人の社員を削除すると部署の情報まで消える(削除時異常)といった問題が起きます。部署の情報を部署表に分けておけば、部署名は1か所を直すだけで済みます。一方、表が分かれる分、検索のときに結合が増えるので、正規化すると検索が速くなるとは限りません。

  • A. 正規化では表は分割されて増え、検索に結合が必要になることが多くなります。
  • B. 暗号化はセキュリティの対策で、正規化とは関係ありません。
  • C. 正しい。重複をなくして、更新時異常・挿入時異常・削除時異常を防ぐことが目的です。
この分野を解く 分野ページへ

関連する計算ツール

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データベースの基礎のほかの問題

  1. 受注表(受注番号, 商品番号, 数量, 顧客番号, 顧客名)の主キーは{受注番号, 商品番号}で、関数従属は {受注番号, 商品番号} → 数量、受注番号 → 顧客番号、顧客番号 → 顧客名 である。この表を第3正規形まで正規化した結果として正しいものはどれか。
  2. 社員表(社員番号, 氏名, 部署コード, 部署名)の主キーは社員番号で、どの列も1つの値だけを持つ。関数従属は 社員番号 → 氏名、社員番号 → 部署コード、部署コード → 部署名 である。この表の正規形として正しいものはどれか。
  3. 読み出しが大部分を占める集計用のデータベースで、正規化した表をあえて1つにまとめ、同じデータを重複して持たせる設計(非正規化)を行うことがある。この設計の長所と短所の組み合わせとして正しいものはどれか。
  4. E-R図で、学生と科目の間に「1人の学生は複数の科目を履修し、1つの科目は複数の学生が履修する」という多対多の関係がある。この関係を関係データベースの表で実現する方法として、適切なものはどれか。
  5. 口座表で、トランザクションを開始し、口座Aの残高から300を引く UPDATE と、口座Bの残高に300を足す UPDATE を実行した。その後、COMMITの代わりに ROLLBACK を実行した。口座表はどうなるか。