データベースの基礎
読み出しが大部分を占める集計用のデータベースで、正規化した表をあえて1つにまとめ、同じデータを重複して持たせる設計(非正規化)を行うことがある。この設計の長所と短所の組み合わせとして正しいものはどれか。
- A重複がなくなって記憶容量が減る一方、結合が増えて読み出しが遅くなる
- B読み出しも更新も速くなり、データの整合性も自動的に保たれる
- C結合が減って読み出しが速くなる一方、重複したデータの整合性を保つための更新の手間が増える
答えと解説を見る
正解:C. 結合が減って読み出しが速くなる一方、重複したデータの整合性を保つための更新の手間が増える
正規化すると、データの重複がなくなって更新時異常を防げる一方、検索のたびに複数の表の結合が必要になります。読み出しの性能が重要な場面では、よく一緒に使う列を1つの表にまとめたり、集計した結果を列として持たせたりして、あえて正規化を崩すことがあります。これを非正規化(デノーマライゼーション)と呼びます。結合が減るので読み出しは速くなりますが、同じデータが何か所にも記録されるので、変更のたびにすべての箇所を正しく更新しなければならず、更新の手間と、内容が食い違うリスクが増えます。記憶容量も一般に増えます。そのため、更新の多い業務処理用のデータベースは正規化を基本にし、非正規化は、効果と代償を比べたうえで、必要な箇所に限って行います。
- A. これは逆です。非正規化ではデータの重複が増え、結合が減ります。
- B. 重複したデータの整合性は自動では保たれず、更新の処理で保つ必要があります。
- C. 正しい。読み出しは速くなりますが、重複したデータをそろえて更新する手間と、食い違いのリスクが増えます。