データベーススペシャリスト午後I 事例記述平成31年 春期
午後I 問3

問3 部品表の設計及び処理に関するデータベース設計・実装

テーマ:部品表のテーブル構造・索引設計と正展開・逆展開・所要量計算処理
左右2分割表示:左側の問題文をスクロールしながら右側の設問に解答できます

長文事例本文

図表クリックで拡大
問3 部品表の設計及び処理に関する次の記述を読んで,設問1~4に答えよ。  E社は,機械メーカである。E社では,RDBMSに構築した生産部品表(以下,部品表という)を用いて生産管理を行っている。情報システム部門のFさんは,新たに配属されたDB管理者のために,部品表に関する研修を担当することになった。 〔RDBMSの主な仕様〕 (1) 索引は,ユニーク索引と非ユニーク索引に分けられる。 (2) DMLのアクセスパスは,RDBMSによって索引探索又は表探索に決められる。 (3) 索引探索に決められるためには,WHERE句のANDだけで結ばれた一つ以上の等値比較の述語の対象列が,索引キーの全体又は先頭から連続した一つ以上の列に一致していなければならない。ON句の場合も同様である。 〔部品表の概要〕  部品表は,E社が製造する製品と製品を構成する部品との関係を表すものである。Fさんは,研修で使用するためにE社の製品を簡略化して表した製品AX,AY及びAZの構成図を図1に示し,次のように説明することにした。 1. 品目 (1) 品目は,品番で識別し,品目ごとに在庫をもっている。 (2) 品目には,製品と,他の部品を使って組み立てられる中間部品,単独で使われる単体部品があり,品目区分で分類する。例えば,図1中のAXは製品,P1及びP2は中間部品,P3,P4及びP9は単体部品である。 2. 製品の構成 (1) 製品は,複数種類の部品で構成され,構成図は,階層で表現される。製品からの階層の深さをレベルという。製品のレベルを0として,階層を一つ下るごとにレベルに1を加算する。例えば,製品AXを構成する部品について,レベル1に部品P1,P4及びP9,レベル2に部品P2及びP9,レベル3に部品P3がある。 (2) 各部品について,当該部品を使う全ての製品の構成図の中で,当該部品が出現するレベルの最大値を,最も深い階層を示すことから,ローレベルコード(以下,LLCという)という。例えば,図1では,部品P5のLLCは1,部品P9のLLCは3である。 (3) ある品目が他の品目から構成される場合,当該品目を親品目といい,親品番で識別する。また,当該親品目の一つ下のレベルの品目を子品目といい,子品番で識別する。 (4) 親品目1個当たりに使う各子品目の個数を構成数という。例えば,製品AXの製造に使う各部品の構成数は,次のとおりである。  ① 製品AXは,1個当たり,部品P1を2個,部品P4,P9をそれぞれ1個ずつ使う。  ② 部品P1は,1個当たり,部品P2,P9をそれぞれ1個ずつ使う。  ③ 部品P2は,1個当たり,部品P3を2個使う。
図1 製品AX,AY及びAZの構成図(未完成) 拡大
図1 製品AX,AY及びAZの構成図(未完成)
注記 製品AXの各部品の( )内の数字は,当該部品の親品目1個当たりに使う当該部品の構成数を示す。製品AY及びAZの部品については構成数を省略している。 3. 主なテーブルのテーブル構造  E社が生産管理に用いている主なテーブルのテーブル構造を図2に示す。図1に基づいて登録した“品目”テーブルの行を表1に,“構成”テーブルの行を表2に示す。  なお,各テーブルには主索引だけが定義されている。索引キーが複合列の場合,テーブル構造に示した列の順番で定義される。
図2 主なテーブルのテーブル構造(一部省略) 拡大
図2 主なテーブルのテーブル構造(一部省略)
表1 “品目”テーブルの行(一部省略) | 品番 | 品名 | 品目区分 | LLC | … | | :--- | :--- | :--- | :--- | :--- | | AX | AX | 製品 | 0 | … | | AY | AY | 製品 | 0 | … | | AZ | AZ | 製品 | 0 | … | | P1 | P1 | 中間部品 | 1 | … | | P2 | P2 | 中間部品 | 2 | … | | P3 | P3 | 単体部品 | 3 | … | | P4 | P4 | 単体部品 | 2 | … | | P5 | P5 | | | … | | P6 | P6 | | | … | | P7 | P7 | | | … | | P8 | P8 | | | … | | P9 | P9 | 単体部品 | 3 | … | 注記 網掛け部分は表示していない。 表2 “構成”テーブルの行(未完成) | 親品番 | 子品番 | 構成数 | … | | :--- | :--- | :--- | :--- | | AX | P1 | 2 | … | | AX | P4 | 1 | … | | AX | P9 | 1 | … | | AY | P5 | 1 | … | | AY | P9 | 1 | … | | AZ | P3 | 1 | … | | AZ | エ | 2 | … | | AZ | P9 | 2 | … | | P1 | P2 | 1 | … | | P1 | P9 | 1 | … | | P2 | P3 | 2 | … | | P5 | P3 | 1 | … | | P5 | P6 | 1 | … | | P6 | P8 | 1 | … | | P6 | P9 | 1 | … | | オ | カ | 1 | … | | P7 | P4 | 1 | … | 〔部品表に対する基本的な処理〕 1. 正展開処理,逆展開処理及び所要量計算処理の概要  Fさんは,部品表に対する三つの基本的な処理として,正展開処理,逆展開処理及び所要量計算処理を挙げた。 (1) 正展開処理は,親品目がどの子品目を使っているかを,階層を上から下に1階層ずつたどることで調べる。 (2) 逆展開処理は,子品目がどの親品目に使われているかを,正展開処理とは逆に,階層を下から上に1階層ずつたどることで調べる。逆展開処理は,ある部品が廃番になったとき,その部品がどの品目に影響するかを調べるときなどに行われる。 (3) 所要量計算処理は,製品の生産計画に基づいて,各製品の製造に必要な部品の所要量を計算し,計算した所要量を部品の引当可能数から差し引くことで,在庫を引き当てる。 2. 正展開処理,逆展開処理及び所要量計算処理に用いるSQL  Fさんは,部品表に対する三つの基本的な処理に用いられるSQLの構文の例を,表3に示した。
表3 SQLの構文の例(未完成) 拡大
表3 SQLの構文の例(未完成)
注記 HPNUM,HLLC及びHQTYは,ホスト変数である。 ※表3中のSQL3のWHERE句には `WHERE 親品番=:HPNUM AND LLC>=:HLLC ORDER BY 子品番` と下線部が指定されている。 〔所要量計算処理プログラムの概要〕  所要量計算処理プログラムは,表3中のSQL3及びSQL4を用いる。Fさんは,製品をN個製造する場合の所要量計算処理プログラムの処理手順を,表4に示した。  なお,当該処理は,次の前提で行うものとする。 (1) 各部品の所要量の計算は,SQL3を用いて調べた構成数に基づいて,プログラムのロジックで行う。 (2) ISOLATIONレベルは,READ COMMITTEDとする。 (3) 製品が複数ある場合,製品の品番順に,製品ごとに手順①~⑥を繰り返す。 (4) 在庫は,適切に管理されているので,引当可能数が負の数になることはない。
表4 所要量計算処理プログラムの処理手順 拡大
表4 所要量計算処理プログラムの処理手順
〔Fさんの研修内容に対するK部長の指示〕  表4について,K部長から次のような指示があった。 指示1 表4中の手順③のSQL3の発行回数を減らすために,手順①及び③のSQL3で部品の品目区分を調べている。その理由を説明すること。 指示2 品目の設計変更において,例えば,製品AXの部品P3を新部品P11に置き換えるべきところ,誤って部品P1を“構成”テーブルに登録してしまった場合,SQL3の構文中に下線部分の述語が指定されていなければ,プログラムは不具合を起こすことを説明すること。 指示3 製品は多品種なので,スループット向上のために所要量計算を製品ごとに分割して並行処理している。しかし,表4の処理手順のままではデッドロックが起きるので,プログラムを改良したことを説明すること。

設問一覧 & 解答・演習

まずは解答を作成してみましょう。「解答例を見る」をクリックするとIPA公式解答例と採点基準が開きます。

設問1 (1)記号・選択式
図1中の ア 〜 ウ に入れる適切な字句を答えよ。
※直接入力してください
設問1 (2)記号・選択式
表2中の エ 〜 カ に入れる適切な字句を答えよ。
※直接入力してください
設問2 (1)記号・選択式
表3中のSQL1の a, b に入れる適切な字句を答えよ。
※直接入力してください
設問2 (2)記号・選択式
製品AZを1個製造するのに必要な,部品P2,P3及びP4の所要量をそれぞれ答えよ。
※直接入力してください
設問3 (1)記号・選択式
表3中のSQL2の c, d に入れる適切な字句を答えよ。また,SQL2を用いて得られる図1中の製品の品番を全て答えよ。
※直接入力してください
設問3 (2)記号・選択式
SQL2が参照する全てのテーブルのアクセスパスは,索引探索に決められるようにしたい。“構成”テーブルにユニーク索引を追加する場合,その索引を構成する全ての列名を定義順に答えよ。
※直接入力してください
設問4 (1)記述問題
制限字数:30 字以内
指示1に対して,なぜ部品の品目区分を調べれば,SQL3の発行回数を減らすことができるのか,その理由を30字以内で述べよ。
0 / 30 文字
設問4 (2)記述問題
制限字数:20 字以内
指示2に対して,プログラムが起こす不具合とは,処理がどのようになることか,20字以内で述べよ。
0 / 20 文字
設問4 (3)記号・選択式
指示3で述べられたデッドロックについて,Fさんは,図1の製品AXとAZの間で起きるデッドロックの一つのケースを,ケース1として図3に示し,デッドロックに関わる2種類の部品の組合せを丸印で囲んだ。図3に倣って,他にデッドロックが起きるケースをケース2として,図4を完成させよ。
※直接入力してください
設問4 (4)記述問題
制限字数:20 字以内
指示3に対して,Fさんは,プログラムの改良について,次のように説明した。
“SQL4を,製品ごとレベルごと部品ごとに実行するのではなく,製品ごと部品ごとに集計した所要量をホスト変数HQTYに設定してから表4の手順⑥の前に実行するように,手順②~⑤を改良しました。”
この説明に加えて,複数回のSQL4をどのように実行するべきか,20字以内で述べよ。
0 / 20 文字
午後I長文記述の得点力を引き上げる定番対策書Amazon・楽天 公式提携
PR
徹底攻略 データベーススペシャリスト教科書 令和8年度
IPA 厳選対策書徹底攻略 データベーススペシャリスト教科書 令和8年度株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス
DB徹底攻略
株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス

徹底攻略 データベーススペシャリスト教科書 令和8年度

💡 推薦ポイント:午後I・午後IIの概念データモデル穴埋めや排他制御・性能設計の記述問題で確実に合格点を勝ち取る実践テクニックが満載です。
※本リンク先はプロモーション(アフィリエイト広告)が含まれています
【出題趣旨】IPA公式発表
部品表は,製造業における生産管理業務などに欠かせないものである。 本問では,RDBMSに構築した単純な部品表を題材に,部品表の基本的なテーブル設計と索引設計,部品表に対する基本的な処理である正展開処理,逆展開処理及び所要量計算処理の概要を理解し,その部品表を操作するSQL構文の基本的な特徴及び考慮点を理解しているかを問う。
【採点講評】IPA公式発表
問3では,部品表の設計及び処理について出題した。全体として,正答率は高かった。 設問1,2及び設問3(1)の正答率は高く,部品表の基本的なテーブル構造及び部品表に対する基本的な処理とその処理に用いられるSQL構文はよく理解されていた。 設問3(2)では,主索引と同じ順番に列名を並べた誤った解答が散見された。等値比較のローカル述語が指定された列を索引キーの先頭列にするのは,索引設計の基本の一つであることを知っておいてほしい。 設問4(1),(2)は,設問1,2に比べて正答率が低かった。品目区分を利用すれば,性能を効率化できること,またローレベルコードは,部品の親子関係の矛盾を検知する目的で導入されることを理解してほしい。 設問4(3)は,正答率が低かった。製品AX及びAZの構成に共通する4種類の部品について,“在庫”テーブルを更新する行の品番の順番に注目すれば,ケース1以外ではP4とレベル1のP9の組合せであるという正答を導けたはずである。 設問4(4)は,正答率が低かった。設問4(3)に与えられているケース1から,デッドロックを回避するために更新する行の品番の順番をそろえるにはどうすればよいかを考えることで正答を導いてほしかった。
本番形式・制限時間付きで演習する
平成31年 春期 午後I(3問中2問選択・90分)を実戦演習モードで通し解答し、総合採点を受けられます。
実戦演習を始める