問題
テクノロジ系
問81 一つの表で管理されていた受注データを,受注に関する情報と商品に関する情報に分割して,正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして,最も適切なものはどれか。ここで,同一商品で単価が異なるときは商品番号も異なるものとする。また,発注者名には同姓同名はいないものとする。
選択肢
- ア
- イ
- ウ
- エ
解説
正解:エ
概要
この問題は、受注データを「受注に関する情報」と「商品に関する情報」に分割して正規化したとき、関係データベースでどのような表構成になるかを問う問題です。
正解の理由
商品番号が同じなら商品名と単価は一意に決まり、発注者名は同姓同名がないので発注者名も受注番号に従属します。したがって、受注表は受注番号と発注者名、明細表は受注番号と商品番号と個数、商品表は商品番号と商品名と単価に分けるのが適切です。選択肢エは受注表と明細表に必要な項目を含むため正解です。
各選択肢の解説
ア(×): 受注番号と発注者名だけでは、商品に関する情報や個数が管理できません。受注明細が表現できないため誤りです。
イ(×): 受注番号と商品名と単価では、同一商品を一意に識別する商品番号が欠けています。正規化の前提である商品表の主キーが成立しにくく誤りです。
ウ(×): 受注番号・発注者名・商品番号だけでは、受注明細に必要な個数が欠けます。注文数量を管理できないため誤りです。
エ(〇): 受注番号と発注者名で受注情報を管理し、受注番号と商品番号と個数で受注明細を管理できます。商品番号に商品名と単価を対応させる商品表に分ければ正規化できるため正しいです。
ポイント
正規化では「商品番号→商品名・単価」のような従属性を切り出し、受注はヘッダ(受注番号・発注者名)と明細(受注番号・商品番号・個数)に分けて管理します。