1 / 56

1. 传统的集合运算

R  S. 1. 传统的集合运算. 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。 设关系 R 和关系 S 具有相同的目 n (即两个关系都有 n 个属性),且相应的属性取自同一个域。 1. 并( Union ) 关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成。其结果关系仍为 n 目关系。记作: R∪S={t|t∈R∨t∈S}. R. S. R∪S. R  S. 2. 差( Difference ) 关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组成。其结果关系仍为 n 目关系。记作:

Download Presentation

1. 传统的集合运算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RS 1.传统的集合运算 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。 设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域。 1.并(Union) 关系R与关系S的并由属于R或属于S的元组组成。其结果关系仍为n目关系。记作: R∪S={t|t∈R∨t∈S} 1

  2. R S R∪S 2

  3. RS 2.差(Difference) 关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作: R-S={t|t∈R∧tS} 3

  4. R S R-S S-R 4

  5. RS ⒊交(Intersection Referential integrity) 关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:R∩S={t|t∈R∧t∈S} 交运算可以通过差运算来重写: R∩S=R-(R-S) 5

  6. R S R∩S 6

  7. ⒋广义笛卡尔积(Extended cartesian product) 两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。记作: • RS = { t|t=﹤tr,ts﹥∧trRtsS } 7

  8. R xS A B C D E S R         1 1 1 1 2 2 2 2         10 19 20 10 10 10 20 10 a a b b a a b b C D E A B     10 10 20 10 a a b b   1 2 8

  9. 2.专门的关系运算 专门的关系运算包括选择、投影、连接、除等。 几个记号: 1.设关系模式为R(A1, A2,..., An)。它的一个关系设为R。t∈R表示t是R的一个元组。t[Ai]则表示元组t中相应于属性Ai的一个分量 。 2.若A={Ai1, Ai2,..., Aik},其中Ai1, Ai2, ..., Aik是A1, A2,..., An中的一部分,则A称为属性列或域列。フA则表示{A1, A2,..., An}中去掉{Ai1, Ai2,..., Aik}后剩余的属性组。t[A]=(t[Ai1], t[Ai2],..., t[Aik])表示元组t在属性列A上诸分量的集合。 9

  10. 3.R为n目关系,S为m目关系。 trR,tsS, tr ts称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。 ⒋给定一个关系R(X,Z),X和Z为属性组。我们定义,当t[X]=x时,x在R中的象集(Images Set)为:Zx={t[Z]|t∈R, t[X]=x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合。 X Z Zx 张军同学所选修的全部课程 x=张军 10

  11. 更名运算(了解) • 定义 • 给一个关系表达式赋予名字 x(E) 返回表达式E的结果,并把名字x赋给E x(A1, A2 ,,An)(E) 返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,,An • 关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助 11

  12. 1.选择(Selection) 选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作: σF(R) = {t|t∈R ∧ F(t)=‘真’}其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。 选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。 选择是从行的角度进行的运算。 12

  13. R A<5(R) A<5  C=7(R) 13

  14. 例1 查询信息系(IS系)全体学生 σSdept=‘IS’(Student)或 σ5='IS'(Student) 例2 查询年龄小于20岁的元组 σSage<20(Student)或 σ4<20(Student) 补充:查询年龄不小于20岁的男生 AGE≥20 ∧ SEX=‘男’(S) 14

  15. A B C a b c d e f c b c 2.投影(Projection) 关系R上的投影是从R中选择出若干属性列组成新的关系。记作: ΠA(R) = { t[A] | t∈R }其中A为R中的属性列。  投影操作是从列的角度进行的运算。 注意:投影结果中要去掉相同的行 R B , C(R) 15

  16. 例3 查询学生关系Student在学生姓名和所在系两个属性上的投影 ΠSname,Sdept(Student)或 Π2,5(Student) 例4 查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影 ΠSdept(Student) 补充: Sname, Sage(S) Cno( Sno=95001(SC)) 给出所有学生的姓名和年龄 找001号学生所选修的课程号 16

  17. 广义投影(了解) • 定义 • 在投影列表中使用算术表达式来对投影进行扩展 F1 , F2, … , Fn(E) F1 , F2 ,… , Fn是算术表达式 • 示例 • 求教工应缴纳的所得税 P#, SAL*5/100(PROF) 17

  18. R S={trts | trR ∧tsS ∧ tr[A]θts[B]} AθB R S = r[A]S[B](R×S) AB 3.连接(Join) 连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作: 其中A和B分别为R和S上度数相等且可比的属性组。 θ是比较运算符。 连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。 18

  19. A=B R S={trts | trR ∧tsS ∧ tr[A]=ts[B]} 连接运算中有两种最为重要也最为常用的连接: 一种是等值连接(equi-join); 另一种是自然连接(Natural join) θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。 即等值连接为: 19

  20. R S B < D A B C 1 2 3 4 5 6 7 8 9 R S 20

  21. R S={trts | trR ∧tsS ∧ tr[B]=ts[B]} 自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。 即若R和S具有相同的属性组B,则自然连接可记作: 一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。 当R与S无相同属性时,R S = R×S 21

  22. r s A B C D B D E      1 2 4 1 2      a a b a b 1 3 1 2 3 a a a b b      A B C D E      1 1 1 1 2      a a a a b      r s 22

  23. R S A B C 1 2 3 4 5 6 7 8 9 R S 23

  24. 4.除(Division) 给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作: 其中, Yx为x在R中的象集,x=tr[X] 除操作是同时从行和列的角度进行运算。 R÷S={tr[X]|trR∧ΠY(S)Yx} RS=X(R)X(X(R)Y(S)R) 24

  25. AB (R)  CD (S) S AB (R) R AB (R)  CD (S)-R R  S= - = 25

  26. 例6设关系R, S分别为图2-9中的(a)和(b),求R÷S的结果 在关系R中,A可以取四个值{a1, a2, a3, a4}。其中: a1的象集为{(b1,c2), (b2,c3), (b2,c1)} a2的象集为{(b3,c7), (b2,c3)} a3的象集为{(b4,c6)} a4的象集为{(b6,c6)} S在(B,C)上的投影为{(b1,c2),(b2,c3),(b2,c1)} 显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,所以R÷S={a1} 26

  27. 选修了全部课程的学生  = 选修了全部课程并且成绩都相同的学生 =  27

  28. 习题 1.求选修了1号或2号课程的学生号 • 方案1: • ∏Sno(Cno = 1∨Cno = 2(SC)) • 方案2: • ∏ Sno( Cno = 1 (SC))∪∏ Sno( Cno = 2(SC)) 28

  29. 2.求选修了1号而没有选2号课程的学生号 ∏Sno(Cno = 1 (SC))-∏Sno(Cno = 2(SC)) 29

  30. 3.求同时选修了1号和2号课程的学生号 × ∏Sno(Cno =1 Cno = 2(SC)) √ ∏Sno(Cno =1 (SC))∩∏Sno(Cno = 2(SC)) √ ∏Sno,Cno(SC)  Cno = 1Cno = 2 (C) × ∏Sno(SC  Cno = 1Cno = 2 (C)) 30

  31. 4.求未选修1号课程的学生号 √ 方案1: ∏Sno(S)-∏Sno(Cno = 1 (SC)) 方案2: ∏Sno(Cno ≠ 1 (SC)) 哪一个正确? 31

  32. 5.求仅选修了1号课程的学生号 选修1号课程的学生-仅选1号课程之外的学生 ∏S#(C# = 1 (SC))-∏S#(SC-C# = 1 (SC)) 所有选课的学生-仅选1号课程之外的学生 ∏S#(SC)-∏S#(C# <> 1 (SC)) 32

  33. S# C# SCORE P03 C02 88 P01 C03 92 S# S# S# P01 P01 P02 P02 P03 33

  34. 外连接(了解内容) • 外连接 • 为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接 外连接 = 自然连接 + 失配的元组 • 外连接的形式:左外连接、右外连接、全外连接 左外连接 = 自然连接 + 左侧表中失配的元组 右外连接 = 自然连接 + 右侧表中失配的元组 全外连接 = 自然连接 + 两侧表中失配的元组 34

  35. P# PN SAL P01 赵明 800 P02 钱广 700 P03 孙立 600 P04 李三 500 C# C# CN P# P# PN SAL C# CN C01 C01 P01 物理 P01 赵明 800 C01 物理 C02 C02 P02 数学 P02 钱广 700 C02 数学 C02 C03 化学 P04 P04 李三 500 C02 数学 外连接 所有老师的信息 35

  36. P# PN SAL P01 赵明 800 P02 钱广 700 P03 孙立 600 P04 李三 500 C# C# CN P# P# PN SAL C# CN C01 C01 P01 物理 P01 赵明 800 C01 物理 C02 C02 P02 数学 P02 钱广 700 C02 数学 C02 C03 化学 P04 P04 李三 500 C02 数学 外连接 所有课程的信息 36

  37. P# PN SAL P01 赵明 800 P02 钱广 700 P03 孙立 600 P04 李三 500 C# C# CN P# P# PN SAL C# CN C01 C01 P01 物理 P01 赵明 800 C01 物理 C02 C02 P02 数学 P02 钱广 700 C02 数学 C02 C03 化学 P04 P04 李三 500 C02 数学 外连接 所有老师和课程的信息 37

  38. R S F R S F 半连接 = A( ) A是R中所有属性的集合 38

  39. 赋值运算(了解) • 定义 • 为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用 临时关系变量关系代数表达式 • 赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改 39

  40. 赋值运算 • 示例 RS = X(R)  X(X(R)  Y(S)  R) 用赋值重写为: temp1 X(R) temp2 X(temp1  Y(S)  R) result  temp1  temp2 40

  41. 聚集函数(不讲) • 定义 • 求一组值的统计信息,返回单一值 • 使用聚集的集合可以是多重集,即一个值可以重复出现多次。如果想去除重复值,可以用连接符‘-’将‘distinct’附加在聚集函数名后,如sum-distinct • sum:求和 求全体教工的总工资 sumSAL((PROF)) 求001号学生的总成绩 sumSCORE(S# = 001 (SC)) 41

  42. 聚集函数 • avg:求平均 求001号同学选修课程的平均成绩。 avgSCORE(S# = 001(SC)) • count:计数 求001号同学选修的课程数。 countC#(S# = 001(SC)) 求任课老师的总数。 count-distinctP#(PC) 42

  43. 聚集函数 • max:求最大值 min:求最小值 求学生选修数学的最高成绩 maxSCORE(CN = 数学(C) SC)) • 分组 • 将一个元组集合分为若干个组,在每个分组上使用聚集函数。 属性下标 G 聚集函数属性下标(关系) 对此属性在每个分组上运用聚集函数 按此属性上的值对关系分组 43

  44. 聚集函数 • 分组运算G 的一般形式 G1 , G2 , ... , GnG F1 , A1 , F2 , A2 , … , Fm , Am(E) Gi是用于分组的属性, Fi是聚集函数, Ai是属性名。 G 将E分为若干组,满足: 1)同一组中所有元组在G1 , G2 , ... , Gn上的值相同。 2)不同组中元组在G1 , G2 , ... , Gn上的值不同。 • 示例 求每位学生的总成绩和平均成绩 S# G sumSCORE ,avgSCORE(SC) 44

  45. 数据库修改(不讲) • 删除 • 将满足条件的元组从关系中删除 r  r  E • 是对永久关系的赋值运算 • 例: • 删除001号老师所担任的课程 PC  PC PC# = 001(PC) • 删除没有选课的学生 S  S (∏S# (S)∏S#(SC)) S 关系 关系代数表达式 45

  46. 数据库修改 • 插入 • 插入一个指定的元组,或者插入一个查询结果 r  r E • 示例:新加入一个老师 PC  PC {(P07 ,“周正”, 750 , D08)} • 示例:加入计算机系学生选修“数学”的信息 SC  SC  ∏S# (S DN =计算机系(DEPT))  ∏C#(CN =数学(C)) 46

  47. 数据库修改 • 更新 • 利用广义投影改变元组的某些属性上的值 r  F1 , F2, … , Fn (r) • 示例:给每位老师上调10%的工资 PC  P# ,PN , SAL SAL* 1.1 ,D#(PC) • 示例:对工资超过800的老师征收5%所得税 PC  P# ,PN , SAL SAL* 0.95 ,D#(SAL 800 (PC)) ∪P# ,PN , SAL ,D#(SAL  800 (PC)) 47

  48. 视图V1 视图V2 基本表B1 基本表B2 基本表B3 视图(不讲) • 定义 • 视图是命名的、从基本表中导出的虚表,它在物理上并不存在,存在的只是它的定义 • 视图中的数据是从基本表中导出的,每次对视图查询都要重新计算 create viewview_nameas <查询表达式> • 视图之上可以再定义视图 • 视图 Vs 临时关系变量 48

  49. 视图 • 视图的优点 • 个性化服务 • 简化了用户观点,使不同用户可以从不同角度观察同一数据 • 安全性 • “知必所需”,限制用户数据的访问范围 • 逻辑独立性 • 视图作为基本表与外模式之间的映象 49

  50. 视图 • 示例 • 给出老师所教授课程的信息 create viewp_course As ∏PN , CN(PROF PC C) • 给出李明老师所教授的课程名称 PN = 李明(p_course) 50

More Related