修了試験 2016-07-24実施分 基本情報技術者試験 問28
次の“受注台帳”表を“注文”表と“顧客”表に分解し,第3正規形にしたとき,両方に必要な属性はどれか。 ここで,送付先と支払方法は注文ごとに決めるものとする。 また,表の下線は主キーを表す。 受注台帳(_注文番号_,注文年月日,顧客ID,顧客名,顧客住所,品目,数量,送付先,支払方法,受注金額)
正答1
解説
正解は1です。 受注台帳を第3正規形まで正規化したとき、注文表と顧客表の両方に残る属性を問う問題です。 第3正規形では、主キー以外の属性が主キー以外の属性に従属する関係(推移的関数従属)を取り除きます。 注文番号が決まると顧客IDが決まり、顧客IDが決まると顧客名と顧客住所が決まります。 この推移的関数従属を取り除くため、顧客名と顧客住所を、顧客IDを主キーとする顧客表に分けます。 その結果、注文表は(注文番号、注文年月日、顧客ID、品目、数量、送付先、支払方法、受注金額)、顧客表は(顧客ID、顧客名、顧客住所)になります。 【選択肢別解説】 1:○ 顧客IDは顧客表の主キーであり、注文表では顧客表を参照する外部キーとして残ります。 したがって両方の表に必要です。 2:× 顧客名は顧客IDによって決まる属性なので、顧客表だけに置きます。 注文表にも残すと、データが重複して更新時の不整合の原因になります。 3:× 支払方法は、問題文で注文ごとに決めるとされているので、注文番号に従属します。 注文表だけに置きます。 4:× 注文番号は注文表の主キーです。 顧客表の属性は顧客IDだけで決まるので、顧客表に注文番号は不要です。 【ポイント】 表を分解したときに両方に残るのは分解の基準になった属性で、一方では主キー、もう一方では外部キーになります。 送付先のように顧客の属性に見えるものでも、問題文の条件で注文ごとに決まるなら注文表に置きます。まとめて解く
修了試験 2016-07-24実施分を通しで解く(80問)→