基本情報技術者 2014年 秋期 午前(科目A) 問28
問題文
関係を第3正規形まで正規化して設計する目的はどれか。
選択肢
ア:値の重複をなくすことによって、格納効率を向上させる。
イ:関係を細かく分解することによって、整合性制約を排除する。
ウ:冗長性を排除することによって、更新時異状を回避する。(正解)
エ:属性間の結合度を低下させることによって、更新時のロック待ちを減らす。
関係を第3正規形まで正規化して設計する目的はどれか【午前2 解説】
要点まとめ
- 結論: 第3正規形まで正規化する目的は冗長性を排除して更新時の異常(挿入・更新・削除)を防止することです。
- 根拠: 関数従属性に基づき関係を分解して同じ情報の重複をなくすことで、不整合や矛盾の発生源を取り除けます。
- 差がつくポイント: 正規化は整合性と更新効率の向上が主目的であり、過度な分解は結合コスト増で性能悪化を招く点を意識すること。
正解の理由
正解は ウ です。第3正規形(3NF)まで正規化する主目的は、テーブル内のデータ冗長性を減らし、更新(挿入・更新・削除)時に生じる異常(更新時異状)を回避することにあります。特に、非キー属性がキー以外の属性に従属する「推移的従属性」を解消することで、同じ情報を複数箇所に持たないようにします。これにより、ある値を変更した際に複数箇所を更新し忘れて不整合が発生するリスクを低減できます。
よくある誤解
- 「正規化すると格納効率が必ず上がる」:冗長性は減るが、結合が増えることで逆にストレージやI/Oが増えることもあります。
- 「正規化で整合性制約が不要になる」:正規化は整合性違反の原因を減らすが、制約(主キー・外部キーなど)は依然として必要です。
- 「正規化でロック待ちが必ず減る」:分解によりトランザクション中の結合が増え、逆にロックの範囲や待ちが増えることもあります。
解法ステップ
- 問題文のキーワード(第3正規形、正規化、目的)に注目する。
- 第1~第3正規形の目的を思い出す(重複の排除、部分従属性・推移的従属性の解消)。
- 選択肢を「冗長性」「整合性制約の有無」「格納効率」「ロック」と対照し、正規化の定義に合致する文を選ぶ。
- 更新時異状(挿入・更新・削除の異常)を明確に言及している選択肢を正解とする。
選択肢別の誤答解説
- ア: 値の重複をなくすことによって、格納効率を向上させる。
誤り。正規化は重複を減らすため格納効率が改善する場合もあるが、主目的は整合性の確保と更新異常の防止であり、格納効率向上が目的とは限りません。さらに正規化後は結合が増えI/Oが増えることもあり、一概に格納効率の向上とは言えません。 - イ: 関係を細かく分解することによって、整合性制約を排除する。
誤り。分解しても整合性制約(主キー、外部キー、その他制約)は依然として必要であり、排除するものではありません。正規化は制約違反の原因を減らすが、制約自体をなくすものではありません。 - ウ: 冗長性を排除することによって、更新時異状を回避する。
正解。第3正規形までの正規化は冗長性(重複)と推移的従属性を取り除き、更新時に生じる不整合(更新時異状)を防ぎます。 - エ: 属性間の結合度を低下させることによって、更新時のロック待ちを減らす。
誤り。正規化は属性の結合(依存)構造を整理するが、必ずしもロック待ち低減を目的とはしません。むしろ分解によってトランザクションで複数テーブルを結合する必要が生じると、ロック範囲や待ちが増える可能性があります。
補足コラム
- 正規形の簡単な整理
- 第1正規形(1NF): 属性の値が原子値であること(繰り返し群がない)。
- 第2正規形(2NF): 1NFかつ部分従属性を排除(複合キーの一部に依存する非キー属性の排除)。
- 第3正規形(3NF): 2NFかつ推移的従属性を排除(非キー属性が他の非キー属性に依存しない)。
- 実務上の注意点
正規化は整合性を高めるが、クエリ性能や運用上の都合で意図的に非正規化(冗長性を許す設計)を行うこともある。RDB設計では正規化に加えてインデックス設計やキャッシュ/パーティショニングなどパフォーマンス対策も必要です。 - 例(更新異常)
テーブル(社員ID, 部署名, 部署所在地)があり、同じ部署の所在地を複数行で繰り返し持っていると、所在地変更時に複数行を更新し忘れることで不整合が生じます。部署を別テーブルに分けることでこの問題を解消します。
FAQ
Q1: 第3正規形にすればすべての問題が解決しますか?
A1: いいえ。3NFは多くの更新異常を防ぎますが、実務では性能や運用・レポーティング要件に応じて非正規化を検討することがあります。
A1: いいえ。3NFは多くの更新異常を防ぎますが、実務では性能や運用・レポーティング要件に応じて非正規化を検討することがあります。
Q2: 第3正規形とBCNFの違いは何ですか?
A2: BCNFはより厳密で、全ての決定関係が候補キーであることを要求します。3NFは一部の非キー→非キーの依存を許すことがありますが、実務ではBCNFまで適用するかはケースバイケースです。
A2: BCNFはより厳密で、全ての決定関係が候補キーであることを要求します。3NFは一部の非キー→非キーの依存を許すことがありますが、実務ではBCNFまで適用するかはケースバイケースです。
Q3: 正規化でロック問題が発生することはありますか?
A3: あります。分解によりトランザクションで複数テーブルを操作・結合する必要が増えると、ロック範囲や待ちが増える可能性があるため注意が必要です。
A3: あります。分解によりトランザクションで複数テーブルを操作・結合する必要が増えると、ロック範囲や待ちが増える可能性があるため注意が必要です。
関連キーワード: 正規化、第3正規形、冗長性、更新時異状、関数従属性、推移的従属性、正規形設計、データ整合性、非正規化、テーブル分解、BCNF、性能トレードオフ

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

