FE SUBJECT A
基本情報技術者 科目Aの問題解説:注文表(注文番号, 顧客ID, 顧客名)で、顧客ID→顧客名…
問題
注文表(注文番号, 顧客ID, 顧客名)で、顧客ID→顧客名が成り立つとき、第3正規形に近づける設計はどれか。
- ア 注文番号を削除する
- イ 顧客名を注文表に2列追加する
- ウ 注文表から顧客名を分離し、顧客表(顧客ID, 顧客名)を作る(正解)
- エ 全ての列を結合して1列にする
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲
正解と解説
正解:注文表から顧客名を分離し、顧客表(顧客ID, 顧客名)を作る
考え方:第3正規形で何を解消するのかを問う問題です。注文番号が注文表の主な識別子だとしても、顧客名は顧客IDから決まります。つまり、注文番号→顧客ID→顧客名という推移的な関係があり、顧客名を注文表に持たせ続けると同じ顧客名が何度も重複してしまいます。
正規化の狙い:顧客表(顧客ID, 顧客名)を作り、注文表には顧客IDを残すと、顧客名を変更したときの更新漏れを防げます。第3正規形では、キー以外の項目が別のキー以外の項目に依存しないようにすると覚えておくと迷いません。
誤答の理由:顧客名を増やすのは冗長化、注文番号を削除するのは識別情報の喪失、全列結合は検索・更新を困難にする設計であり、いずれも適切ではありません。
他の選択肢はなぜ違う?
- ア注文番号を消すと注文そのものを識別できなくなる。
- イ顧客名の列を増やすのは重複を増やす方向。正規化と逆。
- エ全列を1列に結合すると第1正規形ですらなくなる。
この問題について
IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。
公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。