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

平成30年度春期 データベーススペシャリスト 午後Ⅰ 問1

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

問題

問1 データベース設計に関する次の記述を読んで,設問1~3に答えよ。 コピー機メーカの系列販売会社のX社では,販売管理システムのデータベース設計を行っている。 〔業務の概要〕 1. 地域 日本全国を幾つかの地域に分割し,地域コードで識別する。 2. 顧客 (1) 顧客(見込み客を含む)は,顧客コードで識別し,名称,住所,電話番号を登録する。 (2) 設置事業所(コピー機を設置する顧客の事業所)は,顧客コードと設置事業所コードで識別し,名称,住所,その住所を基にした地域コードを登録する。 3. 組織 (1) 組織は,組織コードで識別する。 (2) 組織には,コピー機を販売する営業所と,コピー機の設置と保守を行うサービスセンタ(以下,SCという)があり,組織区分で分類する。 (3) 顧客ごとに,担当営業所を決めている。担当営業所は,組織変更によって変更する場合がある。 (4) 地域ごとに,担当SCを決めている。 4. 営業担当者 (1) 営業担当者は,X社の社員であり,社員番号で識別する。 (2) 営業担当者は,いずれか一つの営業所に所属する。所属する営業所は,人事異動によって変更する場合がある。 5. 商品 (1) 商品は,商品コードで識別する。 (2) 商品には,製品と設置サービスがあり,商品区分で分類する。製品は,コピー機メーカの物流センタから出荷し,設置サービスは,X社のSCが提供する。 (3) 製品には,単体製品とセット製品がある。 ① 単体製品かセット製品かは,単体セット製品区分で分類する。 ② 単体製品には,製品サイズを登録する。 (4) 単体製品には,本体製品(コピー機本体)とオプション製品がある。 ① 本体製品かオプション製品かは,製品区分で分類する。 ② 本体製品には,製品のシリーズを表すシリーズコードを登録する。 ③ オプション製品には,給紙オプション,排紙オプションなどがあり,オプション区分で分類する。 (5) セット製品は,X社が販売用に登録する。セット製品は,一つの本体製品と一つ以上のオプション製品を組み合わせたもので,どのオプション製品で構成されるかについて,セット製品構成に登録する。 (6) 設置サービスには複数種類があり,製品ごとに,どの設置サービスを適用するかを決めている。設置サービスには標準設置時間を登録する。セット製品の場合,セット製品自体で決まる設置サービスを適用し,セット製品を構成する単体製品で決まる設置サービスは適用しない。 6. 見積り (1) 顧客から見積依頼があると,担当営業所の営業担当者が見積りを行う。 (2) 見積りは,見積番号で識別し,案件名,顧客コード,担当営業所の組織コード,営業担当者の社員番号,見積年月日,納期年月日,見積有効期限年月日,商品コード,商品コードごとの数量,見積単価を登録する。 7. 受注 (1) 成約に至ったときに,見積りと同じ単位で受注登録を行う。 (2) 受注は,受注番号で識別し,該当する見積番号,受注年月日を登録する。 (3) 受注明細は,設置の単位であり,本体製品1台単位,又はセット製品1セット単位に作成し,設置事業所,設置場所詳細(設置する階・部屋の位置),設置補足(設置に関する注意事項など)を登録する。(5)に後述する受注明細内訳番号を登録する。 (4) 受注明細内訳には,商品コードと数量を登録する。ただし,商品がセット製品の場合,そのセット製品自体と,セット製品を構成する製品を展開した内訳を登録する。 ① 受注明細が本体製品1台単位の場合,単体製品である本体製品とオプション製品,及び必要な設置サービスをそれぞれ登録する。 ② 受注明細がセット製品1セット単位の場合,次のように登録する。 ・セット製品と,セット製品に必要な設置サービスをそれぞれ登録する。 ・セット製品を構成する単体製品に展開し,単体製品の商品コード,展開元受注明細内訳番号(セット製品の商品コードを登録した受注明細内訳番号)を登録する。 (5) 本体製品の受注明細内訳番号を受注明細に登録する。 〔概念データモデルと関係スキーマの設計〕 〔業務の概要〕に基づいて設計した概念データモデルを図1に,関係スキーマを図2に示す。 図1 概念データモデル(未完成) 図2 関係スキーマ(未完成) 〔出荷指示の追加〕 販売管理システムに,次のように出荷指示の機能を追加することにした。 (1) 受注後,営業所で次のように出荷指示ができるようにする。 ① 出荷指示は,コピー機メーカの物流センタから出荷する製品を対象とする。 ② 同じ設置事業所,同じタイミングで出荷できる場合は,受注明細をまとめて出荷指示を行う。 (2) 出荷指示は,出荷指示番号で識別し,出荷指示年月日を登録する。 解答に当たっては,巻頭の表記ルールに従うこと。エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。 なお,関係スキーマの表記では,主キー及び外部キーを明記せよ。 設問1 図1,2について,(1),(2)に答えよ。 (1) 図2中の[a]~[k]に入れる適切な属性名を答えよ。また,主キーを構成する属性の場合は実線の下線を,外部キーを構成する属性の場合は破線の下線を付けること。 なお,属性が組織コードの場合は,営業所組織コード,SC組織コードを区別すること。 (2) 図1のリレーションシップは未完成である。必要なリレーションシップを全て記入し,図を完成させよ。 設問2 商品について,(1),(2)に答えよ。 (1) 商品をサブタイプに分割することにした。図2に示した商品の属性について,サブタイプ分割後の,どのエンティティタイプに固有の属性となるかを表1にまとめた。商品名の例に倣って,太枠内に○印を付けて,表1を完成させよ。ただし,各エンティティタイプのデータ構造は,第3正規形を満たすようにすること。 表1 エンティティタイプに固有の属性(未完成) (2) 図1中の商品とセット製品構成を対象に,商品をサブタイプに分割した概念データモデルを図3に示す。図3中の太枠内にエンティティタイプ名を入れ,欠落しているリレーションシップを補って図を完成させよ。 なお,リレーションシップは,スーパタイプ又はサブタイプのいずれか適切な方との間に設定すること。 図3 商品をサブタイプに分割した概念データモデル(未完成) 設問3 〔出荷指示の追加〕について,(1),(2)に答えよ。 (1) 〔出荷指示の追加〕に対応するために,新たな関係を一つ追加し,既存の関係に属性を一つ追加することにした。新たに追加する関係の主キー及び外部キーを明記した関係スキーマ,属性を追加する関係名及び追加する属性名を答えよ。 (2) 受注明細内訳のうち,出荷指示の対象とならない場合が二つある。どのような場合か,それぞれ15字以内で具体的に述べよ。
図1 概念データモデル(未完成)。組織(営業所・サービスセンタのサブタイプ)、営業担当者、地域、顧客、設置事業所、見積、見積明細、受注、受注明細、受注明細内訳、商品、セット製品構成のエンティティを配置した未完成の概念データモデル。商品からの参照や受注明細内訳の自己参照など、一部のリレーションシップだけが記入されている。
図1 概念データモデル(未完成)。組織(営業所・サービスセンタのサブタイプ)、営業担当者、地域、顧客、設置事業所、見積、見積明細、受注、受注明細、受注明細内訳、商品、セット製品構成のエンティティを配置した未完成の概念データモデル。商品からの参照や受注明細内訳の自己参照など、一部のリレーションシップだけが記入されている。
図2 関係スキーマ(未完成)。組織、営業所、サービスセンタ、地域、営業担当者、顧客、設置事業所、商品、セット製品構成、見積、見積明細、受注、受注明細、受注明細内訳の関係スキーマ。空欄a~kと網掛け部分があり、主キーは実線、外部キーは破線の下線で示される。注記「網掛け部分は表示していない。」付き。
図2 関係スキーマ(未完成)。組織、営業所、サービスセンタ、地域、営業担当者、顧客、設置事業所、商品、セット製品構成、見積、見積明細、受注、受注明細、受注明細内訳の関係スキーマ。空欄a~kと網掛け部分があり、主キーは実線、外部キーは破線の下線で示される。注記「網掛け部分は表示していない。」付き。
表1 エンティティタイプに固有の属性(未完成)。行に商品・製品・設置サービス・本体製品・オプション製品・セット製品・単体製品、列に商品名から商品区分、製品区分、単体セット製品区分、標準設置時間などを経てセット製品本体製品商品コードまでの属性を並べた表。商品名の商品行だけに○印があり、残りの太枠内は空欄。
表1 エンティティタイプに固有の属性(未完成)。行に商品・製品・設置サービス・本体製品・オプション製品・セット製品・単体製品、列に商品名から商品区分、製品区分、単体セット製品区分、標準設置時間などを経てセット製品本体製品商品コードまでの属性を並べた表。商品名の商品行だけに○印があり、残りの太枠内は空欄。
図3 商品をサブタイプに分割した概念データモデル(未完成)。商品、製品、セット製品構成のエンティティ枠と、エンティティタイプ名が空欄の太枠5個を配置した未完成の概念データモデル。太枠にサブタイプ名を記入し、欠落しているリレーションシップを補う形式になっている。
図3 商品をサブタイプに分割した概念データモデル(未完成)。商品、製品、セット製品構成のエンティティ枠と、エンティティタイプ名が空欄の太枠5個を配置した未完成の概念データモデル。太枠にサブタイプ名を記入し、欠落しているリレーションシップを補う形式になっている。
解き方のヒントを見る

要件記述とモデルの対応を確かめる

設計の問題では、記述された業務ルールの一文一文が、どの実体や属性、関連の多重度に反映されるべきかを照らし合わせる姿勢が役立ちます。思い込みで補わず、記述に根拠がある事柄だけを手掛かりに整理してみましょう。

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

確認したい観点は一つ、各業務記述が「何を識別し、何と何をどの程度結び付けるか」を読み取れているかです。識別の単位と結び付きの数の条件を記述から拾い、手元の整理と矛盾がないかを一つずつ確かめてください。

視点

データモデルの設計は、業務の言葉をデータの構造へ翻訳する作業です。翻訳の正しさは、元の記述のどの部分がその構造の根拠になっているかを説明できるかどうかで確かめられます。根拠を示せない構造は、一般常識や思い込みで補った可能性があります。逆に、記述にある条件がどこにも表現されていなければ、見落としがあるかもしれません。記述と構造を行き来しながら対応を確認する習慣を持つと、判断の揺れを減らせます。

確認ポイント

  • その記述は、何を一意に区別する単位として扱っているかを読み取れているか
  • 二つの対象の結び付きについて、数や任意性の条件が記述のどの語句から分かるかを示せるか
  • 自分の整理のうち、記述に根拠がなく想像で補った部分が残っていないか
正解と解説を見る

解説

コピー機販売会社X社の販売管理データベースを題材にした問題です。設問1では、業務記述から外部キーとリレーションシップを補います。設問2では、商品を製品・設置サービス、単体製品・セット製品、本体製品・オプション製品の3階層にサブタイプ分割し、属性とリレーションシップを適切な階層に割り当てます。設問3では、受注明細単位の出荷指示を追加し、出荷指示の対象外となる受注明細内訳を特定します。

問題の全体像

X社はコピー機メーカの系列販売会社で、地域・顧客・設置事業所・組織(営業所とSC)・営業担当者・商品・見積・受注を扱う販売管理システムを設計しています。図1の概念データモデルと図2の関係スキーマは未完成で、業務の概要から属性とリレーションシップを補う必要があります。出題趣旨では、業務要件を分析する能力、リレーションシップと外部キーを適切に設定する能力、サブタイプを適切に分類する能力、要件の変化に合わせて設計を拡張する能力を問うとしています。採点講評によると、全体の正答率は高かった一方、受注明細が設置事業所を参照する外部キー、商品のサブタイプ分割、出荷指示の設計は正答率が低かったとされています。

設問1(1)(a)

業務の概要3(2)に「組織には営業所とSCがあり、組織区分で分類する」とあります。図1でも、組織は営業所とサービスセンタのスーパタイプです。サブタイプを見分ける区分属性はスーパタイプに置くため、公式解答例では組織の空欄aを「組織区分」としています。主キーでも外部キーでもないので、下線は付けません。

設問1(1)(b)

業務の概要3(4)に「地域ごとに担当SCを決めている」とあります。1つの地域には担当SCが1つ決まり、1つのSCは複数の地域を担当できるので、SCと地域は1対多です。このため、多側の地域に担当SCの主キーを持たせます。公式解答例ではbを「SC組織コード」とし、外部キーを示す破線の下線を付けています。設問の指示どおり、組織コードは営業所とSCを区別した名前で書きます。

設問1(1)(c)

業務の概要4(2)に「営業担当者はいずれか一つの営業所に所属する」とあります。営業所と営業担当者は1対多なので、営業担当者に所属先営業所の主キーを持たせます。公式解答例ではcを「営業所組織コード」とし、破線の下線を付けています。人事異動で所属が変わる場合も、この属性を更新すれば対応できます。

設問1(1)(d)

業務の概要3(3)に「顧客ごとに担当営業所を決めている」とあります。営業所と顧客は1対多なので、顧客に担当営業所の主キーを持たせます。公式解答例ではdを「営業所組織コード」とし、破線の下線を付けています。

設問1(1)(e)

業務の概要2(2)に「設置事業所は顧客コードと設置事業所コードで識別する」とあります。したがって、顧客コードは設置事業所の主キーの一部です。公式解答例ではeを「顧客コード」とし、実線の下線を付けています。この顧客コードは顧客を参照する役割も持ちます。ただし、図2の見積明細などと同じく、主キーの一部になる属性は実線の下線で表します。公式解答例の備考では、eとfは順不同です。

設問1(1)(f)

業務の概要2(2)に、設置事業所には「その住所を基にした地域コードを登録する」とあります。地域と設置事業所は1対多なので、公式解答例ではfを「地域コード」とし、破線の下線を付けています。この外部キーをたどれば、地域の担当SCが分かります。

設問1(1)(g)

業務の概要6(2)では、見積に登録する項目として、顧客コード、担当営業所の組織コード、営業担当者の社員番号が挙げられています。図2の見積にはこれらが未記入なので、g、h、iに入ります。公式解答例では、gを営業担当者を参照する「社員番号」とし、破線の下線を付けています。g、h、iは順不同です。

設問1(1)(h)

(g)と同じ業務の概要6(2)が根拠です。見積には担当営業所の組織コードも登録します。公式解答例ではhを「営業所組織コード」とし、破線の下線を付けています。見積は営業所と多対1の関係になります。

設問1(1)(i)

業務の概要6(2)では、見積に顧客コードも登録するとしています。公式解答例ではiを「顧客コード」とし、破線の下線を付けています。見積は、どの顧客からの依頼かを表すために顧客を参照します。

設問1(1)(j)

業務の概要7(1)(2)に、受注は見積りと同じ単位で登録し、該当する見積番号を登録するとあります。公式解答例ではjを「見積番号」とし、破線の下線を付けています。見積りと同じ単位で受注するので、見積と受注は1対1の対応になります。

設問1(1)(k)

受注明細にはすでに設置事業所コードが外部キーとしてあります。しかし、設置事業所の主キーは顧客コードと設置事業所コードの複合キーなので、設置事業所コードだけでは設置事業所を特定できません。公式解答例ではkを「顧客コード」とし、破線の下線を付けています。これにより、設置事業所コードと組み合わせた複合外部キーになります。採点講評でもこの属性は正答率が低く、受注の記述から読み取ってほしいと指摘されています。

設問1(2)

設問1(1)で補った外部キーに対応するリレーションシップを、図1に書き加えます。公式解答例で追加されているのは次のとおりです。営業所→営業担当者、営業所→顧客、サービスセンタ→地域、地域→設置事業所、顧客→設置事業所、営業担当者→見積、営業所→見積、顧客→見積の各1対多と、見積と受注の1対1です。組織コードは営業所やSCとして参照されるため、スーパタイプの組織ではなく、サブタイプの営業所・サービスセンタから線を引く点に注意します。受注明細から設置事業所への関連は、図1にすでに描かれています。

設問2(1)

業務の概要5の分類階層に沿って、属性を割り当てます。公式解答例では次のとおりです。

・商品:商品区分(製品と設置サービスを分類)

・製品:単体セット製品区分、設置サービス商品コード(設置サービスは製品ごとに決まり、単体製品にもセット製品にも適用される)

・設置サービス:標準設置時間

・単体製品:製品区分(本体製品とオプション製品を分類)、製品サイズ

・本体製品:シリーズコード

・オプション製品:オプション区分

・セット製品:セット製品本体製品商品コード(一つの本体製品を含む)

各区分属性は、それで分類されるサブタイプの一つ上の階層に置きます。すべての行が値を持つ最も狭いエンティティタイプに属性を置くことで、第3正規形を満たします。採点講評では正答率が低く、問題文の商品の記述を正確に読み取るよう求めています。

設問2(2)

公式解答例の図3では、太枠に次のエンティティタイプ名が入ります。左の枠は設置サービス、中段は単体製品とセット製品、下段はオプション製品と本体製品です。サブタイプの関係は、商品⊃{設置サービス、 製品}、製品⊃{単体製品、 セット製品}、単体製品⊃{オプション製品、 本体製品}です。補うリレーションシップは、設置サービス→製品(製品ごとに適用する設置サービスを参照)、本体製品→セット製品(セット製品に含まれる一つの本体製品)、セット製品→セット製品構成、オプション製品→セット製品構成です。いずれも参照先が限られるので、スーパタイプの商品ではなく、該当するサブタイプとの間に引くのがポイントです。採点講評では、この部分のリレーションシップの正答率が低く、スーパタイプとサブタイプを結ぶ線の表記ルールを守っていない解答も見られたとされています。

設問3(1)(関係スキーマ)

〔出荷指示の追加〕(2)に「出荷指示は出荷指示番号で識別し、出荷指示年月日を登録する」とあります。公式解答例の新しい関係は「出荷指示(出荷指示番号、 出荷指示年月日)」で、出荷指示番号に主キーの実線の下線を付けます。採点講評では、出荷指示の単位が受注明細単位であることを読み取るよう求めています。

設問3(1)(関係名)

〔出荷指示の追加〕(1)②に「受注明細をまとめて出荷指示を行う」とあります。1つの出荷指示に複数の受注明細が対応するので、出荷指示と受注明細は1対多です。外部キーは多側に置くので、公式解答例では属性を追加する関係を「受注明細」としています。

設問3(1)(属性名)

公式解答例では、受注明細に「出荷指示番号」を追加します。この属性は、出荷指示を参照する外部キーとして働きます。

設問3(2)①

業務の概要7(4)②によると、セット製品の受注明細内訳には、セット製品自体の行と、構成する単体製品に展開した行の両方が登録されます。実際に物流センタから出荷されるのは、展開された単体製品です。セット製品自体の行は出荷指示の対象になりません。公式解答例では「セット製品の場合」としています。15字以内に収めるには「セット製品(自体の内訳)の場合」を押さえれば足ります。

設問3(2)②

業務の概要5(2)に「設置サービスはX社のSCが提供する」とあります。〔出荷指示の追加〕(1)①では、出荷指示の対象を物流センタから出荷する製品に限っています。そのため、受注明細内訳に登録される設置サービスの行は出荷指示の対象外です。公式解答例では「設置サービスの場合」としています。採点講評でも、商品と受注の記述を正確に読み取るよう求めています。

学習のポイント

業務記述の「ごとに」「所属」「区分で分類」などの表現から、外部キーの向きとサブタイプ階層を正確に導けるようにしましょう。また、スーパタイプとサブタイプのどちらにリレーションシップを引くべきかを判断する練習が重要です。

出典:独立行政法人 情報処理推進機構(IPA)平成30年度春期 データベーススペシャリスト試験 午後Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針