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

令和5年度秋期 データベーススペシャリスト 午後Ⅰ 問1

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

問題

問1 電子機器の製造受託会社における調達システムの概念データモデリングに関する 次の記述を読んで、設問に答えよ。 基板上に電子部品を実装した電子機器の製造受託会社であるA社は、自動車や家電などの製品開発を行う得意先から電子機器の試作品の製造を受託し、電子部品の調達と試作品の製造を行う。今回,調達システムの概念データモデル及び関係スキーマを再設計したい。 〔現行業務〕 1. 組織 (1) 組織は,組織コードで識別し,組織名をもつ。組織名は重複しない。 (2) 組織は,階層構造であり,いずれか一つの上位組織に属する。 2. 役職 役職は,役職コードで識別し,役職名をもつ。役職名は重複しない。 3. 社員 (1) 社員は,社員コードで識別し,氏名をもつ。同姓同名の社員は存在し得る。 (2) 社員は,いずれかの組織に所属し,複数の組織に所属し得る。 (3) 一部の社員は,各組織において役職に就く。同一組織で複数の役職には就かない。 (4) 社員には,所属組織ごとに,業務内容の報告先となる社員が高々1名決まっている。 4. 得意先と仕入先 (1) 製造受託の依頼元を得意先,電子部品の調達先を仕入先と呼ぶ。 (2) 得意先と仕入先とを併せて取引先と呼ぶ。取引先は,取引先コードを用いて識別し,取引先名と住所をもつ。 (3) 取引先が,得意先と仕入先のどちらに該当するかは,取引先区分で分類している。得意先と仕入先の両方に該当する取引先は存在しない。 (4) 仕入先は,電子部品を扱う商社である。A社は,仕入先と調達条件(単価,ロットサイズ,納入可能年月日)を交渉して調達する。仕入先ごとに昨年度調達金額をもつ。 (5) 得意先は,昨年度受注金額をもつ。 5. 品目 (1) 試作品を構成する電子部品を品目と呼び,電子部品メーカー(以下,メーカーという)が製造している。 ① 品目は,メーカーが付与するメーカー型式番号で識別する。メーカー型式番号は,メーカー間で重複しない。 ② メーカー各社が発行する電子部品カタログでメーカー型式番号を調べると,電子部品の仕様や電気的特性は記載されているが,単価やロットサイズは記載されていない。 (2) 品目は,メーカーが付けたブランドのいずれか一つに属する。 ① ブランドは,ブランドコードで識別し,ブランド名をもつ。 ② 仕入先は,幾つものブランドを扱っており,同じブランドを異なる仕入先から調達することができる。仕入先ごとに,どのブランドを取り扱っているかを登録している。 (3) 品目は,品目のグループである品目分類のいずれか一つに属する。品目分類は,品目分類コードで識別し,品目分類名をもつ。 6. 試作案件登録 (1) 得意先にとって試作とは,量産前の設計検証,機能比較を目的に,製品用途ごとに,性能や機能が異なる複数のモデルを準備することをいう。得意先からモデルごとの設計図面,品目構成,及び製造台数の提示を受け,試作案件として次を登録する。 ① 試作案件 ・試作案件は,試作案件番号で識別し,試作案件名,得意先,製品用途,試作案件登録年月日をもつ。 ② モデル ・モデルごとに,モデル名,設計図面番号,製造台数,得意先希望納入年月日をもつ。モデルは,試作案件番号とモデル名で識別する。 ③ モデル構成品目 ・モデルで使用する品目ごとに,モデル1台当たりの所要数量をもつ。 ④ 試作案件品目 ・試作案件で使用する品目ごとの合計所要数量をもつ。 ・通常,品目の調達はA社が行うが,得意先から無償で支給されることがある。この数量を得意先支給数量としてもつ。 ・合計所要数量から得意先支給数量を減じた必要調達数量をもつ。 7. 見積依頼から見積回答入手まで (1) 品目を調達する際は,当該品目のブランドを扱う複数の仕入先に見積依頼を行う。 ① 見積依頼には,見積依頼番号を付与し,見積依頼年月日を記録する。また,どの試作案件に対する見積依頼かが分かるようにしておく。 ② 仕入先に対しては,見積依頼がどの得意先の試作案件によるのか明かすことはできないが,得意先が不適切な品目を選定していた場合に,仕入先からの助言を得るために,製品用途を提示する。 ③ 品目ごとに見積依頼明細番号を付与し,必要調達数量,希望納入年月日を提示する。 ④ 仕入先に対して,見積回答時には対応する見積依頼番号,見積依頼明細番号の記載を依頼する。 (2) 仕入先から見積回答を入手する。見積回答が複数に分かれることはない。 ① 入手した見積回答には,見積依頼番号,見積有効期限,見積回答年月日,仕入先が付与した見積回答番号が記載されている。見積回答番号は,仕入先間で重複し得る。 ② 見積回答の明細には,見積依頼明細番号,メーカー型式番号,調達条件,仕入先が付与した見積回答明細番号が記載されている。回答されない品目もある。見積回答明細番号は,仕入先間で重複し得る。 ③ 見積回答の明細には,見積依頼とは別の複数の品目が提案として返ってくることがある。その場合,その品目の提案理由が記載されている。 ④ 見積回答の明細には,一つの品目に対して複数の調達条件が返ってくることがある。例えば,ロットサイズが1、000個の品目に対して,見積依頼の必要調達数量が300個の場合,仕入先から,ロットサイズ1、000個で単価0.5円,ロットサイズ1個で単価2円,という2通りの見積回答の明細が返ってくる。 8. 発注から入荷まで (1) 仕入先からの見積回答を受けて,得意先と相談の上,品目ごとに妥当な調達条件を一つだけ選定する。 ① 選定した調達条件に対応する見積回答明細を発注明細に記録し,発注ロット数,指定納入年月日を決める。 ② 同時期に同じ仕入先に発注する発注明細は,試作案件が異なっても,1回の発注に束ねる。 ③ 発注ごとに発注番号を付与し,発注年月日と発注合計金額を記録する。 (2) 発注に基づいて,仕入先から品目を入荷する。 ① 入荷ごとに入荷番号を付与し,入荷年月日を記録する。 ② 入荷の品目ごとに入荷明細番号を発行する。1件の発注明細に対して,入荷が分かれることはない。 ③ 入荷番号と入荷明細番号が書かれたシールを品目の外装に貼って,製造担当へ引き渡す。 〔利用者の要望〕 1. 品目分類の階層化 品目分類を大分類,中分類,小分類のような階層的な構造にしたい。当面は3階層でよいが,将来的には階層を増やす可能性がある。 2. 仕入先からの分納 一部の仕入先から1件の発注明細に対する納品を分けたいという分納要望が出てきた。分納要望に応えつつ,未だ納入されていない数量である発注残ロット数も記録するようにしたい。 〔現行業務の概念データモデルと関係スキーマの設計〕 現行業務の概念データモデルを図1に,関係スキーマを図2に示す。 図1 現行業務の概念データモデル(未完成) 図2 現行業務の関係スキーマ(未完成) 解答に当たっては,巻頭の表記ルールに従うこと。ただし,エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。エンティティタイプ間のリレーションシップとして“多対多”のリレーションシップを用いないこと。属性名は,意味を識別できる適切な名称とすること。関係スキーマに入れる属性を答える場合,主キーを表す下線,外部キーを表す破線の下線についても答えること。 設問1 図2中の関係“社員所属”について答えよ。 (1) 関係“社員所属”の候補キーを全て挙げよ。なお,候補キーが複数の属性から構成される場合は,{}で括ること。 (2) 関係“社員所属”は,次のどの正規形に該当するか。該当するものを,○で囲んで示せ。また,その根拠を,具体的な属性名を挙げて60字以内で答えよ。第3正規形でない場合は,第3正規形に分解した関係スキーマを示せ。ここで,分解後の関係の関係名には,本文中の用語を用いること。 非正規形・第1正規形・第2正規形・第3正規形 設問2 現行業務の概念データモデル及び関係スキーマについて答えよ。 (1) 図1中の欠落しているリレーションシップを補って図を完成させよ。なお,図1に表示されていないエンティティタイプは考慮しなくてよい。 (2) 図2中の[a]~[e]に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 設問3 〔利用者の要望〕への対応について答えよ。 (1) “1. 品目分類の階層化”に対応できるよう,次の変更を行う。 (a) 図1の概念データモデルでリレーションシップを追加又は変更する。該当するエンティティタイプ名を挙げ,どのように追加又は変更すべきかを,30字以内で答えよ。 (b) 図2の関係スキーマにおいて,ある関係に一つの属性を追加する。属性を追加する関係名及び追加する属性名を答えよ。 (2) “2. 仕入先からの分納”に対応できるよう,次の変更を行う。 (a) 図1の概念データモデルでリレーションシップを追加又は変更する。該当するエンティティタイプ名を挙げ,どのように追加又は変更すべきかを,45字以内で答えよ。 (b) 図2の関係スキーマにおいて,ある二つの関係に一つずつ属性を追加する。属性を追加する関係名及び追加する属性名をそれぞれ答えよ。
図1 現行業務の概念データモデル(未完成)。取引先、得意先、仕入先、ブランド、品目分類、品目、試作案件、見積、発注、入荷などのエンティティ間の関係を示す未完成の概念データモデル。
図1 現行業務の概念データモデル(未完成)。取引先、得意先、仕入先、ブランド、品目分類、品目、試作案件、見積、発注、入荷などのエンティティ間の関係を示す未完成の概念データモデル。
図2 現行業務の関係スキーマ(未完成)。社員所属から入荷明細までの関係名と属性名を列挙した未完成の関係スキーマで、aからeの空欄を含む。
図2 現行業務の関係スキーマ(未完成)。社員所属から入荷明細までの関係名と属性名を列挙した未完成の関係スキーマで、aからeの空欄を含む。
解き方のヒントを見る

業務ルールから従属関係を読む

設計や正規化の判断は、属性の値が何によって決まるかという業務上の約束事に支えられています。記述された業務ルールを根拠に、属性同士の決定関係を自分の言葉で整理してから検討に進む姿勢を身につけましょう。

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

確認する観点は一つ、各属性の値を一意に決めるのはどの属性(またはその組)かという点です。要望による変更がある場合も、その要望が決定関係のどこを変えるのかを同じ観点で捉え直してください。

視点

データモデルや関係スキーマを検討するときは、属性名の印象や一般的な業務イメージではなく、記述された業務上の約束事を根拠にします。ある属性の値が決まれば別の属性の値も決まる、という関係を一つずつ書き出しておくと、構造の評価も変更の検討も同じ土台の上で進められます。業務の要望が加わると、それまで成り立っていた決定関係が変わることがあります。要望の前と後とで、この関係がどう変わるかを比べる習慣をつけましょう。

確認ポイント

  • 記述された業務ルールごとに、どの属性の値がどの属性(またはその組)によって決まるかを書き出したか
  • 書き出した決定関係が、推測ではなく記述内容に根拠があるかを一つずつ見直したか
  • 要望による変更の前後で、書き出した決定関係のどこが変わるかを比べたか
正解と解説を見る

解説

電子機器の製造受託会社A社の調達業務を題材に、社員所属の正規化、図1の欠落リレーションシップ、図2の属性の穴埋め、品目分類の階層化と分納への対応を問う問題です。本文の識別規則と一意性の記述から、候補キー、主キー、外部キー、多重度を正確に導くことが得点の鍵になります。

設問1(1):社員は複数組織に所属でき、役職と報告先は所属組織ごとに決まる。組織名も重複しないので、候補キーは{社員コード,社員所属組織コード}と{社員コード,社員所属組織名}です。社員氏名は同姓同名があり、社員コードの代替にはならない。

設問1(2):全属性が単一値なので第1正規形です。一方、社員氏名が候補キーの一部である社員コードに関数従属するため、第2正規形を満たさない。60字制限は根拠欄だけに適用される。第3正規形への分解は、社員(社員コード,社員氏名)、組織(組織コード,組織名,上位組織コード)、社員所属(社員コード,所属組織コード,役職コード,報告先社員コード)、役職(役職コード,役職名)。各関係の主キーは順に社員コード、組織コード、{社員コード,所属組織コード}、役職コードです。上位組織コードは組織への外部キー。社員所属の社員コードと報告先社員コードは社員へ、所属組織コードは組織へ、役職コードは役職への外部キーです。主キーに含まれる属性には実線下線を付け、外部キーを兼ねても破線下線は付けない。

設問2(1):欠落している関係は、試作案件から見積依頼への1対多、仕入先から見積依頼への1対多、見積依頼と見積回答の1対1、見積依頼明細から見積回答明細への1対多、品目から見積回答明細への1対多、見積回答明細と発注明細の1対1です。複数の調達条件や代替品の提案が回答されるので、依頼明細と回答明細は1対多になる。回答された品目は依頼品目と異なる場合があるため、品目と見積回答明細の関係も必要です。

設問2(2)a~c:aは試作案件番号。モデルではモデル名との組、モデル構成品目ではモデル名・メーカー型式番号との組で主キーを構成するので、両方のaに実線下線を付ける。外部キーも兼ねるが破線下線は付けない。bは得意先支給数量,必要調達数量で、下線なし。cは取引先コード,試作案件番号で、両方に破線下線を付ける。製品用途は試作案件から取得できる。

設問2(2)d~e:dは見積依頼番号,メーカー型式番号,ロットサイズ,提案理由。見積回答明細の主キーは{見積依頼番号,見積回答明細番号}であるため、追加する見積依頼番号には実線下線を付ける。見積依頼番号は見積回答への外部キーであり、既存の見積依頼明細番号と組にして見積依頼明細への外部キーも構成するが、主キー属性なので破線下線は付けない。メーカー型式番号には破線下線、残り二属性には下線を付けない。eは見積依頼番号,見積回答明細番号,発注ロット数。最初の二属性の組が見積回答明細への外部キーなので破線下線を付け、発注ロット数には下線を付けない。

設問3(1):将来の階層追加にも対応するため、品目分類に1対多の自己参照関係を追加する。関係スキーマでは品目分類に上位品目分類コードを追加し、品目分類コードを参照する外部キーとして破線下線を付ける。30字制限は(a)の説明に適用され、(b)の関係名と属性名には字数制限が示されていない。

設問3(2):分納を認めると、一つの発注明細に複数の入荷明細が対応するため、その関係を1対1から1対多へ変更する。入荷ごとの実績を記録する入荷ロット数を入荷明細に、未納数量を記録する発注残ロット数を発注明細に追加する。発注残ロット数は発注ロット数から対応する入荷ロット数の合計を引いて求められる。追加する両属性は非キー属性で、下線は付けない。45字制限は(a)の説明に適用される。

学習のポイント

候補キーの洗い出しと部分関数従属の判定、明細の複合主キーの決め方、再帰リレーションシップ、1対1から1対多への変更に伴う数量属性の追加を重点的に学習してください。

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

関連する過去問一覧

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