Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
データベース
第8回
関係データモデルと関係代数
1
2015年5⽉28⽇(⽊) 7・8時限
担当:奥 健太
これまでに学習した内容
2
 SQLによるデータベース操作⽅法を学んだ
 データの検索
 データの登録,更新,削除
 データベース,テーブルの作成
mysqld
クライアント
プログラム
結果
データベース
エンジン
問合せ(クエリ)
...
これから学習する内容
3
 データベース設計について学ぶ
CREATE DATABASE
CREATE TABLE
データベース設計
エンドユーザ
結果
データベース
問合せ(クエリ)
データベース
アプリケーション
要求
応答
データベース設計編での学習⽬標
4
基礎となるデータモデルを理解する
データベース設計の⽅法を理解する
データの冗⻑性と不整合問題の解消⽅法
を理解する
データベースプログラミングの⽅法を理
解する
データベース設計編
回 ⽇付 テーマ
8 5/28 関係データモデルと関係代数
9 6/4 データベース設計
10 6/11 正規化
11 6/18 データベースとプログラム
5
関係データモデル
本⽇の講義で学ぶこと
6
関係データモデル
7
関係データベース管理システム
(RDBMS; Relational DataBase Management System)
8
 エドガー・F・コッドが提唱した関係データモデルを
採⽤したデータベース管理システム(DBMS)
 MySQL,...
SQLと関係データモデル
9
 SQLは関係データモデルを基礎としている
 データの表現⽅法やデータに対する演算⽅法が関係
データモデルでルールが決められている
関係データモデル
SQL
SELECT INSERT
UPDATE DELETE
関係(リレーショナル)データモデル
10
 1970年にIBM社にいたエドガー・F・コッドが提案
 データを属性値の集合であるタプルとして表現する
表構造を採⽤し,属性を列,タプルを⾏として関連付ける
 ⾒出し(属性の集合)と本体(タプ...
関係(リレーション)
11
番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
54槍ヶ岳 3,180⻑野県
64⼋ヶ岳 2,899⻑野県
72富⼠⼭ 3,776⼭梨県
87⽩⼭ 2,702岐⾩県
92⼤⼭ 1,...
関係データモデルの⽤語
12
 関係(リレーション)
 ⾒出しと本体の対で構成される
 ⾒出しは0個以上の属性の集合
 本体は0個以上のタプルの集合
 属性(アトリビュート)
 属性名とデータ型の対
 タプル(組)
 ⾒出しに対...
SQLでの⽤語
13
番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
54槍ヶ岳 3,180⻑野県
64⼋ヶ岳 2,899⻑野県
72富⼠⼭ 3,776⼭梨県
87⽩⼭ 2,702岐⾩県
92⼤⼭ 1,729...
関係データモデルとSQLでの⽤語の⽐較
14
関係データモデル SQL
関係(リレーション) テーブル(表)
タプル(組) ロウ(⾏)
属性(アトリビュート) カラム(列)
関係といえる表はどれ?
15
1時限 2時限
⽉
英語 C501 OS F201
化学 C202 知識⼯学 C109
⽕
SW⼯学 R103 数理解析 C103
DB C202 HI C306
交戦勢⼒
東軍 ⻄軍
指導者・指揮官
徳川家康
徳...
関係データモデルの形式化
16
関係R
タプルti
関係 R の要素 ti∈ R
集合の要素を表す記号
部分集合を表す記号
ドメイン
直積を表す記号
ドメイン(定義域)
17
 属性値がとりうるすべての値の集合
例;⼈名の集合,年齢の集合,学科名の集合
D1 = {x | xは⼈名}
D2 = {x | xは0以上の整数}
D3 = {コミュ,知能,メディア,システム}
ドメインの例
18
番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
54槍ヶ岳 3,180⻑野県
64⼋ヶ岳 2,899⻑野県
72富⼠⼭ 3,776⼭梨県
87⽩⼭ 2,702岐⾩県
⽇本百名⼭
D番号 =...
ドメインの直積集合とタプル
19
D1 = {1, 2}, D2 = {a, b, c}, D3 = D1
D1× D2 ×D3 =
{(1,a,1), (1,a,2), (1,b,1), (1,b,2), (1,c,1), (1,c,2),
...
トランプの例
20
D1 = {♠, ♡, ♢, ♣}
D2 = {A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K}
R ⊆ D1× D2
D1× D2 = {
(♠,A), (♠,2), ..., (♠,K),
...
次数と濃度
21
番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
54槍ヶ岳 3,180⻑野県
64⼋ヶ岳 2,899⻑野県
72富⼠⼭ 3,776⼭梨県
87⽩⼭ 2,702岐⾩県
⽇本百名⼭
⽇本百名⼭ ...
関係スキーマとインスタンス
22
番号 登録名 登録年 所在地
関係スキーマ
インスタンス
 関係の⾒出し部分
 時間的に不変
 タプルの集合
 時間的に変化
2姫路城 1993兵庫県
3屋久島 1993⿅児島県
8厳島神社 1996広...
関係スキーマの記述
23
世界遺産 (番号,登録名,登録年,所在地)
属性名
関係名
例;
主キーには下線をひく
ドメイン
D番号 = {x | xは1以上の整数}
...
関係の特徴(1)
 ⼀つの関係の中で,まったく同じ値をもつ重複
したタプルは存在してはならない
 関係にはNULLを含めることはできない
24
姫路城 兵庫県
姫路城 兵庫県
富⼠⼭ 静岡県
姫路城 兵庫県
富⼠⼭ NULL
関係の特徴(2)
 タプルの順序は関係としては意味をもたない
 属性の順序は意味をもたない
25
姫路城 兵庫県
屋久島 ⿅児島県
富⼠⼭ 静岡県
富⼠⼭ 静岡県
姫路城 兵庫県
屋久島 ⿅児島県
番号 登録名 登録年 所在地
所在地 登録...
姫路城 兵庫県
姫路城 兵庫県
富⼠⼭ 静岡県
SQLの特徴(1)
 制約がなければ,⼀つのテーブルの中で重複し
たロウは存在しても良い
 テーブルにはNULLを含めることができる
26
姫路城 兵庫県
富⼠⼭ NULL
SQLの特徴(2)
 ロウの順序は存在する(ソートなど)
 カラムの順序は存在する(データ登録時など)
27
姫路城 兵庫県
屋久島 ⿅児島県
富⼠⼭ 静岡県
富⼠⼭ 静岡県
姫路城 兵庫県
屋久島 ⿅児島県
番号 登録名 登録年 所在地
...
28
関係代数の演算
29
関係代数の演算 説明
和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せを求め...
関係代数の演算
30
関係代数の演算 説明
和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せを求め...
⼆つの関係の両⽅または⽚⽅に現れるタプル
からなる関係を求める
和集合演算 P∪Q
名前 所在地
姫路城 兵庫県
屋久島 ⿅児島県
富⼠⼭ 静岡県
P P∪Q
名前 所在地
⼤阪城 ⼤阪府
姫路城 兵庫県
彦根城 滋賀県
名前 所在地
姫路城 ...
和集合演算 P∪Q
32
P
P∪Q
Q
(姫路城, 兵庫県)
(富⼠⼭, 静岡県)
(⼤阪城, ⼤阪府)
(彦根城, 滋賀県)
(屋久島, ⿅児島県)
和両⽴
⼆つの関係P(A1, A2, ..., An)とQ(B1, B2, ..., Bm)が次の⼆
つの条件を満たすとき,⼆つの関係PとQは和両⽴
であるという
i. PとQの次数が等しい
ii. 各i (1≦i≦n)について,
AiとBiの...
⼆つの関係のうち,⼀つ⽬の関係だけに現れる
タプルからなる関係を求める
差集合演算 P-Q, Q-P
名前 所在地
姫路城 兵庫県
屋久島 ⿅児島県
富⼠⼭ 静岡県
P
P-Q
名前 所在地
⼤阪城 ⼤阪府
姫路城 兵庫県
彦根城 滋賀県
名前...
差集合演算 P-Q
35
P-Q
(屋久島, ⿅児島県)
(姫路城, 兵庫県)
(富⼠⼭, 静岡県)
(⼤阪城, ⼤阪府)
(彦根城, 滋賀県)
P Q
差集合演算 Q-P
36
Q-P
(姫路城, 兵庫県)
(富⼠⼭, 静岡県)
(⼤阪城, ⼤阪府)
(彦根城, 滋賀県)
P Q
(屋久島, ⿅児島県)
⼆つの関係の両⽅に現れるタプルからなる関
係を求める
共通(積)集合演算 P∩Q
37
名前 所在地
姫路城 兵庫県
屋久島 ⿅児島県
富⼠⼭ 静岡県
P
P∩Q = P-(P-Q)
名前 所在地
⼤阪城 ⼤阪府
姫路城 兵庫県
彦根城 滋賀県...
共通(積)集合演算 P∩Q
38
P∩Q
(姫路城, 兵庫県)
(富⼠⼭, 静岡県)
(⼤阪城, ⼤阪府)
(彦根城, 滋賀県)
P Q
(屋久島, ⿅児島県)
⼆つの関係における,すべてのタプルの組合
せを求める
直積演算 P×Q
名前 所在地
屋久島 ⿅児島県
富⼠⼭ 静岡県
P
名産
薩摩芋
静岡茶
御座候
名前 所在地 名産
屋久島 ⿅児島県 薩摩芋
屋久島 ⿅児島県 静岡茶
屋久島 ⿅児島県 ...
直積の次数と濃度
40
A1 A2 ... An B1 B2 ... BmP Q
A1 A2 ... An B1 B2 ... BmP×Q
次数n+m
濃度k 濃度l
濃度k×l
次数n 次数m
関係代数の演算
41
関係代数の演算 説明
射影演算 関係から指定属性集合のみの値を抜き出す演算
選択演算 関係から指定条件を満たすタプル集合を抜き出す演算
結合演算 複数の関係を指定条件によって結合する演算
商演算 ⼆つの関係の商を求める演算...
ある関係から⼀部の属性を取り出したタプル
からなる関係を求める
射影演算(Projection)
42
P
π 都道府県 P
※重複したタプルは
除去される
番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
5...
ある属性の値に条件θ(=, ≠, <, >, ≦, ≧)を付加し,
その条件を満たすすべてのタプルの集合を求める
選択演算(Selection)
43
σ 都道府県='⻑野県' P
P 番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
4...
選択演算(Selection)
44
σ 都道府県='⻑野県' and 標⾼ >3000 P
P 番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県
49⽴⼭ 3,015富⼭県
54槍ヶ岳 3,180⻑野県
64⼋ヶ岳 2,899⻑野県
7...
θ⽐較可能
θを(=, ≠, <, >, ≦, ≧)のいずれかの2項⽐較演算
⼦とするとき,その⽐較演算が可能となる条件をθ
⽐較可能であるという.
θ⽐較可能である条件
46
I. 関係P(A1, A2, ..., An)の⼆つの属性AiとAjとがθ⽐較可能であ
るとは,次の⼆つの条件を満たしていることをいう
i. AiとAjのドメインが等しい
ii. ⽐較演算(Aiの任意の値 θ Ajの...
⼆つの属性値AiとBjとが等しいタプルを結びつける
等結合演算(equi-Join)
47
P 番号 ⼭名 標⾼
54槍ヶ岳 3,180
64⼋ヶ岳 2,899
72富⼠⼭ 3,776
※⽐較対象の属性がθ
⽐較可能であること
Q ⼭番号 都道...
⽐較演算⼦θを「=」以外に⼀般化させた結合演算
θ結合演算(Join)
48
P 番号 ⼭名 標⾼
54槍ヶ岳 3,180
64⼋ヶ岳 2,899
※⽐較対象の属性がθ
⽐較可能であること
P.番号 P.⼭名 P.標⾼ Q.番号 Q.⼭名 Q....
⼆つの関係の共通属性Cで結びつける
⾃然結合演算(Natural Join)
49
P 番号 ⼭名 標⾼
54槍ヶ岳 3,180
64⼋ヶ岳 2,899
72富⼠⼭ 3,776
※⽐較対象の属性がθ
⽐較可能であること
Q 番号 都道府県
54...
関係Pがもつタプルのうち,関係Qのすべての
要素を含んでいるタプルを抽出する演算
商演算 P÷Q
50
A B C D
a イ 甲 ⼦
a イ ⼄ 寅
b ロ ⼄ 丑
c ハ 甲 ⼦
c ハ ⼄ 丑
c ハ ⼄ 寅
P
C D
甲 ⼦
⼄ 寅
...
商の求め⽅(1/3)
i. 関係PをQの含まれない属性でグループ化
51
A B C D
a イ 甲 ⼦
a イ ⼄ 寅
b ロ ⼄ 丑
c ハ 甲 ⼦
c ハ ⼄ 丑
c ハ ⼄ 寅
P
C D
甲 ⼦
⼄ 寅
Q
C D
甲 ⼦
⼄ 寅
商の求め⽅(2/3)
ii. Qのタプルが全て含まれているグループを残す
52
A B C D
a イ 甲 ⼦
a イ ⼄ 寅
b ロ ⼄ 丑
c ハ 甲 ⼦
c ハ ⼄ 丑
c ハ ⼄ 寅
P Q
商の求め⽅(3/3)
iii. Qに含まれていない属性のみを残す
53
A B C D
a イ 甲 ⼦
a イ ⼄ 寅
c ハ 甲 ⼦
c ハ ⼄ 丑
c ハ ⼄ 寅
P
C D
甲 ⼦
⼄ 寅
Q P÷Q
A B
a イ
c ハ
※重複したタ...
レシピの関係Pから「じゃがいも」と「たまねぎ」を
⾷材にしたレシピ集合を求める
商演算の例
54
レシピ ⾷材
カレー じゃがいも
カレー たまねぎ
カレー ⽜⾁
パスタ たまねぎ
パスタ パスタ
パスタ ベーコン
⾁じゃが じゃがいも
⾁じゃ...
関係代数の演算まとめ
55
関係代数の演算 説明
和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せ...
関係代数とSQLによる問合せ(1)
56
P∪Q
SELECT * FROM P UNION SELECT * FROM Q;
P∩Q
SELECT * FROM P INTERSECT SELECT * FROM Q;
SELECT * FR...
関係代数とSQLによる問合せ(2)
57
P×Q
SELECT * FROM P CROSS JOIN Q;
SELECT P.*, Q.* FROM P, Q;
関係代数とSQLによる問合せ(3)
58
SELECT 都道府県 FROM P;
π 都道府県 P
σ 都道府県='⻑野県' P
SELECT * FROM P WHERE 都道府県='⻑野県';
関係代数とSQLによる問合せ(4)
59
SELECT * FROM P JOIN Q ON 番号=⼭番号;
P 番号=⼭番号Q
SELECT * FROM P JOIN Q ON P.標⾼>Q.標⾼;
P P.標⾼>Q.標⾼Q
SELECT ...
関係データモデル
まとめ
60
まとめ
和集合演算 差集合演算
共通集合演算
射影演算 選択演算 結合演算 商演算
関係データモデルと関係
関係データモデルの形式化とドメイン
関係スキーマとインスタンス
関係とSQLの特徴
集合演算
直積演算
関係代数特有の演算
本⽇学習したキーワード
〜データベース設計編〜
62
1事実1箇所 繰返しグループ 第三正規形
3層スキーマモデル 更新不整合問題 第⼆次正規化
ER図 削除不整合 第⼆正規形
E-Rモデル 差集合演算 タプル(組)
JDBC θ結合演算 直積...
これまでに学習したキーワード
〜データベース設計編〜
63
1事実1箇所 繰返しグループ 第三正規形
3層スキーマモデル 更新不整合問題 第⼆次正規化
ER図 削除不整合 第⼆正規形
E-Rモデル 差集合演算 タプル(組)
JDBC θ結合演算...
Upcoming SlideShare
Loading in …5
×

データベース08 - 関係データモデルと関係代数

5,218 views

Published on

立命館大学 情報理工学部
「データベース」講義スライド
第8回:関係データモデルと関係代数

Published in: Education
  • Be the first to comment

データベース08 - 関係データモデルと関係代数

  1. 1. データベース 第8回 関係データモデルと関係代数 1 2015年5⽉28⽇(⽊) 7・8時限 担当:奥 健太
  2. 2. これまでに学習した内容 2  SQLによるデータベース操作⽅法を学んだ  データの検索  データの登録,更新,削除  データベース,テーブルの作成 mysqld クライアント プログラム 結果 データベース エンジン 問合せ(クエリ) SELECT INSERT DELETEUPDATE CREATE DROP
  3. 3. これから学習する内容 3  データベース設計について学ぶ CREATE DATABASE CREATE TABLE データベース設計 エンドユーザ 結果 データベース 問合せ(クエリ) データベース アプリケーション 要求 応答
  4. 4. データベース設計編での学習⽬標 4 基礎となるデータモデルを理解する データベース設計の⽅法を理解する データの冗⻑性と不整合問題の解消⽅法 を理解する データベースプログラミングの⽅法を理 解する
  5. 5. データベース設計編 回 ⽇付 テーマ 8 5/28 関係データモデルと関係代数 9 6/4 データベース設計 10 6/11 正規化 11 6/18 データベースとプログラム 5
  6. 6. 関係データモデル 本⽇の講義で学ぶこと 6
  7. 7. 関係データモデル 7
  8. 8. 関係データベース管理システム (RDBMS; Relational DataBase Management System) 8  エドガー・F・コッドが提唱した関係データモデルを 採⽤したデータベース管理システム(DBMS)  MySQL, Oracle Database, PostgreSQL, SQLiteなどが ある 利点  ExcelやCSVなどの簡易データベースより⼤量のデー タを保存できる  ⼤量のデータに対し,検索,並べ替え,抽出,集計な どの処理を⾼速に実⾏できる  複数の異なるデータを結合して,⼀つのデータのよう に取り出すことができる SQLという問合せ⾔語を使ってデータを操作できる 復習
  9. 9. SQLと関係データモデル 9  SQLは関係データモデルを基礎としている  データの表現⽅法やデータに対する演算⽅法が関係 データモデルでルールが決められている 関係データモデル SQL SELECT INSERT UPDATE DELETE
  10. 10. 関係(リレーショナル)データモデル 10  1970年にIBM社にいたエドガー・F・コッドが提案  データを属性値の集合であるタプルとして表現する 表構造を採⽤し,属性を列,タプルを⾏として関連付ける  ⾒出し(属性の集合)と本体(タプルの集合)を関係とよぶ  関係データモデルを採⽤しているDBを,関係データベー ス(RDB; Relational DataBase) とよぶ
  11. 11. 関係(リレーション) 11 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 87⽩⼭ 2,702岐⾩県 92⼤⼭ 1,729⿃取県 タプル 属性 関係 ⽇本百名⼭ 関係名 属性値
  12. 12. 関係データモデルの⽤語 12  関係(リレーション)  ⾒出しと本体の対で構成される  ⾒出しは0個以上の属性の集合  本体は0個以上のタプルの集合  属性(アトリビュート)  属性名とデータ型の対  タプル(組)  ⾒出しに対応した属性値の集合
  13. 13. SQLでの⽤語 13 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 87⽩⼭ 2,702岐⾩県 92⼤⼭ 1,729⿃取県 ロウ カラム テーブル 復習 ⽇本百名⼭ テーブル名
  14. 14. 関係データモデルとSQLでの⽤語の⽐較 14 関係データモデル SQL 関係(リレーション) テーブル(表) タプル(組) ロウ(⾏) 属性(アトリビュート) カラム(列)
  15. 15. 関係といえる表はどれ? 15 1時限 2時限 ⽉ 英語 C501 OS F201 化学 C202 知識⼯学 C109 ⽕ SW⼯学 R103 数理解析 C103 DB C202 HI C306 交戦勢⼒ 東軍 ⻄軍 指導者・指揮官 徳川家康 徳川秀忠 結城秀康 ⽑利輝元 ⽯⽥三成 宇喜多秀家 上杉景勝 戦⼒ 70,000~104,000 80,000以上 *(参考)http://ja.wikipedia.org/wiki/関ヶ原の戦い 著者 書籍タイトル 出版社 発⾏年 川越恭⼆ 楽しく学べるデータベース 共⽴出版 2014 北川博之 データベースシステム 昭晃堂 1996 増永良⽂ リレーショナルデータベース⼊⾨ サイエンス社 1991
  16. 16. 関係データモデルの形式化 16 関係R タプルti 関係 R の要素 ti∈ R 集合の要素を表す記号 部分集合を表す記号 ドメイン 直積を表す記号
  17. 17. ドメイン(定義域) 17  属性値がとりうるすべての値の集合 例;⼈名の集合,年齢の集合,学科名の集合 D1 = {x | xは⼈名} D2 = {x | xは0以上の整数} D3 = {コミュ,知能,メディア,システム}
  18. 18. ドメインの例 18 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 87⽩⼭ 2,702岐⾩県 ⽇本百名⼭ D番号 = {x | xは1以上の整数} D⼭名 = {x | xは⽇本の⼭名} D標⾼ = {x | xは0以上の整数} D都道府県 = {x | xは都道府県名} ⽇本百名⼭ 番号 ⼭名 標⾼ 都道府県
  19. 19. ドメインの直積集合とタプル 19 D1 = {1, 2}, D2 = {a, b, c}, D3 = D1 D1× D2 ×D3 = {(1,a,1), (1,a,2), (1,b,1), (1,b,2), (1,c,1), (1,c,2), (2,a,1), (2,a,2), (2,b,1), (2,b,2), (2,c,1), (2,c,2)} 1 2 a b c 1 2 × × タプル:直積集合の各要素 タプルは必ずドメインの直積集合のいずれかの 要素になる
  20. 20. トランプの例 20 D1 = {♠, ♡, ♢, ♣} D2 = {A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K} R ⊆ D1× D2 D1× D2 = { (♠,A), (♠,2), ..., (♠,K), (♡,A), (♡,2), ..., (♡,K), (♢,A), (♢,2), ..., (♢,K), (♣,A), (♣,2), ..., (♣,K)}
  21. 21. 次数と濃度 21 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 87⽩⼭ 2,702岐⾩県 ⽇本百名⼭ ⽇本百名⼭ 番号 ⼭名 標⾼ 都道府県 次数:4 濃度:6 関係Rを構成するタプルの数 関係Rのドメインの数
  22. 22. 関係スキーマとインスタンス 22 番号 登録名 登録年 所在地 関係スキーマ インスタンス  関係の⾒出し部分  時間的に不変  タプルの集合  時間的に変化 2姫路城 1993兵庫県 3屋久島 1993⿅児島県 8厳島神社 1996広島県 13知床 2005北海道 17富⼠⼭ 2013静岡県 18富岡製⽷場 2014群⾺県 世界遺産の関係の例
  23. 23. 関係スキーマの記述 23 世界遺産 (番号,登録名,登録年,所在地) 属性名 関係名 例; 主キーには下線をひく ドメイン D番号 = {x | xは1以上の整数} ...
  24. 24. 関係の特徴(1)  ⼀つの関係の中で,まったく同じ値をもつ重複 したタプルは存在してはならない  関係にはNULLを含めることはできない 24 姫路城 兵庫県 姫路城 兵庫県 富⼠⼭ 静岡県 姫路城 兵庫県 富⼠⼭ NULL
  25. 25. 関係の特徴(2)  タプルの順序は関係としては意味をもたない  属性の順序は意味をもたない 25 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 富⼠⼭ 静岡県 姫路城 兵庫県 屋久島 ⿅児島県 番号 登録名 登録年 所在地 所在地 登録名 番号 登録年 同じ関係 同じ関係スキーマ
  26. 26. 姫路城 兵庫県 姫路城 兵庫県 富⼠⼭ 静岡県 SQLの特徴(1)  制約がなければ,⼀つのテーブルの中で重複し たロウは存在しても良い  テーブルにはNULLを含めることができる 26 姫路城 兵庫県 富⼠⼭ NULL
  27. 27. SQLの特徴(2)  ロウの順序は存在する(ソートなど)  カラムの順序は存在する(データ登録時など) 27 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 富⼠⼭ 静岡県 姫路城 兵庫県 屋久島 ⿅児島県 番号 登録名 登録年 所在地 所在地 登録名 番号 登録年 異なる結果 異なるカラムの 定義位置
  28. 28. 28
  29. 29. 関係代数の演算 29 関係代数の演算 説明 和集合演算 ⼆つの関係の和集合を求める演算 差集合演算 ある関係から他の関係の差集合を求める演算 共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算 直積演算 ⼆つの関係のすべての組合せを求める演算 関係代数の演算 説明 射影演算 関係から指定属性集合のみの値を抜き出す演算 選択演算 関係から指定条件を満たすタプル集合を抜き出す演算 結合演算 複数の関係を指定条件によって結合する演算 商演算 ⼆つの関係の商を求める演算 集合演算 関係代数特有の演算
  30. 30. 関係代数の演算 30 関係代数の演算 説明 和集合演算 ⼆つの関係の和集合を求める演算 差集合演算 ある関係から他の関係の差集合を求める演算 共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算 直積演算 ⼆つの関係のすべての組合せを求める演算 集合演算
  31. 31. ⼆つの関係の両⽅または⽚⽅に現れるタプル からなる関係を求める 和集合演算 P∪Q 名前 所在地 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 P P∪Q 名前 所在地 ⼤阪城 ⼤阪府 姫路城 兵庫県 彦根城 滋賀県 名前 所在地 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 ⼤阪城 ⼤阪府 彦根城 滋賀県 Q ※PとQが和両⽴であること
  32. 32. 和集合演算 P∪Q 32 P P∪Q Q (姫路城, 兵庫県) (富⼠⼭, 静岡県) (⼤阪城, ⼤阪府) (彦根城, 滋賀県) (屋久島, ⿅児島県)
  33. 33. 和両⽴ ⼆つの関係P(A1, A2, ..., An)とQ(B1, B2, ..., Bm)が次の⼆ つの条件を満たすとき,⼆つの関係PとQは和両⽴ であるという i. PとQの次数が等しい ii. 各i (1≦i≦n)について, AiとBiのドメインが等しい A1 A2 ... An B1 B2 ... Bm 各ドメインが等しい n = m P Q
  34. 34. ⼆つの関係のうち,⼀つ⽬の関係だけに現れる タプルからなる関係を求める 差集合演算 P-Q, Q-P 名前 所在地 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 P P-Q 名前 所在地 ⼤阪城 ⼤阪府 姫路城 兵庫県 彦根城 滋賀県 名前 所在地 屋久島 ⿅児島県 富⼠⼭ 静岡県 Q Q-P 名前 所在地 ⼤阪城 ⼤阪府 彦根城 滋賀県 ※PとQが和両⽴であること
  35. 35. 差集合演算 P-Q 35 P-Q (屋久島, ⿅児島県) (姫路城, 兵庫県) (富⼠⼭, 静岡県) (⼤阪城, ⼤阪府) (彦根城, 滋賀県) P Q
  36. 36. 差集合演算 Q-P 36 Q-P (姫路城, 兵庫県) (富⼠⼭, 静岡県) (⼤阪城, ⼤阪府) (彦根城, 滋賀県) P Q (屋久島, ⿅児島県)
  37. 37. ⼆つの関係の両⽅に現れるタプルからなる関 係を求める 共通(積)集合演算 P∩Q 37 名前 所在地 姫路城 兵庫県 屋久島 ⿅児島県 富⼠⼭ 静岡県 P P∩Q = P-(P-Q) 名前 所在地 ⼤阪城 ⼤阪府 姫路城 兵庫県 彦根城 滋賀県 名前 所在地 姫路城 兵庫県 Q ※PとQが和両⽴であること
  38. 38. 共通(積)集合演算 P∩Q 38 P∩Q (姫路城, 兵庫県) (富⼠⼭, 静岡県) (⼤阪城, ⼤阪府) (彦根城, 滋賀県) P Q (屋久島, ⿅児島県)
  39. 39. ⼆つの関係における,すべてのタプルの組合 せを求める 直積演算 P×Q 名前 所在地 屋久島 ⿅児島県 富⼠⼭ 静岡県 P 名産 薩摩芋 静岡茶 御座候 名前 所在地 名産 屋久島 ⿅児島県 薩摩芋 屋久島 ⿅児島県 静岡茶 屋久島 ⿅児島県 御座候 富⼠⼭ 静岡県 薩摩芋 富⼠⼭ 静岡県 静岡茶 富⼠⼭ 静岡県 御座候 Q P×Q 濃度:2 濃度:3 濃度: 2×3=6 次数:2+1=3 次数:2 次数:1
  40. 40. 直積の次数と濃度 40 A1 A2 ... An B1 B2 ... BmP Q A1 A2 ... An B1 B2 ... BmP×Q 次数n+m 濃度k 濃度l 濃度k×l 次数n 次数m
  41. 41. 関係代数の演算 41 関係代数の演算 説明 射影演算 関係から指定属性集合のみの値を抜き出す演算 選択演算 関係から指定条件を満たすタプル集合を抜き出す演算 結合演算 複数の関係を指定条件によって結合する演算 商演算 ⼆つの関係の商を求める演算 関係代数特有の演算
  42. 42. ある関係から⼀部の属性を取り出したタプル からなる関係を求める 射影演算(Projection) 42 P π 都道府県 P ※重複したタプルは 除去される 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 都道府県 富⼭県 ⻑野県 ⼭梨県
  43. 43. ある属性の値に条件θ(=, ≠, <, >, ≦, ≧)を付加し, その条件を満たすすべてのタプルの集合を求める 選択演算(Selection) 43 σ 都道府県='⻑野県' P P 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 番号 ⼭名 標⾼ 都道府県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 ※⽐較対象の属性がθ ⽐較可能であること
  44. 44. 選択演算(Selection) 44 σ 都道府県='⻑野県' and 標⾼ >3000 P P 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 49⽴⼭ 3,015富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 72富⼠⼭ 3,776⼭梨県 番号 ⼭名 標⾼ 都道府県 54槍ヶ岳 3,180⻑野県 σ 都道府県='⻑野県' or 標⾼ <3000 P 番号 ⼭名 標⾼ 都道府県 48剱岳 2,999富⼭県 54槍ヶ岳 3,180⻑野県 64⼋ヶ岳 2,899⻑野県 ※⽐較対象の属性がθ ⽐較可能であること
  45. 45. θ⽐較可能 θを(=, ≠, <, >, ≦, ≧)のいずれかの2項⽐較演算 ⼦とするとき,その⽐較演算が可能となる条件をθ ⽐較可能であるという.
  46. 46. θ⽐較可能である条件 46 I. 関係P(A1, A2, ..., An)の⼆つの属性AiとAjとがθ⽐較可能であ るとは,次の⼆つの条件を満たしていることをいう i. AiとAjのドメインが等しい ii. ⽐較演算(Aiの任意の値 θ Ajの任意の値)の真偽が常に定まる II. 関係P(A1, A2, ..., An)の属性Aiと関係Q(B1, B2, ..., Bm)の属性Bj とがθ⽐較可能であるとは,次の⼆つの条件を満たしてい ることをいう i. AiとBjのドメインが等しい ii. ⽐較演算(Aiの任意の値 θ Bjの任意の値)の真偽が常に定まる III. 関係P(A1, A2, ..., An)の属性Aiと定数cとがθ⽐較可能であると は,次の⼆つの条件を満たしていることをいう i. Aiのドメインにcがある ii. ⽐較演算(Aiの任意の値 θ c)の真偽が常に定まる
  47. 47. ⼆つの属性値AiとBjとが等しいタプルを結びつける 等結合演算(equi-Join) 47 P 番号 ⼭名 標⾼ 54槍ヶ岳 3,180 64⼋ヶ岳 2,899 72富⼠⼭ 3,776 ※⽐較対象の属性がθ ⽐較可能であること Q ⼭番号 都道府県 54⻑野県 54岐⾩県 64⻑野県 64⼭梨県 72⼭梨県 72静岡県 番号 ⼭名 標⾼ ⼭番号 都道府県 54槍ヶ岳 3,180 54⻑野県 54槍ヶ岳 3,180 54岐⾩県 64⼋ヶ岳 2,899 64⻑野県 64⼋ヶ岳 2,899 64⼭梨県 72富⼠⼭ 3,776 72⼭梨県 72富⼠⼭ 3,776 72静岡県 P 番号=⼭番号Q
  48. 48. ⽐較演算⼦θを「=」以外に⼀般化させた結合演算 θ結合演算(Join) 48 P 番号 ⼭名 標⾼ 54槍ヶ岳 3,180 64⼋ヶ岳 2,899 ※⽐較対象の属性がθ ⽐較可能であること P.番号 P.⼭名 P.標⾼ Q.番号 Q.⼭名 Q.標⾼ 54槍ヶ岳 3,180 48剱岳 2,999 54槍ヶ岳 3,180 49⽴⼭ 3,015 P P.標⾼>Q.標⾼Q Q 番号 ⼭名 標⾼ 48剱岳 2,999 49⽴⼭ 3,015
  49. 49. ⼆つの関係の共通属性Cで結びつける ⾃然結合演算(Natural Join) 49 P 番号 ⼭名 標⾼ 54槍ヶ岳 3,180 64⼋ヶ岳 2,899 72富⼠⼭ 3,776 ※⽐較対象の属性がθ ⽐較可能であること Q 番号 都道府県 54⻑野県 54岐⾩県 64⻑野県 64⼭梨県 72⼭梨県 72静岡県 番号 ⼭名 標⾼ 都道府県 54槍ヶ岳 3,180⻑野県 54槍ヶ岳 3,180岐⾩県 64⼋ヶ岳 2,899⻑野県 64⼋ヶ岳 2,899⼭梨県 72富⼠⼭ 3,776⼭梨県 72富⼠⼭ 3,776静岡県 P Q
  50. 50. 関係Pがもつタプルのうち,関係Qのすべての 要素を含んでいるタプルを抽出する演算 商演算 P÷Q 50 A B C D a イ 甲 ⼦ a イ ⼄ 寅 b ロ ⼄ 丑 c ハ 甲 ⼦ c ハ ⼄ 丑 c ハ ⼄ 寅 P C D 甲 ⼦ ⼄ 寅 Q P÷Q A B a イ c ハ
  51. 51. 商の求め⽅(1/3) i. 関係PをQの含まれない属性でグループ化 51 A B C D a イ 甲 ⼦ a イ ⼄ 寅 b ロ ⼄ 丑 c ハ 甲 ⼦ c ハ ⼄ 丑 c ハ ⼄ 寅 P C D 甲 ⼦ ⼄ 寅 Q
  52. 52. C D 甲 ⼦ ⼄ 寅 商の求め⽅(2/3) ii. Qのタプルが全て含まれているグループを残す 52 A B C D a イ 甲 ⼦ a イ ⼄ 寅 b ロ ⼄ 丑 c ハ 甲 ⼦ c ハ ⼄ 丑 c ハ ⼄ 寅 P Q
  53. 53. 商の求め⽅(3/3) iii. Qに含まれていない属性のみを残す 53 A B C D a イ 甲 ⼦ a イ ⼄ 寅 c ハ 甲 ⼦ c ハ ⼄ 丑 c ハ ⼄ 寅 P C D 甲 ⼦ ⼄ 寅 Q P÷Q A B a イ c ハ ※重複したタプルは 除去される
  54. 54. レシピの関係Pから「じゃがいも」と「たまねぎ」を ⾷材にしたレシピ集合を求める 商演算の例 54 レシピ ⾷材 カレー じゃがいも カレー たまねぎ カレー ⽜⾁ パスタ たまねぎ パスタ パスタ パスタ ベーコン ⾁じゃが じゃがいも ⾁じゃが たまねぎ ⾁じゃが 豚⾁ じゃがバター じゃがいも じゃがバター バター P ⾷材 じゃがいも たまねぎ Q P÷Q レシピ カレー ⾁じゃが
  55. 55. 関係代数の演算まとめ 55 関係代数の演算 説明 和集合演算 ⼆つの関係の和集合を求める演算 差集合演算 ある関係から他の関係の差集合を求める演算 共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算 直積演算 ⼆つの関係のすべての組合せを求める演算 関係代数の演算 説明 射影演算 関係から指定属性集合のみの値を抜き出す演算 選択演算 関係から指定条件を満たすタプル集合を抜き出す演算 結合演算 複数の関係を指定条件によって結合する演算 商演算 ⼆つの関係の商を求める演算 集合演算 関係代数特有の演算
  56. 56. 関係代数とSQLによる問合せ(1) 56 P∪Q SELECT * FROM P UNION SELECT * FROM Q; P∩Q SELECT * FROM P INTERSECT SELECT * FROM Q; SELECT * FROM P WHERE EXISTS (SELECT * FROM Q WHERE P.名前 = Q.名前 AND P.所在地 = Q.所在地); P-Q SELECT * FROM P WHERE NOT EXISTS (SELECT * FROM Q WHERE P.名前 = Q.名前 AND P.所在地 = Q.所在地); SELECT * FROM P EXCEPT SELECT * FROM Q; MySQLではサポート外 MySQLではサポート外
  57. 57. 関係代数とSQLによる問合せ(2) 57 P×Q SELECT * FROM P CROSS JOIN Q; SELECT P.*, Q.* FROM P, Q;
  58. 58. 関係代数とSQLによる問合せ(3) 58 SELECT 都道府県 FROM P; π 都道府県 P σ 都道府県='⻑野県' P SELECT * FROM P WHERE 都道府県='⻑野県';
  59. 59. 関係代数とSQLによる問合せ(4) 59 SELECT * FROM P JOIN Q ON 番号=⼭番号; P 番号=⼭番号Q SELECT * FROM P JOIN Q ON P.標⾼>Q.標⾼; P P.標⾼>Q.標⾼Q SELECT * FROM P NATURAL JOIN Q; P Q
  60. 60. 関係データモデル まとめ 60
  61. 61. まとめ 和集合演算 差集合演算 共通集合演算 射影演算 選択演算 結合演算 商演算 関係データモデルと関係 関係データモデルの形式化とドメイン 関係スキーマとインスタンス 関係とSQLの特徴 集合演算 直積演算 関係代数特有の演算
  62. 62. 本⽇学習したキーワード 〜データベース設計編〜 62 1事実1箇所 繰返しグループ 第三正規形 3層スキーマモデル 更新不整合問題 第⼆次正規化 ER図 削除不整合 第⼆正規形 E-Rモデル 差集合演算 タプル(組) JDBC θ結合演算 直積演算 インスタンス θ⽐較可能 等結合演算 カーディナリティ 次数 導出属性 概念スキーマ ⾃然結合演算 ドメイン(定義域) 概念設計 実体 内部スキーマ 概念データモデル 射影演算 濃度 外部スキーマ 修正不整合 ⾮正規形 関係(リレーション) 商演算 物理設計 関係スキーマ 推移関数従属性 物理的データ独⽴性 関係代数 選択演算 部分関数従属性 関係データベース(RDB) 挿⼊不整合 論理設計 関係(リレーショナル) データモデル 属性(アトリビュート) 論理データモデル 関係名 属性値 論理的データ独⽴性 完全関数従属性 第⼀次正規化 和集合演算 関連 第⼀正規形 和両⽴ 共通(積)集合演算 第三次正規化
  63. 63. これまでに学習したキーワード 〜データベース設計編〜 63 1事実1箇所 繰返しグループ 第三正規形 3層スキーマモデル 更新不整合問題 第⼆次正規化 ER図 削除不整合 第⼆正規形 E-Rモデル 差集合演算 タプル(組) JDBC θ結合演算 直積演算 インスタンス θ⽐較可能 等結合演算 カーディナリティ 次数 導出属性 概念スキーマ ⾃然結合演算 ドメイン(定義域) 概念設計 実体 内部スキーマ 概念データモデル 射影演算 濃度 外部スキーマ 修正不整合 ⾮正規形 関係(リレーション) 商演算 物理設計 関係スキーマ 推移関数従属性 物理的データ独⽴性 関係代数 選択演算 部分関数従属性 関係データベース(RDB) 挿⼊不整合 論理設計 関係(リレーショナル) データモデル 属性(アトリビュート) 論理データモデル 関係名 属性値 論理的データ独⽴性 完全関数従属性 第⼀次正規化 和集合演算 関連 第⼀正規形 和両⽴ 共通(積)集合演算 第三次正規化

×