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

令和5年度秋期 データベーススペシャリスト 午前Ⅱ 問8

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

問題

次の表を,第3正規形まで正規化を行った場合,少なくとも幾つの表に分割されるか。ここで,顧客の1回の注文に対して1枚の受注伝票が作られ,顧客は1回の注文で一つ以上の商品を注文できるものとする。
受注番号,顧客コード,顧客名,受注日,商品コード,商品名,単価,受注数及び受注金額をもつ受注明細表。
受注番号,顧客コード,顧客名,受注日,商品コード,商品名,単価,受注数及び受注金額をもつ受注明細表。

選択肢

  1. ア
    2
  2. イ
    3
  3. ウ
    4
  4. エ
    5
解き方のヒントを見る

正規化で分割単位を見極める視点

注文と商品の関係、受注伝票が表す単位、顧客や商品に関する情報の所属先に注目し、同じ事実を無理なく管理できる表の構成を考えます。

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

第3正規形という段階名だけで判断せず、注文・伝票・商品・顧客の間で、各情報が何を識別し、どの対象に依存するかという関係に焦点を当てて検討します。

視点

正規化では、異なる対象についての事実を一つの表に混在させないことが重要です。注文全体に関する情報と、注文内の個々の商品の情報を分けて捉え、それぞれの情報がどの対象に属するかを整理してください。

確認ポイント

  • 注文全体と注文内の商品明細を別々の対象として捉えられているか
  • 顧客や商品の情報が、注文の情報と同じ対象に属しているかを確認する
  • 各表で管理する事実が、その表の識別対象に自然に結び付いているかを確認する
正解と解説を見る

正解

ウ

解説

注文番号は顧客や注文日を決め、顧客コードは顧客名を決め、商品コードは商品名や単価を決める。注文ごとの商品明細も独立させる必要があるため、顧客、注文、商品、注文明細の4表に分割する。

理由

1回の注文には複数商品が含まれるため、注文番号だけでは商品コード、受注数、受注金額まで一意に決まらない。注文番号と商品コードの組合せを注文明細の識別に用いる。一方、顧客コードから顧客名、商品コードから商品名と単価が決まるので、それぞれを別表にする。

比較

必要な表は、顧客コードと顧客名を持つ顧客表、注文番号と顧客・注文日を持つ受注表、商品コードと商品名・単価を持つ商品表、注文番号・商品コード・受注数・受注金額を持つ注文明細表です。したがって最小分割数は4となる。

選択肢ア

これは不正解だよ。2表だけでは、顧客情報と商品情報、注文単位の情報、複数商品の明細を十分に分離できない。顧客コードから決まる顧客名や商品コードから決まる商品名・単価が注文データに残り、関数従属の整理が不足するため、第3正規形までの分割数としては足りない。

選択肢イ

これは不正解だよ。3表に分けても、顧客表、商品表、注文または注文明細のいずれかで複数の役割を兼ねる必要が生じる。注文ごとの顧客情報と商品ごとの情報、さらに注文と商品の組合せに固有の数量・金額を独立して表現するには、もう一つ表が必要になる。

選択肢ウ(正解)

これは正解だよ。顧客表、受注表、商品表、注文明細表の4表に分ければ、顧客コードから顧客名、商品コードから商品名と単価、注文番号から注文情報を管理できる。受注数と受注金額は注文番号と商品コードの組合せに対応し、第3正規形の分離を満たせる。

選択肢エ

これは不正解だよ。5表でも正規化された構造を作ることは可能だが、設問は第3正規形に必要な最小の分割数を尋ねている。顧客、受注、商品、注文明細の4表で各属性の依存関係を分離できるため、追加の表を設ける必要はなく、最小数としては過剰である。

学習のポイント

第3正規形では、主キーの一部や別の非キー項目に依存する属性を分離する。

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

関連する過去問一覧

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