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




解き方のヒントを見る
変更前後で守るべきものを見極める
データの持ち方や作業の段取りを変える場面では、変更前と変更後で何が保たれ、何が変わるのかを切り分けることが検討の出発点になります。問題中の条件をこの一点に照らして整理しましょう。
この問題で問われていること
問題に示された業務上の前提や制約を読み取り、変更の前後を通じて一貫していなければならない事柄が何かを自分の言葉で定めてから、各内容がその一貫性とどう関わるかを確かめる姿勢が問われます。
視点
データモデルの見直しや移行を考えるときは、個々の手段の良し悪しを比べる前に、利用者や業務から見て変わってはいけない性質を整理しておくと、判断の軸がぶれにくくなります。そのうえで、問題中の条件がその性質に影響するかどうかを一つずつ照合していきます。
確認ポイント
- 問題の前提条件のうち、変更後も維持すべきと読み取れる事柄を書き出したか
- 書き出した事柄が、変更の途中段階でも保たれる必要があるかを考えたか
- 判断の根拠を問題中の記述に結び付けて説明できるか
正解と解説を見る
解説
C社の倉庫管理を題材に、現行の入荷予定・入荷・入庫のデータモデルとキーを完成させ、棚別からエリア別への管理単位の変更をマスタ・在庫および引渡要求・出庫・引渡の各領域に反映させる問題です。後半では、参照関係を考えたマスタ移行の順序と、現物移動の手順を問います。出題趣旨では、①エンティティタイプとリレーションシップをトップダウンに見抜く力、②管理対象の粒度が変わったときのデータモデルへの影響を見抜く力、③運用が変わったデータベースの移行を考える力を評価するとしています。
問題の全体像
C社は部品在庫を棚別に管理する現行システムを3か月前に稼働させました。しかし、新規部品・廃止部品ごとの棚決定や棚数変更に伴う移動に時間が掛かり、部品登録の遅れや移動の積み残しが起きています。そこで、保管場所の管理単位をエリアに変更します。各エリアには倉庫担当者を1人固定し、有効部品には入出庫頻度で'A'~'E'のランクを付けます。部品品目とランクの組合せごとに通常エリアを割り当て、在庫は集約部品在庫に一本化します。出庫は引渡要求をエリア単位に分けて行い、引渡では出庫を引渡要求単位にまとめます。設問1は現行モデルの復元、設問2は粒度変更の反映、設問3は移行計画を問います。採点講評では、全体として正答率は高かった一方、設問1(1)の入荷と入庫の関連、設問2(1)の部品保管エリアの関連、設問2(4)の引渡要求明細と出庫明細の関連、設問3(1)の移行順序などで誤りが多かったと指摘されています。
設問1(1)
公式解答例では、エンティティタイプとして入荷予定、入荷予定明細、入荷、入荷明細、入庫、入庫明細の6つを置きます。関連は次のとおりです。
・入荷予定→入荷予定明細、入荷→入荷明細、入庫→入庫明細:それぞれ1対多
・入荷予定―入荷:1対1
・入荷予定明細―入荷明細:1対1
・入荷明細→入庫明細:1対多
根拠は本文にあります。「入荷は、購買部が登録した入荷予定の単位で行われる」ので、ヘッダ同士は1対1になります。「入荷明細に、対応する入荷予定明細を記録する」ので、明細同士も1対1です。一方、入庫は「1日に数回、それまでの入荷分を対象に実施」し、入庫明細は「入荷明細の単位を一つ又は複数の棚に分割して記録」します。このため、入荷と入庫のヘッダ間には直接の関連がありません。関連は入荷明細→入庫明細の1対多だけです。採点講評でも、入荷と入庫の関連を正しく読み取れていない解答が多かったとされています。ヘッダと明細が同じ関連でつながる場合、異なる関連でつながる場合、片方にしか関連がない場合を区別することが重要です。
設問1(2)
公式解答例の関係スキーマを、主キー(実線の下線)と外部キー(破線の下線)に分けて整理します。
・入荷予定:主キーは発注番号です。部品メーカは部品メーカコードで識別するので、部品メーカコードが部品メーカを参照する外部キーになります。
・入荷予定明細:主キーは{発注番号、 発注明細番号}です。発注番号は主キーの一部として入荷予定を参照します。記録する部品番号は、部品を参照する外部キーです。発注数は非キー属性です。
・入荷:主キーは入荷番号です。「対応する入荷予定を記録する」ため、発注番号が入荷予定を参照する外部キーになります。
・入荷明細:主キーは{入荷番号、 入荷明細番号}です。対応する入荷予定明細を記録するので、{発注番号、 発注明細番号}の組が入荷予定明細への複合外部キーになります。実際に入荷した部品は予定と異なることがあるため、部品番号を独立した外部キーとして持ちます。入荷数と返品数は非キー属性です。
・入庫:主キーは入庫番号です。入荷との関連がないため外部キーは持たず、入庫年月日時刻だけを持ちます。
・入庫明細:主キーは{入庫番号、 入庫明細番号}です。外部キーは次の三つです。①入荷明細を参照する{入荷番号、 入荷明細番号}。②エリア別・棚別に記録するため、棚を参照する{エリア番号、 棚番号}。③入庫した部品を示す部品番号。入庫数は非キー属性です。
複合主キーを参照するときは、キーの組全体をそろえて外部キーにする点がポイントです。
設問2(1)
公式解答例では、次の変更を行います。
【削除(✕印)】
・棚、部品保管棚番、棚別部品在庫
・通常エリア→棚、従業員→部品保管棚番、棚→部品保管棚番、有効部品→部品保管棚番、部品保管棚番―棚別部品在庫の各リレーションシップ
【追加】
・従業員→エリア(1対多)
・エンティティタイプ「ランク」と「部品保管エリア」
・ランク→有効部品、ランク→部品保管エリア、部品品目→部品保管エリア、通常エリア→部品保管エリア(いずれも1対多)
根拠は本文にあります。管理単位をエリアにするので、棚と棚別の保管・在庫が不要になります。「1人の倉庫担当者が複数のエリアを担当することもあるが、一つのエリアを複数の倉庫担当者が担当することはない」ので、従業員とエリアは1対多です。部品保管エリアは「部品品目とランクの全ての組合せ」ごとに一つの通常エリアを割り当てるものなので、部品品目とランクの両方から関連を持ち、割当先の通常エリアを参照します。採点講評では、この部品保管エリアに関連するリレーションシップの正答率が低かったとされています。
設問2(2)
公式解答例は次の二つです。
・部品保管エリア(部品品目番号、 ランク、 エリア番号):主キーは{部品品目番号、 ランク}(実線)で、エリア番号は通常エリアを参照する外部キー(破線)です。部品品目とランクの組合せごとに一つの通常エリアが決まるので、組合せが主キーになり、エリアはその組合せに従属する属性になります。
・ランク(ランク):主キーはランクです。
部品保管エリアの主キーの構成要素である部品品目番号とランクは、それぞれ部品品目とランクを参照します。これらはキーの一部として実線で示されています。
設問2(3)
公式解答例では、次の二つの関係に属性を追加します。
・エリアに従業員番号を追加:エリアごとに担当者が1人に固定されるためです。
・有効部品にランクを追加:ランクは有効部品だけに付けるので、スーパタイプの部品ではなくサブタイプの有効部品に持たせます。
削除される部品保管棚番・棚別部品在庫は変更ではなく削除の対象です。そのため、この欄には現れません。
設問2(4)
公式解答例では、次の変更を行います。
【削除(✕印)】
・引渡要求―出庫の1対1
・出庫―引渡の1対1
・引渡要求明細→出庫明細の1対多
【追加】
・引渡要求→出庫の1対多
・引渡→出庫の1対多
・引渡要求―引渡の1対1
・引渡要求明細―出庫明細の1対1
ポイントは、従来の引渡要求明細と出庫明細の関連を変えることです。現行では出庫明細を「エリア別、棚別」に記録していました。同じ部品が複数の棚にあれば、1件の引渡要求明細が複数の出庫明細に分かれるため、1対多でした。変更後は棚別の在庫管理をやめ、出庫をエリア単位で行います。同じ部品を複数のエリアに保管することはないので、1件の引渡要求明細はちょうど1件の出庫明細に対応し、1対1になります。採点講評でも、この関連が変わることを見過ごした解答が多かったとされています。
ヘッダ側の変更は次のように導けます。出庫は「引渡要求単位を更にエリア単位に分けて行う」ので、引渡要求→出庫は1対多です。引渡は「出庫を引渡要求単位にまとめ」、出庫に引渡の対応を記録するので、引渡→出庫も1対多です。さらに「引渡に、どの引渡要求に基づくかの対応を記録する」ので、引渡要求―引渡は1対1になります。
設問3(1)
公式解答例の各行は次のとおりです。
・従業員、部品品目、部品メーカ:移行の順序は1、方法2(複写)、複写元は同名のエンティティタイプです。
・エリア:順序は2、方法1と方法2です。複写元はエリアで、新たに必要な担当の従業員番号は人が設定します。
・部品:順序は2、方法2と方法3です。複写元は部品、生成処理はランク決定処理です。
・部品保管エリア:順序は3、方法1のみです。
移行の順序は、外部キーの参照先を先に移行するという方針(5)から決まります。エリアは従業員を、部品は部品品目・部品メーカ・従業員を参照するので2になります。部品保管エリアはエリアと部品品目を参照するので3です。有効部品の新しい属性ランクは、表1のランク決定処理(直近3か月間の入出庫頻度から決定)で生成します。部品保管エリアは部品品目とランクの組合せへのエリア割当てなので、現行データからは複写できず、人が設定します。採点講評では、移行の優先順位を誤る解答が多かったと指摘されています。また、複写元にスーパタイプとサブタイプを併記すると全体集合と部分集合を重ねて指定することになるため、スーパタイプの「部品」だけを記入します。
設問3(2)
公式解答例は、aが空棚退避移動、bが新エリア移動、cが移行用部品在庫です。移行方針(3)では、「エリアごとに、そのエリアにある全ての部品を別のエリアの空棚に退避し、新たな保管方法で保管すべき部品をそのエリアに移動する」ことを全エリアで繰り返します。この順序に、表2の番号3で追加する移動サブタイプの名称を当てはめると、まず空棚退避移動(a)、次に新エリア移動(b)になります。番号4によると、新エリア移動は移行用部品在庫を更新します。したがって、全ての移動が終わった時点でエリア単位の在庫を持っているのは移行用部品在庫です。在庫の残高移行(番号8)では、ここから新データベースの部品在庫へ複写するので、cは移行用部品在庫になります。
学習のポイント
ヘッダ・明細構造のトランザクション間の関連の読み取り、複合主キーを参照する外部キーの特定、粒度変更(棚→エリア)で明細の多重度が1対多から1対1に変わる点、外部キーの参照先から移行順序を決める考え方、スーパタイプとサブタイプの集合関係を重点的に学習します。
出典:独立行政法人 情報処理推進機構(IPA)平成27年度春期 データベーススペシャリスト試験 午後Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針