DBデータベーススペシャリスト試験 午後Ⅱ
平成22年度春期 データベーススペシャリスト 午後Ⅱ 問2
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題







解き方のヒントを見る
数量属性の置き場所をキーから考える
業務データモデルの問題では、ある数量がどのエンティティの属性として記録されるべきかを、その値を一意に決める識別子の組合せから検討する姿勢が役立ちます。業務の流れと記録の単位を対応付けて考えましょう。
この問題で問われていること
確認すべき観点は、数量を表す各属性について『何が決まればその値が一つに定まるか』です。業務上その数量が発生・更新される単位(どの取引・どの明細・どの時点か)を意識し、関数従属性の観点から整理してください。
視点
関係スキーマの属性は、その値を一意に決定する主キー(または主キーを構成する属性の組合せ)をもつ関係に置くのが基本です。数量のような値は、業務のどの出来事で生まれ、どの単位で記録・更新されるかによって、従属する識別子が変わり得ます。属性を置く場所を決めるときは、名称の印象ではなく『その値を決めるのに必要十分な識別子は何か』を一つずつ確かめることが、正規化や整合性の検討につながります。
確認ポイント
- 各数量属性について、その値を一意に決める識別子(主キーまたはその組合せ)は何かを確認する
- その数量が業務のどの出来事で生じ、同じ単位で繰り返し記録され得るかを確認する
- その値が他の属性から導出できるものか、独立して記録する必要があるものかを区別して確認する
正解と解説を見る
解説
組立て家具メーカD社の受注・入出庫・出荷業務を題材に、キット製品の追加と重点品の直接荷ぞろえという業務改善を概念データモデルと関係スキーマに反映させる問題です。販売製品・キット製品・パーツのスーパータイプ/サブタイプ構造、受注明細と受注明細展開明細という二重のサブタイプ構造、生産枠と当日枠(パーツ生産指示)への引当リレーションシップ、さらに生産枠→パーツ生産指示→パーツ生産実績→入庫実績と引き継がれる総数・引当済数・引当可能数の設定方法が問われています。採点講評では、マスタ系の正答率は高かった一方、受注明細のサブタイプ構造、生産枠・当日枠への引当リレーションシップ、外部キー属性、表2の正答率が低かったとされています。
問題の全体像
D社はパーツ単位で受注し、在庫と部位単位の生産枠へ引き当てています。新業務では次の二つの改善を行います。(1)入出庫数の上位5%に当たる重点品は、当日生産分を入庫せずに生産ラインから直接荷ぞろえして搬送数を減らす。そのため、引当の優先順位を当日枠→在庫→翌営業日以降の生産枠に変える。(2)キット製品を追加し、販売製品をパーツとキット製品のスーパータイプとする。キット製品を受注したときは、その時点の構成を複写して受注明細に展開する。出題趣旨では、実在するものの写像だけでなく、業務ルールによって決まるデータ構造とその変化を見抜き、実装する力を評価するとしています。本問では“生産枠”という業務ルールとその変更が題材です。採点講評では、受注明細のサブタイプ構造、“生産枠”と“当日枠”への引当に関わるリレーションシップ、外部キー属性、表2の正答率が低かったと指摘されています。
設問1(1)(a)
公式解答例は「販売製品」です。改善要望2(4)に、パーツとキット製品のスーパータイプとして“販売製品”を置き、共通の“製品コード”で両者を一意に識別すると明記されています。図3でもaの下にサブタイプの三角記号があり、b(キット製品)とパーツにつながっています。また、キット製品もパーツもカラーをもつため(改善要望2(2))、カラーからの矢印はスーパータイプであるaに向きます。
設問1(1)(b)
公式解答例は「キット製品」です。販売製品のもう一方のサブタイプです。改善要望2(2)で、キット製品には構成パーツ中の主要なパーツのシリーズを設定するとあります。そのため、シリーズからbへの矢印があります。完成寸法もキット製品だけがもつ属性です。パーツ側のシリーズは品目を経由して決まるので、パーツはシリーズを直接参照しません。
設問1(1)(c)
公式解答例は「キット製品構成パーツ」です。改善要望2(3)に、どのキット製品に何のパーツを幾つ(使用数)用いるかを決めるとあります。キット製品とパーツの多対多を解消する連関エンティティです。図3ではbからcへの矢印だけがあり、パーツからcへの矢印は設問1(2)で補います。
設問1(1)(d)
公式解答例は「在庫」です。現状業務5(1)で、パーツごとに基準在庫数を決めて在庫を保有しているとあります。在庫はパーツと1対1なので、図3ではパーツとdが矢印のない線で結ばれています。引当対象の一つである在庫を独立したエンティティタイプとして捉えられるかがポイントです。
設問1(1)(e)
公式解答例は「キット製品受注明細」です。図2のとおり、受注明細には製品コードとしてパーツを指定する明細(明細番号1、2、4)とキット製品を指定する明細(明細番号3)があります。受注明細はこの2種類に分かれます。eはfへの矢印をもつことから、構成パーツ展開の親となるキット製品の受注明細だと判断できます。
設問1(1)(f)
公式解答例は「キット製品受注明細構成パーツ」です。改善要望2(6)にあるとおり、構成が後で変わっても受注内容が変わらないよう、受注時点のキット製品構成パーツを複写してキット製品の受注明細に続けて展開します(図2の構成番号1〜3の行)。eからfへの矢印は、1件のキット製品受注明細が複数の構成パーツをもつことを表しています。fは受注明細展開明細のサブタイプでもあります。
設問1(1)(g)
公式解答例は「パーツ受注明細」です。設計方針(4)では、キット製品の受注明細を構成展開したものと、パーツの受注明細のスーパータイプとして“受注明細展開明細”を置いています。gは受注明細展開明細のもう一方のサブタイプです。同時に、受注明細のサブタイプとしてキット製品受注明細(e)と対になります。一つのエンティティタイプが二つのスーパータイプのサブタイプになる構造を読み取れるかが問われています。
設問1(2)
公式解答例で追加されているリレーションシップは次のとおりです。①部位→生産枠(生産枠は部位ごと・年月日ごとに設定する)。②パーツ→パーツ生産指示(部位単位の生産枠をパーツごとに展開する)。③パーツ→キット製品構成パーツ。④パーツ生産実績と入庫実績の1対1(入庫実績が生産番号を参照する)。⑤生産枠→受注明細展開明細(生産枠引当)。⑥パーツ生産指示→受注明細展開明細(当日枠引当)。⑦受注明細をスーパータイプとし、キット製品受注明細とパーツ受注明細をサブタイプとする構造。⑧キット製品→キット製品受注明細。⑨パーツ→キット製品受注明細構成パーツ。⑩パーツ→パーツ受注明細。引当はパーツ単位で行う(改善要望2(7))ので、引当先への参照は受注明細ではなく受注明細展開明細に付けます。採点講評でも、受注明細のサブタイプ構造と生産枠・当日枠への引当リレーションシップの正答率が低かったとされており、特に見落としやすい部分です。
設問1(3)
公式解答例では、例に挙がっている出庫実績明細→受注明細展開明細に加えて、次の2行が示されています。①参照元が受注明細展開明細、参照先が生産枠で、契機は「当該受注明細展開明細のパーツについて生産枠引当が行われた」。②参照元が受注明細展開明細、参照先がパーツ生産指示で、契機は「当該受注明細展開明細のパーツについて当日枠引当が行われた」。引当とは割り当て先を決めることなので(現状業務6(1))、引当が起きた時点で、受注明細展開明細に生産枠のキー(部位コード、生産枠年月日)やパーツ生産指示のキー(生産番号)が設定されます。当日枠は“パーツ生産指示の当日分”と定義されているので、参照先はパーツ生産指示になります。
設問2(1)(ア)
公式解答例は「製品コード(主キー)、製品名、価格、カラーコード(外部キー)」です。改善要望2(4)で共通の製品コードで識別するとあり、製品名・価格・カラーはパーツとキット製品に共通する属性です。規則①に従い、共通の属性はスーパータイプの販売製品に置きます。
設問2(1)(イ)
公式解答例は「キット製品コード(主キー)、シリーズコード(外部キー)、完成寸法W、完成寸法H、完成寸法D」です。改善要望2(2)のうち、キット製品に固有なのは完成寸法とシリーズです(価格とカラーはアに含まれます)。パーツのサブタイプがパーツ製品コードをキーにしているのに合わせて、キーはキット製品コードとします。
設問2(1)(ウ)
公式解答例は「キット製品コード、パーツ製品コード、使用数」です。キット製品とパーツの組合せが主キーで、パーツ製品コードはパーツへの参照でもあります。使用数は改善要望2(3)の“何のパーツを幾つ用いるか”に当たります。下線の付け方は公式解答例の表記に合わせてください。
設問2(1)(エ)
公式解答例は「パーツ製品コード(主キー)、基準在庫数、実在庫数、引当済数、引当可能数」です。在庫はパーツと1対1なので、主キーはパーツ製品コードです。現状業務5(1)の基準在庫数と、6(2)の総数(在庫の場合は実在庫数)・引当済数・引当可能数をもちます。
設問2(1)(オ)
公式解答例は「生産番号(外部キー)」です。パーツは生産された後に入庫されるので、入庫実績はパーツ生産実績と対応します。入庫実績の数量属性(引当入庫数など)はパーツ生産実績の値を引き継ぎます(表2)。そのため、生産番号でパーツ生産実績を参照します。
設問2(1)(カ)
公式解答例は「顧客番号(外部キー)、受注年月日、引当年月日、出荷予定年月日」です。図2の受注画面のヘッダ項目が根拠です。納品先住所は顧客から導出でき、受注合計金額は明細から計算できるので、どちらも持ちません。出荷予定年月日は、受注全体として最も遅い引当可能日に合わせる(現状業務6(4))ため、受注の属性になります。
設問2(1)(キ)
公式解答例は「受注番号、明細番号(主キー)、キット製品コード(外部キー)」です。受注明細のサブタイプなので、主キーは受注明細と同じです。どのキット製品を受注したかを示すため、キット製品を参照する外部キーをもちます。
設問2(1)(ク)
公式解答例は「受注番号、明細番号、構成番号(主キー)、パーツ製品コード(外部キー)、構成パーツ数」です。図2の構成番号・パーツ製品コード・構成パーツ数の列が根拠です。受注時点の構成を複写して保持するので(改善要望2(6))、キット製品構成パーツを参照するのではなく、パーツを直接参照します。
設問2(1)(ケ)
公式解答例は「受注番号、明細番号(主キー)、パーツ製品コード(外部キー)、構成番号(外部キー)」です。パーツ受注明細は受注明細のサブタイプなので、主キーは受注番号と明細番号です。一方で、受注明細展開明細のサブタイプでもあります。そこで、設計方針(4)の固定値“0”の構成番号をもたせ、受注番号・明細番号・構成番号で受注明細展開明細を参照できるようにします。構成番号に外部キーの破線を付けることを見落とさないようにしましょう。
設問2(1)(コ)
公式解答例は「部位コード、生産枠年月日、生産番号」で、いずれも外部キーです。設問1(3)の2本のリレーションシップを属性として実装したものです。部位コードと生産枠年月日は生産枠の主キーを、生産番号はパーツ生産指示の主キーを参照します。採点講評が指摘する“外部キー属性の正答率が低かった”部分の典型例です。
設問2(1)(サ)
公式解答例は「出荷年月日」です。受注単位で分割出荷をしない(現状業務6(4))ので、出庫実績は受注番号を主キーとし、受注と1対1になります。現状業務9(3)で出庫実績として出荷年月日と出庫数を記録するとあり、このうち受注単位で決まる出荷年月日を出庫実績に置きます。
設問2(1)(シ)
公式解答例は「構成番号(主キー)、出庫数、出庫対象区分」です。出庫はパーツ単位で行う(改善要望2(7))ので、出庫実績明細は受注明細展開明細と同じ粒度にし、主キーは受注番号・明細番号・構成番号とします。設計方針(3)により、倉庫からの出庫か、生産ラインからの直接荷ぞろえかを識別する属性(出庫対象区分)を追加します。
設問2(2)
公式解答例の要点は次のとおりです。【パーツ生産指示】⑥引当可能数:行挿入時は重・非とも④−⑤、引当による更新時は“−”。現状業務7(3)の“生産指示数と引当済数から算出”に対応します。⑦重点品当日引当数:重は行挿入時ゼロ、更新時に⑦+当日枠引当された数。⑧重点品当日引当可能数:重は行挿入時⑥、更新時に⑧−当日枠引当された数。当日枠引当は重点品だけの仕組みなので、⑦⑧の非は行挿入時・更新時とも“−”です。【パーツ生産実績】⑩非重点品引当済数は非のとき⑤、⑪非重点品引当可能数は非のとき⑨−⑩で、重は“−”です。⑫重点品出庫対象数は重のとき⑤+⑦(事前の生産枠引当分と当日枠引当分を生産ラインから荷ぞろえする)、⑬重点品入庫対象数は重のとき⑨−⑫(余剰分を入庫する)で、非は“−”です。【入庫実績】⑭入庫数は重が⑬、非が⑨。⑮引当入庫数は重がゼロ(引当済み分は直接出荷されるため)、非が⑩。⑯引当可能入庫数は重が⑬、非が⑪。パーツ生産実績と入庫実績の更新時の欄はすべて“−”です。生産枠の総数・引当済数・引当可能数を最終的に在庫へ正しく反映する(現状業務8)という流れに沿って考えると、式を導けます。なお、表中にあらかじめ記入されている③の更新時の内容は、問題冊子では“②−生産枠引当された数”、公式解答例では“③−生産枠引当された数”と表記が異なっています。採点講評は、この設問は全般的に正答率が低かったものの、引当属性の基本の役割と各業務イベントでの設定方法は本文に与えられており、よく読めば正解を導けるとしています。
学習のポイント
本文の業務ルール(引当の優先順位、展開の粒度、構成番号“0”、出庫対象区分など)を一文ずつエンティティ・属性・リレーションシップ・算出式に対応づける練習をすることが重点です。特に、トランザクション系のサブタイプ構造と、引当によって値が決まる外部キーを見落とさないようにしましょう。
出典:独立行政法人 情報処理推進機構(IPA)平成22年度春期 データベーススペシャリスト試験 午後Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針