| データベーススペシャリスト 平成11年度 午後�� 解答 |
|
|
 |
設問1 担当
┌────┬───┬─────┐
│教師番号|校番号|クラス番号|
|────|───|─────|
└────┴───┴─────┘
座席
┌────┬────┬───┬─────┬────┐
│児童番号|変更日時|校番号|クラス番号|座席番号|
|────|────| | | |
└────┴────┴───┴─────┴────┘
設問2
(1)非候補キー{塾内平均点,塾内標準偏差}は候補キーの一部{校番号,学力試験番号}に部分関数従属するため
(2)入力ミスがない限り更新処理がなく検索処理のみであるため
(3)試験成績
┌────┬──────┬──┬──┬────┬────┬─────┐
│児童番号|学力試験番号|教科|得点|校内順位|塾内順位|塾内偏差値|
|────|──────|──| | | | |
└────┴──────┴──┴──┴────┴────┴─────┘
試験結果統計
┌──────┬──┬─────┬──────┐
│学力試験番号|教科|塾内平均点|塾内標準偏差|
|──────|──| | |
└──────┴──┴─────┴──────┘
設問3
(1)“クラス”テーブルに“教科”列を主キーの一部として追加する
(2)座席
┌────┬────┬───┬─────┬──┬────┐
│児童番号|変更日時|校番号|クラス番号|教科|座席番号|
|────|────| | | | |
└────┴────┴───┴─────┴──┴────┘
担当
┌────┬───┬─────┬──┐
│教師番号|校番号|クラス番号|教科|
|────|───|─────|──|
└────┴───┴─────┴──┘
|
|
|
|
 |
設問1 UPDATE 従業員 SET 退職フラグ = '1'
WHERE 退職フラグ <> '1' AND
生年*10000 + 生月*100 + 生日 <= 19390521
※定年を迎えるのは満60歳の誕生日の前日なので21日までになる。
設問2
SELECT 従業員.従業員コード, 従業員.氏名, COUNT(従業員家族.*)
FROM 従業員, 従業員家族
WHERE 従業員.従業員コード = 従業員家族.従業員コード AND
従業員家族.扶養フラグ = '1' AND
従業員家族.生年 >= 1987
GROUP BY 従業員.従業員コード, 従業員.氏名
ORDER BY 従業員.従業員コード;
設問3
(1)新規組織コードへの移行の場合,組織テーブルにデータを挿入後に従業員テーブルの該当データを更新する。
統合の場合,従業員テーブルの該当データを統合組織コードへ更新した後に組織テーブルのデータ削除を実行する。
(2)
(ア)読み込んだ旧組織コードと一致する“組織”テーブルの組織コードを,新組織コードに変更する。
(イ)“組織”テーブルからダミーレコードを削除する。
|
|
|
|
 |
設問1 (1)満たさない
※解説
{井上,6/5,210}→A400
{鈴木,6/5,210}→A400 のように全然主キーになってないのが分かる。
(2){便名,日付,乗員}
(3)第1正規形
ドメインが単純でかつ非候補キー“機種”が候補キーの一部{日付,乗員}の部分関数従属するため。
設問2
(1){便名,日付}→“機種”が繰り返し出現する。
(2){乗員,日付}→“機種”の関係が失われている。
(3)便 (便名,日付,機種名)
乗務(便名,日付,乗員)
設問3
(1){出発地,便名}のどちらにもデータがあるレコードが存在しないため
(2)
┌───┬──┬──┬──┬──┬───┬────┬──┬──┬────┐
|班番号|乗員|便名|時間|肩書|総時間| 出発地 |曜日|資格| 言語 |
┝━━━┿━━┿━━┿━━┿━━┿━━━┿━━━━┿━━┿━━┿━━━━┥
|G1 | | | | | | 東京 |月 | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
|G2 | | | | | |ロンドン|水 | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
|G1 |井上|210 |50|C |700| 東京 |月 |2級|ドイツ語|
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
|G1 |鈴木|210 |70|C |800| 東京 |月 | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
|G2 |阿部|320 |90|P |900|ロンドン|水 | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
|G2 |鈴木|320 |40|C |800|ロンドン|水 | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
| |井上| | |C |700| | |2級|ドイツ語|
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
| |鈴木| | |C |800| | | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
| |阿部| | |P |900| | | | |
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
| |井上| | |C |700| | |2級|ドイツ語|
├───┼──┼──┼──┼──┼───┼────┼──┼──┼────┤
(3)Q2
┌───┬──┬──┬──┐
|班番号|乗員|便名|時間|
┝━━━┿━━┿━━┿━━┥
|G1 |井上|210 |50|
├───┼──┼──┼──┤
|G1 |鈴木|210 |70|
├───┼──┼──┼──┤
|G2 |阿部|320 |90|
├───┼──┼──┼──┤
|G2 |鈴木|320 |40|
├───┼──┼──┼──┤
選択演算:班番号="G1" AND 乗務員 IS NOT NULL
Q3
┌──┬────┐
|肩書| 出発地 |
┝━━┿━━━━┥
|C | 東京 |
├──┼────┤
|P |ロンドン|
├──┼────┤
|C |ロンドン|
├──┼────┤
選択演算:出発地="東京" AND 便名 IS NOT NULL
|
|
|
|
 |
設問1 (1)a:40レコード
b:20MByte
※解説
a:
売上実績1レコードのデータ容量:6+10+10+12+42=80Byte
ブロックサイズ:4096KByte
ブロック毎に80Byteの管理情報
レコード毎に20Byteの管理情報
(4096Byte-80Byte)/(80Byte+20Byte)=40.16=40レコード
b:
部課数500×商品数400=200000レコード
200000レコード/(40レコード×4KByte)/1024=19.53MByte
(2)a:最大80レコード 最小53レコード
b:10MByte
※解説
a:
売上実績1レコードのキー容量:6+10+10=26Byte
複合索引時の管理情報:12+6*2=24Byte
ブロック毎に80Byteの管理情報
(4096Byte-80Byte)/(26Byte+24Byte)=80.32=80レコード
B*木構造では最小レコード数は最大レコード数の2/3なので80×2/3=53.333=53レコード
b:
最大数で見積もればよいから、データ部同様に
200000レコード/(80レコード×4KByte)/1024=9.76MByte
設問2
(1)処理1
※明らかにDISK01へのI/Oが多いので売上テーブルもしくは売上実績へのアクセスが問題
表名 売上 売上明細 売上実績
主キー 10 12 26
索引 12 18 24
ブロック内レコード数最大(最小) 182(121) 133(88) 80(53)
必要ブロック数最大(最小) 11050(166661) 75757(114942) 32912(49999)
最大レコード数 2000000 10000000 2600000
索引階層数最大(最小) 4(3) 4(4) 4(4)
・3処理において物理I/Oの発生はほぼ無いことを鑑み、索引をキャッシュする程度のメモリはそれなり
にあると思われる。→他のテーブルの必要ブロック数はより小さいのでメモリ不足によるI/Oは考えにくい。
・2処理において担当者テの検索は正しく主キーで検索しているので、適切に索引が使用され物理I/Oは少な
いと考えられる。
・4処理において売上実績の検索は正しく複合主キーで検索しているので、適切に索引が使用され物理I/Oは
少ないと考えられる。
・1処理は年月日が検索条件に必要かつカーディナリティと非常に低いので索引が存在したとしても全表検索
となる。一見シーケンシャルにデータが格納されているように見えるが、データの削除を定期的に実施して
いるため、ソート済みとは限らない。従って2000000×2/3=133万回の論理I/Oが発生する。売上テーブル全体
がキャッシュされているとは考えにくく、ここで物理I/Oが発生していると思われる。
(2)全表検索に耐えうるだけのメモリがなく物理I/Oが多発している
※仮に年月日に索引がないとすれば、全件検索になるためI/Oは多発するはず。
(3)各テーブルの索引の種類および使用状況のログの調査
各テーブルのI/Oの論理値,物理値からキャッシュ率を調査
設問3
(1)売上テーブルに対するI/Oの競合が多発している
(2)ロックの粒度を小さくするか、テーブルパーティショニングを検討する
|
|
|
|