データベース
基本情報技術者試験 科目A免除 修了試験 20120624 実施分 問30
次のような繰返し構造をもったデータを,第 3 正規形に正規化したものはどれか。ここで,下線部分は主キーを表す。また,単位と単価は商品コードごとに決まるものとする。
元データ(繰返し構造): [伝票番号(主キー)|日付|顧客コード|顧客名|住所|#1|#2|#3|…|#n]。#1〜#n は「繰返し」で,各 #: [商品コード(主キー)|単位|数量|単価]。
選択肢は各項の表(レコード)の列挙。下線(主キー)は図の下線に基づく。
- ア [図] 4 表: 伝票番号(主キー)・顧客コード / 顧客コード(主キー)・顧客名・住所 / 伝票番号(主キー)・日付(主キー)・商品コード(主キー)・数量 / 商品コード(主キー)・単位・単価
- イ [図] 4 表: 伝票番号(主キー)・日付・顧客コード / 顧客コード(主キー)・顧客名・住所 / 伝票番号(主キー)・商品コード(主キー)・数量 / 商品コード(主キー)・単位・単価
- ウ [図] 3 表: 伝票番号(主キー)・日付・顧客コード・顧客名・住所 / 伝票番号(主キー)・商品コード(主キー)・数量 / 商品コード(主キー)・単位・単価
- エ [図] 2 表: 伝票番号(主キー)・日付・顧客コード・顧客名・住所 / 伝票番号(主キー)・商品コード(主キー)・単位・数量・単価
出典:基本情報技術者試験 科目A免除 修了試験 20120624 実施分 問30
答えと解説を見る
正解:イ
覚える知識
関数従属性に基づく第3正規形への分解
第3正規形は、主キー以外の属性が他の属性を介して主キーに従属する推移的関数従属を取り除いた形である。
この問題で必要なこと
繰返し部分を分離し、部分関数従属(商品コード→単位・単価)と推移的関数従属(顧客コード→顧客名・住所)を分離すると、伝票・顧客・明細・商品の4表になる。
ひっかけ
顧客名・住所を伝票表に残す、または単位・単価を明細表に残す不完全な分解を選ばせる。
この知識の出題:本試験系 6 回・免除試験 32 回(公開問題での観測値)