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

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

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問2 組立て家具メーカにおける受注・入出庫・出荷業務に関する次の記述を読んで,設問1,2に答えよ。 D社は,組立て家具のメーカであり,ホームセンタなどの量販店,内装工事店,家具店,インテリアショップなどに組立て家具のパーツを販売している。D社では,利益率が次第に減ってきていることから,コスト抑制が懸案となっている。また,大手顧客からは,店頭で消費者に説明しやすい製品として,キット製品の投入を要望されている。 そこでD社では,コスト抑制策とキット製品投入に対応するために,システム再構築を行うことにした。そのための業務分析の範囲は,受注業務,入出庫業務,及び出荷業務である。 システム再構築に当たっては,現状業務の分析を行った後に,新業務に向けての改善要望をまとめ,これを反映した新業務の概念データモデル及び関係スキーマを設計することにした。 〔現状業務分析の結果〕 1.組織・拠点 受注センタ,倉庫,出荷拠点は,すべて1か所の本社工場内にある。 2.顧客 (1) 主な顧客は,ホームセンタなどの量販店,内装工事店,家具店,インテリアショップである。 (2) 顧客台帳には,顧客名,納品先住所,電話番号を登録している。 3.製品 (1) 製品の最小単位をパーツと呼ぶ。受注はパーツ単位に行われ,製品名,価格は,パーツごとに設定している。 (2) パーツを分類するカテゴリには,カラー,品目,シリーズ,部位がある。 (3) カラーとは,パーツに設定している色柄である。カラーには,オーク,メープル,チェリー,ホワイト,マットブラックなどがある。 (4) 品目とは,カラー以外の属性がすべて同じパーツの集合である。 (5) 品目ごとに,規格サイズが決まっている。規格サイズとは,幅,高さ,奥行きについて,それぞれのサイズを規定したものである。規格サイズは,幅,高さ,奥行きの有限な組合せで変化もないので,独立した管理対象とはしていない。 (6) シリーズは,品目の分類の一つで,主な用途と材質による質感の組合せで設定している。例えば,寝室向けアーバンタイプ,寝室向けナチュラルタイプ,子供部屋向けファンシータイプ,子供部屋向けナチュラルタイプなどがある。 (7) 部位は,品目のもう一つの分類で,棚板,引き出しユニット,接続ボルトナット,キャスタなど,組立て家具を構成する類似の形状をもつ要素のことである。 4.受注の単位 (1) 一つの受注で,複数のパーツの注文を受け付けている。 (2) 受注では,顧客から受け取ったままの情報を保持するので,一つの受注の異なる受注明細に,同じパーツが指定されることを許している。 5.在庫と生産枠 (1) パーツごとに基準在庫数を決めて,在庫を保有している。 (2) 受注に対して在庫が不足しない場合,受注したパーツは,在庫から引き当てる。 (3) 受注に対して在庫が不足する場合,受注したパーツは,生産枠から引き当てる。生産枠とは,年月日ごとの生産予定数を設定したものである。生産枠は,パーツごとではなく,部位ごとに設定している。また,生産枠の登録は,毎月最終営業日に,向こう2か月分の営業日を対象として生産管理室が行っている。 6.引当の方法 (1) 引当とは,受注したパーツについて,在庫又は生産枠のどちらを出荷用に割り当てるかを決め,出荷予定年月日を確定することである。 (2) 在庫と生産枠にはともに,次の属性をもたせている。 ① 総数   :在庫又は生産枠の合計数である。“総数”は総称であり,属性名は,在庫の場合“実在庫数”,生産枠の場合“生産予定数”である。 ② 引当済数 :総数のうちの既に引き当てられた数である。初期値はゼロで,引当の都度,受注数を加算する。 ③ 引当可能数:総数のうちの現時点で引当可能な数で,次の式が成立する。 引当可能数=総数-引当済数 (3) 引当対象の優先順位の第1位は在庫であり,第2位以降は生産枠である。第2位以降の場合,受注日の翌営業日から順に探して,引当可能数が受注数を上回る最初の営業日の生産枠が引当対象となる。 (4) 受注に含まれる複数の受注明細は,引当可能な日が異なっても,分割した出荷は行わない。そのため,一つの受注の出荷予定年月日は,すべての受注明細の中の最も遅い引当可能な日に合わせて決定する。 7.生産枠の部位単位からパーツ単位への展開 (1) 生産管理室は,毎日の業務終了後,翌営業日生産分の部位ごとの生産枠を,パーツごとの生産指示(パーツ生産指示)に展開する。 (2) パーツ生産指示の生産指示数は,受注状況及び在庫状況を考慮して決定する。 (3) パーツ生産指示では,パーツごとの引当済数と引当可能数を設定している。引当済数は,生産枠に引き当てた受注明細の受注数を,パーツ単位に集計することで算出している。引当可能数は,生産指示数と引当済数から算出している。 8.生産枠引当されたパーツの入庫による在庫情報の設定 受注したパーツを生産枠から引き当てることを生産枠引当と呼んでいる。生産枠引当の場合,その生産枠が生産の当日を迎えて,同じ日に新たに入った受注に対してどれだけ在庫引当が可能かを知ることが求められる。これを解決するために,生産枠の引当済数と引当可能数を,在庫の引当済数と引当可能数に正しく反映している。そのため,パーツ生産指示,パーツ生産実績,及び入庫実績にも,総数,引当済数,引当可能数に対応する属性をもたせている。 9.受注締切から出荷までの業務の流れ (1) 当日の受注を締め切ると,一括で引当を行い,顧客に対して納期回答を行う。 (2) 当日に受注して在庫引当をした受注と,前日以前に生産枠引当をして出荷予定年月日を迎えた受注について,当日分の荷ぞろえ指示を行う。 (3) 荷ぞろえ指示に基づいて出庫を行い,出荷場所に搬送する。出庫をもって在庫の更新(実在庫数と引当済数から出庫数を減じる),及び出庫実績として出荷年月日,出庫数の記録を行う。 (4) 荷ぞろえ終了後,出荷を行う。 10.生産指示から入庫までの業務の流れ (1) 前日の業務終了後に行った当日のパーツ生産指示に基づき,生産が行われ,パーツ生産実績を記録する。 (2) パーツは,生産される都度,入庫し,入庫実績を記録する。 〔新業務に向けての改善要望〕 1.コスト抑制策 (1) コスト抑制策として,工場内物流のパーツの入出庫及び荷ぞろえでの搬送の個数(以下,搬送数という)に着目し,これを削減することにした。 (2) 現状業務では,生産したパーツを一度すべて倉庫へ入庫し,荷ぞろえを行う出荷場所へは,すべて倉庫から出庫している。 (3) 入出庫について,パーツ別に入出庫数を統計分析したところ,入出庫数の多い上位5%のパーツが,全パーツの入出庫数の80%以上を占めていることが分かった。また,これらのパーツの日々の入庫数及び出庫数のばらつきは10%以内であることも分かった。 (4) そこで入出庫数の上位5%のパーツを“重点品”,その他のパーツを“非重点品”と呼び,重点品については,当日生産されたものを入庫せずに,パーツの生産ラインから荷ぞろえを行い,出荷場所へ直接搬送する方法にすることで,搬送数を削減することにした。重点品を対象とした現状業務と新業務でのパーツの流れを図1に,図1中の①~⑤に該当するパーツの流れと搬送数削減例を表1に示す。表1中の搬送数削減例での仮定は次のとおりである。 ・重点品A,重点品Bの当日の生産数 :200個,100個 ・重点品A,重点品Bの当日の総出荷数:180個,110個 図1 重点品を対象とした現状業務と新業務でのパーツの流れ 表1 図1におけるパーツの流れと搬送数削減例 (5) 重点品についての搬送数削減の方法は次のとおりである。 ① 引当方法の変更 ・引当対象の優先順位の第1位をパーツ生産指示の当日分(以下,当日枠という)とし,第2位を在庫に,第3位を翌営業日以降の生産枠とする。 ② 荷ぞろえ方法の変更 ・入庫については,従来のように生産の都度行うのではなく,生産終了まで行わない。当日荷ぞろえ指示された受注については,その引当をどこから行ったかには関係なく,当日の生産が完了したパーツから荷ぞろえを行う。 ・当日荷ぞろえ指示された数の合計に対して当日の生産指示数が不足する場合,不足分は倉庫から補って出庫する。 ・当日荷ぞろえ指示された数の合計に対して当日の生産指示数が上回る場合,余剰分は倉庫に入庫する。 ・個々の受注に対する荷ぞろえの際,パーツ単位には,当日生産したものと,倉庫から出庫したものを混在させない。 ・出庫の概念を拡張し,倉庫からの出庫だけでなく,生産ラインから直接出荷場所に搬送した荷ぞろえも記録対象に含める。 2.キット製品の追加 (1) D社のパンフレットでは,汎用性のある幾つかの組立て家具の組立て例を掲載しており,これをプランと呼んでいる。このプランに必要なパーツで構成したものをキット製品として販売対象に設定する。 (2) キット製品には,次の値を設定する。 ・価格: 構成パーツの価格の合計ではなく,キット製品としての価格 ・完成寸法(完成寸法W,完成寸法H,完成寸法D):  キット製品の完成時の幅,高さ,奥行き ・カラー: 構成パーツ中の主要なパーツのカラー ・シリーズ:構成パーツ中の主要なパーツのシリーズ (3) キット製品の構成では,どのキット製品に対して,何のパーツを幾つ用いるか(使用数)を決める。 (4) 現状のパーツに加えてキット製品が受注の単位となるので,“パーツ”と“キット製品”のスーパータイプとして“販売製品”を位置づけ,共通の“製品コード”で両者を一意に識別できるようにする。 (5) キット製品の構成は,一部パーツの設計変更によって,変更することがある。ただし,顧客にとってはキット製品の価値が変わらないケースが多く,その場合はキット製品の製品コードを変更しない。 (6) キット製品に対応した受注画面の例を図2に示す。キット製品の構成を変更してしまう可能性があるので,キット製品を受注した場合は,その時点のキット製品構成パーツを参照して複写し,キット製品の受注明細に続けて展開している。 図2 キット製品に対応した受注画面の例 (7) キット製品を受注した場合,当日枠,在庫,翌営業日以降の生産枠への引当は,展開したパーツ単位に行う。また,出庫もパーツ単位に行う。 〔新業務の概念データモデル及び関係スキーマの設計〕 現状業務分析の結果と新業務に向けての改善要望を基に,概念データモデル(図3)と関係スキーマ(図4)を設計した。設計の方針は次のとおりである。 (1) “パーツ生産指示”に,重点品の当日枠引当に関する属性を追加する。 (2) “パーツ生産実績”の引当に関する属性は,重点品と非重点品とで別な属性とする。 (3) “出庫実績明細”のインスタンスには,倉庫からの出庫によるものだけでなく,搬送数削減の流れによるものも含まれる。そのため,両者のどちらのインスタンスであるかを識別するための属性を追加する。 (4) キット製品の受注明細を構成展開したものと,パーツの受注明細のスーパータイプとして,“受注明細展開明細”を位置づける。その際,両者の粒度を合わせるために,パーツの受注明細に,固定値“0”を設定した構成番号をもたせる。 図3 概念データモデル(一部未完成) 図4 関係スキーマ(一部未完成) 解答に当たっては,主キー及び外部キーの表記を含めて,巻頭の表記ルールに従うこと。ただし,エンティティタイプ間の対応関係にゼロを含むか否かの表記は不要である。また,次の事項にも従うこと。 ① 識別可能なサブタイプが存在する場合,スーパータイプ及びサブタイプの両方を記述せよ。この場合,ほかのエンティティタイプとのリレーションシップは,スーパータイプ又はサブタイプのいずれか適切な方との間に記述せよ。また,サブタイプ間で共通の属性は,個々のサブタイプにもたせるのではなく,スーパータイプにもたせよ。 ② 各エンティティタイプを構成する属性の集合は,第3正規形の条件を満たしていること。 ③ エンティティタイプ名及び属性名は,その意味を識別できる適切な名称にすること。 設問1 概念データモデルの設計について,(1)~(3)に答えよ。 (1) 図3中の[a]~[g]に入れる適切なエンティティタイプ名を答えよ。 (2) 図3では,一部のリレーションシップが欠けている。そのリレーションシップを補い,図を完成させよ。 (3) 次の表の例に従って,図3で,エンティティタイプ“受注明細展開明細”に追加したリレーションシップのそれぞれについて,参照元エンティティタイプ,参照先エンティティタイプとともに参照元エンティティタイプの外部キーの値が設定される契機となる業務事象を答えよ。 設問1(3)の記入表(参照元エンティティタイプ/参照先エンティティタイプ/契機となる業務事象) 設問2 関係スキーマ及び属性値の設定方法について,(1),(2)に答えよ。 (1) 図4中の[ア]~[シ]に入れる属性名をすべて答え,図を完成させよ。解答に当たっては,主キーを表す下線,外部キーを表す破線の下線も正しく記述すること。 (2) 数を記録する属性の設定方法を表2にまとめた。一部記入されている内容に倣って,太枠で囲んだ空欄を埋め,表2を完成させよ。設定内容の記入に当たっては,表中にある属性はその番号(①~⑯)を用いること。また,該当する内容のない欄は,すべて“-”で埋めよ。 表2 数を記録する属性の設定方法
図1 重点品を対象とした現状業務と新業務でのパーツの流れ。生産ライン・倉庫・出荷場所の間のパーツの流れ図。破線が現状業務(①生産ライン→倉庫の入庫,②倉庫→出荷場所の出庫),実線が新業務(③生産ライン→出荷場所の直接荷ぞろえ,④余剰分入庫,⑤不足分出庫)を示す。
図1 重点品を対象とした現状業務と新業務でのパーツの流れ。生産ライン・倉庫・出荷場所の間のパーツの流れ図。破線が現状業務(①生産ライン→倉庫の入庫,②倉庫→出荷場所の出庫),実線が新業務(③生産ライン→出荷場所の直接荷ぞろえ,④余剰分入庫,⑤不足分出庫)を示す。
表1 図1におけるパーツの流れと搬送数削減例。番号・区分・搬送内容・搬送数の表。現状業務は①入庫200+100=300,②出庫180+110=290で合計590。新業務は③直接荷ぞろえ180+100=280,④余剰分入庫20+0=20,⑤不足分出庫0+10=10で合計310。
表1 図1におけるパーツの流れと搬送数削減例。番号・区分・搬送内容・搬送数の表。現状業務は①入庫200+100=300,②出庫180+110=290で合計590。新業務は③直接荷ぞろえ180+100=280,④余剰分入庫20+0=20,⑤不足分出庫0+10=10で合計310。
図2 キット製品に対応した受注画面の例。受注番号1003150001,受注年月日2010年3月15日,引当・出荷予定年月日3月19日,顧客B0001などの受注画面。明細3のキット製品UBT00101の下に,構成番号1~3の構成パーツ(UBS00102×6等)を展開した明細が続く。
図2 キット製品に対応した受注画面の例。受注番号1003150001,受注年月日2010年3月15日,引当・出荷予定年月日3月19日,顧客B0001などの受注画面。明細3のキット製品UBT00101の下に,構成番号1~3の構成パーツ(UBS00102×6等)を展開した明細が続く。
図3 概念データモデル(一部未完成)。顧客,シリーズ,部位,品目,カラー,空欄a~g,パーツ,生産枠,パーツ生産指示,パーツ生産実績,入庫実績,受注,受注明細,出庫実績,出庫実績明細,受注明細展開明細からなる概念データモデル。a配下にbとパーツ,展開明細配下にfとgのサブタイプがあり,一部のリレーションシップが欠けている。
図3 概念データモデル(一部未完成)。顧客,シリーズ,部位,品目,カラー,空欄a~g,パーツ,生産枠,パーツ生産指示,パーツ生産実績,入庫実績,受注,受注明細,出庫実績,出庫実績明細,受注明細展開明細からなる概念データモデル。a配下にbとパーツ,展開明細配下にfとgのサブタイプがあり,一部のリレーションシップが欠けている。
図4 関係スキーマ(一部未完成)。顧客,シリーズ,部位,品目,カラー,パーツ,生産枠,パーツ生産指示,パーツ生産実績,入庫実績,受注,受注明細,受注明細展開明細,出庫実績,出庫実績明細の関係スキーマ。空欄a~gの関係名と属性空欄ア~シがあり,パーツ生産指示の網掛け部は表示していない旨の注がある。
図4 関係スキーマ(一部未完成)。顧客,シリーズ,部位,品目,カラー,パーツ,生産枠,パーツ生産指示,パーツ生産実績,入庫実績,受注,受注明細,受注明細展開明細,出庫実績,出庫実績明細の関係スキーマ。空欄a~gの関係名と属性空欄ア~シがあり,パーツ生産指示の網掛け部は表示していない旨の注がある。
設問1(3)の記入表(参照元エンティティタイプ/参照先エンティティタイプ/契機となる業務事象)。参照元エンティティタイプ,参照先エンティティタイプ,契機となる業務事象の3列の表。記入例の1行目は出庫実績明細→受注明細展開明細,契機は当該受注明細展開明細のパーツについて出庫が行われた。続く2行は解答用の空欄である。
設問1(3)の記入表(参照元エンティティタイプ/参照先エンティティタイプ/契機となる業務事象)。参照元エンティティタイプ,参照先エンティティタイプ,契機となる業務事象の3列の表。記入例の1行目は出庫実績明細→受注明細展開明細,契機は当該受注明細展開明細のパーツについて出庫が行われた。続く2行は解答用の空欄である。
表2 数を記録する属性の設定方法。生産枠,パーツ生産指示,パーツ生産実績,入庫実績の各属性①~⑯について,重点品・非重点品の区分ごとに行挿入時と引当による更新時の設定内容を示す表。①~⑤と⑨は記入済みで,⑥~⑧の属性名と設定内容,⑩~⑯の設定内容が太枠の空欄になっている。
表2 数を記録する属性の設定方法。生産枠,パーツ生産指示,パーツ生産実績,入庫実績の各属性①~⑯について,重点品・非重点品の区分ごとに行挿入時と引当による更新時の設定内容を示す表。①~⑤と⑨は記入済みで,⑥~⑧の属性名と設定内容,⑩~⑯の設定内容が太枠の空欄になっている。
解き方のヒントを見る

数量属性の置き場所をキーから考える

業務データモデルの問題では、ある数量がどのエンティティの属性として記録されるべきかを、その値を一意に決める識別子の組合せから検討する姿勢が役立ちます。業務の流れと記録の単位を対応付けて考えましょう。

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

確認すべき観点は、数量を表す各属性について『何が決まればその値が一つに定まるか』です。業務上その数量が発生・更新される単位(どの取引・どの明細・どの時点か)を意識し、関数従属性の観点から整理してください。

視点

関係スキーマの属性は、その値を一意に決定する主キー(または主キーを構成する属性の組合せ)をもつ関係に置くのが基本です。数量のような値は、業務のどの出来事で生まれ、どの単位で記録・更新されるかによって、従属する識別子が変わり得ます。属性を置く場所を決めるときは、名称の印象ではなく『その値を決めるのに必要十分な識別子は何か』を一つずつ確かめることが、正規化や整合性の検討につながります。

確認ポイント

  • 各数量属性について、その値を一意に決める識別子(主キーまたはその組合せ)は何かを確認する
  • その数量が業務のどの出来事で生じ、同じ単位で繰り返し記録され得るかを確認する
  • その値が他の属性から導出できるものか、独立して記録する必要があるものかを区別して確認する
正解と解説を見る

解説

組立て家具メーカ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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針