关系数据库理论与设计初步.ppt
1,第2章 关系数据库理论与设计基础,关系模型关系代数完整性约束,2,2.1 实体-联系(E-R)模型,(1)实体、实体型、实体集实体(Entity):客观存在并可相互区别的事物称为实体。实体型(Entity Type):具有相同属性的实体所共有的共同的特征和性质。用实体名及其属性集来抽象和刻画,同类实体的抽象称为实体型。实体集(Entity Set):同型实体的集合。,1.实体、属性与联系,3,(2)属性、域、码属性(Attribute):实体所具有的某一特性称为属性,一个实体可由若干个属性来刻画。域(Domain):属性的取值范围称为该属性的域码(Key):能唯一标识实体的属性集称为码,2.1 实体-联系(E-R)模型,4,2.1 实体-联系(E-R)模型,5,2.1 实体-联系(E-R)模型,6,(3)联系Relationship),2.1 实体-联系(E-R)模型,一对一联系(1:1)一对多联系(1:n)多对一联系(n:1)多对多联系(m:n),7,关系模型是用二维表格结构来表示实体及实体之间联系的模型。在关系模型中,表被称为关系表。表可以代表实体集,表中一行表示一个实体。表也可以代表联系集。表中一行表示一条联系。表中的一行称为一个元组。,2.2 关系模型,2.2.1 关系基本概念,(1)二维表,8,(2)域二维表中每个属性的取值有一个允许的范围,称为该属性的值域(简称域)。,域中数据个数称为域的基数。例:D1=(教授,副教授,讲师,助教)基数为4;D2=(男,女);基数为2;,2.2 关系模型,D1D2,9,(3)笛卡尔积乘积定义 设有一组域D1,D2,Dn,这些域可以部分或者全部相同。域D1,D2,Dn的笛卡尔乘积(Cartesian Products)定义为如下集合:D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n其中每一个元素(d1,d2,dn)称为一个元组;换句话说,笛卡尔积是分别从每个域中任意取一个值所构成的所有元组的集合。笛卡尔积中包含了全部可能的元组。,2.2 关系模型,10,(4)关系D1D2Dn的子集就是域D1,D2,Dn上的关系。用R(D1,D2,Dn)表示。R为关系名。,关系模式一般表示为:R(A1,A2,An);其中A1,A2,An为R的各属性名。,2.2 关系模型,一个关系包含型(属性)和值,其中型被称为关系模式,型式相对静止的。一般将关系模式也称为关系。,例如:student(学号,姓名,性别,出生日期);teacher(员工号,姓名,职称,院系,性别);,11,关系代数是一种查询语言,是关系数据库数据操作语言之一。关系代数包括一个运算集合,这些运算以一个或多个关系作为输入,产生一个新的关系作为结果。对一个关系进行运算是一元运算,对两个关系进行运算是二元运算。,2.2.2 关系代数,2.2 关系模型,关系代数运算分为两类:传统的集合运算:、-;专门的关系运算:选择()、投影()、广义笛卡儿积()、自然连接()、商();,12,(1)传统的集合运算:设:R=t t R 是元组t的集合。逻辑运算符:(与)、(或)、(非);,假设关系R和关系S具有相同的属性。并:RS=t t R tS差:R-S=t t R t!S 交:RS=t tR tS,2.2 关系模型,13,2.2 关系模型,14,选择运算()根据某些条件对关系做水平分割,即选取符合条件的元组。是一元运算,进行行选择。,其中,F是形如:的逻辑表达式。和可以是属性名,也可以是常数,称为算子。包括:、=、;and、or等运算符,2.2 关系模型,(2)专门的关系运算,15,例1:关系R(A,B,C),设F:B3;,2.2 关系模型,例2:在关系teacher(员工号,姓名,性别,职称,院系)中查询职称为“教授”的“计算机系”的教师。该查询语句为:职称=“教授”and 院系=“计算机系”(teacher)。,16,投影(),其中:A是属性名表,设R(A1,A2,Ak);,例1:,C,B(R),2.2 关系模型,对一个关系进行垂直分割,消去某些列,并重新安排列的顺序,记为:A(R)。,17,其中:代表r和s拼接而成的新元组;注意:RS有n+m个属性的关系;有k1k2个元组。,广义笛卡儿积()设关系R有m个属性,关系S有n个属性,并且R有k1个元组,S有个k2元组。,2.2 关系模型,作用:可以将两个表“合并”成一个表。,RS=tt=rRsS,18,按相同属性等值连接且相同属性名只取一次。关系R有n个属性,关系S有m个属性,R与S中有共同的属性组:B1,B2,Bk(n=k 且m=k),它们在R中的序号为i1,i2,ik,在S中的序号为j1,j2,,jk,=S-,自然连接(),2.2 关系模型,19,方法:相当于完成三件事:(1)做RS;(2)在RS上选择同时满足R.Bi=S.Bi的所有元组(i=1,,k);(3)去掉重复属性(做投影);,2.2 关系模型,自然连接(),20,RS,自然连接(),21,例:在下面的数据库中,student SC的结果是什么?SC course的结果是什么?,22,设关系R有n个属性,关系S有m个属性,且 n m,S。另外,S中的m个属性名与R中的m个属性名相同。,T=RS=tt=若sS,则R,关系的商运算(),2.2 关系模型,23,方法:设有两个关系R(X,Y)与S(Y),X和Y为属性组,Y是R和S中相同的属性组,将R中元组按属性组X的不同值分组,组成元组组。每一组在X上的投影分别为x1,x2,,xk,当第i 组在Y上的投影包含关系S时,则xi是RS的一个元组,(i=1,2,k)。,关系的商运算(),24,a1 b1a3 b3,关系的商运算(),25,a2 b1a1 b2,关系的商运算(),26,(3)用关系代数表示关系模型中基本操作的实现,关系模型的基本操作包括:选择一些指定的属性;选择满足某些条件的元组;多个关系合并成一个关系,按单表查询。在关系中插入新的元组;在关系中删除一些元组;,关系属性的指定:,设关系R(A1,A2,A3,An),关系的元组选择:F(R),A1,A2,AK(R),2.2 关系模型,27,两个关系R1和R2的合并:,关系R中元组的插入:将要插入的元组构成关系R,运算RR实现R中所有元素的插入。,关系R中元组的删除:将要删除的元组构成关系R,且R R,运算:R-R可以实现R中所有元组的删除。,R1 R2,2.2 关系模型,28,T=学号(课号=2(SC);,(4)用关系代数运算进行查询,2.2 关系模型,T=姓名,成绩(课程名=数据库(course)SCstudent),设有3个关系表student(学号,姓名,性别,年龄,院系)、course(课号,课程名称,学分)和SC(学号,课号,成绩)。查询选修了2号课程的学生学号。查询选修了2号课程的学生姓名和成绩。查询选修了数据库课程的学生姓名和成绩。查询王敏所学的所有课程的课程名和成绩。,T=姓名,成绩(课号=2(SC)student),T=课程名,成绩(姓名=王敏(student)SC course),29,2.3 完整性约束,(1)域完整性,数据完整性指数据的精确性和可靠性。数据完整性包括:域完整性、实体完整性和参照完整性。,关系中的每一个属性对应于一个取值范围域,例1:在student关系中,要求学号的取值是10位的数字字符串。,控制字段输入数据的格式,属性的取值需要满足特定的要求。,在VFP中的实现方法:输入掩码和设置字段有效性。,30,例2:在kc(课程编号,课程名称,学时数,学分)中;“学分”只能取值1,2,3,4,5,6,7。“课程名称”不能取空值;,字段有效性规则设置。,31,在VFP中实现的方式是:将A设置为主索引。例1:在student表中,学号是码,即数据库表中的主索引。例2:在cj(学号,课程编号,学期,学年,成绩)中;学号+课程编号是码。,若属性A是关系R的码,则属性A不能取空值并且值不能重复。,(2)实体完整性,2.3 完整性约束,32,(3)参照完整性在数据库中会存在同一个属性在两个表中都出现的情况。这个属性在两个表中的地位有所不同。定义:设A是关系R的属性(组),但不是R的码,如果A是另一个关系S的码,则称A是R的外码,并称R为参照关系,S为目标关系(被参照关系)。,2.3 完整性约束,33,2.3 完整性约束,学生关系,专业号为外码,参照关系,例1:学生(学号,姓名,性别,专业号);专业(专业号,专业名);,目标关系,34,参照完整性,2.3 完整性约束,参照完整性是指相关联的两个表之间的约束。即:参照关系表中每条记录外码的值必须是目标关系表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。,例1:在关系学生中,专业号可以取两种值:,学生(学号,姓名,性别,专业号);专业(专业号,专业名);,空值;表示目前还没有选定专业;非空值;在专业关系中,一定有一个元组有该专业号;,若属性(组)A是关系R的外码,且A是关系S的主码,则对R中的每个元组在A上的值或者取空值,或者等于S中某个元组的主码值。,35,例2:在选修关系中看学号的两种情况:,学生(学号,姓名,性别,所在系,年龄);课程(课程号,课程名,学分);选修(学号,课程号,成绩);,空值:此时课程号和成绩都为空。非空值:在学生关系中一定能找到相应的元组,2.3 完整性约束,36,参照完整性在VFP中实现的方式定规则,例:设在学生表和选修表之间用学号建立关联,学生表是父表,选修课是子表,更新规则:如果修改父表中主码的值,则子表中相应记录的外码值也随之被修改,将此称为级联更新。,插入规则:向子表中输入一条新记录时,系统要检查新记录的学号是否在父表中已存在,如果存在,则允许执行输入操作,否则拒绝输入。,删除规则:如果删除父表中的一条记录,则子表中凡是外码的值与父表的主码值相同的记录也会被同时删除,将此称为级联删除;,37,鼠标右键,38,(1)在Visual FoxPro中,建立数据库表时,将年龄字段值限制在1240岁之间的这种约束属于()A)实体完整性约束;B)域完整性约束;C)参照完整性约束;D)视图完整性约束;,本章练习,(2)Visual FoxPro的参照完整性规则不包括()A)更新规则;B)删除规则;C)查询规则;D)插入规则,(3)将E-R图转换到关系模式时,实体与联系都可以表示成()。A)属性;B)关系;C)码;D)域;,39,(4)按条件f对关系R进行选择,其关系代数表达式为()。A)R R;B)RXR;C)f(R);D)f(R);,(5)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()A)并;B)交;C)投影;D.笛卡儿乘积;,(6)在E-R图中用来表示实体之间联系的图形是()A)矩形;B)椭圆形;C)菱形;D)平行四边形,40,(7)“商品”与“顾客”两个实体集之间的联系一般是A)一对一;B)一对多;C)多对一;D)多对多;,(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是()A)1:1联系;B)1:m联系;C)m:1联系;D)m:n联系,9)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是()A)一对一;B)一对多;C)多对多;D)多对一;,41,10)参照完整性规则包括更新规则、删除规则和_规则。,11)设有表示学生选课的3张表,学生S(学号,姓名,性别,年龄,身份证号);课程C(课号,课名);选课SC(学号,课号,成绩);则表示SC的码(键或关键字)为();A)学号;B)学号,成绩;C)学号,课号;D)学号,姓名,成绩;,42,12)有三个关系R、S利T如下:,则由关系R和s得到关系T的操作是()。A)自然连接;B)差;C)交;D)并;,43,(13)有三个关系R、S和T如下:,则由关系R和S得到关系T的操作是()A)自然连接;B)交;C)除;D)并,44,(14)有2个关系R、S如下:,由关系R通过运算得到关系S,则所使用的运算为()A)选择;B)投影;C)插入;D)连接,45,15)有三个关系R、S利T如下:,由关系R和S通过运算得到关系T,则所使用的运算为()A)笛卡尔积;B)交;C)并;D)自然连接,46,16)有三个关系R、S利T如下:,由关系R和S通过运算得到关系T,则使用的运算为()A)并B)自然连接C)笛卡尔积D)交,47,