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

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

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

問題

問2 ホテルの食材管理システムに関する次の記述を読んで,設問1~3に答えよ。 Xホテルは,本館と別館を合わせて,レストラン8店舗,宴会場2か所をもつ大規模ホテルである。Xホテルでは,食材管理システムを用いて食材を効率よく使うようにしている。この食材管理システムは,前回のシステム構築から時間がたっているので,Xホテルのシステム部は,現行業務分析を行った後に,新業務への改善要望をまとめ,現行業務と新業務を合わせた概念データモデルと関係スキーマを改めて作成することにした。 〔現行業務の分析結果〕 1. 食材管理業務に関する組織 (1) レストラン8店舗と宴会場2か所には,それぞれ調理部門がある。これらの調理部門は,部門コードで識別される。 (2) 食材を購入する購買部門が一つあり,部門コードで識別される。購買部門は食材倉庫をもち,各調理部門の依頼に応じて食材を供給している。 (3) 食材の購入先である食材業者は,業者コードで識別される。 2. 宴会の特性 (1) 宴会は,顧客からの予約を受けて,立食パーティや結婚披露宴などを行うものである。 (2) 宴会の売上には,時間貸しを行う宴会場の室料と,提供する飲食にかかる飲食代があるが,食材管理システムの対象は,宴会に供する料理に関する収支の範囲である。 (3) 宴会予約は,宴会番号で識別され,担当調理部門コード,宴会実施年月日,宴会場室名,宴会開始時刻が記録される。 3. 食材の特性 (1) 食材は,食材コードで識別される。 (2) 食材には,食材名と食材の量を表す単位が設定されている。 (3) 食材には,肉類,魚介類,乳製品,野菜などの食材分野が設けられている。その食材がどの食材分野に属するかは,食材分野コードで表される。 (4) 食材業者から購入できる食材を購入食材と呼んでいる。購入食材の中の,魚介のテリーヌなど,一部の加工を要する食品について,過去には食材業者から購入するだけでなく,Xホテル内で内製することもあったが,現在は全て食材業者から購入している。 (5) ベースのソース,スープのように,他の多くの料理に使われる食材であって,調理部門がXホテル独自の作り方に従って,幾つかの購入食材を基に,長時間の煮込みなどの仕込工程を経て作る食材を,中間食材と呼んでいる。 (6) 食材が,購入食材と中間食材のいずれに当たるかを,食材区分で分類している。食材区分での分類については,前回のシステム構築時にコード設計し,利用者に確認したが,明確な回答がなかったので,(4),(5)の情報からシステム部の判断で確定した。 (7) 購入食材,中間食材,ともに,複数の調理部門で使われる。 (8) 購入食材は,食材ごとに購入する食材業者を1社に決めている。ただし,条件のよい業者への変更を行うことはある。 (9) 中間食材は,複数の調理部門で共通に使われ,調理部門の間で,どの中間食材をどの調理部門が仕込むかが決まっている。 (10) 中間食材を仕込むのに必要な購入食材とその数量を,中間食材構成として明らかにしている。 (11) 食材原価の計算に用いる食材の単価は,月次で設定しており,その属性を当月適用単価と呼ぶ。 4. 料理商品の特性 (1) レストラン又は宴会場で,メニューに1人前の販売価格を明示して販売する料理を,料理商品と呼び,商品コードで識別される。 (2) 料理商品には,次の2種類の分類がある。 ① 料理の提供の仕方として,単品料理,コース料理,立食セット,単品立食料理の4種類があり,料理提供区分で表される。 ・単品料理は,レストランで提供される一品料理である。 ・コース料理は,レストラン又は宴会場で提供される,洋食のフルコースや和食の懐石料理のように,複数の料理が一皿ずつ順に出される料理である。 ・立食セットは,標準的な立食パーティ用に組み合わせた複数の料理である。ある程度の人数以上でないと準備できないので,販売最低食数を設定している。 ・単品立食料理は,立食パーティで提供される一品料理である。例えば“ローストビーフワゴン”や“すし屋台”などであり,立食セットに追加されることが多い。立食セットと同様に,販売最低食数を設定している。 ② 単品料理,コース料理,単品立食料理には,料理分野が設けられている。料理分野には,フランス料理,和食,イタリア料理,中華料理などがあり,料理分野コードで表される。立食セットには,組み合わされる料理が複数の料理分野にまたがることが多いので,料理分野を設定しない。 5. 食材の在庫管理 (1) 購買部門が食材の在庫管理を行っている。 (2) 在庫数量の値は,購入食材又は中間食材の入庫と,各調理部門への出庫によって,計算される。 (3) 次に示すように,各調理部門は,日々の在庫管理は行っていない。 ① 中間食材については,仕込みの都度,必要な食材を必要な量だけ出庫し,仕込みが完了すると,速やかに購買部門に渡し,購買部門が食材倉庫に入庫している。 ② レストラン調理部門は,注文に応じてすぐに調理できるように,現場に食材をもっている。現場にある食材は,月次の使用数量を確定させる目的で,月次の棚卸しを行っている。 ③ 宴会場調理部門は,宴会の都度,必要な量だけの食材を出庫し,全て使い切る。 6. 食材原価の予算設定方法 (1) レストラン調理部門は,食材分野別に月次で,購入食材の予算金額を設定する。 (2) 宴会場調理部門は,宴会予約に基づいて,宴会単位,食材分野別に予算金額を設定する。 7. 食材原価の実績把握方法 (1) レストラン調理部門は,月次の棚卸しで食材別の使用数量を求め,食材原価の実績を把握している。 (2) 宴会場調理部門は,食材の出庫数量×食材の当月適用単価で求めた値を,宴会単位,食材分野別に集計して,食材原価の実績を把握している。 食材原価の予算と実績の対応表の例を,図1に示す。 図1 食材原価の予算と実績の対応表の例 8. 中間食材の仕込計画 (1) 一つの中間食材について,1回の仕込単位に仕込計画を立てる。この計画を中間食材仕込計画と呼び,仕込番号で識別する。 (2) 中間食材仕込計画では,中間食材コード,計画仕込量,仕込開始計画年月日,仕込完了計画年月日を設定する。 9. 出庫 (1) 購買部門は,調理部門の要求に応じて食材を出庫し,出庫を記録する。 (2) 1回の出庫は,出庫番号で識別され,複数の食材の出庫を行う。 (3) 宴会に必要な食材の出庫は,宴会予約ごとに行う。その際,不足があれば,追加の出庫を行うことがある。 (4) 中間食材の仕込みに必要な食材の出庫は,必ず一つの中間食材仕込計画について行われる。中間食材の仕込みに必要な食材を出庫したときの出庫伝票の例を,図2に示す。 (5) レストランで必要な食材の出庫では,出庫先のレストラン調理部門コードが記録される。 図2 中間食材の仕込みに必要な食材を出庫したときの出庫伝票の例 10. 中間食材の仕込実績 (1) 中間食材の仕込みが完了すると,中間食材仕込実績を記録する。 (2) 中間食材仕込実績は,中間食材仕込計画に対して仕込番号で対応付けられ,実績仕込量,仕込開始実績年月日,仕込完了実績年月日を記録する。 11. 入庫 (1) 購買部門は,食材業者から購入食材が納入された場合と,各調理部門が中間食材の仕込みを完了した場合に,食材の入庫を行い,入庫を記録する。 (2) 購入食材の1回の入庫は,一つの食材業者からの1回の納入単位に行われ,複数の食材を入庫する。 (3) 中間食材の1回の入庫は,中間食材仕込実績に対応付けて記録される。中間食材の入庫を行ったときの入庫伝票の例を,図3に示す。 図3 中間食材の入庫を行ったときの入庫伝票の例 12. 売上 (1) レストランと宴会場の売上は,共通の売上伝票に記録される。 (2) 売上伝票には,売上対象部門と売上年月日が記される。 (3) 売上伝票の明細行には,売上対象の料理商品と売上数量が記される。 (4) 宴会売上の場合,売上伝票に宴会番号が記される。 13. 食材棚卸し (1) 食材棚卸しは,毎月の最終営業日の業務終了後に,購買部門とレストランの調理部門で行われる。 (2) 食材棚卸しでは,対象部門コード,対象年月,食材コード,棚卸数量が記録される。 〔新業務への改善要望〕 改善要望1:プレート管理の新設 現状では,料理商品の構成食材情報が保持されていないので,料理商品の販売予測を行っても,必要な食材を見積もることができないという問題がある。そこで,プレートという概念を導入し,プレートを作るのに必要な食材情報を整備し,料理商品とプレートを対応付けることで,この問題の解決を図りたい,という要望が上がり,この要望を取り入れることにした。 (1) プレートは,作る料理の一皿一皿の単位である。プレートは,プレートコードで識別し,プレート名を付けている。 (2) プレートを基準の食数分作った場合の,構成食材の必要量を設定する。プレート構成食材一覧表の例を,図4に示す。 ① 食材を見積もるためにプレートごとに基準として定めた食数を,食材見積基準食数と呼ぶ。 ② プレートを構成する食材の必要量を,基準食数当たり食材必要量と呼ぶ。 ③ プレートの食材見積基準食数当たりの当月の食材費を,当月基準食数当たり食材費と呼ぶ。当月基準食数当たり食材費は,プレートを構成する食材の当月適用単価×基準食数当たり食材必要量を集計して求める。 (3) プレートには次に示すように,単品料理用プレート,単品立食料理用プレート,コース料理用プレート,立食セット用プレートの4種類がある。 ① 単品料理用プレートは,料理商品の単品料理と1対1に対応付ける。 ② 単品立食料理用プレートは,料理商品の単品立食料理と1対1に対応付ける。 ③ コース料理用プレートは,料理商品のコース料理を構成するプレートである。コース料理用プレートには,複数のコース料理に共通するものがある。 ④ 立食セット用プレートは,料理商品の立食セットを構成するプレートである。立食セット用プレートには,複数の立食セットに共通するものがある。 図4 プレート構成食材一覧表の例 改善要望2:中間食材の外部からの購入の開始 これまで中間食材は,各調理部門で仕込んでいたが,中間食材の中には,仕込能力不足で,必要量を十分に提供できないものがあり,販売ロスを招いていた。そこで,このような中間食材については,外部の業者に自社の仕込方法を渡した上で生産を委託し,購入することにした。この運用対象の中間食材は,購入食材であり,かつ,中間食材でもあるという特性に変更したい,という要望が上がり,この要望を取り入れることにした。 〔概念データモデル及び関係スキーマの設計方針〕 (1) 現行業務の概念データモデルと関係スキーマを設計してから,改善要望による変更を加える。 (2) 変更は,まず改善要望1(プレート管理の新設)に関してだけ加える。 (3) サブタイプを切り出すエンティティタイプがある場合は,外部キーは値が空値(NULL)にならないように,適切なエンティティタイプに配置し,リレーションシップも適切なエンティティタイプ間に引く。 (4) 外部キー以外の従属属性についても,サブタイプを切り出すエンティティタイプがある場合は,適切なエンティティタイプに配置する。 (5) サブタイプの主キー属性は,参照するスーパータイプの主キー属性と同じ定義域の属性(同じ属性名の属性又は同じ属性名に役割を修飾した属性名の属性)とし,スーパータイプに対する外部キーの役割を兼ねる。 (6) その他の1対1のリレーションシップがある場合の外部キーは,後からインスタンスが発生する側に配置する。 〔設計を開始した概念データモデル及び関係スキーマ〕 上述の設計方針に基づいて作成した,現行業務の概念データモデルを図5に,関係スキーマを図6に示す。 図5 現行業務の概念データモデル(未完成) 図6 現行業務の関係スキーマ(未完成) 概念データモデルと関係スキーマの解答に当たっては,主キー及び外部キーの表記も含めて,巻頭の表記ルールに従うこと。ただし,エンティティタイプ間の対応関係にゼロを含むか否かの表記は不要である。また,エンティティタイプ名及び属性名は,その意味を識別できる適切な名称にすること。 設問1 現行業務の概念データモデル及び関係スキーマについて,設計方針に従って,(1)~(3)に答えよ。 (1) 図5中の【a】~【f】に入れる適切なエンティティタイプ名を答えよ。 (2) 図5は,一部のリレーションシップが欠落している。欠落しているリレーションシップを補って,図5を完成させよ。 (3) 図6中の【ア】~【コ】に入れる適切な字句を答え,関係スキーマを完成させよ。 設問2 改善要望1について検討を開始した。図7は,改善要望1に関係する領域の概念データモデルの部分図であり,図8は同じ領域の関係スキーマである。 図7 プレート管理の新設を検討する領域の概念データモデル(未完成) 図8 プレート管理の新設を検討する領域の関係スキーマ(未完成) 図7,8について,(1)~(3)に答えよ。 (1) 改善要望1を反映し,欠落したエンティティタイプ及びリレーションシップを補って,図7を完成させよ。 (2) 図8中の【g】,【h】に入れる適切な字句を答えよ。 (3) (1)で補ったエンティティタイプについて,関係スキーマを答えよ。 設問3 改善要望2について,その運用対象となる中間食材は,購入食材であり,かつ,中間食材でもあるという特性となった。その結果,食材区分だけでは分類できなくなるという,新たな問題が発生した。この問題に対応するために,概念データモデルと関係スキーマを変更した。しかし,現行業務や現行システムでは,食材区分を用いた判断処理が広範囲にわたっていることから,この変更に伴う対応として,業務変更,システム改修による対処を余儀なくされた。その背景には,前回のシステム構築時の食材区分のコード設計に考慮が足りなかったことがあると考えられる。そのコード設計の考慮の不足点と,本来どのようなコード設計をすべきであったかについて,(1),(2)に答えよ。 (1) 食材区分の取り得る値それぞれについて,その意味に着目して,食材区分のコード設計上の考慮の不足点を,50字以内で述べよ。 (2) 本来どのようなコード設計をすべきであったかを,30字以内で述べよ。
図1 食材原価の予算と実績の対応表の例。レストラン調理部門と宴会場調理部門について、食材分野別の予算、実績、差異、合計を示す対応表の例。
図1 食材原価の予算と実績の対応表の例。レストラン調理部門と宴会場調理部門について、食材分野別の予算、実績、差異、合計を示す対応表の例。
図2 中間食材の仕込みに必要な食材を出庫したときの出庫伝票の例。中間食材の仕込みに使用する複数の食材について、出庫番号、仕込番号、数量、金額などを記録した出庫伝票の例。
図2 中間食材の仕込みに必要な食材を出庫したときの出庫伝票の例。中間食材の仕込みに使用する複数の食材について、出庫番号、仕込番号、数量、金額などを記録した出庫伝票の例。
図3 中間食材の入庫を行ったときの入庫伝票の例。中間食材の入庫について、入庫番号、入庫年月日、仕込番号と、食材コード、食材名、数量を示す入庫伝票の例。
図3 中間食材の入庫を行ったときの入庫伝票の例。中間食材の入庫について、入庫番号、入庫年月日、仕込番号と、食材コード、食材名、数量を示す入庫伝票の例。
図4 プレート構成食材一覧表の例。プレート名、基準食数、食材費と、プレートを構成する食材、必要量、単価、食材原価を示す一覧表の例。
図4 プレート構成食材一覧表の例。プレート名、基準食数、食材費と、プレートを構成する食材、必要量、単価、食材原価を示す一覧表の例。
図5 現行業務の概念データモデル(未完成)。部門、食材、料理商品、売上、出庫、入庫など、ホテル食材管理業務のエンティティタイプと関係を示す未完成の概念データモデル。
図5 現行業務の概念データモデル(未完成)。部門、食材、料理商品、売上、出庫、入庫など、ホテル食材管理業務のエンティティタイプと関係を示す未完成の概念データモデル。
図6 現行業務の関係スキーマ(未完成)。ホテル食材管理業務の各エンティティタイプについて、主キーや外部キーを含む属性一覧を示す未完成の関係スキーマ。
図6 現行業務の関係スキーマ(未完成)。ホテル食材管理業務の各エンティティタイプについて、主キーや外部キーを含む属性一覧を示す未完成の関係スキーマ。
図7 プレート管理の新設を検討する領域の概念データモデル(未完成)。食材、プレート、料理商品と、そのサブタイプ及びプレート構成に関するエンティティタイプと関係を示す未完成の部分モデル。
図7 プレート管理の新設を検討する領域の概念データモデル(未完成)。食材、プレート、料理商品と、そのサブタイプ及びプレート構成に関するエンティティタイプと関係を示す未完成の部分モデル。
図8 プレート管理の新設を検討する領域の関係スキーマ(未完成)。料理商品とプレートのサブタイプ、コース料理構成などについて、属性と空欄を示す未完成の関係スキーマ。
図8 プレート管理の新設を検討する領域の関係スキーマ(未完成)。料理商品とプレートのサブタイプ、コース料理構成などについて、属性と空欄を示す未完成の関係スキーマ。
解き方のヒントを見る

業務要件と設計要素の対応確認

設計の妥当性を考えるときは、業務要件の一文ごとに、それがモデル上のどの要素で表現されているかを一つずつ照らし合わせる姿勢が役立ちます。要件に書かれていない前提を自分で補っていないかにも注意しましょう。

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

この種の設計検討では、業務の説明に含まれる条件や制約を読み取り、それが設計のどこに反映されているか、あるいは反映されていないかを確かめることが中心になります。根拠を要件の記述に求める意識を持ちましょう。

視点

データモデルは業務のルールを構造として表現したものです。ある設計が妥当かどうかは、一般論としての良し悪しではなく、与えられた業務の記述と矛盾なく対応しているかで判断されます。まず要件の中の事実や条件を抜き出します。次にそれらを設計上の要素と対応づけます。最後に、対応が取れない箇所や過不足がある箇所を探します。この順序で考えると整理しやすくなります。

確認ポイント

  • 業務要件の記述から、設計に関わる条件や制約を漏れなく抜き出せているか
  • 抜き出した各条件が、設計のどの要素に対応しているかを説明できるか
  • 要件に書かれていない前提を、自分の思い込みで補って判断していないか
正解と解説を見る

解説

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