第2正規形から第3正規形への変換手順|科目A-1(応用情報技術者) 令和7年 春期午前試験 問26

出典:令和7年春期 午前 問26 分野:データベース / データベース設計
関係を第2正規形から第3正規形に変換する手順はどれか。
  • ア:候補キー以外の属性から,候補キーの一部の属性に対して関数従属性がある場合,その関係を分解する。
  • イ:候補キー以外の属性間に関数従属性がある場合,その関係を分解する。
  • ウ:候補キーの一部の属性から,候補キー以外の属性への関数従属性がある場合,その関係を分解する。
  • エ:一つの属性に複数の値が入っている場合,単一の値になるように分解する。
応用情報技術者
解説

関係の正規化とは、データベースの表を整理して、データの重複や更新ミスを起こしにくくする考え方です。

簡単にいうと、「1つの表に何でも詰め込まず、意味のまとまりごとに表を分ける作業」です。

正規化 何をするか イメージ
第1正規化 1つの欄に複数の値を入れない 「商品A、商品B」のような繰り返し項目を分ける
第2正規化 主キーの一部だけで決まる項目を別表に分ける 複合主キーの一部だけに依存する項目を切り出す
第3正規化 主キー以外の項目から決まる項目を別表に分ける 商品IDで商品名が決まるなら、商品表に分ける

たとえば、次のような表があるとします。

受注ID 商品ID 商品名 顧客ID 顧客名
001 A01 ノートPC C01 田中

この表では、商品名は商品IDが分かれば決まります。また、顧客名は顧客IDが分かれば決まります。

つまり、商品名や顧客名は、受注IDそのものではなく、商品IDや顧客IDに依存しています。このように、主キー以外の項目から決まる項目をそのまま同じ表に入れておくと、同じ商品名や顧客名が何度も出てきて、修正漏れの原因になります。

そこで、第3正規化では次のように表を分けます。

項目
受注表 受注ID、商品ID、顧客ID
商品表 商品ID、商品名
顧客表 顧客ID、顧客名

このように分けると、商品名を変更したいときは商品表だけを直せばよくなります。顧客名を変更したいときも、顧客表だけを直せば済みます。

つまり正規化は、「データの重複を減らし、変更に強い表に整理すること」です。科目A-1試験では、まず第1正規化から第3正規化までを押さえれば十分です。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:候補キー以外の属性から,候補キーの一部の属性に対して関数従属性がある場合,その関係を分解する。
⇒候補キーではない属性が候補キーの一部を決定する関数従属性は、第3正規形よりも厳しいボイスコッド正規形への変換で問題になる場合があります。第3正規化で取り除くのは、候補キー以外の属性間にある関数従属性です。
ウ:候補キーの一部の属性から,候補キー以外の属性への関数従属性がある場合,その関係を分解する。
⇒第2正規化の手順です。複数の属性から成る候補キーの一部だけに、非キー属性が依存する部分関数従属を取り除きます。例えば、候補キーが{受注ID、商品ID}で、商品ID → 商品名が成り立つ場合、商品IDと商品名を別の関係へ分離します。
エ:一つの属性に複数の値が入っている場合,単一の値になるように分解する。
⇒第1正規化の手順です。繰返し項目や集合値を取り除き、各行・各列の交点に一つの値だけが入るようにします。
TSUNAGARU-ADVICE

まず押さえたいこと

第2正規形から第3正規形へ進めるときは、候補キー以外の属性どうしにある推移的関数従属性を取り除きます。つまり、候補キー以外の属性が、別の候補キー以外の属性によって決まる場合に関係を分解します。

迷ったときの判断軸

候補キーの一部から候補キー以外の属性が決まる部分関数従属を取り除くのは、第1正規形から第2正規形への変換です。一つの属性に複数の値が入っている状態を分解するのは、第1正規形にする段階です。「非キー属性 → 非キー属性」が残っていないかを確認しましょう。

科目Bにつなげるために

特にプロフェッショナルデジタルスキル(データ・AI)試験合格を目指す方は、第2正規形では部分関数従属、第3正規形では推移的関数従属を取り除くと整理すると有効です。更新時異常や削除時異常を防ぐテーブル設計の問題につながります。