H14午後II 問1(ITEC 2005予想問題集 午後II 問8)
データの分析及び制約の実装に関する問題。本番ではこの手の問題は選択したくないっすね。
設問4が曲モノです。。。
設問1(1)
“仕入見込金額”の算出ということなんで,表2「見込値の導出方法」を参照,図5「関係スキーマ」を見ると「仕入価格」がない。これを管理できればよい。
「仕入価格は,生産年月の生産会社の出荷価格,輸送費,保険金などによって変動する」から導出しようと思わないこと。
「発注時に指定した生産年月の仕入単価が適用」できれば問題ない。
しかし,同じ商品コードでも生産会社(生産工場)毎に仕入価格が違うのかどうかが,要件からはよく読み取れない。そこで,商品のスキーマを参照。ひとつの商品コードはひとつの生産工場コードしか持たないことから,商品コードと仕入単価は1:1であることが確認できた。
設問1(2)
図2の仕入実績金額を・・・「数量×単価≠金額」になっているって。。初見で気付かないと思うぞ。
「生産が遅延した場合でも,発注時に指定した生産年月の仕入単価が適用される」から,実際に生産される年月ではなく,「発注時に指定した生産年月」を保存しなければならない。
と,いうことで仕入実績に発注番号ですな。
設問2
NOT EXISTS で,条件の不等号式を間違わないように。。。
設問3(1)
図6を冷静に追いかければ問題なし。
設問3(2)
思いっきり問題文にヒントが書いてあるので引用する。
(4)(a) 基準や範囲を超えることが業務的に許されない制約であり・・・
設問4(1)
問題文をしっかり読んで要件(導出方法)を理解していないと答えを導けない。
最初は,トリガーが連鎖的に動作することで,更新順序に不具合があるのかと思ったが・・・
解答は,6ヶ月(半期)の集計だそうで。。。ここまで気が回らなかった。
設問4(2)
設問4(1)の解決策。「設問4(1)」を間違っていればとんでもない答えになるハズ(苦笑
「アプリケーションから,ストアドプロシージャを呼び出す」あたりは間違わないだろうけど。
解答にあたって,図中の記号や数字を引用することになるが,AとBとCとか,それぞれをきちんと明記するのか,AとBとC以外と濁すのかは,自信にあわせて使い分けるのが賢いかもしれない。
H14午後II 問1(ITEC 2005予想問題集 午後II 問8)
設問2(2):ASSERTION
CREATE ASSERTION 最低発注数量検査
CHECK(
NOT EXISTS (
SELECT * FROM 発注, 発注明細, 商品
WHERE 発注.発注番号 = 発注明細.発注番号 AND
発注明細.商品コード = 商品.商品コード AND
発注明細.発注数量 < 商品.最低発注数量 AND
発注.発注済フラグ = 'N' ) )
H14午後I 問3(ITEC 2005予想問題集 午後I 問2-2)
設問1(1):DWH系JOIN
SELECT 地区本部名称, 商品大分類名称, 年, 月, SUM(販売金額)
FROM 販売, 組織軸, 商品軸, 時間軸, 地区本部, 商品大分類
WHERE 地区本部.地区本部コード = 'A20' AND
地区本部.地区本部コード = 組織軸.地区本部コード AND
組織軸.組織軸コード = 販売.組織軸コード AND
商品大分類.商品大分類コード = 商品軸.商品大分類コード AND
商品軸.商品軸コード = 販売.商品軸コード AND
時間軸.時間軸コード = 販売.時間軸コード AND
GROUP BY 地区本部名称, 商品大分類名称, 年, 月
HAVING 時間軸.年 = '2001'
SELECT ブランド名称, 年, 曜日, SUM(販売金額)
FROM 販売, ブランド, 商品軸, 時間軸
WHERE 販売.商品軸コード = 商品軸.商品軸コード
AND 商品軸.ブランドコード = ブランド.ブランドコード
AND 販売.時間軸コード = 時間軸.時間軸コード
AND 時間軸.年 = '2001'
GROUP BY ブランド名称, 年, 曜日
ORDER BY ブランド名称, 曜日
SELECT 地区本部名称, 年, 月, 販売金額
FROM 販売, 地区本部, 組織軸, 時間軸
WHERE 時間軸.時間階層 = '月'
AND 時間軸.時間軸コード = 販売.時間軸コード
AND 組織軸.組織階層 = '地区本部'
AND 組織軸.地区本部コード = 地区本部.地区本部コード
AND 組織軸.組織軸コード = 販売.組織軸コード
ORDER BY 地区本部名称, 年, 月
H14午後I 問1
設問1
定番問題
設問1(2)
思わず2個目の候補キーを一生懸命探すw
基礎理論で候補キーを聞かれると「候補キーは複数あるもの」との思い込みがないっすか?
設問2(2)
推移的関数従属の問題点についての指摘(データベース技術P48 ③関係の喪失)
X表からA→Bの関係が喪失するとした場合
・あるAの登録が一つしかない場合,データ削除によってA→Bの関係も失われる。(アイテック解答例)
・削除するXタプルに含まれるAとBの組が最後のものであるならば,その関係が消失する(示現塾解答例)
・Aの値がひとつしかないタプルを削除すると,A→Bの関係が失われる。(g@kko例)
※AとBの組は言う必要なし。AでBは関数決定されるから,唯一のAを消せばという表現でOK。
設問3(1)
(2)の分割した状態で言うと,解答形式はカテゴリ識別子なんだよね。(データベース技術P270 図8-5)
で,この分割前の小分類ってのは,スーパータイプ/サブタイプの関係をスーパータイプ側に集約したもの。ということだろう。
主キーがX,属性の組が{A},{B},{C}とし,X→Yが他のスキーマにあるとすると
・{A},{B},{C}の属性の組は,データの存在がYに依存し互いに排他的である。(アイタック解答例)
・{A},{B},{C}は,Xによって一意的に決定されるか,ヌル値になるか排他的である。(示現塾解答例)
XによるのかYによるのか,どちらの表現が良いのか悩ましい。どっちでも可なのかな?
(データベース技術には良いフレーズが無かった。。。懸案事項)
H14午後II 問2(ITEC 2005予想問題集 午後II 問2)
設問1(3)
予約のエンティティに宿泊者数を残すか それとも
導出可能な項目として除くか。
私は残した。ITECの解答例は除いた。示現塾の解答例は残した。
ITECは導出可能な項目として除くとしているが,H13午後I 問2設問1(2)では導出可能な家族会員数を残しているクセして・・・
と,いうことで,残すことをMy解答例としたい。
設問2(1)
組合せ基準を「◎」,「○」だけ,別属性で女性フラグを持つとするか
組合せ基準を「◎」,「○」,「○(女性だけ)」だけとするか
凡例の主旨からすると,前者。処理だけ考えると後者でも可。かな。
でもフラグで処理するのは拡張性に欠けるんだけどなぁ・・・。
まぁ,設問の主旨を尊重して前者で整理。と。
設問2(2)
アイテック解答例
代替客室予約(ホテルコード,予約番号,希望客室タイプコード,代替客室タイプコード,代替客室数,予約年月日時分)
示現塾解答例
代替客室予約(ホテルコード,予約番号,希望客室タイプコード,代替客室タイプコード,代替客室数,予約年月日時分)
(※示現塾解答例では,スキーマ名は「希望客室タイプ予約」となっている)
と,なっている。私は代替客室タイプコードが主キーに含まれている示現塾の解答例を支持する。
理由は
代替客室タイプ予約機能,代替利用区分予約機能の説明において,予約客室数についての言及がないこと。「希望する客室タイプに空室がない場合,異なる客室タイプに割り当てる」としかない。
同一客室タイプを複数予約して空室がなければ,全て同じ代替客室タイプに割り当てるかどうか判断ができない。この機能の目的「客室の稼働率低下を回避」を考えると,“全て同じ代替客室タイプに割り当てる”という制限はしないはずだ。
具体例
「シングル禁煙」を2部屋予約しようとして,代替客室として,「シングル一般」1部屋と「シングル女性専用」1部屋が割り当てられた場合,{ホテルコード,予約番号,希望客室タイプコード}では,一意にならない。
設問3(2)①
あまりに当たり前過ぎて「予約番号」を入れ忘れる(苦笑
設問3(2)②a
「カナ氏名」の代わりに「氏名」でも可?でも,部分点かな。
設問3(3)
解答例は
直近3ヶ月を対象に[f:ホテルコードと予約番号]をキーとして[g:インターネット予約]テーブルと[h:宿泊]テーブルを[i:差集合演算]した結果について,[j:会員番号]で[k:集計]し,その件数が3件以上の会員番号を検索する。
と,なっている。
私の解答・・・
「差集合演算」が出てこなかった・・・「i:左外結合」,[j:宿泊番号がNULL]とした所で行き詰った。
苦し紛れに[k:選択]とした・・・「その件数が3件以上の会員番号」の表現にGROUP BYとCOUNTとHAVINGを託して。
「i:左外結合」して[j:宿泊番号がNULL]を[k:選択]で,[i:差集合演算]と同意。
考え方は良かったのかもしれないが,行き詰った時に,これが「差集合演算」と気付くかどうかが,レベルの差なんでしょうな。
やはり,午後II は奥が深い。
H14午後I 問4
vol.1 はここ
「図2 物品使用部署変更一覧表」と「図4 テーブル構造」の不一致
テーブルでは,現在使用部署に変更年月日を持っていないが一覧表では持っている。なぜだ。
テーブル物品には変更年月日は4個しかないが,一覧表では現在も含め5個持つように見えるんだが。
図2の下段,「増設ディスク」を考えると
2列目の変更年月日に購入年月日が入るとしたら,
1列目は変更年月日2,現在の列は変更年月日1になるのだろうかw
そんなことはしないだろう。
変更を6回すれば,購入年月日は4列目から押し出されるし,変更年月日だけが,列目の数字と合わないし何しろアプリが複雑になる。問題が良くないと思われる。
H14午後I 問4
708 :はぁはぁ :05/02/01 18:23:20
H14-1 1-2
物品
(*物品番号,物品名,購入部署コード,購入者コード,購入年月日)
物品構成
(*物品番号,*子番号,物品構成品名,単位,購入単価,現在使用部署コード,現在代表使用者コード,現在設置場所コード)
物品使用履歴
(*物品番号,*子番号,*変更年月日,使用部署コード,代表使用者コード,設置場所コード)では駄目ですか?
709 :はぁはぁ :05/02/01 18:25:26
また問題番号を間違えた _| ̄|..............................〇
14年pm1の問4設1-2
ITEC解答例では使用履歴は横持ちのままだが,履歴を分割するのも解答例のひとつと考える。(示現塾解答例では分割している)
この問題の場合,分割する際に「現在使用部署コード,現在代表使用者コード,現在設置場所コード」も履歴に含めるべきと考える。
また,この問題に限った事ではないが,列名の書き忘れには十分留意すること。
(708は,「変更理由」が漏れている)
H14午後I 問2(ITEC 2005予想問題集 午後I 問4-2)
関係データベースの物理設計,データ検索時の物理入出力回数に関する問題。
計算方法さえ間違わなければ,満点が取れる問題であるが,ちょっとした誤解から連鎖的に間違う可能性を秘めている。
よほど自信が無い限り,
午後I 問題で,設問概要に「物理」の文字が入っていたらその問題はパスすべきかな。
私は必ずパスします!
H14午後I 問3(ITEC 2005予想問題集 午後I 問2-2)
H14午後I 問3設問2に思ふ。
設問では「“テーブルの構造”を記述せよ」と,なっている。
問題冊子の頭にある「問題文中で共通に使用される表記ルール」では“テーブル構造”と言えば列名を四角で囲んだあれだ。
しかし,問3の中では「問題文中で共通に使用される表記ルール」で言う“関係スキーマ”が“テーブルの構造”という名称で図示されている。
アイテック及び示現塾の回答例も“関係スキーマ”で表記してある。
共通に使用される表記ルールより、問題文中の表現ルールが優先ということか?
それとも,“テーブルの構造”≠“テーブル構造”ということか?
はたまた,“関係(属性)”と“テーブル(列名)”の違いが隠れているのか?
とりあえず,回答例に従っておこう。