主编张迎新出版社机械工业出版社第二章关系数据库1学习目的1、掌握关系模型的基本概念2、掌握实体完整性和参照完整性的概念3、理解关系模型实现数据联系的方法和关系数据库结构特点4、掌握关系代数运算,能够根据实际问题写出关系代数表达式5、了解函数依赖、完全函数依赖、传递函数依赖、第一范式、第二范式、第三范式等概念,能够判断关系的规范化程度,并可将关系规范化到第三范式。2第一节关系数据库的基本概念第二节数据完整性规则第三节关系模型实现数据联系的方法第四节关系代数第五节关系的规范化3一、关系(Relation)二、关系的性质三、数据类型四、键(Key)4关系模型用二维表表示实体集,利用公共属性实现实体之间的联系。一个关系数据库由若干个表组成,表与表之间通过在一个表中包含另一个表的主题(公共属性)的方法实现数据之间的联系。5+单一的数据结构----关系–现实世界的实体以及实体间的各种联系均用关系来表示+数据的逻辑结构----二维表–从用户角度,关系模型中数据的逻辑结构是一张二维表。678关系(Relation)关系模型的数据结构单一,是一种二维表格结构。以关系模型建立的数据库就是关系数据库学生信息表学号姓名性别出生年月200942070401吴迪男02-28-80200942070402张杨男06-09-81200942070403李子凡女11-19-82200942070404舒舍予男05-01-80200942070405高大全男11-06-809表结构学号姓名性别出生年月200942070401吴迪男02-28-80200942070402张杨男06-09-81200942070403李子凡女11-19-82200942070404舒舍予男05-01-80200942070405高大全男11-06-80记录字段表:实体集。即同一类实体。记录(行):一个具体的实体。字段(列):实体的属性表的结构(表头):实体型。关系数据库10关系(Relation)二维表元组(Tuple)行属性(Attribute)列域(Domain)属性的取值范围称为域,如性别为“男”或“女”,月份为1~12等。键(Key)唯一标识实体的属性集称为(主)键(关键字),也称码。如教师编号,学生学号。外键(表A中的一个字段不是A的(主)键,但是另一个表中的(主)键)关系模式关系名(属性名1,属性名2,…,属性名n)例如:学生信息(学号,姓名,性别,出生年月)11关系是一种规范化的二维表,在关系模型中,关系必须满足下列性质:1)每一列中所有数据都是同一类型的,来自同一个域。2)每一列都有唯一的列名3)列名在表中的顺序无关紧要4)表中任意两行不能完全相同5)行在表中的顺序也是无关紧要的6)行与列的交叉点上必须是单值的(不能有一组值)12在定义表的结构时,必须确定列的数据类型。主要的类型有:1、数值2、字符3、日期4、逻辑实际上,DBMS系统具有更丰富的数据类型。例如,Access数据库系统中有短文本、长文本、数字、日期/时间、货币、自动编号、是/否、OLE对象、超链接、附件、计算、查阅向导等十几种数据类型。13在一个关系中任意两个元祖都不允许在键上具有相同的值。在概念上,键可以分为超键、候选键、主键和外键。1、超键(SupperKey)凡是能够唯一标识一个元祖的属性或属性组,均称为超键。超键能够唯一地标识关系的一个元祖,但是某些超键中可能包含多余的属性。2、候选键(CandidateKey)候选键是最小超键,它的任意真子集都不能成为主键。3、主键(PrimaryKey)在一个关系中可能存在多个候选键,选取其中一个候选键作为主键。主键用于唯一地标识关系的每一个元祖。在关系模型中,每一个关系必须有有一个主键,且主键的值是唯一的。主键是一个非常重要的概念。能够成为候选键的属性称为主属性,否则称为非主属性。4、外键(ForeignKey)在关系数据库中,通过在一个表中包含另一个表主键(公共属性)的方法实现数据之间的联系。1415+数据完整性是指数据的准确性和有效性+数据完整性规则–一组完整性规则的集合。–完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。16+数据模型对约束条件的定义–反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。–提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。17一、实体完整性(EntityIntegrity)二、参照完整性(ReferentialIntegrity)三、用户定义完整性(User-definedIntegrity)18实体完整性参照完整性用户定义完整性关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。1、主键的字段不能为空2、主键字段值唯一不引用不存在的实体根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。19一.实体完整性(EntityIntegrity)+指主关系键的值不能为空或部分为空。+关系模型中的一个元组对应一个实体,一个关系则对应一个实体集。例如,一条学生记录对应着一个学生,学生关系对应着学生的集合。20二.参照完整性(Referentialintegrity)+如果关系R2的外部关系键X与关系R1的主关系键相符,则X的每个值或者等于R1中主关系键的某一个值,或者取空值。如下图所示,学生关系中某个学生(如s1)“系别”的取值,必须在参照的系别关系中主关系键“系别”的值中能够找到,否则表示把该学生分配到一个不存在的部门中,显然不符合语义。如果某个学生(如s11)“系别”取空值,则表示该学生尚未分配到任何一个系。否则,它只能取专业关系中某个元组的专业号值21S(学生关系)D(系别关系)图学生表和系别表SNO学号SN姓名SEX性别AGE年龄DEPT所在系DEPT所在系ADDR地址S1赵亦女17计算机计算机1号楼S2钱尔男18信息信息1号楼…自动化2号楼S11王威男1922三.用户定义完整性(User-definedIntegrity)+用户定义完整性是针对某一具体关系数据库的约束条件。+它反映某一具体应用所涉及的数据必须满足的语义要求。+例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。23关系模型的基本结构是表(Table),表又称为关系。表是由行/列组成的矩阵,表与表之间的联系是通过公共属性(外键)实现的。两个不同的表,各自有许多相同或不同的属性(字段),可以通过这两个表的公共属性(如果有的话)建立两个表之间数据的联系。这个“公共属性”是一个表的主键和另一个表的外键,这是关系数据模型实现数据之间联系的主要特点。2425关系代数运算是以一个或者两个关系作为输入,生成一个新关系的运算。关系代数的5种基本运算:选择、投影、并、差、笛卡尔积关系代数的3种扩展运算:交、联接、除(3种扩展运算可以用基本运算定义)关系代数运算时关系操作的理论基础,学习关系代数运算的概念有利于理解关系数据库操作的基本原理。26273、差(Difference):RS={t|t∈R∧t∈S}第一类、传统的集合运算1、并(Union):RS={t|t∈R∨t∈S}2、交(Intersection):RS={t|t∈R∧t∈S}关系代数的运算对象是关系,运算结果也为关系。其运算按运算符的不同也可分为如下两类:(可略讲)4、笛卡尔积(广义):RS={trts|tr∈R∧ts∈S}28第二类、专门的关系运算1、选择(Selection),又称限制(Restriction)(R):F在关系R中选出满足条件F的所有元组形成一个新关系。条件表达式2、投影(Projection)(R)A:在R中选出若干属性列组成一个新关系。属性组投影后若有重复行,则自动保留一个从行的角度的运算从列的角度的运算29当为等号且A、B两属性相同时,称为自然连接,记作3、连接(Join)RSAB:从两个关系的笛卡尔积中选取属性间满足条件AB的元组。R中属性S中属性比较运算符说明:RSAB=(RS)ABRS自然连接将去掉重复属性连接是同时处理多个关系的重要运算若仅有为等号的条件,称为等值连接30?4、除(Division)R(X,Y)S(Y,Z):把R按X的值分组,若某一组中属性组Y的值包含S在Y上投影的全部元组,则该X的值作为商关系的一个元组属性组例:求至少选修C1、C3课程的学生号码设一临时关系K:C#C1C3关系代数表达式(SC)K=S#,C#{S1,…}S#C#GS1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C1BS4C3ASC:按S1分组(包含C1、C3)31?4、除(Division)R(X,Y)S(Y,Z):把R按X的值分组,若某一组中属性组Y的值包含S在Y上投影的全部元组,则该X的值作为商关系的一个元组属性组例:求至少选修C1、C3课程的学生号码设一临时关系K:C#C1C3关系代数表达式(SC)K=S#,C#{S1,…}S#C#GSC:按S2分组S1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C1BS4C3A(不包含C1、C3)32?4、除(Division)R(X,Y)S(Y,Z):把R按X的值分组,若某一组中属性组Y的值包含S在Y上投影的全部元组,则该X的值作为商关系的一个元组属性组例:求至少选修C1、C3课程的学生号码设一临时关系K:C#C1C3关系代数表达式(SC)K=S#,C#{S1,…}S#C#GSC:按S3分组S1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C1BS4C3A(不包含C1、C3)334、除(Division)R(X,Y)S(Y,Z):把R按X的值分组,若某一组中属性组Y的值包含S在Y上投影的全部元组,则该X的值作为商关系的一个元组属性组例:求至少选修C1、C3课程的学生号码设一临时关系K:C#C1C3关系代数表达式(SC)K=S#,C#S#C#GSC:按S4分组S1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C1BS4C3A{S1,S4}(包含C1、C3)1、关系代数的5种基本运算:选择、投影、并、差、笛卡尔积2、关系代数的3种扩展运算:交、联接、除341、选择(Select)2、投影(Project)3、并(Union)4、差(Difference)5、笛卡尔积(Product)6、基本关系代数的应用选择和投影是对一个关系进行运算,称为一元运算。并、差和笛卡尔积是对两个关系进行运算,称为二元运算。3536选择运算时从关系中选择某些满足条件的元祖构成一个新的关系。选择(Selection),又称限制(Restriction)记作:σ条件表达式(R)=σF(R),其中σ是选择运算符,条件表达式是以下标形式表达的选择条件,括号中的R是关系名。条件表达式是由算术运算符(+、-、х、÷)、比较运算符(、=、、≤、≥、≠)、逻辑运算符(OR、AND、NOT)、属性名和常亮有效结合构成的表达式。例2.2(教材P39--40)检索客户编号为“C1”的订单信息。σ客户编号=“C1”(订单)运算结果如图2.8a所示。37从行的角度的运算例2.3检索客户编号为“C1”,且订单状态为“完成”的订单信息。σ客户编号=“C1”AND订单状态=“完成”(订单)运算结果如图2.8b所示。38订单号签单日期发货日期客户编号送货地址收货人订单