Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
B21A 并运算(二元运算): 设R和S的对应属性有相同的域, 定义RS={t|tRtS}为R与S之并 动画 并RS 关系R ABC a b c d a f c b d b g a 关系S ABC a b c d a f c b d ABC b g a d a f [例] 教务处印发选课表给各系填写该系学生 选课情况。表格收回后需要综合为一个 总表。这可以理解为关系的并运算。
B21B 差运算(二元运算): 设R和S的对应属性有相同的域, 定义R-S={t|tRtS}为R与S之差. 动画 关系R 关系S 交R-S ABC a b c d a f c b d ABC a b c c b d ABC b g a d a f [例] 根据学生名册和学生运动员名册产生学生非 运动员名册,这可以理解为关系的差运算。
B21C 笛卡儿乘积运算(二元运算): 定义关系R、S的笛卡儿乘积为 RS={(r,s)|rRsS}. 动画 笛卡儿乘积RT 关系R ABCDEF a b c p q r a b c x y z d a f p q r d a f x y z c b d p q r c b d x y z 关系T ABC a b c d a f c b d DEF p q r x y z [例] 两队散打运动队均由三名队员组成。现作循环 比赛,赛事表可看成是两队名单的笛卡儿乘积。
B21D 投影(一元运算): 定义关系R对其属性i,j,k的投映为 i,j,k(R)={(ri , rj , rk)|rR} 动画 AC (R) 关系R AB (R) AC a c d f ABC a b c d e f a a c AB a b d e a a [例] 教务处印发的教学安排表描述了所有课程上 课的时间地点。现在仅需列出各门课程及上 课时间。这可以理解为关系的选择运算。
B21E 选择(一元运算): 定义关系R关于条件F:ric的选择为 F(R)={r|rR ric}, {=,,>,<,,}. 动画 关系R B=b(R) ABC a b c d a f c b d ABC a b c c b d [例] 教务处印发的教学安排表详细地描述了所有课程 上课的时间地点。现在需要列出在某一教学时间 上课的全部课程。这可以理解为关系的选择运算。
B21F 交(二元运算): 设R和S是同一关系模式的两个实例, 定义RS={t|tRtS}=R-(R-S)为R与S之交。 动画 关系R 关系S RS ABC a b c d a f c b d ABC d a f ABC b g a d a f [例] 根据某系学生名册和全校学生运动员名册产生该 系学生运动员表格,这可以理解为关系的交运算。
连接(二元运算):设A、B分别是关系R、S的属性且有相同的域,连接(二元运算):设A、B分别是关系R、S的属性且有相同的域, 算术比较运算符{=,,>,<,,},R和S关于条件F:AB 的连接操作定义为RFS=F(RS)={rs|rRsSr[A]s[B]} [自然连接]设B是关系R、S的共同属性。称满足R.B=S.B并限制B在 结果关系中只出现一次的连接操作为自然连接,记为RS [复合连接]类似于自然连接,但运算结果不含连接属性。 [半连接]RABS:在连接结果中仅保留R的属性。 B21G S R ABC 1 2 3 4 5 6 7 8 9 ABCDE 1 2 3 3 1 1 2 3 6 2 4 5 6 6 2 动画 连接 DE 3 1 6 2 RB<DS R S ABCED a b c c d a b c c e d b c c d d b c c e c a d d b ABC a b c d b c b d f c a d 自然连接 BED b c d b c e a d b R S ABC a b c d b c b c f c a d ABC a b c d b c c a d BED b c d b c e a d b 半连接 RR.B=S.BS 接下页
商操作(二元运算): 设关系R和S的属性集合分别是Z和X,并设ZX,Y=Z-X, 定义R对S的商操作为D=RS={t|tY(R)且sS,tsR}. 即在Y(R)中取最大元组子集D,使DSR. B21H 不符合商操作定义 去掉后得到商关系 AB a b b c e d Y(R) 关系S 关系R CD c d e f ABCD a b c d a b e f b c e f e d c d e d e f a b d e T=RS AB a b e d 商操作 商关系 RTS
DE F 1 d g 5 b f 6 c c 7 d e B31 ABC a 3 g b 5 h R S [例1]设关系R、S的实例为如右图示。 考虑元组关系演算表达式 ={t|t[1]=b R(t) S(t)}, 其符号集为 DOM={b}A (R) B (R) C (R) D (S) E (S) F (S) ={b,a,3,g,5,h,1,d,f,6,c,7,e} [例2]设元组关系演算表达式{t|1(t)}是安全的,而元组关系演算公式 2(t)不包含可能破坏安全性的形为tF(t)、tF(t)的子式, 求证任何形如={t|1(t)2(t)}的元组关系演算表达式是安全的. 证明: 若t 使(t) = 1(t) 2(t)为真,当然使1(t)为真.因{t|1(t)}是安全的, 故t的分量属于DOM(1(t))DOM(1(t)2(t))=DOM((t)), 故元组关系演算表达式满足安全性定义的条件(1). 因2(t)不含形为tF(t)、tF(t)的子式,故(t)所包含的形 为tF(t)、tF(t)的子式其实是属于1(t)的, 故满足安全性定义的条件(2)和(3)。
B52b 2.数据查询:查询语句的符号形式是 RANGE OF V1 IS R1 RANGE OF V2 IS R2 RANGE OF Vk IS Rk RETRIVE (V1.Ai1 , , Vn.Ain ) WHERE C(V1 , ,Vk ) 这个语句等价于元组关系演算表达式:{ t | (V1)(Vk) ( ** ) } **: R1(V1)Rk(Vk)t[1]= V1[i1]t[n]=Vn[in] C(V1Vk) 指出每个关系 的元组变量 查询元组的属性 查询元组的条件 [例] 查询研究部雇员的姓名地址 reange of E is employee reange of D is department retrieve (E.name,E.address) where D.name=‘研究部’ and D.dnunber=E.dno
B52c 3.数据维护 条件追加元组append:当满足条件时为指定的关系增加元组; 条件删除元组delete: 对指定的关系删除满足条件的元组; 条件修改元组replace:对指定的关系修改满足条件的元组; [例1] 为关系employee增加一个元组 range of E is employee append to employee (name=‘王明’,ssn=‘653298653’, bdate=’30/03/1952’, address=‘哈尔滨市学府路24号’, sex=‘男’,salary=672 superssn=‘967523453’,dno=4 ) [例2] 对研究部雇员工资提高10% range of E is employee range of D is department replce E (salary=salary*1.1) where E.dno=D.number and D.dname=‘研究部’
B52d 4.视图定义 RANGE OF V1 IS R1 RANGE OF V2 IS R2 RANGE OF Vk IS Rk DEFINE VIEW view_name(A1=Vi1.Bi1 ,,An=Vin.Bin ) WHERE C(V1 , ,Vk ) 其中视图view_name的属性Aj 是Rij 的属性Bij ,1jn. [例]使用关系employee,works_on和project定义视图works_on1 range of E of employee range of W of works_on range of P of project define view works_on1 (name=E.name , pname==P.name, hours=W.hours) where E.ssn=W.ssn and P.pnumber=W.pno
B53a [例]建立关系DEPARTMENT 对首行各纵栏,从左到右填: (命令) I. department I. (第一属性名称)DNAME (第二属性名称)DNUMBER (第三属性名称)MGRSSN (第四属性名称)STARTDT 然后按首列提示定义各属性: KEY I.(是否主属性) TYPE I.(数据类型) DOMAIN I.(值域名称) INVERSION I.(是否索引) 1. 数据定义 QBE系统维护一个表,即关系目录 表。它包含数据库中所有关系的名 字、属性和说明信息。 关系框架的一般格式 关系名 属性名 属性名 属性名 操作命令1 元组属性 操作命令2 或 操作命令3 查询要求信息 I.DEPARTMENT I. DNAME DNUMBER MGRSSN STARTDT KEY I. N Y N N TYPE I. CHAR INTEGER INTEGER INTEGER DOMAIN I. NAMES NUMBERS SSN DATE INVERSION I. N Y N N
B53b • 数据查询 • 用户通过终端的按键,要求QBE系统显示所有关系名。然后选择感 • 兴趣的关系属性框架。之后填上域变量和常数表示查询要求。 • 在数据查询框架中,若域变量名前出现操作符‘P.’,系统显示该域 • 变量对应的关系属性值。 • [例1]查询雇员张平的生日和地址。 Employee name ssn bdate address sex salary superssn dno 张平 P. P. [例2]查询为工程项目5或7每周工作时间超过20小时的雇员证号。 works_on essn pno hours P. 5 >20 P. 7 >20 works_on essn pno hours P. _PX _HX 或者: 不同行的条件表示‘或’关系 条件框架 _HX>20 AND (_PX=5 OR _PX=7)
B53c 3.数据维护 QBE有三个数据维护操作:插入元组 I. 删除元组 D. 修改元组 U. [例1]插入新雇员。 Employee name ssn bdate address sex salary superssn dno I. 张平 123 03/22/57 东山路2号 男 678 128 5 [例2]删除工资<500元的雇员元组。 Employee name ssn bdate address sex salary superssn dno D. <500 [例2]把张平工资增加10%. Employee name ssn bdate address sex salary superssn dno 张平 U._S*1.1
B53d 4.视图定义 建立视图的方法类似于建立关系。 [例]建立视图BILLS, 包括定货人(name)、定购商品(item)和应付款项(charge)。应付款 项是按所有供应商品最低价格计算,即数量_q乘以最低价格。 查询时,视图的数据由相关的关系即时算出,即:按视图指示的 订货人,在关系ORDER查出订购商品和数量_q。按订购商品, 在关系SUPPLIERS查出价格集合,取最小值_p。最后在视图显示 最低价格与数量的乘积,即应付款项。 • VIEW BILLS I. name item charge • _oakes _hotdog _q*min.all._P ORDERS name item quantity _oakes _hotdog _q SUPPLIERS name saddr item price _hotdog _P
B54a1 [例2] 对关系employee增加属性job: alter table employee add job varchar(12) [例3] 删除关系employee: drop table employee [例4] 删除索引ssn_index: drop index ssn_index [例5] 在关系employee建立按键ssn升序排列的 聚集索引文件ssn_index: create unique index ssn_index on employee(ssn asc) cluster 接下页
B54b 2.数据查询 SQL数据查询格式是 SELECT <属性表> FROM <关系名> WHERE <条件式> 例1 列出工资<2000元的雇员姓名和证号 SELECT name,ssn,bdate FROM employee WHERE salary<2000 例2 列出全体雇员工资(不重复) SELECT distinct salary FROM employee 接下页