《第二章-关系数据库.ppt》由会员分享,可在线阅读,更多相关《第二章-关系数据库.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系第二章第二章关系数据库关系数据库关关系系数数据据库库采采用用了了关关系系模模型型作作为为数数据据的的组组织织方方式式,这这就就涉涉及及关关系系模模型型中中的的一一些些基基本本概概念念。而而对对关关系系数数据据库库进进行行查查询询时时,若若要要找找到需要的数据到需要的数据,就要对关系进行一定的运算。就要对关系进行一定的运算。本本章章主主要要讲讲解解关关系系数数据据库库的的相相关关概概念念,包括关系模型和关系代数。包括关系模型和关系代数。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系2.1关系数据模型的基本概
2、念关系数据模型的基本概念 关关系系模模型型由由关关系系数数据据结结构构、关关系系操操作作集集合合和和关关系系完完整整性约束三部分组成。性约束三部分组成。(关系模型的建立关系模型的建立-第五章第五章)1.关系模型数据结构关系模型数据结构概念模型转换成关系模型是用二维表形式概念模型转换成关系模型是用二维表形式(关系关系)表示实表示实体集的数据结构。体集的数据结构。(关系模型是逻辑模型的其中一种关系模型是逻辑模型的其中一种)关系模型中的一些术语:关系模型中的一些术语:(1)关系:一个关系通常对应一张二维表。关系:一个关系通常对应一张二维表。如:学生表。如:学生表。(2)元组:关系中的每一行称为一个元
3、组。元组:关系中的每一行称为一个元组。如:表中一个学生记录即为一个元组。如:表中一个学生记录即为一个元组。(3)属属性性:关关系系中中的的每每一一列列为为一一个个属属性性。给给每每一一个个属属性性起一个名称即属性名。起一个名称即属性名。如:表中属性如:表中属性(学号,姓名,性别,出生年月,籍贯学号,姓名,性别,出生年月,籍贯)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系广东广东1986-8-13男男黄国度黄国度050104湖南湖南1985-9-12女女李玉李玉050103江苏江苏1986-8-8男男王五王五050102广东广东1986-6-9男男张三秋张三秋050101
4、籍贯籍贯出生年月出生年月性别性别姓名姓名学号学号列:属性对应字段列:属性对应字段行:元组对应记录行:元组对应记录关系对应二维表关系对应二维表主键主键分量对应数据项分量对应数据项关系模型与关系数据库的对应关系关系模型与关系数据库的对应关系教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系 (4)键是关系模型中的一个重要概念,有以下几种:键是关系模型中的一个重要概念,有以下几种:候选键:如果一个属性或属性集能唯一标识元组,且候选键:如果一个属性或属性集能唯一标识元组,且又不含多余的属性或属性集,那么这个属性或属性集称为关又不含多余的属性或属性集,那么这个属性或属性集称为关系模式的
5、候选键。系模式的候选键。超超键键:能能唯唯一一标标识识元元组组的的属属性性集集称称为为关关系系模模式式的的超超键键。(可能存在多余的属性可能存在多余的属性)例如:学号例如:学号+姓名姓名(就是超键,因为姓名实际是多余的就是超键,因为姓名实际是多余的)例如:学号(就是候选键,有的表中这类键可能有多个例如:学号(就是候选键,有的表中这类键可能有多个,如身份证号、学号等)如身份证号、学号等)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系主键:多个候选键中用户指定的候选键称主键。主键:多个候选键中用户指定的候选键称主键。例如:学生表中的例如:学生表中的“学号学号”(5)域:属性的
6、取值范围。域:属性的取值范围。例例如如:人人的的年年龄龄一一般般在在1150岁岁之之间间,性性别别的的域域是是(男男,女)等。女)等。候选键、主键和外键也称为候选码、主码和外码。候选键、主键和外键也称为候选码、主码和外码。外键:可作为其它关系模式的主键的属性或属性集外键:可作为其它关系模式的主键的属性或属性集称外键。称外键。例如:学生表中的例如:学生表中的“班级编号班级编号”(外键外键)可作为班级表中可作为班级表中的主键。的主键。班级班级(班级编号班级编号,班级名称,班长姓名,专业,系编号,班级名称,班长姓名,专业,系编号)学生学生(学号学号,姓名,性别,出生年月,籍贯,班级编号,姓名,性别,
7、出生年月,籍贯,班级编号)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系(6)分量:元组中的一个属性值。分量:元组中的一个属性值。例如:张三秋、男等。例如:张三秋、男等。(7)关系模式:对关系的描述。关系模式:对关系的描述。一般表示为:关系名(属性一般表示为:关系名(属性1,属性,属性2,属性,属性n)例如:学生例如:学生(学号学号,姓名姓名,性别性别,出生年月出生年月,籍贯籍贯)(8)关关系系数数据据库库:就就是是由由一一个个或或一一个个以以上上的的关关系系或或二二维维表表彼彼此此关关联联组组成成的的。其其中中关关系系之之间间的的联联系系是是通通过过一一个个关关系系的的
8、候选键或主键与另一个关系的外键建立的。候选键或主键与另一个关系的外键建立的。例如:例如:班级班级(班级编号班级编号,班级名称,班长姓名,专业,系编号,班级名称,班长姓名,专业,系编号)学生学生(学号学号,姓名,性别,出生年月,籍贯,班级编号,姓名,性别,出生年月,籍贯,班级编号)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系关系模型的主要特点关系模型的主要特点学号学号姓名姓名性别性别年龄年龄系别系别S1S1赵亦赵亦女女1717计算机计算机S2S2钱尔钱尔男男1818信息信息S3S3孙珊孙珊女女2020信息信息S4S4李思李思男男2121自动化自动化S5S5周武周武男男19
9、19计算机计算机S6S6吴丽吴丽女女2020自动化自动化关系中每一分量不可再分,是最基本的数据单位。关系中每一分量不可再分,是最基本的数据单位。每列分量属性相同,列根据需要而设,各列的顺序可任意。每列分量属性相同,列根据需要而设,各列的顺序可任意。每一行由多个属性构成一个元组,各行的顺序可任意。每一行由多个属性构成一个元组,各行的顺序可任意。一一个个关关系系是是一一张张二二维维表表,不不允允许许有有相相同同的的属属性性名名,也也不不允允许许有有相相同同的元组。的元组。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系2.关系操作关系操作数数据据操操作作是是对对数数据据库库中中
10、各各种种数数据据操操作作的的集集合合,包包括括操操作作及相应的操作规则。及相应的操作规则。如:查询、插入、删除和修改。如:查询、插入、删除和修改。3.关系模型的完整性约束关系模型的完整性约束包括三种完整性约束:包括三种完整性约束:实体完整性实体完整性是是对对关关系系中中元元组组的的唯唯一一性性约约束束,即即对对主主键键的的约约束束,关关系系中的主键不能是空值且不能有相同值。中的主键不能是空值且不能有相同值。如:如:“学生学生”表中不允许有两个以上相同的学生编号存表中不允许有两个以上相同的学生编号存在,也不允许学生编号为在,也不允许学生编号为Null。教学进度教学进度教学进度教学进度计算机科学与
11、工程系计算机科学与工程系参照完整性参照完整性是是对对外外键键的的约约束束,关关系系中中的的外外键键必必须须是是另另一一个个关关系系的的主主键有效值或空值键有效值或空值(Null)。如如:“班班级级”表表与与“学学生生”表表是是一一对对多多关关系系,此此时时,“班班级级”表表中中的的班班级级编编号号是是主主键键,“学学生生”表表中中的的班班级编号级编号是外键,那么,外键的值必须是主键的有效值。是外键,那么,外键的值必须是主键的有效值。班级班级(班级编号班级编号,班级名称,班长姓名,专业,系编号,班级名称,班长姓名,专业,系编号)学生学生(学号,姓名,性别,出生年月,籍贯,学号,姓名,性别,出生年
12、月,籍贯,班级编号班级编号)用户自定义的完整性用户自定义的完整性用户自行定义的删除、更新、插入约束。用户自行定义的删除、更新、插入约束。如:在往学生表中插入数据时不允许学生编号和学生名如:在往学生表中插入数据时不允许学生编号和学生名称为称为Null,性别只能中,性别只能中“男男”或或“女女”等。等。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系关关系系代代数数是是一一种种抽抽象象的的查查询询语语言言,是是作作为为研研究究关关系系数数据据库库的的数数学学工工具具,是是数数据据库库原原理理和和计计算算机机数数据据库库应应用用的的基基础础。关关系系代代数数的的运运算算对对象象是
13、是关关系,运算结果亦为关系。系,运算结果亦为关系。2.2关系代数关系代数 关系代数的运算可分为两类:关系代数的运算可分为两类:1.传统的集合运算传统的集合运算2.专门的关系运算专门的关系运算教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系1.传统的集合运算传统的集合运算传传统统的的集集合合运运算算包包括括四四种种运运算算:并并()、交交()、差差()、广义笛卡尔积、广义笛卡尔积(X)。RS集合(1)并运算并运算关关系系R和和S的的并并将将产产生生一一个个包包含含R、S中中所所有有不不同同元元组组的的新关系,记作新关系,记作RS。关关系系R和和关关系系S必必须须要要有有相相同
14、同的的属属性性,并并且且对对应应属属性性要要有有相同的域。相同的域。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例如如:某某公公司司有有两两个个子子公公司司营营业业库库,现现要要对对全全公公司司营营业业情情况况进进行行统统计计,操操作作时时首首先先把把两两表表内内容容合合并并为为一一个个表表,再在一个表中进行统计,即求再在一个表中进行统计,即求:营业库营业库营业库营业库1营业库营业库2在进行并操作时,如有完全同的元组应只保留一个。在进行并操作时,如有完全同的元组应只保留一个。营业库1商品代商品代码子公司代子公司代码品名品名数量数量单价价1Comp1钢笔笔5010002
15、Comp1圆珠笔珠笔2006003comp1练习本本10003004comp1笔笔记本本1000800营业库2商品代商品代码子公司代子公司代码品名品名数量数量单价价1Comp2钢笔笔5010.005Comp2练习本本2003.006comp2信信笺10003.00营业库营业库1营业库营业库2运算结果运算结果商品代码商品代码字公司代码字公司代码品名品名数量数量单价单价1Comp1练习本本20010.002Comp1圆珠笔珠笔506.003Comp1练习本本10003.004Comp1笔笔记本本10008.001Comp2钢笔笔5010.005Comp2练习本本2003.006Comp2信信笺10
16、003.00教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例如如:有有在在职职职职工工和和离离退退休休职职工工两两个个表表,若若需需要要所所有有职工表,可利用并运算实现,即职工表,可利用并运算实现,即:新的职工表在职职工表新的职工表在职职工表离退休职工表离退休职工表教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系(2)差运算差运算所所有有属属于于关关系系R但但不不属属于于S的的元元组组组组成成的的新新关关系系,记记作作RS。R-S集合例例如如:要要将将下下面面的的成成绩绩表表中中有有关关“数数学学”科科目目的的元元组组删除,即求成绩表成绩表删除,即求
17、成绩表成绩表1成绩表成绩表2。成成绩1学号学号课名课名分数分数1数学数学801英语英语851政治政治902数学数学852英语英语802政治政治90成成绩2学号学号课名课名分数分数1数学数学802数学数学85学号学号课名课名分数分数1英语英语851政治政治902英语英语802政治政治90成绩表成绩表1成绩成绩2运算结果运算结果教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例如如:某某商商店店有有本本店店的的商商品品表表,接接到到不不合合格格商商品品表表后后,需要将本店的不合格商品去掉,可利用差运算实现。需要将本店的不合格商品去掉,可利用差运算实现。教学进度教学进度教学进度
18、教学进度计算机科学与工程系计算机科学与工程系(3)交运算交运算 属于属于R也属于也属于S的元组组成的新关系,记作的元组组成的新关系,记作RS。例例如如:在在输输入入学学生生成成绩绩时时,为为保保证证数数据据正正确确,常常让让两两人人重重复复输输入入成成绩绩数数据据,形形成成两两个个成成绩绩文文件件。由由于于两两人人同同时时对对同同一一学学生生成成绩绩输输入入出出错错而而且且输输入入的的错错误误数数据据完完全全一一样样的的概概率率几几乎乎为为0,因因此此认认为为,两两人人输输人人数数据据一一致致的的部部分分是是准准确确的的,即即求求成成绩绩1成成绩绩2,其其结结果果被被认认为为是是正确的。正确的
19、。成成绩1学号学号课名课名分数分数1数学数学801英语英语851政治政治902数学数学852英语英语802政治政治90成绩表成绩表1成绩成绩2运算结果运算结果成成绩1学号学号课名课名分数分数1数学数学801英语英语851政治政治922数学数学852英语英语802政治政治90学号学号课名课名分数分数1数学数学801英语英语852数学数学852英语英语802政治政治90RS集合教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例如如:某某商商店店有有本本店店商商品品表表,接接到到不不合合格格商商品品表表后后,需要找出本店不合格的商品,可利用交运算实现。需要找出本店不合格的商品,
20、可利用交运算实现。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系(4)笛卡尔积运算笛卡尔积运算R中中每每个个元元组组与与S中中每每个个元元组组连连接接组组成成的的新新关关系系,记记作作RS。如如果果关关系系R中中有有m个个元元组组,S中中有有n个个元元组组,则则RS中有中有mn个元组。个元组。由由于于R和和S中中可可能能存存在在相相同同的的属属性性名名,笛笛卡卡尔尔积积运运算算时时需需要要在在属属性性上上附附加加该该属属性性所来自的关系名称。所来自的关系名称。ABCABC a1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1
21、b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1R R S Sa1b1c1a1b2c2a1b2c2a2b2c1Ra1b2c2a1b2c2a1b3c2a2b2c1S S教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例如如:现现有有学学生生表表、必必修修课课程程表表,每每个个学学生生必必须须要要学学习所有必修课程,要求形成选课表,可利用乘运算实现。习所有必修课程,要求形成选课表,可利用乘运算实现。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系专门的关系运算:专门的关系运算:专门的关系运
22、算包括四种运算即选择专门的关系运算包括四种运算即选择()、投影、投影()、连接连接()和和除法除法(),是关系数据库数据维护、查询、统,是关系数据库数据维护、查询、统计等操作的基础。计等操作的基础。(1)选择选择从关系从关系R中选取符合条件的若干元组中选取符合条件的若干元组(行行)。选择操作可以表示为:选择操作可以表示为:()教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系选选择择条条件件是是由由比比较较运运算算符符构构成成的的简简单单表表达达式式,比比较较运运算算符对两个关系中具有相同含义的属性或常数进行比较。符对两个关系中具有相同含义的属性或常数进行比较。比较运算符:、
23、比较运算符:、选择条件也可以是由逻辑运算符构成的复杂表达式。选择条件也可以是由逻辑运算符构成的复杂表达式。逻辑运算符:逻辑运算符:Or(或或)、And(与与)、Not(非非)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例如:对下图中教室表进行选择操作。例如:对下图中教室表进行选择操作。星期星期=1(教室表教室表)使用使用SQL语言:语言:SELECT 教室编号,课程编号,教师编号,星期,课节教室编号,课程编号,教师编号,星期,课节FROM教室表教室表WHERE星期星期=1选择操作选择操作教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系(2)投影投影选
24、择关系选择关系R中的若干属性中的若干属性(列列),并去掉重复元组。选,并去掉重复元组。选取各个属性时不受关系中属性顺序的约束。取各个属性时不受关系中属性顺序的约束。投影操作可以表示为:投影操作可以表示为:()投影操作主要是从列的角度进行运算投影操作主要是从列的角度进行运算教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例如:对下图中教室表的教室编号、课程编号、教师编例如:对下图中教室表的教室编号、课程编号、教师编号、星期和课节号、星期和课节5个属性进行投影操作。个属性进行投影操作。教室编号,课程编号,教师编号,星期,课节教室编号,课程编号,教师编号,星期,课节(教室表教室表
25、)使用使用SQL语言:语言:SELECT 教室编号,课程编号,教师编号,星期,课节教室编号,课程编号,教师编号,星期,课节FROM教室表教室表投影操作投影操作教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系RS(3)连接连接 从两个关系的笛卡尔积中选取满足连接条件的元组。连从两个关系的笛卡尔积中选取满足连接条件的元组。连接操作是对两个关系进行连接,同时生成一个新关系。接操作是对两个关系进行连接,同时生成一个新关系。设设R和和S是任意两个关系,则是任意两个关系,则R与与S的连接操作定义为:的连接操作定义为:笛笛卡卡尔尔积积与与连连接接操操作作都都是是对对两两个个关关系系中中的
26、的元元组组进进行行组组合合;区区别别在在于于前前者者操操作作结结果果包包含含两两个个关关系系中中的的所所有有元元组组,连连接接操操作作结结果果仅仅包包含含那那些些满满足足条条件件的的元元组组。如如果果没没有有连连接接条条件件或或无无条条件件连连接接,则则连连接接与与笛笛卡卡尔积的操作结果相同。尔积的操作结果相同。RS一般的连接操作是从行的角度进行运算一般的连接操作是从行的角度进行运算教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系通通常常将将不不包包含含冗冗余余属属性性的的等等值值连连接接称称为为自自然然连连接接,一一般般的的连连接接操操作作是是从从行行的的角角度度进进行行
27、运运算算。但但自自然然连连接接还还需需要要取取消重复列,所以是同时从行和列的角度进行运算。消重复列,所以是同时从行和列的角度进行运算。关关系系的的自自然然连连接接操操作作是是最最常常用用的的一一种种连连接接,也也是是关关系系数数据库中最重要的一种操作。据库中最重要的一种操作。等等值值连连接接:如如果果连连接接条条件件中中的的所所有有比比较较运运算算符符都都是是“=”,则将此种连接称为相等连接。,则将此种连接称为相等连接。(条件连接的特例条件连接的特例)连连接接运运算算中中有有两两种种最最为为重重要要也也最最为为常常用用的的连连接接,一一种种是是等值连接,另一种是自然连接。等值连接,另一种是自然
28、连接。教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例例2.11设设表表(a)和和(b)分分别别为为关关系系R和和关关系系S,表表(c)为为一一般般连连接接的的结结果果,表表(d)为为等等值值连连接接的的结结果果,表表(e)为自然连接的结果。为自然连接的结果。ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310(c)一般连接一般连接 RC=85课课程程(e)等值连接等值连接 选课选课选课选课.课程编号课程编号=课程课程.课程编号课程编号课
29、程课程(e)自然连自然连接接 选课选课课程课程教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系应应用用举举例例:设设学学生生信信息息数数据据库库中中包包含含表表(a)、(b)、(c)三三个个表表,应应用用关关系代数系代数完成下列条件的完成下列条件的查询。查询。学号学号课程编号课程编号教师编号教师编号成绩成绩050102030013001180050102033333000478050101030013001188050101033563000198050105030013001181050105033573000186课程编号课程编号课程名课程名学时学时03001大学英语大
30、学英语6403333高等数学高等数学6003356计算机基础计算机基础6003357VB程序设计程序设计64教师编号教师编号姓名姓名职务职务30001王莉王莉助教助教30004张琦张琦讲师讲师30011刘慧英刘慧英讲师讲师(a)选课选课(b)课程课程(c)教师教师例例2.13查询选修了课程编号为查询选修了课程编号为“03001”或者或者“03356”的学生的学的学生的学号。号。例例2.14查询学生学号为查询学生学号为“050102”选修而学号为选修而学号为“050101”没有没有选修的课程编号。选修的课程编号。例例2.15查询教授学生学号为查询教授学生学号为“050102”所有教师的姓名和他们
31、的职务。所有教师的姓名和他们的职务。学号学号(课程编号课程编号=02001(选课选课)(课程编号课程编号=03356(选课选课)或或学号学号(课程编号课程编号=02001课程编号课程编号=03356(选课选课)课程编号课程编号(学号学号=050102(选课选课)学号学号=050101(选课选课)姓名,职务姓名,职务(学号学号=050102(选课选课)(课程课程)(教师教师)教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系例题,学生选课库的关系模式为:例题,学生选课库的关系模式为:学生学生(学号,姓名,性别,年龄学号,姓名,性别,年龄)选课选课(学号,课程编号,成绩学号,课程
32、编号,成绩)(1)求选修了课程号为求选修了课程号为“C2”课程的学生学号。课程的学生学号。学号学号(课程号课程号=C2(选课选课)(2)求选修了课程号为求选修了课程号为“C2”课的学生学号和姓名。课的学生学号和姓名。学号,姓名学号,姓名(课程号课程号=C2(选课选课)(学生学生)(3)求没有选修课程号为求没有选修课程号为“C2”课程的学生学号。课程的学生学号。学号学号(学生学生)学号学号(课程号课程号=C2(选课选课)不能写为:不能写为:学号学号(课程号课程号C2(选课选课)(因为可能还有部分学生尚未选课,此答案不够准确因为可能还有部分学生尚未选课,此答案不够准确)教学进度教学进度教学进度教学
33、进度计算机科学与工程系计算机科学与工程系例题,学生选课库的关系模式为:例题,学生选课库的关系模式为:学生学生(学号,姓名,性别,年龄学号,姓名,性别,年龄)选课选课(学号,课程编号,成绩学号,课程编号,成绩)(4)求既选修求既选修“C2”课程,又选修课程,又选修“C3”课程的学生学号。课程的学生学号。学号学号(课程号课程号=C2(选课选课)学号学号(课程号课程号=C3(选课选课)(5)求选修课程号为求选修课程号为“C2”或或“C3”课程的学生学号。课程的学生学号。学号学号(课程号课程号=C2(选课选课)学号学号(课程号课程号=C3(选课选课)或或学号学号(课程号课程号=C2课程号课程号=C3(选课选课)(该题不能写为:该题不能写为:学号学号(课程号课程号=C2课程号课程号=C3(选课选课)