DBデータベーススペシャリスト試験 午前Ⅱ

平成22年度春期 データベーススペシャリスト 午前Ⅱ 問6

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

次の表を情報無損失分解したものはどれか。ここで,下線部は主キーを表す。 発注伝票(注文番号,商品番号,商品名,商品単価,注文数量) 主キー:注文番号と商品番号の複合キー

選択肢

  1. ア
    発注(注文番号,注文数量),主キー:注文番号/商品(商品番号,商品名,商品単価),主キー:商品番号
  2. イ
    発注(注文番号,注文数量),主キー:注文番号/商品(注文番号,商品番号,商品名,商品単価),主キー:注文番号と商品番号
  3. ウ
    発注(注文番号,商品番号,注文数量),主キー:注文番号と商品番号/商品(商品番号,商品名,商品単価),主キー:商品番号
  4. エ
    発注(注文番号,商品番号,注文数量),主キー:注文番号と商品番号/商品(商品番号,商品名,商品単価,注文数量),主キー:商品番号
解き方のヒントを見る

分解と主キーの確認視点

表を分ける前後で、元の情報を保てるかという観点と、各表で識別に使われる属性の役割を分けて整理し、両者を混同しないように確認します。

この問題で問われていること

分解の妥当性そのものではなく、情報の対応関係と識別の手がかりがどのようにつながっているかに注目して、表ごとの役割を比較してください。

視点

分解によって生じる表同士の対応関係を追い、情報の再構成に必要な手がかりと、各表内で行を区別する手がかりを別々に整理します。

確認ポイント

  • 分解前後で対応付ける情報が保たれているか
  • 各表で行を識別する属性の役割は何か
  • 表同士を関連付ける手がかりが整理されているか
正解と解説を見る

正解

ウ

解説

正答はウです。発注伝票の複合主キーを保った発注表と、商品番号を主キーとする商品表に分けると、商品情報を分離しながら注文ごとの商品と数量の対応を失わず復元できます。

理由

元の発注伝票では、注文番号と商品番号の組合せが主キーです。商品番号から商品名と商品単価が決まるため、注文番号・商品番号・注文数量を発注表に残し、商品番号・商品名・商品単価を商品表に分けられます。

比較

この分解では、商品番号を共通属性として結合すれば、各注文の商品と数量の対応を維持したまま元の属性を復元できます。一方、注文番号や商品番号、注文数量の対応を別々にすると、結合時に元の伝票にはない組合せが生じます。

選択肢ア

これは不正解だよ。発注表の主キーを注文番号だけにしているため、同じ注文で複数の商品を扱う場合に、商品ごとの注文数量を区別できません。元の複合キーが示す注文番号と商品番号の対応が失われ、結合しても各商品の数量を正しく復元できません。

選択肢イ

これは不正解だよ。発注表から商品番号を外しているため、注文番号だけでは同じ注文に含まれる各商品の注文数量を一意に対応付けられません。商品表には注文番号と商品番号が残っていても、結合時に一つの数量が別の商品にも結び付く組合せが生じ得ます。

選択肢ウ(正解)

これは正解だよ。発注表が注文番号・商品番号・注文数量を持ち、注文番号と商品番号の複合キーを維持しています。商品表では商品番号を主キーとして商品名と商品単価を管理するため、商品番号で結合すれば商品情報を補いながら、注文ごとの商品と数量の対応を失わず元の表を復元できます。

選択肢エ

これは不正解だよ。商品表に注文数量を含め、その主キーを商品番号だけにしているため、同じ商品が複数の注文に現れる場合の数量を区別できません。注文数量は商品番号だけでなく注文番号との組合せに依存するので、商品表の属性として置くと元の注文ごとの数量を正しく表せません。

学習のポイント

複合主キーと関数従属性を用いて、分解後の自然結合が無損失になる条件を確認する。

出典:独立行政法人 情報処理推進機構(IPA)平成22年度春期 データベーススペシャリスト試験 午前Ⅱ 問6(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針