1、,第二章 关系数据模型,教学内容 掌握关系数据模型的基本概念 理解关系数据库实现联系的方法 理解关系完整性规则的含义 熟悉使用关系代数表示查询的方法 教学重点 关系代数 教学难点 关系数据库实现联系的方法,关系,定义 关系(Relation)是一个属性数目相同的元组集合,关系,元组,属性,属性域男,女,关系,关系模式 由关系名和关系的属性集合组成,用于描述关系的框架结构 如:学生(学号,姓名,性别,班级名称) 关系的性质 P21,码,码(Key)由一个或多个属性组成 分类 超码:能够唯一标识一个元组的属性或属性组 候选码:最小的超码,其任意真子集均不能成为超码 主码:用户选为元组标识的候选码,
2、关系数据库的联系,外码 如果一个关系的属性或属性组是另一个关系的主码,则该属性或属性组称为该关系的外码 外码是关系数据库实现数据之间联系的方法,联系,主码,外码,关系完整性规则,实体完整性 主码非空 参照完整性 不含无效外码,外码可以为空 用户定义完整性 如:规定将成绩限制在0100之间,数据字典与系统目录,数据字典中包括数据库中表的结构信息、索引、用户、完整性约束、安全性约束等信息,以保证数据库系统正确运行 系统目录是为系统建立的数据库,也是以表的形式来存储 P26图2.8,关系代数,关系代数是以关系为运算对象的一组高级运算的集合 分类:一元运算、二元运算,输入,运 算,输出,输入,输入,运
3、 算,输出,选择,一元运算,从关系中选择满足条件的元组构成一个新的关系 形式定义:F(R)=t|tRF(t)=true 为选择运算符,F为选择条件,R为关系 t为元组,为逻辑与运算,性别=男(学生),投影,一元运算,从关系中选择某些属性列构成一个新关系 形式定义:A(R)=tA|tR A为关系R中的属性列集,姓名,班级(学生),并,二元运算,将两个相容关系的所有元组构成一个新关系 所谓相容是指两个关系的属性数目相同,且相应属性的性质(属性域)相同 形式定义:RS=t|tRtS 为逻辑或运算,差,二元运算,将两个相容关系R和S中属于R但不属于S的元组构成一个新关系 形式定义:R-S=t|tRtS
4、,笛卡尔积,二元运算,设关系R和S的属性数分为m和n,则R和S的笛卡尔积是一个具有m+n个属性的新关系,其中每个元组的前m个属性来自R的一个元组,后n个属性来自S的一个元组 形式定义 RS=t|t=tmRtnS,笛卡尔积,例2.6:有学生和必修课关系,规定每一名学生必须学习所有必修课程,试通过关系代数计算出该学习关系 学生(学号,姓名) 必修课(课号,课程名,学分) 学习(学号,姓名,课号,课程名,学分) 学习=学生必修课,笛卡尔积,学习关系,交,二元运算,将同属于两个相容关系的元组构成一个新关系 形式定义: RS=t|tRtS,连接,二元运算,是将两个关系的笛卡尔积中满足连接条件的元组构成一
5、个新关系,连接条件F的一般形式为:逻辑运算符逻辑运算符逻辑运算符 逻辑运算符包括: 与,或,非 每个条件一般表示为AiBj Ai是R的一个属性,Bj是S的一个属性,是一个比较运算符(=,) 一般将,称为连接,连接,等值连接 为=的连接运算 自然连接,计算RS 设R和S的公共属性为A1,Ak,从RS中选择满足R.A1=S.A1R.Ak=S.Ak的元组 去掉S.A1,S.Ak,连接,例2.8:使用自然连接列出学生和所在系的信息,外连接,特点:在连接运算结果中保留非匹配的元组,非匹配部分填上NULL 分类 左外连接 右外连接 全外连接,左外连接,例2.9:查询学生学习状况,包括没有选课的学生,右外连
6、接,例2.10:查询所开课程的选修状况,包括没有任何人选修的课程,全外连接,例2.11:查询研究生和教师的情况,包括没有指派导师的研究生和没有指导研究生的教师,除,给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不相同的属性名,但必须出自相同的属性域。 RS得到一个新的关系P(X),P是R中满足下列条件的元组在X属性组上的投影 元组在X上分量值x的像集Yx包含S在Y上投影的集合 RS=tX|tRY(S)Yx Yx=tY|tRtX=x,除,例:设有一个学生选课关系R,找出同时选修C101和C104两门课程的学号,RS,确定Y为课号,X为学号 计算R中X可以取三
7、个值S1,S2,S3 S1的像集为C101,C104,C108 S2的像集为C101,C104 S3的像集为C104,C108 Y(S)=C101,C104,关系运算的组合,例2.12:查询所有女同学的信息 性别=女(学生) 例2.13:查询所有学生的姓名和专业 姓名,专业(学生) 例2.14:在关系R中插入一个元组 学生992311,王光明,男,会计学 例2.15:列出所有女同学的姓名和专业 姓名,专业(性别=女(学生) 例2.16:列出所有女同学的姓名和系名称,用关系代数表示查询,例2.17:查询管理专业的学生 例2.18:查询管理专业学生的学号和姓名 例2.19:列出选修的学生名单(学号和姓名),