基本情報

基本情報 平成26年度 秋期 問28|テクノロジ系に関する問題

問題

基本情報 | 平成26年度 秋期 | 分野:テクノロジ系

関係を第3正規形まで正規化して設計する目的はどれか。

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は C
  • A
  • B
  • C
  • D

自信の3択

えらぶと、この端末に記録します(登録はいりません)

解説

答えは c「冗長性を排除することによって,更新時異状を回避する」 です。

「正規化」はデータの重複を整理する作業。同じ情報があちこちに散らばっていると、片方だけ更新して食い違いが起きやすくなります。

例:顧客の住所が「注文表」と「顧客表」の両方に書いてあると、引越しのときに片方の更新を忘れて住所が2種類になってしまう。これが更新時異状です。

👉 覚え方:「正規化=重複をなくして更新の食い違いを防ぐ」。

ほかの選択肢:a 格納効率の向上は主目的ではない(表が増えてかえって結合が必要になる)/b 整合性制約を「排除」は逆/d ロック待ちを減らすことは目的ではない。

なぜこれが正解か

正解は c。第3正規形までの正規化の目的は、データの冗長性を排除し、更新時異状・挿入時異状・削除時異状を回避することにある。同じ事実を1か所だけに記録するよう表を分解することで、一部だけ更新されて内容が食い違うといった不整合を防ぐ。

各選択肢の解説

  • a:値の重複がなくなって格納量が減ることはあるが,それは副次的な効果。表の分割によって結合が必要になるため,格納効率や性能の向上は正規化の目的ではない。
  • b:正規化は整合性を保つための手法であり,整合性制約を「排除」するものではない。
  • c:冗長性を排除し,更新時異状を回避する(正解)。
  • d:属性間の結合度やロック待ちの削減は正規化の目的ではない。

覚え方・ひっかけ注意

「正規化の3つの異状(アノマリー)」:

  • 更新時異状:同じデータの複数箇所の更新漏れ
  • 挿入時異状:関係のない情報がそろわないと行を挿入できない
  • 削除時異状:行を削除すると残したい情報まで消えてしまう

これらを防ぐのが正規化。第1正規形(繰返し項目の排除)→第2正規形(部分関数従属の排除)→第3正規形(推移的関数従属の排除)と進む。検索性能のために意図的に非正規化することもある。

理論的背景

E.F.Coddが提唱した関係モデルの中核理論で、正規形は関数従属性(Functional Dependency, FD)の分析に基づく。

  • 第1正規形(1NF): 繰返し項目を排除、各属性は原子的(atomic)
  • 第2正規形(2NF): 1NF + 主キーの一部への部分関数従属を排除
  • 第3正規形(3NF): 2NF + 推移的関数従属を排除(X→Y, Y→Z ならZのみのテーブル分離)
  • BCNF(Boyce-Codd正規形): すべての関数従属の左辺がスーパーキー
  • 第4正規形(4NF): 多値従属性の排除
  • 第5正規形(5NF/PJNF): 結合従属性の排除

各段階で「冗長性削減」と「異状回避」を実現するが、結合コスト増加と読込み性能低下のトレードオフがある。

実務での使われ方

OLTP(オンライントランザクション処理)では更新整合性が最優先で3NF以上が標準。OLAP(オンライン分析処理)では読込み性能優先でスター/スノーフレークスキーマによる意図的非正規化が行われる。

NoSQL(MongoDB、DynamoDB、Cassandra)は意図的に非正規化を許容し、結合不要のドキュメント/列指向設計で読み込みスケーラビリティを獲得。これは「正規化はトランザクション整合性、非正規化は読み込みスケーラビリティ」のトレードオフで、CAP定理・PACELC定理にも関連する。

現代のクラウド時代では、CDC(Change Data Capture)でOLTP正規化DB→OLAP非正規化DWHへリアルタイム連携し、両者の利点を享受するLambdaアーキテクチャやKappaアーキテクチャが主流。dbtで非正規化変換をコード管理する。

試験での位置づけ

FE/AP/DBスペシャリストのデータベース設計分野で必出。①各正規形の定義、②関数従属性の判定、③第3正規形までの分解手順、④非正規化のトレードオフ、⑤関係スキーマ設計の良し悪し、が主要論点。AP/DBスペシャリストでは具体的なテーブル設計問題で頻出。

選択肢の発展補足

非正規化の典型シナリオ: ①集計列の事前計算(売上合計の冗長保持)、②外部キー先のラベル展開(顧客名を注文表に複製)、③履歴管理(バージョン管理付き)、④読込み専用ビュー(マテリアライズドビュー)。これらは正規化の理論的「正しさ」を犠牲にして実用性を高める手法。

NoSQL(特にDocument DB)では「1リクエスト1ドキュメント」原則で関連データを埋め込み、結合排除でスケーラビリティを得る。MongoDBの埋め込みドキュメント、DynamoDBのSingle Table Design(1テーブルで複数エンティティを表現する高度技法)がその極致。「正規化↔非正規化」は永遠のトレードオフで、AI/ML時代の特徴量ストア(Feature Store)でも同様の議論が続いている。

この問題の根拠出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成26年度 秋期 問28
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成26年度 秋期 問28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。