Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
データベース
第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 θ結合演算...
Prochain SlideShare
Chargement dans…5
×

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

6 226 vues

Publié le

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

Publié dans : Formation
  • Soyez le premier à commenter

データベース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) 挿⼊不整合 論理設計 関係(リレーショナル) データモデル 属性(アトリビュート) 論理データモデル 関係名 属性値 論理的データ独⽴性 完全関数従属性 第⼀次正規化 和集合演算 関連 第⼀正規形 和両⽴ 共通(積)集合演算 第三次正規化

×