《第关系数据库.pptx》由会员分享,可在线阅读,更多相关《第关系数据库.pptx(109页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章关系数据库第二章关系数据库主要内容:1、关系数据结构及形式定义 数据结构 关系、关系模式、关系数据库2、关系的完整性 完整性约束3、关系代数 集合运算和关系运算操作集合4、关系演算 元组关系演算语言ALPHA给出规范性定义第2页/共109页第1页/共109页2.1关系数据结构及形式化定义问题:问题:给出给出3个集合个集合A=a,b,c,B=3,4,5,C=a1a,b2b,c6c,问问从每个集合中任取一个非空元素,从每个集合中任取一个非空元素,组合成集合组合成集合D的一个元素的一个元素,若若不考虑顺序性和零元素不考虑顺序性和零元素,问集合问集合D有多少个元素?有多少个元素?将问题上升到一般
2、情况,若有将问题上升到一般情况,若有n个个有限集合有限集合,每个有,每个有k1,k2,kn个非个非空元素,问从每个集合中任取一个元素组成第空元素,问从每个集合中任取一个元素组成第n+1个集合,若不考个集合,若不考虑顺序性,第虑顺序性,第n+1个集合有多少个非空元素。个集合有多少个非空元素。第3页/共109页第2页/共109页从数学的角度讲,什么是域?基于严格的数学基础一组具有相同数据类型的值的集合(取值范围)。什么是笛卡尔积(Cartesian Product)给定一组域D1,D2,Dn。它们的笛卡尔积:第4页/共109页第3页/共109页可用一个二维表表示,每一个(d1,d2,dn)叫做一个
3、n元组或元组。元组中的每一个值di叫做一个分量。d11d21dn1d12d22dn6d18d29dn3d14d25dn7第5页/共109页第4页/共109页若Di(i=1,2,n)为有限集,其基数为mi(i=1,2,n),则的基数M为:含义是什么?第6页/共109页第5页/共109页【例】给定两个相容性关系R和S,计算 RS的结果。解:依据运算的定义,可得到如图所示的结果。第7页/共109页第6页/共109页下面给出下面给出关系的定关系的定义义第8页/共109页第7页/共109页关系的定义 的子集叫做在域D1,D2,Dn上的关系,表示为其中,R表示关系的名字,n是关系的目或度(Degree)。
4、关系中的每个元素是关系中的元组,用t表示。第9页/共109页第8页/共109页n=1时,该关系为单元关系。n=2时,该关系为二元关系。关系是笛卡尔积的有限子集,也是一个二维表。行对应元组,列对应一个域,称为属性。回想第1章的相关内容,什么是主码?问题第10页/共109页第9页/共109页问题:指出下列关系的哪些属性可以作主码?指出下列关系的哪些属性可以作主码?1学生学生(学号,姓名,性别学号,姓名,性别)3选课选课(学号,课程号,成绩学号,课程号,成绩)2学生学生(学号,姓名,性别,身份证学号,姓名,性别,身份证)4学生学生(姓名,性别,年龄,班级,宿舍姓名,性别,年龄,班级,宿舍)在该例中若
5、取学号和身份证号的组合为主码可以吗?学号学号或身份证学号和课程号的组合所有属性的组合术语第11页/共109页第10页/共109页候选码主码主属性非码属性全码若关系中的若关系中的某一属性组的值某一属性组的值能能唯一地标识一个元组唯一地标识一个元组,则称该属性组为则称该属性组为候选码候选码。若一个关系若一个关系有多个候选码有多个候选码,则选定其中一个为,则选定其中一个为主码主码。组成主码组成主码的诸属性称为主属性。的诸属性称为主属性。不包含在任何候选码中的不包含在任何候选码中的属性称为非码属性属性称为非码属性所有属性形成的组合所有属性形成的组合才是候选码,称为全码。才是候选码,称为全码。第12页/
6、共109页第11页/共109页问题:给出关系如下:职员(编号,姓名,性别,职务,部门,密码口令),在用户端程序中:2、某个查询要求仅仅需要列出是、某个查询要求仅仅需要列出是某个职务的职员编号和姓名某个职务的职员编号和姓名,不,不能显示出密码口令能显示出密码口令。1、某个查询仅仅需要列出满足、某个查询仅仅需要列出满足某个编号条件某个编号条件的职员姓名,职务和的职员姓名,职务和部门,不能显示出密码口令。部门,不能显示出密码口令。问:问:1两个查询结果是什么,形式是怎样的?两个查询结果是什么,形式是怎样的?1职员职员|编号编号=x(姓名,部门姓名,部门);2 职员职员|职务职务=x(编号,姓名编号,
7、姓名)问:问:2如何做到用户不能看到职员的密码,且不能修改职务?如何做到用户不能看到职员的密码,且不能修改职务?法法1:直接使用该关系,不显示密码,限制修改职务的功能;:直接使用该关系,不显示密码,限制修改职务的功能;容易受到攻击,安全性不高。容易受到攻击,安全性不高。第13页/共109页第12页/共109页法法2:先查询得到职员:先查询得到职员(编号,姓名,部门,职务编号,姓名,部门,职务),然后再从然后再从“结果结果”中查询职员。中查询职员。为了避免用户可以在应用程序中直接从结果中修改,得到为了避免用户可以在应用程序中直接从结果中修改,得到“结果结果”的查询不出现在应用程序中,而是保存在数
8、据库中,此时的查询不出现在应用程序中,而是保存在数据库中,此时“结果结果”是作为一个是作为一个关系关系 保存保存视图视图。此时关系可以有三种类型:基本关系;查询表;查询结果。视图。第14页/共109页第13页/共109页按定义关系可以是一个无限集合。由于笛卡尔积不满足交换律,即在关系数据模型中,做如下限定和扩充:无限关系在数据库系统中是无意义的,即关系必须是有限集合。给每一个列添加一个属性名,并取消关系元组的有序性。到此,可以归结基本关系的性质如下:第15页/共109页第14页/共109页基本关系具有以下6条性质列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个
9、域。不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。列的顺序可以任意交换。任意两个元组不能完全相同。行的次序可以任意交换。分量必须取原子值,是不可再分的数据项(范式)。第16页/共109页第15页/共109页看下面问题:看下面问题:学生学生(学号,姓名,性别学号,姓名,性别)学生学生|张三张三(10000102,张三,男,张三,男)两者有什么区别?两者有什么区别?前者描述了学生实体的整体概况,后者则是描述了一个确切的学生张三。这样就把前者叫作这个关系的模式,后者作为这个关系的一个值。第17页/共109页第16页/共109页在关系数据库中,关系模式是型,关系是值。
10、一个元组就是该关系所涉及的属性集的笛卡尔积的一个元素。关系是元组的集合。首先,关系模式须指出这个元组集合的结构。属性、属性的域,以及属性与域之间的映象关系。其次,元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡尔积中的元素的全体就构成了该关系模式的关系。现实事实要求关系模式应当刻划出这些完整性约束条件关系模式如何形式化的描述?关系模式如何形式化的描述?第18页/共109页第17页/共109页关系模式的定义关系的描述称为关系模式(Relation Schema)。形式化表示为:R为为关系名关系名,U为该关系的为该关系的属性名集合属性名集合,D为属性组为属性组U中中
11、属属性所来自的域性所来自的域,dom为属性为属性向域的映象集合向域的映象集合,F为属性间为属性间数据的依赖关系集合数据的依赖关系集合。例如:例如:dom(教师)教师)=dom(学生学生)=人人关系是关系模式在某一时刻的状态或内容。关系是关系模式在某一时刻的状态或内容。关系模式是关系模式是静静态的、稳定的态的、稳定的,而关系是,而关系是动态的、随时间不断变化的动态的、随时间不断变化的。在。在实际中,实际中,关系模式关系模式和和关系关系统称为统称为关系关系。第19页/共109页第18页/共109页在关系模型中,实体以及实体间的联系都是用关系来表示的。在一个给定的应用领域中,所有实体及实体之间联系的
12、关系的集合构成一个关系数据库。关系数据库有型和值之分。型是关系数据库模式,是对关系数据库的描述,包括若干域的定义以及在这些域上定义的若干关系模式。值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。第20页/共109页第19页/共109页2.2关系的完整性问题:什么是候选码,什么是主码,主码属性又是什么?现在假设创建了一个关系:现在假设创建了一个关系:学生学生(学号,姓名,性别学号,姓名,性别),在给关系,在给关系添加值的时候,添加值的时候,学号的作用是什么,可以不可以有重复学号的作用是什么,可以不可以有重复?有没有有没有某个或某些学生没有学号的情况?这说明了什么问题?某个或某些
13、学生没有学号的情况?这说明了什么问题?100131张三男李四男李四男100131张三男第21页/共109页第20页/共109页规则2.1 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。说明:是针对基本关系而言的,基本表通常对应现实世界的一是针对基本关系而言的,基本表通常对应现实世界的一个实体集个实体集。现实世界中的实体是可区分的,它们具有某种唯一性标现实世界中的实体是可区分的,它们具有某种唯一性标识。识。关系模型中以关系模型中以主码作为唯一性标识主码作为唯一性标识。主码中的属性及主属性不能取空值主码中的属性及主属性不能取空值。空值就是。空值就是“不知道不知道”或或“无意义无
14、意义”。1、实体完整性(Entity Integrity)第22页/共109页第21页/共109页问题1、现有两个关系学生,专业,如下:学号姓名专业编号100233 张三j001100234 李四s001100454 玛利g002100226 王五专业编号 专业名称j001计算机s001数学问:学号问:学号100454的专业是什么,学号的专业是什么,学号100226的专业为空是什么含的专业为空是什么含义?义?还没有分专业。编号为g002的专业不存在第23页/共109页第22页/共109页问在学生表中,专业编号是否为码,它的作用是什么?首先,专业编号不是学生表的码,作用看演示操作student结
15、论:在学生表中的专业编号不是码,但是它可以控制学生所学的专业必须存在,防止出现一个不存在的专业。另外,专业编号在专业表中是码。因此,称学生表中的专业编号为外码,它与专业表中的专业编号建立对应关系参照完整性。第24页/共109页第23页/共109页2、现有学生、课程两个关系如下、学生与课程之间的多对多联系应该如何表示?学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)分析:分析:1、这种联系需要用表(S_C)来表示,;2、该表含有哪些字段?学号课程号成绩3、谁作主码?学号和学号和课程号的组合因此:S_C(学号,课程号,成绩)第25页/共109页第24页/共109页问在S_C中在哪
16、些属性上可以建立与其他表的联系?学号和课程号参照完整性的一般化描述第26页/共109页第25页/共109页设F(如:专业编号)是基本关系R(如:学生)的一个或一组属性,但不是关系R的码。如果F与基本关系S(如:专业)的主码Ks(专业编号)相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。2、参照完整性(Referential Integrity)术语:第27页/共109页第26页/共109页注意:关系R和S
17、不一定是不同的关系,例如。公民公民(身份证号,姓名,年龄,性别,身份证号,姓名,年龄,性别,配偶身份证号配偶身份证号)课程课程(课程号,课程名,课程号,课程名,先行课程号先行课程号,学分,学分)问在学生,课程和S_C中,谁是参照关系,谁是被参照关系?S_C是参照关系学生和课程是被参照关系有了参照和被参照关系后,参照规则应该是怎样的?第28页/共109页第27页/共109页若属性(属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F(是属性组)的每个属性值均为空值);或者等于S中某个元组的主码值。规则
18、2.2 参照完整性规则 问:在前面学生和专业关系中,学生表中的专业编号可以取哪些值?第29页/共109页第28页/共109页问题有下述关系:成绩(学号,课程号,成绩)如何限制学生的成绩在如何限制学生的成绩在0100之间?之间?3、用户定义的完整性(User-defined Integrity)作用是对某些属性的约束,限制等,作用是对某些属性的约束,限制等,由数据库系统统一来实现由数据库系统统一来实现,而不是由应用程序来承担。而不是由应用程序来承担。各种完整性实例见数据库student的演示。第30页/共109页第29页/共109页形式化定义和完整性小结术语:关系,候选码,全码,关系数据库关系和
19、关系模式实体完整性参照完整性用户自定义完整性关系数据库的操作又是怎样的?第31页/共109页第30页/共109页问题:在关系模型中,关系有哪些主要操作?查询、插入、删除和修改查询、插入、删除和修改这些操作如何形式化表示?第32页/共109页第31页/共109页2.3关系代数任何运算都包括哪些要素?运算对象,运算符和运算结果三大要素。关系数据库的操作对象是什么,结果又是什么?集合集合关系关系因此第33页/共109页第32页/共109页关系代数的运算对象是关系,结果也是关系。基本运算包括:选择,投影,并,集合差,笛卡尔积。各自的含义是什么?其他运算包括:集合交,连接,除。各自的含义是什么?选择,投
20、影和更名运算只涉及到一个操作对象,称为一元运算,其他为二元运算。第34页/共109页第33页/共109页1选择:选择:问题:现有关系问题:现有关系student(学号,姓名,性别,年龄,班级,专业)如下:如下:学号姓名性别年龄班级专业300005张三男220301计算机300061李四男210302数学300004玛丽女200301管理问题:1查询姓名为李四的详细记录。2查询男同学的详细记录。用关系代数如何做到?第35页/共109页第34页/共109页1:学号姓名性别年龄班级专业300061李四男210302数学女男男性别管理030120玛丽300004数学030221李四300061计算机0
21、30122张三300005专业班级年龄姓名学号原始数据:第36页/共109页第35页/共109页2:注意:查询结果是多个元组。学号姓名性别年龄班级专业300005张三男220301计算机300061李四男210302数学女男男性别管理030120玛丽300004数学030221李四300061计算机030122张三300005专业班级年龄姓名学号原始数据:第37页/共109页第36页/共109页结论姓名=李四和性别=男为选择条件(student)表示选择操作作用的关系。选择操作的一般形式:各个符号说明如下:各个符号说明如下:第38页/共109页第37页/共109页其中F表示选择条件,是一个逻辑
22、表达式,取逻辑值“真”或“假”。逻辑表达式由逻辑运算符表示比较运算符,可以是连接各算术表达式组成。算术表达式的基本形式为:其中第39页/共109页第38页/共109页思考:1,从前面student关系中,查询小于25岁的男同学的详细记录。2,从student关系中,查询小于25岁的或者是男同学的详细记录。3,从前面student关系中,查询不是男同学的详细记录。第40页/共109页第39页/共109页2投影:投影:问题:现有关系问题:现有关系student(学号,姓名,性别,年龄,班级,专业)如下:如下:学号姓名性别年龄班级专业300005张三男220301计算机300061李四男210302
23、数学300062王武男260301数学300004玛丽女200301管理1,查询所有学生姓名和所在的专业。2,查询关系student中都有哪些专业。第41页/共109页第40页/共109页1:姓名专业张三计算机李四数学王武数学玛丽管理数学030126男王武300062女男男性别管理030120玛丽300004数学030221李四300061计算机030122张三300005专业班级年龄姓名学号原始数据:第42页/共109页第41页/共109页2:专业计算机数学管理数学030126男王武300062女男男性别管理030120玛丽300004数学030221李四300061计算机030122张三3
24、00005专业班级年龄姓名学号原始数据:第43页/共109页第42页/共109页结论姓名姓名和和专业专业 为在哪个属性上面的投影为在哪个属性上面的投影(student)表示投影操作作用的关系。投影操作的一般形式:其中A为R中的属性列。第44页/共109页第43页/共109页3组合运算:组合运算:问题:现有关系问题:现有关系student(学号,姓名,性别,年龄,班级,专业)如下:如下:学号姓名性别年龄班级专业300005张三男220301计算机300061李四男210302数学300062王武男260301数学300004玛丽女200301管理1,查询出数学专业的所有学生的姓名和所在的班级。2
25、,查询关系student中年龄大于25的学生的姓名和专业。第45页/共109页第44页/共109页1:注意层次关系选择操作的结果最终的结果数学030126男王武300062数学030221男李四300061专业班级年龄性别姓名学号步骤1:0301王武0302李四班级姓名步骤2:第46页/共109页第45页/共109页2:姓名专业王武数学说出下列关系代数式表示的意义;说出下列关系代数式表示的意义;该关系代数式与下面哪个等价:该关系代数式与下面哪个等价:关系代数可以像算术运算一样进行不同的组合运算。第47页/共109页第46页/共109页4并运算:并运算:现有三个关系student,course,
26、sc如下:学号姓名性别年龄班级95001张三男22030195002李四男21030295003王武男26030395004玛丽女200304课程号课程名先行课程号学分1数据库242数据结构443信息系统144C语言4第48页/共109页第47页/共109页学号课程号 成绩950013899500229095003380要查询0302班学生的学号或选修了课程号为3的学生的学号,应该如何操作?先查询0302班学生的学号再查询选修了课程号为3的学生的学号以上两步分别得到一个集合,如何将两个集合合并成一个,并满足查询条件?第49页/共109页第48页/共109页并运算,结果是什么?并运算结论第50页
27、/共109页第49页/共109页并运算小结:一般形式:第51页/共109页第50页/共109页问:要查询选修了3号课程且不是0301班的学生学号,该如何用关系代数表示?首先,查询出选修了3号课程的所有学生的学号。然后,查询出0301班所有学生的学号。如何从第1步的结果中去掉那些存在于第2步的结果中的学号?第52页/共109页第51页/共109页5差运算:第53页/共109页第52页/共109页练习:查询出所有没有学生选修的课程号。查询出所有没有选课的学生学号。练习第54页/共109页第53页/共109页问题除了前面的student,course,sc关系外,再添加一个关系reward(奖励),
28、如下:记录号学号级别时间19500212003.7.1229500322004.1.12其他关系如下:第55页/共109页第54页/共109页学号姓名性别年龄班级95001张三男22030195002李四男21030295003王武男26030395004玛丽女200304课程号课程名先行课程号学分1数据库242数据结构43信息系统14学号课程号 成绩950013899500429095003380问:要查询既选了课,又有奖励记录的学生学号,应该怎样用关系代数实现?第56页/共109页第55页/共109页法1:用差运算:法2:步1:学号课程号 成绩 记录号 学号级别 时间95001389195
29、00212003.7.129500138929500322004.1.129500429019500212003.7.129500429029500322004.1.129500338019500212003.7.129500338029500322004.1.12第57页/共109页第56页/共109页步2:从步1的结果中找出两个学号相同的记录,就符合条件。步1的运算表示为:步2的运算表示为:广义笛卡尔积运算第58页/共109页第57页/共109页法3:交运算总结第59页/共109页第58页/共109页6 6广义笛卡尔积运算:7 7交运算:第60页/共109页第59页/共109页思考:在上一
30、个例子中,方法2使用了广义笛卡尔积运算,产生的结果如下:学号课程号 成绩 记录号 学号级别 时间9500138919500212003.7.129500138929500322004.1.129500429019500212003.7.129500429029500322004.1.129500338019500212003.7.129500338029500322004.1.12第61页/共109页第60页/共109页问:该结果中共有几条记录,这些记录由几条记录产生的,有几条是需要的?63,21当由两个不同的学号形成结果中的一条记录时,如结果中的前5条记录,什么时候能用到?好像用到的机会很少
31、。因此,为了减少结果中无用的记录数目,提高后面运算的效率,使用了自然连接运算。第62页/共109页第61页/共109页上次课内容回顾选择运算投影运算选择投影的组合并运算差运算广义笛卡尔积运算交第63页/共109页第62页/共109页在查询既选了课,又有奖励记录的学生学号,用关系代数实现如下:结果有什么特点?百里挑一。第64页/共109页第63页/共109页8自然连接运算:如果能将上例步1的结果变为:学号课程号 成绩 记录号 级别 时间95003380222004.1.12运算规则:1、两个操作对象中必须至少有一个相同的属性A;2、两个操作对象中A的值相同的记录才能形成结果中的一条记录。3、运算
32、结果中去掉重复的A,如上例的学号。第65页/共109页第64页/共109页练习:现有关系student,sc如下:学号姓名班级200501张三0301200402李四0301200503王武0402学号课程号成绩200501278200402189200501390200402398200503278根据刚才的规则,运算结果是什么?第66页/共109页第65页/共109页学号姓名班级课程号成绩200501张三0301278200501张三0301390200402李四0301189200402李四0301398200503王武0402278该操作就是自然连接第67页/共109页第66页/共10
33、9页运算符号:一般形式:其中,B为R和S相同的属性组。问题讨论上例可以写成:第68页/共109页第67页/共109页自然连接的运算规则:1、两个操作对象中必须至少有一个相同的属性A;2、两个操作对象中A的值相同的记录才能形成结果中的一条记录。3、运算结果中去掉重复的A。若去掉第3条规则,前面的结果会怎样?学号姓名班级学号课程号成绩200501张三0301200501278200501张三0301200501390200402李四0301200402189200402李四0301200402398200503王武0402200503278等值连接第69页/共109页第68页/共109页9等值连接
34、运算:运算符号:一般形式:注意A和B的意义。继续讨论Go on上例可写成:第70页/共109页第69页/共109页自然连接的运算规则:1、两个操作对象中必须至少有一个相同的属性A;2、两个操作对象中A的值相同的记录才能形成结果中的一条记录。3、运算结果中去掉重复的A。若去掉第3条规则,同时将第2条规则修改如下:两个操作对象中A的值满足一定的条件(,=,)才能形成结果中的一条记录,第1条规则放松为有相同域的属性,又会怎样?见下例:见下例:Go onGo on第71页/共109页第70页/共109页Company数据库:有两个关系employee,department如下:Em_noEm_name
35、 Em_home Dep_no23452markBeijingd123456Jerkhenand234567rosetianjind1Dep_noDep_namelocationd1ResearchShanghaid2AccountingShanghaiD3MarketingBeijing第72页/共109页第71页/共109页对于居住地址在字母排序上早于部门地址的所有职员,获取其职员信息与部门信息的所有组合。分析:1、Employee中的元组与department的元组进行组合;2、组合条件是职员的居住地址在字母排序上要早于部门地址。结果如下:第73页/共109页第72页/共109页Em_n
36、oEm_nameEm_homeDep_noDep_no Dep_namelocation23452markBeijingd1d1ResearchShanghai23452markBeijingd1d2AccountShanghai23456Jerkhenand2d1ResearchShanghai23456Jerkhenand2d2AccountShanghai用关系代数表示为:称为 连接一般形式:第74页/共109页第73页/共109页10连接或 连接可以是,=,在前面三种连接的例子中,结果集中包含的行仅仅是一张表中的行,这些行在另一张表中拥有与之相应的行。有没有其他情况?第75页/共109
37、页第74页/共109页有时候不仅需要取得匹配的行,还有必要从另一张表中取得不匹配的行,如下例:对于作为职员居住地的所有城市,或者即是居住地又是工作地点的所有城市,返回所有职员详细信息及其工作部门的详细信息。结果如下:Em_noEm_nameEm_homeDep_noDep_no Dep_namelocation23452markBeijingd1NULLNULLNULL23456Jerkhenand2d2Accountinghenan34567rosetianjind1NULLNULLNULLBeijingMarketingd3henanAccountingd2ShanghaiResearch
38、d1locationDep_nameDep_no其中,department关系如下:该运算为左外连接第76页/共109页第75页/共109页11左外连接上例运算的表达式:对于作为部门所在地的所有城市,或者即是居住地又是工作地点的所有城市,返回所有部门详细信息及其职员的详细信息。结果如下:第77页/共109页第76页/共109页Em_noEm_nameEm_homeDep_noDep_no Dep_namelocationNULLNULLNULLNULLd1ResearchShanghai23456Jerkhenand2d2AccountinghenanNULLNULLNULLNULLd3Mar
39、ketingBeijing该运算为右外连接12右外连接第78页/共109页第77页/共109页连接运算小结自然连接等值连接连接左外连接右外连接第79页/共109页第78页/共109页问题:现有三个关系student,course,sc如下:学号姓名性别年龄班级95001张三男22030195002李四男21030295003王武男26030395004玛丽女200304课程号课程名先行课程号学分1数据库242数据结构443信息系统144C语言4第80页/共109页第79页/共109页学号课程号 成绩950013899500229095001289950011919500149095003380
40、要查询选修了全部课程的学生号码和姓名,该如何写出关系代数式?考察2个集合的关系第81页/共109页第80页/共109页例例 R S Aa1令为:c2c7c6c3c6c3c1b1b3b4b2b6b2b2a1a2a3a1a4a2a1CBAd1d1d2c2c1c3b1b2b2DCB前面问题第82页/共109页第81页/共109页13除运算:OK第83页/共109页第82页/共109页关系代数小结选择投影并差广义迪卡尔积运算交连接,等值连接,自然连接,左/右外连接除练习第84页/共109页第83页/共109页查询选修了2号课程的学生的学号。查询至少选修了一门其直接先行课为4号课程的学生姓名。或查询至少
41、选修了1号和3号课程的学生号码。第85页/共109页第84页/共109页2.4关系演算关系代数用关系的运算来表达查询。关系演算以谓词演算为基础,以元组变量为谓词变元的基本对象。以元组关系演算语言ALPHA为例。第86页/共109页第85页/共109页元组关系演算语言ALPHA基本语句格式:操作语句工作空间(表达式):操作条件以student,course,sc为例数据只有被读到该空间中,才可以被操作处理,或存放结果。第87页/共109页第86页/共109页SnoSnameSsexSagesdept95001张三男22IS95002李四男21CS95003王武男26MA95004玛丽女20ISC
42、noCnoCpnoCredit1数据库242数据结构443信息系统144C语言4第88页/共109页第87页/共109页SnoCnoMark9500138995002290950012899500119195001490950033801、检索操作、检索操作 用用GET语句实现语句实现(1)简单检索简单检索查询所有被选修的课程号码查询所有被选修的课程号码查询所有学生的数据查询所有学生的数据GET W (SC.Cno)GET W (Student)与关系代数中的投影和选择运算比较记忆第89页/共109页第88页/共109页(2)限定的检索限定的检索查询信息系查询信息系(IS)中年龄小于中年龄小于
43、20岁的学生的学号和年龄。岁的学生的学号和年龄。GET W(Student.Sno,Student.Sage):Student.Sdept=ISStudent.Sage20与关系代数中的投影选择组合比较记忆。练习:练习:查询信息系查询信息系(CS)中年龄大于中年龄大于20岁的学生的学号,姓名和岁的学生的学号,姓名和年龄。年龄。第90页/共109页第89页/共109页(3)带排序的检索查询CS系学生的学号、年龄、结果按年龄降序排列。GET W(Student.Sno,Student.Sage):Student.Sdept=CS DOWN Student.Sage(4)带定额的检索带定额的检索 取
44、出一个信息系学生的学号取出一个信息系学生的学号GET W(1)(Student.Sno):Student.Sdept=IS问:语句 GET W(3)(Student.Sno,Student.Sage):Student.Sdept=IS DOWN Student.Sage的含义。第91页/共109页第90页/共109页(5)用元组变量的检索用元组变量的检索 查询信息系学生的名字查询信息系学生的名字RANGE Student XGET W(X.Sname):X.Sdept=IS(6)用存在量词的检索用存在量词的检索 查询选修查询选修2号课程的学生名字。号课程的学生名字。RANGE SC XGET
45、W(Student.Sname):X(X.Sno=Student.Sno X.Cno=2)第92页/共109页第91页/共109页查询至少选修一门其先行课为查询至少选修一门其先行课为6号课程的学生名字号课程的学生名字RANGE Course CX SC SCX或:或:第93页/共109页第92页/共109页(7)带有多个关系的表达式的检索带有多个关系的表达式的检索查询成绩为查询成绩为90分以上的学生名字与课程名字分以上的学生名字与课程名字RANGE SC SCX第94页/共109页第93页/共109页(8)用全称量词的检索用全称量词的检索 查询不选查询不选1号课程的学生名字号课程的学生名字RA
46、NGE SC SCX第95页/共109页第94页/共109页(9)用蕴函的检索用蕴函的检索查询最少选修了查询最少选修了95002学生所选课程的学生学号。学生所选课程的学生学号。RANGE Course CX SC SCX SC SCY第96页/共109页第95页/共109页(10)集函数集函数COUNT 对元组计数对元组计数TOTAL 求总和求总和MAX 求最大值求最大值MIN 求最小值求最小值AVG 求平均值求平均值例:例:GET W (COUNT(Student.Sdept)GET W (AVG(Student.Sage):Student.Sdept=IS)第97页/共109页第96页/共
47、109页2、更新操作(1)修改操作 使用UPDATE语句实现。步骤如下:用HOLD语句将要修改的元组从数据库中读到工作空间中。用宿主语言修改工作空间中元组的属性。用UPDATE语句将修改后的元组送回数据库中。第98页/共109页第97页/共109页例:把95007学生从计算机科学系转到信息系。HOLD W(Student.Sno,Student.Sdept):Student.Sno=95007MOVE IS TO W.SdeptUPDATE W如果修改操作涉及到多个关系时,需要重复执行HOLDMOVEUPDATE操作序列。第99页/共109页第98页/共109页(2)、插入操作 使用PUT语句
48、。步骤如下:首先用宿主语言在工作空间中建立新元组。然后用PUT语句把该元组存入指定的关系中。第100页/共109页第99页/共109页例:学校新开设了一门2学分的课程“计算机组织与结构”,其课程号为8,直接先行课为6号课程,插入该课程元组。MOVE 8 TO W.CnoMOVE 计算机组织与结构 TO W.CnameMOVE 6 TO W.CpnoMOVE 2 TO W.CcreditPUT W (Course)每次只能对一个关系操作。第101页/共109页第100页/共109页(3)、删除 使用DELETE语句,步骤如下:用HOLD语句把要删除的元组从数据库中读到工作空间中。用DELETE语
49、句删除该元组。第102页/共109页第101页/共109页例:将学号95001改为95102HOLD W(Student):Student.Sno=95001DELETE WMOVE 95102 TO W.SnoMOVE 李勇 TO W.SnameMOVE 男 TO W.SsexMOVE 20 TO W.SageMOVE CS TO W.SdeptPUT W(Student)第103页/共109页第102页/共109页本章小结关系数据结构及形式化定义关系代数“”“”“”“”选择、投影、连接、除关系演算:ALPHA第104页/共109页第103页/共109页第1章数据库数据库管理系统主要功能数据
50、库系统构成特点数据模型概念模型 E-R图数据模型关系数据模型 术语第105页/共109页第104页/共109页数据库系统的结构三级模式结构二级映像数据独立性第106页/共109页第105页/共109页第2章关系型和值关系数据库的模式和关系数据库关系完整性实体完整性;参照完整性;参照关系,被参照关系,外键关系代数选择,投影,连接,等值连接,自然连接,除运算,并,差,交,笛卡尔积,左外连接,右外连接第107页/共109页第106页/共109页作业讲解P38 T12,T13P75 T5关系代数练习第108页/共109页第107页/共109页作业:作业:P80 T1,3,4,5,6第109页/共109