配布資料2(問題集)

集中演習 データベースシステム 練習問題
【問題1】
リレーションスキーマ 美容師(美容師ID,美容師名,住所,美容師クラス),
顧客(顧客ID,顧客名,住所,電話番号),担当(美容師ID,顧客ID)がある
とする.次の問合せを指示に従いリレーショナル代数表現やSQL で表しなさい.
なお住所には県・市・町名までが書かれているとする.
(問1) 顧客「山田花子」を担当している美容師名を求める問合せをリレーシ
ョナル代数表現及びSQL で表しなさい.
(問2) 担当者が決まっていない顧客ID と顧客名を求める問合せをリレーシ
ョナル代数表現で表しなさい.なお,この表現には差集合演算を用い
なさい.
(問3) 顧客と美容師の会話を円滑にするために,担当者が決まっていない顧
客には,同じ住所に住んでいる美容師がいればその人を担当させることにした.担当者
が決まっていない顧客に関して,顧客名および同じ住所に住む美容師の名前,住所を求
める問合せをリレーショナル代数表現で表しなさい.なお問2 で求められるリレーショ
ンをT とする.
(問4) 他,美容室の業務に役に立ちそうな問合せを一つ提案し,その目的と
問合せの関係代数表現またはSQL を表しなさい.
【問題2】
以下に示すリレーションスキーマ社員が以下のように定義されている.ここ
に社員番号,社員名など全ての属性のドメインは単純(simple)である.
社員(社員番号,社員名,部署名,勤務地)
また部署名によって勤務地は一様に決定される,つまり部署名は勤務地に関数
従属する,とする.
さて,以下の問いに答えなさい.
(問1) このリレーションは第何正規形か,それを理由と共に示しなさい.
(問2) このリレーションではどのような更新時異状が発生するかについて具体
的に説明しなさい.
(問3) そのような更新時異状を解消するためにはどうすればよいか,またその
結果どのようなことになるのか説明しなさい.
【問題3】
日記機能のついた簡易的なソーシャルネットワークサイトのデータを管理する
データベースを作成したいとする.以下の問いに答えよ.
(1) 以下の E-R 図と要求仕様を元にリレーションスキーマを定義せよ.
・ユーザ(Users)は複数のユーザと友人関係になれる
・ユーザ(Users)は複数の日記(Diaries)をつけることができる.
・ユーザは他のユーザの日記にコメントをつけることができる.
※以降,(1)が不正解である場合も,そのリレーションを元に以下の問題の採点をします.
((1)を間違うことによって連鎖的に全部不正解にはなりません.
)
(2) (1)で定義されたリレーションに対する以下の問合せを関係代数とSQLで記述せよ
「ユーザ"chiemi"の 2011 年 1 月 1 日以降の日記(日付と内容)」
(3) 以下の問合せを行う関係代数を記述せよ
「ユーザ"chiemi"と"tomoko"の共通の友達の名前」
(4) 以下の問合せを行うSQLを記述せよ
「友達が 100 人以上いるユーザ名を友達の人数の多い順に出力する」
【問題 4】
以下の従業員リレーションに関して以下の問題にこたえよ。
Emp(eid integer, ename varchar, sal integer, age integer, did integer)
(1) 「年齢が 35 歳以下の従業員の名前を求めよ」という問合せを SQL でかけ。
(2) Emp レコードの大きさが 100byte, 1 ページの大きさが 4KB, レコード数が
100,000 あるとする。
A) ヒープファイルに Emp レコードを格納したとき、必要なページ数と 1 ペ
ージに入る Emp レコード数を求めよ。
B) 索引付きファイル(B+-tree,クラスタード,属性 age で索引を張る)で格納
したとき、
索引のノードの要素数は問題 2-A で求めた「1 ページに入る Emp
レコード数」と同じである。1 リーフノードに対して平均 60%のデータが
格納されていると仮定するとき必要なリーフノード数を求めよ
(3) (1)の問合せを実行したとき、物理スキーマが(2)の(A),(B)であったときの I/O コ
スト(ディスクからファイルへ呼び出すページ数)を求めよ。なお属性 age は
20 から 60 の値をとり均等に分布しているとする(あまり現実的ではないが…
計算の簡単のために)
。
【問題 5】オーダーが 1 の B+-tree に関して以下の問いに答えよ。
(1) 以下の挿入を行った後の B+-tree を求めよ。
19, 39,12,3,53,66,34,26,74,23,11
(2) (1)で求めた B+-tree 索引は非クラスタードであり運悪く 1 つのリーフノードに含ま
れているデータエントリはすべて別々のデータページを指しているとする。
この索引に対して値が x<=30 という問合せを行ったときの検索時間を求めよ。ディス
クからメモリへ 1 ページ取り出す時間は 200ms とし CPU での計算時間は無視する。
(3)(2)の問合せでメモリに読み込まれたページはすべてバッファプールに確保されてい
るとすると、
この次に 20<=x<=40 の条件で問い合わせを行った時の検索時間を求めよ。
なおディスクからメモリへ 1 ページ取り出す時間を 200ms, バッファプールから取り
出す時間は 2ms、CPU での計算時間は無視するとする。
【問題 6】
線形ハッシュアルゴリズム
(最初のバケット数 N=2, バケット内の要素数を 2 とする)
を使って以下の挿入を行った後のハッシュテーブルを求めよ。線形ハッシュでは最初
のバケット数を N とし、レベルを i としたとき、レベル i のハッシュ関数は
Hi(key) =h(key) mod (2i・N)
となる。なおこの問題でのハッシュ値 h(key)は簡単のため
h(key)=key
とする
19, 39,12,3,53,66,34,30,78,23,11
【問題 7】
100,000 タプルを持つリレーション R1 と、1,000,000 タプルをもつリレーション
R2 を等結合することを考える。R1、R2 はそれぞれヒープファイルに格納されて
いて、1 ページに 100 レコードずつ含まれている。以下の問題に答えよ。
(1) R1、R2 のヒープファイルが持つページ数を求めよ。
(2) R1 と R2 を最も単純な入れ子ループ結合(バッファプールを使わない)で結合
したときの I/O コストを求めよ。
(3) バッファプールが 502 ページ分あった時のブロック型入れ子結合による I/O コ
ストを求めよ。
(4) ソートマージ結合をした時の I/O コストを求めよ。なおソートは 500 ウェイマ
ージソートを行うものとする。log の計算は面倒なのでそのまま書いてしまって
よい。
(5) グレースハッシュ結合をした時の I/O コストを求めよ。
【問題 8】
ある人材紹介会社では以下の 4 つのリレーションによるデータベースを管理している。
Candidates(aid, name, req_salary)
就職希望者テーブル。name は氏名, req_salary は希望最低月給。
Companies(oid, name, salary)
登録会社テーブル。name は会社名,salary は月給。
Requested_licenses(oid,license_name)
会社が応募者に要求する資格。oid は Companies の外部キー。 つまり一つの会社が複数
の資格を応募者に要求することができる。license_name はライセンス名。
Certificated_licenses(aid,license_name)
就職希望者が所有している資格。aid は Candidates の外部キー。つまり一人の就職希望
者が複数の資格を記入することができる。license_name はライセンス名。
8-1.
登録会社 ABC-corp.が応募者に要求している資格名を求める問合せをリレーショナ
ル代数表現と SQL 文で表しなさい.
8-2.
ABC-corp.が要求する資格をすべて所有している就職希望者の氏名を求める問合せ
を代数表現で表しなさい。
8-3.
ABC-corp.が要求する資格(3 つ以上あるとする)のうち少なくとも 2 つの資格を所
有している就職希望者の氏名と希望最低月給を希望最低月給の少ない順に表示する
ための SQL 文を表しなさい.
【問題 9】
リレーション R(a,b,c,d)の属性 b に対して以下のような B+-木による索引が作成されている。
リレーション R の各レコードはデータページ dp1,…,dp5,B+-木の各ノードはそれぞれペー
ジ ip1,…,ip8 に格納されている。以下の問いに答えよ。
索引部
(B+-木)
9-1. R.b=20 であるレコードを求めるためにディスクから取り出すページを
すべて求めよ。なおバッファキャッシュは考えないものとする(2-2.も同様)
。
9-2. R.b<19 であるレコードを求めるためにディスクから取り出すページ数を求めよ。
9-3.
リレーション R にあるタプル t1=(25,39,’Otsuka’,’Ocha’)を挿入したときの
B+-木を求めよ。
(ip1 などのページ番号およびデータ部は書かなくてもよい。)