資料庫查詢:關係數學 ── Relational Algebra and Calculus
-
Upload
zephania-houston -
Category
Documents
-
view
93 -
download
1
description
Transcript of 資料庫查詢:關係數學 ── Relational Algebra and Calculus
中央大學。范錚強 1
資料庫查詢:關係數學 ── Rela
tional Algebra and Calculus
國立中央大學資訊管理系
范錚強、楊書成2008.12
中央大學。范錚強 2
關係數學: algebra & calculus
兩種正規的數學Relational algebra
Operational
Procedural language (at a SET level)
一歩歩描述計算結果的步驟
Relational calculus邏輯的一部份Declarative
Non-procedural language
只描述想要的結果SQL 的數學表示法 SQL 的重要基礎
中央大學。范錚強 3
Relational algebra (1)
5 個基本的運算子 (operators)Selection (σ) - select rows from relation
Projection (Π) - retain only wanted columns from relation
Cross-product (X) - combine 2 relations
Set-difference ( - ) - tuples in r1, but not in r2
Union ( )∪ - tuples in r1 and/or in r2
中央大學。范錚強 4
Relational algebra (2)
Hypothesized relation schema
S (sid, sname, age)
C (cid, cname)
R (sid, cid)
語法範例σage>20(S1)
Πsname, age(S1)
Πsname, age(σage>20(S1))
S1 S2, S1∪ - S2, S1 X R
中央大學。范錚強 5
Relational algebra (3)
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19
S1
sid sname ages001 Henry 23s003 Vivian 21σage>20(S1)
sname ageHenry 23Jason 18Vivian 21Susan 19
Πsname, age(S1)
sname ageHenry 23Vivian 21
Πsname, age(σage>20(S1))
中央大學。范錚強 6
Relational algebra (4)
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19S1
sid sname ages002 Jason 18s004 Susan 19s006 Candy 22
S2
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19s006 Candy 22S1 S2∪
sid sname ages001 Henry 23s003 Vivian 21
S1 - S2
中央大學。范錚強 7
Relational algebra (5)
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19S1
sid cids002 c101s003 c082
R
(sid) sname age (sid) cids001 Henry 23 s002 c101s001 Henry 23 s003 c082s002 Jason 18 s002 c101s002 Jason 18 s003 c082s003 Vivian 21 s002 c101s003 Vivian 21 s003 c082s004 Susan 19 s002 c101s004 Susan 19 s003 c082S1 X R
中央大學。范錚強 8
Relational algebra (6)
使用 union 及 set-difference 時,兩個 relation 必須是 union-compatible
欄位數相同相對應的欄位具有相同的資料型態
使用 cross-product 時,發生欄位名稱衝突
使用 renaming(ρ) 運算子ρ(C(1sid1, 5sid2), S1 X R)
中央大學。范錚強 9
Relational algebra (7)
其他運算子Intersection (∩) - tuples in r1 and in r2
S1∩S2 = S1 - (S1 - S2)
Condition join (∞c) - cross-product followed by a selection
S1∞S1.sid<R.sidR = σS1.sid<R.sid (S1X R)
Equijoin - special case of condition join利用兩個 relation 中欄位相等之條件進行合併相同欄位只會出現一次S1∞S1.sid=R.sidR
Natural join利用兩個 relation 中所有相同名稱欄位相等之條件進行合併S1∞R
Division ( / )
中央大學。范錚強 10
Relational algebra (8)
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19
S1
sid sname ages002 Jason 18s004 Susan 19s006 Candy 22
S2
sid sname ages002 Jason 18s004 Susan 19
S1 ∩ S2
中央大學。范錚強 11
Relational algebra (9)
sid sname ages001 Henry 23s002 Jason 18s003 Vivian 21s004 Susan 19S1
sid cids002 c101s003 c082
R
(sid) sname age (sid) cids001 Henry 23 s002 c101s001 Henry 23 s003 c082s002 Jason 18 s003 c082
S1∞S1.sid<R.sidR
(sid) sname age cids002 Jason 18 c101s003 Vivian 21 c082
S1∞S1.sid=R.sidR
(sid) sname age cids002 Jason 18 c101s003 Vivian 21 c082
S1∞R
中央大學。范錚強 12
Relational calculus (1)
Tuple relational calculus (TRC)General form: {t|Ψ(t)}
{tuple variable|TRC formula}
Tuple vairable = set of rows from relations
Domain relational calculus (DRC) General form: {a, b, c, …|Ψ(a, b, c, …)}
{predicate (domain variables)|DRC formula}
Domain vaiable = set of columns from relations
QBE: Query by Example
{ predicate | formula }true
中央大學。范錚強 13
Relational calculus (2)
運算子 (operators)<, >, =, ≤, ≥, ≠
¬, ∧, ∨
資格限制 (quantifiers)∃- exist ( 有一個 )
∀- for all ( 每一個 )
¬∃- not exist
¬∀- not for all
中央大學。范錚強 14
Relational calculus (3)
Hypothesized relation schema
S (sid, did, sname)
R (sid, cid, grade)
列出所有資管系學生的 sid, did, snameTRC - {t|S(t)∧t[2]=“43”}
DRC - {abc|S(abc)∧b=“43”}
列出所有資管系學生的 sid 及 snameTRC - {t|∃uS(u)∧u[2]=“43”∧t[1]=u[1]∧t[2]=u[3]}
DRC - {ab|∃cS(acb)∧c=“43”}
中央大學。范錚強 15
Relational calculus (4)
列出曾經被當的學生 sid, did, snameTRC - {t|S(t)∧∃uR(u)∧t[1]=u[1]∧u[3]<“70”}
DRC - {abc|S(abc)∧∃d∃eR(ade)∧e<“70”}
or {abc|S(abc)∧∃eR(a . e)∧e<“70”}
SQL – select * from S where sid in (select sid from R where grade<“70”)
or select S.sid, S.did, S.sname from S, R where S.sid = R.sid and R.grade<“70
”
中央大學。范錚強 16
For all 下的排除條款
在大部分需要 For all 的查詢(例如:每一門課都當掉)中,我們需要排除一些不需要的東西
只要是我們檢驗的學生的課,我們才需要檢查是否及格如果不是該學生,就不需要檢查For 每一筆學生成績,如果是該位同學 (If A) ,都是不及格的成績 (then B) For 每一筆學生成績,如果不是是該位同學 (not A ) ,不需檢查,否則需要不及格 (or B)
A
B
¬A
¬B
If A then B (¬A ∨ B)
中央大學。范錚強 17
Relational calculus (5)
列出所有課都被當的學生 sid, did, snameTRC - {t|S(t)∧∀uR(u)∧(t[1]≠u[1]∨u[3]<“70”)}
or {t|S(t)∧¬∃uR(u)∧(t[1] =u[1]∧u[3] ≥“70”)}
SQL - select * from S where not exists (select * from R where S.sid = sid and grade>=“70”)
SQL 有 exist 和 not exist ,沒有 for all
A
B
¬A
¬B
¬(¬A ∨ B) = (A∧¬B)
中央大學。范錚強 18
Relational calculus (6)
Hypothesized relation schema
S (sid, did, sname)
R (sid, tid)
T (tid, tname, did)
列出被所有老師教過的學生 sid, did, sname{t|S(t)∧∀uT(u)∧∃vR(v)∧t[1]=v[1]∧u[1]=v[2]}
列出學生,修過所有資管系老師的課{t|S(t)∧∀uT(u)∧(u[3]≠”43”∨(∃vR(v)∧t[1]=v[1]∧u[1]=v[2]))}