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











解き方のヒントを見る
統合設計は前提条件との対応で考える
複数システムを統合する場面では、設計や移行の判断が問題中のどの前提・制約に基づくのかを一つずつ結び付けて確認することが大切です。自分の知識や一般論だけで判断せず、記述された条件を根拠として検討しましょう。
この問題で問われていること
確認する観点は「記述された業務上の前提や制約と、各設計・移行上の判断との対応関係」の一点です。どの記述がどの判断の根拠になり得るかを、自分で線を引くように対応付けてから考えると整理しやすくなります。
視点
データモデルの設計やデータ移行の判断は、それ単体で良し悪しが決まるものではなく、対象となる業務の前提や制約に照らして妥当かどうかが決まります。そのため学習の際は、判断そのものを覚えるよりも、判断と根拠となる記述とを対応付ける習慣を持つことが有効です。根拠が見つからない判断や、記述と食い違う判断に気付けるかどうかが、この分野での検討の要になります。
確認ポイント
- 各判断について、その根拠になっている業務上の前提や制約の記述を具体的に指し示せるか
- 根拠として挙げた記述を読み違えたり、書かれていない条件を自分で補ったりしていないか
- 判断と記述の間に食い違いや対応しない部分が残っていないかを、最後にもう一度見直したか
正解と解説を見る
解説
C社の分納発注システムと都度定量発注システムを全社共通の新システムに統合する事例です。現行システムの概念データモデルを完成させ、表2で分納発注の納入指示数量を計算し、新システムのサブタイプ構造を設計し、最後にコード変換・工場番号の追加・部品テーブルの分割という移行時のテーブル設計を答えます。出題趣旨では、エンティティタイプを読み取る力、サブタイプを切り出す力、リレーションシップを読み取る力、システム統合に伴ってテーブル構造を見直す力を評価するとしています。
問題の全体像
C社は工場ごとに、分納発注システム(通常納期主要部品が対象)と都度定量発注システム(長納期主要部品と補充部品が対象)を運用しています。これを全社共通の新システムに統合します。統合方針は次のとおりです。三つの発注方式の違いはサブタイプで明確にします。調達先コード・見積依頼番号・発注番号・納品番号は全社で一意にします。工場を識別する工場番号を新たに追加します。支払は全社単位に一本化します。設問1は現行システムの概念データモデルの完成と分納発注の計算、設問2は新システムの概念データモデル、設問3は移行時のコード変換・工場番号の追加要否・テーブル分割を問います。出題趣旨では、業務要件からエンティティタイプ、サブタイプ、リレーションシップを読み取る力と、システム統合に伴ってテーブル構造を見直す力を評価するとしています。
設問1(1)
着目点は〔部品購買業務の分析結果〕2の調達先の記述と、図3の調達先・部品・在庫・部品仕入先候補のテーブル構造です。調達先テーブルには仕入先区分と支払先区分が別々にあります。また、仕入先と支払先が同一の場合も多いと書かれています。そのため、公式解答例では「仕入先」と「支払先」を、調達先の互いに独立したサブタイプ(排他ではなく、別々のサブタイプ関係)として表しています。さらに、一つの仕入先に複数の支払先が対応することはないが、一つの支払先は複数の仕入先を代表しうるので、支払先から仕入先への1対多のリレーションシップを置きます(調達先テーブルの外部キー「支払先コード」が対応します)。部品仕入先候補の主キーは{部品番号、 仕入先コード}なので、部品と仕入先のそれぞれから部品仕入先候補への1対多を引きます。在庫の主キーは部品番号だけなので、部品と在庫は1対1です。部品のサブタイプとしては「補充部品」を追加します。採点講評では、調達先のサブタイプと部品・在庫のリレーションシップの正答率が低かったとしています。そのうえで、①支払先と仕入先が独立していること、②仕入先と支払先のリレーションシップが存在すること、③部品と在庫が1対1であることを問題文から読み取ってほしい、と述べています。表記ルールに従っていない解答が散見されたことも指摘されています。
設問1(2)
着目点は、見積明細と発注の「定量発注都度発注区分」、発注テーブルの外部キー{見積依頼番号、 見積依頼明細番号}、そして業務プロセスの違いです。公式解答例では、見積明細の排他的サブタイプとして定量発注見積明細と都度発注見積明細を、発注の排他的サブタイプとして都度発注と定量発注を置いています。そのうえで次のように結んでいます。都度発注見積明細と都度発注は1対1です。都度発注方式では発注ごとに見積りを取り、1社を選んで発注するので、一つの見積明細から生じる発注は一つだけです。定量発注見積明細から定量発注へは1対多です。定量発注方式では数か月~1年ごとに見積りを取り、その期間中は在庫が発注点を下回るたびに繰り返し発注するので、一つの見積明細に複数の発注が対応します。採点講評では、この二つのリレーションシップの正答率が低かったとし、業務の分析結果をよく読んで1対1と1対多のどちらかを判別してほしいとしています。
設問1(3)
根拠は、分納発注方式の部品払出(納入指示)のルールと、表2の注記1「納入LTが2日なので、月末から数えて2営業日より前が当月分の納入指示となる」です。2月の最終営業日は28日(木)なので、当月分の納入指示は26日(火)までです。27日と28日の指示は翌月分となり、月間合計は新たに数え直します。公式解答例の数値は次のとおりです。部品110001:25日 納入指示40・月間合計780、26日 50・830、27日 40・40、28日 50・90。26日時点で830となり発注総量800以上なので、払出数量をそのまま指示します。部品221002:25日 40・740、26日 60・800、27日 35・35、28日 40・75。26日に払出数量40だけを指示すると月間合計は780で、800に20足りません。そこで「当月の最終営業日から納入LTを差し引いた日以前で最も月末に近い営業日」である26日に20を上乗せし、60を指示して合計を800にそろえます。採点講評では、当月分から翌月分に切替りがあることを読み取っていない解答が散見されたとしています。
設問2(1)
図6では、部品が主要部品と補充部品に分かれ、主要部品がさらに通常納期と長納期に分かれる2段階のサブタイプ構造になっています。部品仕入先候補も、長納期主要部品用と補充部品用に分かれています。公式解答例で追加しているリレーションシップは次のとおりです。統合方針により、在庫・部品仕入先候補は工場ごとに管理するので、工場から在庫へ、工場から部品仕入先候補へ、それぞれ1対多を引きます。在庫へは、長納期主要部品(d)と補充部品(b)からそれぞれ1対多を引きます。現行システムの記述では、在庫数量を持つのは長納期主要部品と補充部品だけで、通常納期主要部品の在庫は保持しません。そのため、スーパータイプの部品ではなくこの二つのサブタイプに結び付けます。採点講評では、在庫と部品のサブタイプとのリレーションシップを適切に記述していない解答が多かったとしています。
設問2(1)(a)
部品の直下にあり、さらにc・dに分かれるサブタイプです。問題文3(2)「部品は、主要部品と補充部品に分かれる」と3(3)「主要部品は、通常納期主要部品と長納期主要部品に分かれる」から、公式解答例では「主要部品」です。
設問2(1)(b)
部品の直下にあるもう一方のサブタイプで、fへのリレーションシップを持ちます。公式解答例では「補充部品」です。補充部品は定量発注方式の対象で、補充部品仕入先候補から見積りを取るので、f(補充部品仕入先候補)とつながります。
設問2(1)(c)
主要部品のサブタイプのうち、他とのリレーションシップを持たない方です。通常納期主要部品は分納発注方式の対象で、仕入先の選定はシステムの対象外であり、在庫数量も保持しません。そのため仕入先候補とも在庫ともつながりません。公式解答例では「通常納期主要部品」です。
設問2(1)(d)
主要部品のサブタイプのうち、eへのリレーションシップを持つ方です。長納期主要部品は、あらかじめ定めた複数の長納期主要部品仕入先候補から見積りを取ります。公式解答例では「長納期主要部品」です。
設問2(1)(e)
部品仕入先候補のサブタイプのうち、dから参照される方です。問題文4(2)②で「長納期主要部品仕入先候補」と定義され、品質ランクを持つ候補です。公式解答例では「長納期主要部品仕入先候補」です。
設問2(1)(f)
部品仕入先候補のサブタイプのうち、bから参照される方です。問題文4(3)②で「補充部品仕入先候補」と定義され、優先順位を持つ候補です。公式解答例では「補充部品仕入先候補」です。
設問2(2)
新システムでは三つの発注方式を一元管理するので、公式解答例では「発注」の排他的サブタイプとして分納発注(現行の総量発注に当たる)・都度発注・定量発注を置いています。「納品」も、納入指示ごとに納品書を照合する分納発注方式と、発注ごとに照合する都度・定量発注方式とで参照先が異なります。そのため、分納発注納品・都度発注納品・定量発注納品の三つのサブタイプに分けます。リレーションシップは次のとおりです。都度発注と都度発注納品、定量発注と定量発注納品をそれぞれ結びます。分納発注から納入指示へは1対多です(一つの総量発注に対して必要時に何回も納入指示を出すため)。払出と納入指示、納入指示と分納発注納品をそれぞれ結びます(払出1回ごとに納入指示を出し、その納入指示ごとに納入されるため)。採点講評では、納品のサブタイプを切り出していない解答と、分納発注と納入指示を1対多としていない解答が多かったとし、業務の分析結果からサブタイプを注意深く識別してほしいとしています。
設問3(1)
判断の根拠は統合方針(4)(5)と現行システムの記述です。部品番号は全社で一意で、設計システムで採番された番号なので、変換は不要(A)です。調達先コード・見積依頼番号・発注番号・納品番号は全社で一意にすると定められており、現行では工場単位で採番されていて重複の可能性があるため、変換テーブルによる変換(B)が必要です。見積依頼明細番号は、全社で統一するコードの対象に含まれず、親である見積依頼番号の変換で一意性が保たれるので、無変換(A)です。調達先コードの変換テーブルは、同じ現行コードが工場ごとに別の調達先を指しうるため、工場番号を含めます。公式解答例では(工場番号、 現行調達先コード、 新調達先コード)です。
設問3(2)
工場ごとに持つ情報か、他のテーブルから工場を判別できるか、全社共通か、の三つの観点で判断します。公式解答例で○(工場番号の列が必要)とされているのは、部品仕入先候補・在庫・見積依頼・発注・払出です。いずれも工場ごとに内容が異なる、または工場ごとに行う業務の起点となるテーブルです。×とその理由は次のとおりです。調達先は「調達先は全社共通とするから」。見積依頼仕入先別明細と見積明細は「見積依頼から判別できるから」。納入指示と納品は「発注から判別できるから」。支払予定は「支払は工場単位ではないから」(支払を全社単位に一本化する方針のため)。採点講評では×とした理由の正答率が低かったとし、行の一意性以外の観点で工場番号が必要となる理由を、システム統合方針から読み取ってほしいとしています。
設問3(3)
現行システムの記述(5)に「納入LT、発注点在庫数量、発注数量などは、工場ごとに設定されている」とあります。一方、部品番号は全社で一意です。部品テーブルに工場番号を加えて{部品番号、 工場番号}を主キーにすると、部品名のような全社共通の列が工場の数だけ重複して冗長になります。部品番号だけを主キーのままにすると、工場ごとに異なる値を持てません。そこで公式解答例では、分割が必要なテーブルを「部品」とし、新たなテーブル「工場部品」を作って、納入LT・発注点在庫数量・発注数量を移しています。採点講評では、この設問は正答率が低かったとし、工場番号の列を追加することで全社共通の列と工場単位で異なる値を持ちうる列があることに着目して解答を導いてほしいとしています。
学習のポイント
業務ルールを根拠にサブタイプを独立(重なりあり)か排他かで判断し、1対1と1対多を判別すること。営業日と納入LTから月の切替りを読み取ること。統合時には、全社共通の値と工場単位で変わる値を見分けてテーブルを分割すること。
出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 データベーススペシャリスト試験 午後Ⅱ 問1(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針