PowerPoint 簡報
Download
Report
Transcript PowerPoint 簡報
關聯式代數的運算
•
傳統的集合運算
–
–
–
–
•
聯集運算(Union),代表符號為
交集運算(Intersection),代表符號為
差集運算(Difference),代表符號為
乘積運算(Cartesian Product),代表符號為
關聯式運算
–
–
–
–
選擇運算(Select),代表符號為
投影運算(Project),代表符號為
合併運算(Join),代表符號為
除法運算(Divide),代表符號為
關聯式代數
•
•
•
運算的特性
封閉性(Closure),由代數運算所產生的結果仍
為一關聯表
原始運算子(Primitive Operators)
乘積運算、聯集運算、差集運算、選擇運算、
投影運算
聯集相容 (Union –Compatible)
–
–
兩關聯表必須有相同的屬性集,即具有相同的維度
兩關聯表中,各個相對的屬性要定義於相同的值域
乘積運算
•
•
表示式: R x S
定義 : R x S = { t q | t R and q S }
乘積運算
•
•
關聯表R, S
Rx S
A
B
1
2
C
D
E
10
+
10
+
20
-
10
-
A
B
C
D
E
1
10
+
1
10
+
1
20
-
1
10
-
2
10
+
2
10
+
2
20
-
2
10
-
聯集運算(Union)
•
•
表示式: R S
定義 : R S = { t | t R or t S }
–
•
結果為一包含所有值組或在R中,或在S中,
或在R與S兩者之中的關聯表,其中重複值
組會被刪除。
R與S需具有聯集相容之特性
聯集運算範例
•
•
關聯表R, S
RS
A
B
A
B
1
2
2
3
1
A
B
1
2
1
3
差集運算(Difference)
•
•
表示式: R S
定義 : R S
–
•
聯集運算與交集運算具可互換性
–
•
結果為一包含在R中但不在S中的所有值組
之關聯表。
R S = S R 且R S = S R
差集運算不具可互換性
– R SS R
差集運算範例
•
•
關聯表R, S
R S
A
B
A
B
1
2
2
3
1
A
B
1
1
選擇運算
•
•
表示式: P ( R )
定義: P ( R ) = { t | t R and P(t)}
–
p是由下列格式的子句配合布林運算所組成
<屬性名稱> <運算元> <常數>
<屬性名稱> <運算元> <屬性名稱>
其中 <運算元>是{=, <, , >, , }
–
具可互換性
<cond1> (<cond2> ( R ) ) = <cond2> (<cond1> ( R ) )
選擇運算範例
關聯表R
A
B
C
D
1
7
5
7
12
3
23
10
A=B and D>5 ( R )
A
B
C
D
1
7
23
10
投影運算(project)
•
•
表示式: A1, A2, …, Ak( R )
定義 : <attribute list> (<relation name>)
–
–
–
–
<attribute list>是指關聯表的屬性串列
當<list2>包含了<list2>中所有屬性則
<list1> ( <list2> ( R ) ) = <list1> ( R )
如果沒有包含原關聯表之主鍵,重複值組
會被消除
不具可互換性
投影運算範例
關聯表R
•
A, C( R )
A
B
C
10
1
20
1
30
1
40
2
A
C
A
C
1
1
1
1
1
2
2
交集運算(Intersection)
•
•
表示式: R S
定義 : R S = { t | t R and t S }
–
•
•
結果為一包含所有值組都在R與S兩者之中
的關聯表。
R與S需具有聯集相容之特性
對等運算
R S = R – (R – S) = S – (S – R)
交集運算範例
•
•
關聯表R, S
RS
A
B
A
B
1
2
2
3
1
A
B
2
合併運算(Join)
•
•
表示式: R PS
定義 :
R = ( A, B, C, D ) S = (E, B, D)
Result = (A, B, C, D, E )
R
P
S=
R.A, R.B, R.C, R.D, S.E(P( R x S ) )
合併運算範例
•
•
關聯表R, S
R
P
S
A
B
C
D
E
B
D
1
a
1
a
2
a
3
a
4
12
b
1
a
1
a
2
b
2
b
3
b
A
B
C
D
E
1
a
1
a
1
a
1
a
2
b
除法運算
•
•
表示式: R S
定義 :
–
•
R S = { t | t R - S ( R ) u S( t u R)}
以關聯代數定義
R - S ( R ) - R - S ( R - S ( R ) x S ) - R – S, S ( R ) )
– R - S ( R ) simple reorders attributes of R
– R - S ( R - S ( R ) x S ) - R – S, S ( R ) ) gives
those tuples t in R - S ( R ) such that for some
tuple u S, tu R
除法運算範例
•
•
關聯表R, S
RS
A
B
C
D
E
a
a
1
a
a
1
a
b
1
a
a
1
a
b
3
a
a
1
a
b
1
a
b
1
A
B
C
a
a
D
E
a
1
b
1
實例演算
•
選擇在4號或5號部門工作, 且薪資超過30000元
的所有員工
(DNO=4 OR DNO=5) AND SALARY>30000 (EMPLOYEE)
•
列出所有員工的姓名與薪資
LNAME, FNAME, SALARY (EMPLOYEE)
實例演算
•
擷取在5號部門工作的所有員工姓名和薪資
LNAME, FNAME, SALARY (DNO=5 (EMPLOYEE))
DEP5_EMPS DNO=5 (EMPLOYEE)
RESULT LNAME, FNAME, SALARY (DEP5_EMPS)
TEMP DNO=5 (EMPLOYEE)
R(FIRSTNAME, LASTNAEM, SALARY)
LNAME, FNAME, SALARY (DEP5_EMPS)
實例演算
•
擷取所有在5號部門工作的員工, 或直接監督一
位在5號部門工作的員工的員工, 他們的社會安
全號碼
DEP5_EMPS DNO=5 (EMPLOYEE)
RESULT1 SSN (DEP5_EMPS)
RESULT2 SUPERSSN (DEP5_EMPS)
RESULT RESULT1 RESULT2
實例演算
•
擷取每位女性員工的眷屬姓名的名單
FEMALE_EMPS SEX=‘F’ (EMPLOYEE)
EMPNAMES
FNAME, LNAME, SSN (FEMALE _EMPS)
EMP_DEPENDENTS
EMPNAMES x DEPENDENT
ACTUAL_DEPENDENTS
SSN=ESSN (EMP _DEPENDENTS)
RESULT FNAME, LNAME, DEPENDENT_NAME
(ACTUAL_DEPENDENTS)
實例演算
•
擷取每個部門的經理姓名名單
DEPT_MGR
DEPARTMENT MGRSSN=SSN (EMPLOYEE)
RESULT DNAME, FNAME, LNAME(DEPT_MGR)
EMP_DEPENDENTS
EMPNAMES x DEPENDENT
ACTUAL_DEPENDENTS
SSN=ESSN (EMP _DEPENDENTS)
ACTUAL_DEPENDENTS
EMPNAMES
SSN=ESSN DEPENDENT
實例演算
•
擷取在‘John Smith’工作的所有計畫裡工作的
員工姓名
SMITH FNAME=‘John’ AND LNAME = ‘Smith’ (EMPLOYEE)
SMITH_PNOS PNO (WORK_ON
ESSN=SSNSMITH)
SSN_PNOS PNO, ESSN (WORK_ON )
SSNS(SSN) SSN_PNOS SMITH_PNOS
RESULT FNAME, LNAME(SSNS
EMPLOYEE)