問題本文
ファイルで管理されていた受注データを、受注に関する情報と商品に関する情報に分割して、正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして、最も適切なものはどれか。ここで、同一商品名で単価が異なるときは商品番号も異なるものとする。 受注データ: 受注番号, 発注者名, 商品番号, 商品名, 個数, 単価 例: T0001, 山田花子, M0001, 商品1, 5, 3,000 / T0002, 木村太郎, M0002, 商品2, 3, 4,000 / T0003, 佐藤秋子, M0001, 商品1, 2, 3,000
選択肢
- ア.[受注番号, 発注者名] / [商品番号, 商品名, 個数, 単価]
- イ.[受注番号, 発注者名, 商品番号] / [商品番号, 商品名, 個数, 単価]
- ウ.[受注番号, 発注者名, 商品番号, 個数] / [商品番号, 商品名, 単価]
- エ.[受注番号, 発注者名, 商品番号, 個数, 単価] / [商品番号, 商品名]
正解
ウ. [受注番号, 発注者名, 商品番号, 個数] / [商品番号, 商品名, 単価]
解説
関係データベースの第3正規化では,主キー以外の項目間の関数従属(推移従属)を分離する. 受注番号で決まる項目(発注者名・商品番号・個数)と,商品番号で決まる項目(商品名・単価)を別表に分解する. 商品名と単価は商品番号にのみ依存するため受注側に持たせるのは冗長. 受注表は商品番号を外部キーとして商品表を参照し,個数は受注ごとの属性なので受注側に置く形が適切な正規化結果. 更新異常の防止が正規化の主目的となる. 第1正規形・第2正規形・第3正規形の段階的な正規化手順を理解することが重要. データ重複と更新異常を防ぎ整合性確保が正規化の核心.
選択肢ごとの解説
- ア.誤り. 商品番号と個数の所属が逆になっており,個数は受注ごとに異なる属性であるため商品表ではなく受注表に置くべき. 関数従属の整理を誤った分割となり,個数=受注属性という業務理解の誤りを含んでいる選択肢である. この用語の正確な定義と他選択肢との明確な区別を押さえることが理解の要点
- イ.誤り. 個数が抜けており,商品表に商品ごとに固定値として個数を入れるのも誤り. 個数は受注ごとに異なるため受注表に保持するのが正規化として正しい姿で,この組合せでは情報が欠落する不適切な構成である. この用語の正確な定義と他選択肢との明確な区別を押さえることが理解の要点
- ウ.正しい. 受注に関する項目(発注者名・商品番号・個数)と商品に関する項目(商品名・単価)を分け,受注表が商品番号で商品表を参照する形が第3正規形のため. 推移従属を排除しデータ冗長性を解消できる正しい分解である. この用語の正確な定義と他選択肢との明確な区別を押さえることが理解の要点
- エ.誤り. 単価は商品番号で決まるため受注表に持つのは冗長であり,同一商品なら全受注で単価が一致するという制約を表現できず第3正規形を満たさない. 単価の更新異常を招くおそれがある不適切な構造である. この用語の正確な定義と他選択肢との明確な区別を押さえることが理解の要点
ITパスポート 2014年 (平成26年 春期) の過去問一覧へ戻る・問60