掛下 哲郎 kake@is.saga-u.ac.jp データベースII 第3回 掛下 哲郎 kake@is.saga-u.ac.jp
あらまし リレーショナルDBに対する質問 リレーショナル代数演算 質問の設計 選択(Selection) 射影(Projection) 結合(Join) 質問の設計 データベースII講義資料:掛下
リレーショナル代数 Relational Algebra 選択(Selection) 射影(Projection) リレーションに対する操作 選択(Selection) 指定された条件を満たす組を1つのリレーションから抽出する。 射影(Projection) 指定された属性の値だけを1つのリレーションから抽出する。 自然結合(Natural Join) 2つのリレーションを1つにまとめる。 データベースII講義資料:掛下
自然結合(組同士の結合) 共通属性(結合属性)の値が等しいs,tの組を集めてリレーションを定義する。 SPJの全ての組t Sの全ての組s s SNAME STATUS CITY S# P# J# QTY s S1 : S5 Smith : Adams 20 : 30 London : Athens S1 : P1 : J1 J4 : 200 700 : S1 Smith 20 London t S1 P1 J4 700 S# SNAME STATUS CITY S1 Smith 20 London P# J# QTY P1 J4 700 s t データベースII講義資料:掛下
自然結合 S SPJ S# SNAME STATUS CITY P# J# QTY S1 S2 : S5 Smith Jones : Adams 20 10 : 30 London Paris : Athens P1 P3 : P6 J1 J4 J2 J3 J5 J6 J7 : 200 700 400 500 600 800 : データベースII講義資料:掛下
選択 [CITY=“London”] 選択条件 S SPJ 選択条件を満たす組だけを残す S# SNAME STATUS CITY P# QTY S1 S4 Smith Clark 20 London P1 P6 J1 J4 J3 J7 200 700 300 選択条件を満たす組だけを残す データベースII講義資料:掛下
射影 S SPJ [CITY=“London”] [P#] 射影属性 射影属性で指定された属性値だけを残す 値が同一の組は1つにまとめる データベースII講義資料:掛下
リレーショナル代数の性質 リレーショナル代数演算の結果は、いずれもリレーション 複数のリレーショナル代数演算を組み合わせて適用できる。 多くの検索処理は、リレーショナル代数演算の組み合わせで記述できる。(リレーショナル完備性) データベースII講義資料:掛下
リレーショナル代数を用いた 質問の記述 質問を処理するために必要なリレーションを結合演算で1つにまとめる。 スキーマグラフから決定する。 選択・射影に必要な属性を含む最小限のリレーション集合 1つにまとめたリレーションに選択演算を施して、必要な組だけを抽出する。 抽出されたリレーションに射影演算を施して、必要な属性だけを抽出する。 データベースII講義資料:掛下
質問の設計例 使用テーブル S、SPJ 結合条件 SとSPJのS#が一致すること 選択条件 CITY=“London” 射影属性 P# 注意事項 質問の設計は、結果の正しさが保証できる範囲で、できるだけ単純化すること。 データベースII講義資料:掛下
クエリー作成の基本手順 Step 1 クエリー 使用テーブル、結合条件、選択条件、射影属性などを決定する。 設計 Step 2 の実装 クエリー設計で決定した事項に従って実装する。 ※ 設計が完了してから実装すること データベースII講義資料:掛下
サンプルデータベースへの質問 Londonで製造されている全ての製品の詳細情報を求めよ。 製品J1を製造している業者の番号を求めよ。 Londonの業者がLondonで製造している製品のために保管している部品の番号を全て求めよ。 業者S1が製造している製品の名前を全て求めよ。 データベースII講義資料:掛下