平成31年度データベーススペシャリスト 午後I 問3 回答(個人)



個人の回答と解説。
すでに回答が出ているのでそちらを参照してほしい。
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31.html#31haru

正確性は保証できないが午後Iについてはそこそこ自身がある。
問1と問3のみ
問2はTRIGGERという単語を見てスルーしてしまった。

問1の回答と解説は以下
https://ipadatabasespecialist.blogspot.com/2019/04/31-i-2.html

問題は以下から
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31.html#31haru

設問1


表1の網掛け部分を埋めておくとかなり簡単になる。

ア P3
イ P6
ウ P8


アイは表5の親番がP5の項目を見る。
ウはアイどちらかが親になる。順に追っていけば特定できる。

エ P7
オ P7
カ P2


エはAZの子品目を見て足りない項目を探す。
オカは親品番と小品番の組み合わせ数が一致しない項目を探す。親品目P7と小品目の組み合わせが1つしかない。

設問2


(1)
a 子品番
b 親品番


子品番、親品番どちらかで迷ったら具体的な値を入れてみるといい。多分合ってるはず...

(2)
設問1(2)が埋まっていれば解ける。
AZ: 1
P3: 1
P7: 2
p9: 2
P2: 1 * 2(p7個数) → 2
p4: 1 * 2(p7個数) → 2
p3: 1 * 2(p2個数) → 4

簡単すぎて引っ掛けを疑ったが見直してもこれ以外思いつかない。


設問3


(1)
ちょっとみないSQL文なので回答は困難だったかもしれない。ちょっと自信ない。
ちなみにL2.[c], L1.[d] と逆になっているので注意。

c 親品番
d 子品番


AX
SQLをわざわざ紐解く必要はなく説明のとおりに抽出すれば良い。
ちなみにLLCは製品のレベルを0として以降階層が深くなるごとに1ずつ加算...とちゃんと書いてある。
AY, AZはレベル1, 3なので違う。

(2)
主キーは除外。ユニークなので値が一意に決まる必要がある。
SQL分で使用しているテーブルは品目、構成のみ。
構成数はありえない。
となると品目テーブルが対象。
SQL2で使用している主キーでない属性はLLC.
LLCと回答したら間違い。
ユニークでなければいけないので

品番, LLC

設問4


(1)
SQL3はひとつ下の品目について調べるSQL.
品目区分は製品、中間部品、単体部品に分かれている。
単体部品の場合SQL3は全くの無駄になるので除外しているということが説明できれば良し。

品名区分が単体製品の場合下位の部品を調べる必要がないため。

(2)
p1の子に更にp1があるのが問題。
無限ループやスタックオーバフローなどのキーワードがあれば加点されるはず。

子品目に自身の品目を持っている場合無限ループしてしまう

(3)
互い違いになっている
AX: P3, P4
AZ: P3, P4

を直感で選択した。あまり自信がない。
他にもいくつかありそうな気がする。
AX: P4, P9(下の方)
AZ: P4, P9
なども怪しい。

図に書いてじっくり解けばいけるかもしれないがそんな時間はないだろう。

(4)
問題の通りHQTYは製品ごと部品ごとに集計した所要量が格納されている。
つまりSQL4は製品ごと部品ごとに集計した所要量を一気に更新するSQLになる。
元々は製品ごとに①~⑥をループ。部品ごとに③~⑤をLLCの数だけループ。
LLCを求めててしまうのでSQL4は製品毎に1回で良くなる。

Commit前に一回SQL4を実行する


午後Iで落とすことはないだろうが問題は午後II...