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








解き方のヒントを見る
業務要件と設計要素の対応確認
設計の妥当性を考えるときは、業務要件の一文ごとに、それがモデル上のどの要素で表現されているかを一つずつ照らし合わせる姿勢が役立ちます。要件に書かれていない前提を自分で補っていないかにも注意しましょう。
この問題で問われていること
この種の設計検討では、業務の説明に含まれる条件や制約を読み取り、それが設計のどこに反映されているか、あるいは反映されていないかを確かめることが中心になります。根拠を要件の記述に求める意識を持ちましょう。
視点
データモデルは業務のルールを構造として表現したものです。ある設計が妥当かどうかは、一般論としての良し悪しではなく、与えられた業務の記述と矛盾なく対応しているかで判断されます。まず要件の中の事実や条件を抜き出します。次にそれらを設計上の要素と対応づけます。最後に、対応が取れない箇所や過不足がある箇所を探します。この順序で考えると整理しやすくなります。
確認ポイント
- 業務要件の記述から、設計に関わる条件や制約を漏れなく抜き出せているか
- 抜き出した各条件が、設計のどの要素に対応しているかを説明できるか
- 要件に書かれていない前提を、自分の思い込みで補って判断していないか
正解と解説を見る
解説
Xホテルの食材管理システムを題材に、現行業務の概念データモデルと関係スキーマを完成させ、プレート管理の新設に伴う構成表を設計し、食材区分のコード設計の不備を考察する問題です。公式解答例では、食材・料理商品・宴会予約・中間食材仕込計画を中心に欠落していたリレーションシップを補い、プレート構成・立食セット構成・立食セット用プレートを追加しています。設問3では、食材区分の二つの値が同時に成り立ち得るのに一つの区分にまとめていた点が問われています。
問題の全体像
Xホテルには、レストラン8店舗と宴会場2か所の各調理部門、そして食材倉庫をもつ購買部門があります。食材は購入食材と中間食材に分かれ、料理商品は単品料理・コース料理・立食セット・単品立食料理の4種類に分かれます。在庫管理は入庫・出庫・棚卸しで行い、原価管理は予算と実績の対比で行っています。これらの業務記述を基に、現行業務の概念データモデル(図5)と関係スキーマ(図6)を完成させるのが設問1です。設問2では、改善要望1のプレート管理を取り込み、プレートと食材、プレートと料理商品を結ぶ構成表を設計します。設問3では、改善要望2で「購入食材かつ中間食材」という食材が生じたことから、食材区分のコード設計の不備を考えます。出題趣旨では、異なる領域間に多対多の関係が多く生じるため構成表の設計が重要であること、またコードの意味と分類対象の両方を、予測できる範囲の可能性も含めて検討することが重要であると述べられています。採点講評では、関係スキーマに比べて概念データモデルの正答率が低かったと指摘されています。
設問1(1)(a)
図6の【a】は(食材分野コード,食材分野名)という構成で、食材分野コードで識別されるマスタです。〔現行業務の分析結果〕3.(3)には、肉類・魚介類などの食材分野があり、食材分野コードで表されると書かれています。図5でも【a】から食材へ矢印が引かれ、食材の外部キーである食材分野コードの参照先になっています。レストラン食材原価予算と【e】にも線が伸びています。したがって、公式解答例のとおり「食材分野」です。
設問1(1)(b)
図5で【b】は購入食材と並ぶ食材のサブタイプです。図6の【b】(中間食材コード,仕込調理部門コード)から、中間食材と分かります。3.(9)には、どの中間食材をどの調理部門が仕込むかが決まっていると書かれており、仕込調理部門コードはこれに対応します。部門から【b】への矢印も、この関係を表しています。公式解答例は「中間食材」です。
設問1(1)(c)
【c】には、購入食材と【b】(中間食材)の両方から矢印が入っています。3.(10)には「中間食材を仕込むのに必要な購入食材とその数量を,中間食材構成として明らかにしている」とあります。一つの中間食材に複数の購入食材が使われ、一つの購入食材も複数の中間食材に使われるので、両者は多対多です。この多対多を解消する構成表が【c】であり、公式解答例では「中間食材構成」です。
設問1(1)(d)
図6の【d】は(料理分野コード,料理分野名)です。4.(2)②によると、料理分野は単品料理・コース料理・単品立食料理に設けられ、立食セットには設定しません。図5でも、【d】からの矢印は単品料理・単品立食料理・コース料理の3サブタイプにだけ向かい、立食セットには向かっていません。公式解答例は「料理分野」です。
設問1(1)(e)
図6の【e】は(宴会番号,食材分野コード,食材予算金額)で、レストラン食材原価予算と対になる予算のエンティティタイプです。6.(2)には、宴会場調理部門は宴会予約に基づいて宴会単位・食材分野別に予算金額を設定すると書かれています。図1の宴会場調理部門の対応表も、宴会番号と食材分野ごとに予算が並んでいます。公式解答例は「宴会場食材原価予算」です。
設問1(1)(f)
【f】は、出庫のサブタイプのうち宴会出庫と中間食材仕込出庫を除いた残りで、図6では(出庫番号,出庫先レストラン調理部門コード)です。9.(5)には、レストランで必要な食材の出庫では出庫先のレストラン調理部門コードが記録されると書かれています。部門から【f】への矢印も、この外部キーに対応しています。公式解答例は「レストラン出庫」です。
設問1(2)
図5に既に描かれている線は補う対象ではありません。例えば、a(食材分野)→食材、部門→宴会予約・売上・食材棚卸、出庫→出庫明細、売上→売上明細、食材棚卸→食材棚卸明細などです。公式解答例の図で太線として追加されている関係は、次の12本です。
①食材業者→購入食材(1対多):3.(8)で購入食材ごとに食材業者を1社に決めており、図6の購入食材.業者コードに対応します。
②食材業者→購入食材入庫(1対多):11.(2)で1回の入庫は一つの食材業者からの納入単位です。購入食材入庫.業者コード(ク)に対応します。
③食材→出庫明細(1対多):出庫明細.食材コードに対応します。購入食材と中間食材のどちらも出庫されるため、参照先はスーパータイプの食材です。
④食材→入庫明細(1対多):入庫明細.食材コードに対応します。購入食材も中間食材も入庫されるため、参照先は食材です。
⑤食材→食材棚卸明細(1対多):13.(2)の食材コードの記録に対応します。
⑥料理商品→売上明細(1対多):12.(3)の売上対象の料理商品に対応し、売上明細.商品コードを表します。
⑦宴会予約→e(宴会場食材原価予算)(1対多):6.(2)の宴会単位・食材分野別の予算に対応し、宴会番号がeの主キーの一部になります。
⑧宴会予約→宴会出庫(1対多):9.(3)で宴会予約ごとに出庫し、不足があれば追加出庫するため多側になります(オ=宴会番号)。
⑨宴会予約―宴会売上:12.(4)で宴会売上の売上伝票に宴会番号が記されることに対応します(コ=宴会番号)。
⑩中間食材仕込計画―中間食材仕込出庫:9.(4)で仕込みの出庫は必ず一つの中間食材仕込計画について行われることに対応します(カ=仕込番号)。
⑪中間食材仕込計画―中間食材仕込実績:10.(2)で仕込実績は仕込計画に仕込番号で対応付けられます。
⑫中間食材仕込実績―中間食材入庫:11.(3)で中間食材の1回の入庫は中間食材仕込実績に対応付けて記録されます(ケ=仕込番号)。
⑨〜⑫は、公式解答例の図では矢印のない線(1対1)で描かれています。1対1の外部キーは、設計方針(6)に従い後からインスタンスが発生する側に置かれます。採点講評では、中間食材に関わるリレーションシップ(⑩〜⑫など)の正答率が低かったとされています。業務ルールごとに線が引かれているかを確かめることが大切です。
設問1(3)(ア)
【c】は中間食材構成で、中間食材と購入食材の多対多を解消する構成表です。3.(10)の「必要な購入食材とその数量」から、主キーは中間食材コードと購入食材コードの組になります。どちらも参照先の主キーなので、外部キーを兼ねます。従属属性は必要数量です。公式解答例は「中間食材コード,購入食材コード,必要数量」です。
設問1(3)(イ)
料理商品は4種類のサブタイプのスーパータイプです。4.(1)の1人前の販売価格は、全ての料理商品に共通する属性です。また、4.(2)①の料理提供区分は、どのサブタイプに当たるかを示す区分としてスーパータイプに持たせます。公式解答例は「料理提供区分,販売価格」です。
設問1(3)(ウ)
4.(2)①では、単品立食料理について「立食セットと同様に,販売最低食数を設定している」とあります。販売最低食数は単品料理・コース料理にはない属性です。設計方針(4)に従って、スーパータイプではなくサブタイプである単品立食料理に置きます。公式解答例は「販売最低食数」です。
設問1(3)(エ)
立食セットは「ある程度の人数以上でないと準備できないので,販売最低食数を設定している」とあります。料理分野は設定しないので、図6の立食セットには料理分野コードがありません。ここに入るのはサブタイプ固有の属性の販売最低食数です。公式解答例は「販売最低食数」です。
設問1(3)(オ)
9.(3)で、宴会の出庫は宴会予約ごとに行われます。宴会出庫には宴会予約を参照する宴会番号が必要です。不足時に追加出庫があるので、一つの宴会に複数の宴会出庫が対応し、宴会番号は主キーではない外部キーになります。サブタイプに置くことでNULLになりません(設計方針(3))。公式解答例は「宴会番号」(外部キー)です。
設問1(3)(カ)
9.(4)で、中間食材の仕込みに必要な食材の出庫は、必ず一つの中間食材仕込計画について行われます。図2の出庫伝票にも仕込番号が記載されています。そのため、中間食材仕込出庫には中間食材仕込計画を参照する仕込番号を持たせます。公式解答例は「仕込番号」(外部キー)です。
設問1(3)(キ)
10.(2)によると、中間食材仕込実績は中間食材仕込計画に仕込番号で対応付けられ、実績仕込量・仕込開始実績年月日・仕込完了実績年月日を記録します。計画1件に実績1件が対応するので、仕込番号が主キーとなり、計画への外部キーも兼ねます。公式解答例は「仕込番号,実績仕込量,仕込開始実績年月日,仕込完了実績年月日」(仕込番号が主キー)です。
設問1(3)(ク)
11.(2)で、購入食材の1回の入庫は一つの食材業者からの1回の納入単位で行われます。購入食材入庫には、食材業者を参照する業者コードを持たせます。図3の入庫伝票で中間食材入庫の業者コードが「-」になっていることからも、サブタイプ側に置くべき属性だと分かります。公式解答例は「業者コード」(外部キー)です。
設問1(3)(ケ)
11.(3)で、中間食材の入庫は中間食材仕込実績に対応付けて記録されます。図3の入庫伝票にも仕込番号W06655が記載されています。中間食材入庫には、中間食材仕込実績を参照する仕込番号を持たせます。公式解答例は「仕込番号」(外部キー)です。
設問1(3)(コ)
12.(4)に「宴会売上の場合,売上伝票に宴会番号が記される」とあります。レストランの売上には宴会番号がないため、サブタイプの宴会売上に置いてNULLを避けます。公式解答例は「宴会番号」(外部キー)です。
設問2(1)
改善要望1では、プレートに4種類があります。図7にはこのうち3種類しかないので、「立食セット用プレート」をプレートのサブタイプとして追加します。次に多対多を分解します。プレートと食材は、図4のとおり一つのプレートに複数の食材が使われ、一つの食材も複数のプレートに使われるので多対多です。これを構成表「プレート構成」で解消し、プレート→プレート構成、食材→プレート構成の線を引きます。また、立食セット用プレートは複数の立食セットに共通して使われるので、立食セットと立食セット用プレートも多対多です。構成表「立食セット構成」を置き、立食セット→立食セット構成、立食セット用プレート→立食セット構成の線を引きます。コース料理については、既にあるコース料理用プレート→コース料理構成に加えて、コース料理→コース料理構成の線を補います。さらに、単品立食料理用プレートは単品立食料理と1対1なので、両者を矢印のない線で結びます。以上が公式解答例の図の追加内容です。採点講評では、構成表について必要な全てのエンティティタイプを答えられていない答案が多かったと指摘されています。
設問2(2)(g)
単品立食料理用プレートは、単品立食料理と1対1に対応付けます(改善要望1(3)②)。図8の単品料理用プレート(単品料理用プレートコード,単品料理商品コード)と同じ形になります。主キーの単品立食料理用プレートコードは、プレートへの外部キーを兼ねます。これに、単品立食料理を参照する外部キーの単品立食料理商品コードを加えます。公式解答例は「単品立食料理用プレートコード,単品立食料理商品コード」です。
設問2(2)(h)
コース料理構成は、コース料理とコース料理用プレートの多対多を解消する構成表です。主キーは(コース料理商品コード,明細番号)なので、残りの属性として、どのプレートを使うかを示す外部キーが必要です。公式解答例は「コース料理用プレートコード」(外部キー)です。
設問2(3)
(1)で補った3つのエンティティタイプの関係スキーマを答えます。公式解答例は次のとおりです。
・立食セット用プレート(立食セット用プレートコード):主キーはプレートへの外部キーを兼ねます。
・立食セット構成(立食セット商品コード,明細番号,立食セット用プレートコード):主キーは立食セット商品コードと明細番号で、立食セット用プレートコードは外部キーです。コース料理構成と同じ形です。
・プレート構成(プレートコード,明細番号,食材コード,基準食数当たり食材必要量):図4の明細番号付きの一覧に対応します。主キーはプレートコードと明細番号で、食材コードは外部キー、従属属性は改善要望1(2)②の基準食数当たり食材必要量です。
設問3(1)
3.(4)(6)によると、食材区分は「購入食材」と「中間食材」のどちらか一方を表す一つの区分として設計されていました。しかし、3.(4)には、過去に購入食材を内製したこともあったと書かれています。つまり、両方に当たる食材があり得ることは予測できました。改善要望2で実際に両方に当たる食材が生じ、一つの区分では分類できなくなりました。公式解答例の要点は、食材区分の取り得る二つの値が同時に成立する可能性があるのに一つの区分にしていた、という点です。50字以内で「二つの値が同時に成立し得る」「一つの区分にしていた」の2要素を押さえます。採点講評では、取り得る値が排他ではないことを理解できていない受験者が多かったとされています。
設問3(2)
同時に成り立ち得る性質を一つの区分の値にまとめると、組合せが生じたときに対応できません。公式解答例は「異なる区分値が同時に成立し得る場合,別々の区分にする」です。30字以内で、同時成立の可能性がある場合は別々の区分として設計する、という方針を書きます。採点講評でも、コードの意味と分類対象の両方を吟味し、予測できる範囲の可能性も検討するよう求めています。
学習のポイント
関係スキーマの外部キーと概念データモデルの線を一つずつ対応させる習慣を付けることが重要です。あわせて、多対多を構成表で分解する方法と、区分コードの値が排他かどうかを見極める力を身に付けましょう。
出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 データベーススペシャリスト試験 午後Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針