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
RS
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 SS 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
RS
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
RS
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)