正規化とは?せいきか
正規化とは、関係データベースの表を関数従属に基づいて分解し、重複と更新時異状が起きない形へ整えていく設計手法。第1正規形で繰返し項目を排除し、第2正規形で部分関数従属を、第3正規形で非キー属性間の推移的関数従属を分離する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
1枚の表に受注も商品も顧客も詰め込むと、商品名を1つ変えるのに何千行も更新しなければならず(修正時異状)、受注が1件も無い商品は登録すらできない(挿入時異状)。最後の受注を削除すると商品情報まで消える(削除時異状)。事実を「何が何を一意に決めるか」で切り分ければこれらは構造的に消える、というのが正規化の考え方で、応用情報では分解結果の正誤とどの正規形まで進んだかの判定が問われる。
具体例
「受注番号・商品コード・商品名・数量」の表は、主キーが(受注番号, 商品コード)なのに商品名は商品コードだけで決まる。商品を(商品コード, 商品名)の別表へ切り出せば第2正規形になり、商品名の変更は1行の更新で済む。PostgreSQLなどでは切り出した先へ外部キー制約を張って整合性を保つ。
試験での引っ掛け
段階と除去対象の対応が定番の出題で、第2正規形化が部分関数従属の除去、第3正規形化が推移的関数従属の除去である。この二つを入れ替えた選択肢に注意する。また正規化は常に善ではなく、結合回数を減らすためにあえて冗長を残す非正規化も、性能要件を満たす設計判断として認められる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成30年度 秋期 応用情報技術者試験 午前 問28(IPA)解説で登場
第1,第2,第3正規形とそれらの特徴a〜cの組合せのうち,適切なものはどれか。 a:どの非キー属性も,主キーの真部分集合に対して関数従属しない。 b:どの非キー…
正解:第1正規形=c,第2正規形=a,第3正規形=b
要点:正規化は繰返し排除→部分従属排除→推移従属排除の順。
第1正規形は繰返し属性(同一行内の反復する項目)を排除した形で、これがcに当たる。第2正規形は主キーの一部だけに依存する部分関数従属を排除した形でaに当たり、第3正規形は主キー以外を介した推移的関数従属を排除した形でbに当たる。正規化は繰返しの排除→部分従属の排除→推移従属の排除という順で進む。
出典:令和2年度 10月試験 応用情報技術者試験 午前 問28(IPA)
関係"注文記録"の属性間に①〜⑥の関数従属性があり、それに基づいて第3正規形まで正規化を行って、"商品"、"顧客"、"注文"、"注文明細"の各関係に分解した。関…
正解:注文明細(注文番号, 商品番号, 数量, 販売単価)(注文番号・商品番号が主キー)
要点:明細は{注文番号,商品番号}に完全従属する属性だけを残す
第3正規形では、主キー全体に完全関数従属し、かつ推移的従属のない属性だけを同じ関係に残す。数量と販売単価は{注文番号, 商品番号}に完全従属するので、この2属性を主キーとする関係にまとめる。注文日と顧客番号は注文番号に、顧客名は顧客番号に、商品名は商品番号に従属するので別の関係へ分ける。
出典:令和4年度 春期 応用情報技術者試験 午前 問28(IPA)解説で登場
第1、第2、第3正規形とリレーションの特徴a, b, cの組合せのうち、適切なものはどれか。 a:どの非キー属性も、主キーの真部分集合に対して関数従属しない。 …
正解:第1正規形:c/第2正規形:a/第3正規形:b
要点:正規化は繰返し→部分従属→推移的従属の順に取り除く
第1正規形は繰返し項目を排除して各欄が単一の値になった状態(c)を指す。第2正規形はさらに、主キーの一部だけで決まる属性(部分関数従属)を分離した状態(a)である。第3正規形では、非キー属性を経由して間接的に決まる推移的関数従属も取り除く(b)。この順で段階的に冗長性を減らしていく。
出典・参考
公式シラバスの4 開発技術 > 2. 設計 > (9) ソフトウェア設計手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。