《数据库原理与应用第二章课件》由会员分享,可在线阅读,更多相关《数据库原理与应用第二章课件(24页珍藏版)》请在金锄头文库上搜索。
1、第第2章章 关系数据库简介关系数据库简介l2.1 关系数据结构及形式化定义关系数据结构及形式化定义l2.2 关系代数和关系演算关系代数和关系演算l2.3 关系的完整性关系的完整性2.1 关系数据结构及形式化定义关系数据结构及形式化定义l2.1.1 关系关系 关系是笛卡尔积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为加以区分,必须给每列起一个唯一的名字,称为属性。l2.1.2 关系模式关系模式 关系的描述称为关系模式,它可以形式化地表示为 R(U,D,DOM,F)。其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域的集合,DOM为属
2、性向域的映像集合,F为属性间的依赖关系集合。 关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它用对关系的运算来表达查询要求。关系演算用谓词来表达查询要求。 关系代数的运算按运算符的不同,主要分为传统的集合运算和专门的关系运算两类。l(1)传统的集合运算包括并、交、差、广义笛卡尔积4种运算。该类运算将关系看成元组的集合,以元组作为集合中的元素来进行运算,其运算是从关系的“水平”方向即行的角度来进行。l(2)专门的关系运算包括选择、投影、连接、除等。该类运算不仅涉及行运算,而且涉及列运算,是为数据库的应用而引进的特殊运算。l关系演算是以数理逻辑中的谓词演算为基础的。按谓词变元
3、的不同,关系演算可分为元组关系演算和域关系演算。2.2 关系代数和关系演算关系代数和关系演算AB Ca1a1a2b1 b2b2c1c2c1AB Ca1a1a2b2 b3b2c2c2c12.2 关系代数和关系演算关系代数和关系演算 (a) 关系关系R (b) 关系关系S 以下例题均基于下面两个关系R和S。l2.2.1关系代数关系代数l1并并设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的所有元组组成。记为:RS=t | tRtS 即R和S的所有元组合并,删去重复元组,组成一个新关系,其结果关系仍为n目关系。2.2 关系代数
4、和关系演算关系代数和关系演算2.2 关系代数和关系演算关系代数和关系演算l【例2-1】 对上面的关系R和S进行并运算,即RS,结果如图所示。 图 RSAB Ca1a1a2a1b1b2b2b3c1c2c1c2l2差差 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。记为: 其结果关系仍为n目关系,由属于R但不属于S的所有元组组成。关系的差操作对应于关系的删除记录的操作,是关系代数的基本操作。2.2 关系代数和关系演算关系代数和关系演算2.2 关系代数和关系演算关系代数和关系演算l【例2-2】对上面的关系R和S进行差运算,即RS,结果
5、如图所示。图 RSAB Ca1b1 c1l 3交交 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的所有元组组成。记为:RS=t | tRtS 其结果关系仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示,即RS=R(RS) 或RS=S(SR) 2.2 关系代数和关系演算关系代数和关系演算2.2 关系代数和关系演算关系代数和关系演算 关系的交操作对应于寻找两关系共有记录的操作,是一种关系查询操作。关系的交操作只能用差操作来代替,不是一个独立的操作,因此不是关系代数的基本操作。l【例2-3】 对上面的关系R和S进行交运算,即RS,
6、结果如图所示。图 RSAB Ca1a2b2b2c2c1l 4笛卡尔积笛卡尔积 R与S的笛卡尔积是用R中的每个元组与S中每个元组相结合组成一个新的关系。新的关系度为R与S度之和,元组为R与S元组数之乘积。 设有关系R和S,它们分别是r目和s目关系,并且分别有p和q个元组。关系R、S经笛卡尔积运算的结果T是一个rs目关系,共有pq个元组,这些元组是由R与S的元组组合而成的,结果的前r列是关系R的元组,后s列是关系S的元组。 l关系R与S的笛卡尔积运算用RS表示,形式定义如下:l笛卡尔积运算可以用于两张表的横向合并。2.2 关系代数和关系演算关系代数和关系演算l专门的关系运算专门的关系运算l 从一个
7、关系中找出用户所需要的数据,就要使用关系数据库管理系统提供的专门的关系运算。关系运算主要包括选择、投影、连接和除运算。l1选择选择 选择又称为限制(restriction)或筛选,它是从一个关系R中选出满足给定条件F的记录的操作。选择是从行的角度进行的运算,选出满足条件的那些记录构成原关系的一个子集。记为:F(R)=t|tRF(t)=真 2.2 关系代数和关系演算关系代数和关系演算2.2 关系代数和关系演算关系代数和关系演算l【例2-4】若从学生关系表R1中找出所有女同学,则可按如下条件对学生关系进行选择操作: l Ssex=女(R1)l R1 Ssex=女(R1) 操作结果SnoSnameS
8、sexSdept011001王力王力男男计算机计算机021002李梦龙李梦龙男男物理物理022003孙佳维孙佳维女女化学化学032004陈春平陈春平女女计算机计算机021005张子豪张子豪男男英语英语011008赵风云赵风云女女中文中文SnoSnameSsexSdept022003孙佳维孙佳维女女化学化学032004陈春平陈春平女女计算机计算机011008赵风云赵风云女女中文中文2.2 关系代数和关系演算关系代数和关系演算l2投影(投影(Projection)l 从一个关系R中选出若干指定字段的值的操作称为投影。记为: A(R)=tA|tRl 其中,A为R中的属性列。投影是从列的角度进行的运算
9、,所得到的字段个数通常比原关系少,或者字段的排列顺序不同。2.2 关系代数和关系演算关系代数和关系演算l【例2-62-6】 若从学生关系R1中选出学生姓名和所在院系两个字段,则计算公式为: Sname,Sdept(R1)l 投影得到的结果如图所示。投影之后不仅取消了原关系中的某些列,而且还可能因为出现了重复行而在结果中取消某些完全相同的行。SnameSdept王力王力计算机计算机李梦龙李梦龙物理物理孙维佳孙维佳化学化学陈春平陈春平计算机计算机张子豪张子豪英语英语赵风云赵风云中文中文l3连接连接 连接即两个关系中的记录按一定条件横向结合,生成一个新的关系。最简单的连接运算是利用两个关系中共有的字
10、段,把该字段值相等的记录连接起来。 连接运算按照连接方式的不同,又可分为连接(是算术比较符)、自然连接、F连接(F是公式)。l(1)连接 从RS的结果集中,选取在指定的属性集上满足条件的元组,组成新的关系。是一个关于属性集的逻辑表达式。 R S=t t= trR tsS tritsj ij 此式中,i和j分别为关系R和S的第i个、第j个分量的序号,且i和j是R和S上度数相等且可比的属性组。连接运算从R和S的广义笛卡尔积RS中选取(R关系)在i属性组上的值与(S关系)在j属性组上值满足比较关系的元组。2.2 关系代数和关系演算关系代数和关系演算l(2)自然连接 自然连接是一种特殊的等值连接,它要
11、求两个关系中进行比较的分量i和j必须是相同的属性组,并且在结果中去掉了重复的属性列。即从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系。自然连接可记作: R S=tt= trR tsS tri=tsi 其中,分量i是R和S具有的相同的属性组。其计算步骤如下:l 计算 RS。l 设R和S的公共属性是A1、A2Ak,挑选R.A1=S.A1、R.A2=S.A2 R.Ak=S.Ak的那些元组。l 删除 S.A1、S.A2 S.Ak。2.2 关系代数和关系演算关系代数和关系演算l4除运算除运算 对于给定的关系R和S,R能被S除的条件有两个:一是R中的属性包含S中的属性;二是R中的有些
12、属性不出现在S中。R除以S表示为RS或RS。设TRS,它也是一个关系,叫做商。T的属性由R中那些不出现在S中的属性组成,其元组则是S中所有元组在R中对应值相同的那些元组值。2.2 关系代数和关系演算关系代数和关系演算l2.2.2 关系演算关系演算 对于关系数据的查询,除了可以用关系代数表达式表示,还可以用数理逻辑中的一阶谓词演算表示,这就是关系演算。 关系演算按谓词变元的不同,分为元组关系演算和域(属性)关系演算。 l1. 元组关系演算元组关系演算 元组关系演算以元组变量作为谓词变元的基本对象。在元组关系演算系统中,元组关系演算表达式称为元组表达式,其一般形式为:x|(x) 其中x是元组变量,
13、表示一个元数固定的元组,(x)为元组关系演算公式,简称公式,在数理逻辑中也称为谓词,即计算机语言中的条件表达式。它由原子公式和运算符组成。表达式x|(x)表示满足公式的所有元组x的集合。2.2 关系代数和关系演算关系代数和关系演算2.2 关系代数和关系演算关系代数和关系演算 原子公式有三种形式: 对于x|(x)公式是递归定义的: 各种运算符的优先级:量词优先级最高,且的优先级高于的优先级;逻辑辑运算符优先级次之,且的优先级高于的优先级,的优先级高于的优先级。另外还可以通过括号改变公式的优先顺序,使括号内公式的演算优先。l【例2-12】关系R和关系S,对两个关系中的元组进行演算,求下列表达式的结
14、果。 R1=x|R(x)x22 R2=x|R(x)S(x) S R S R3=x| (y) (R(x) S(y) x1=y1) R4=x| (y) (R(x) S(y) x1y2)AB1256AB1234l2. 域关系演算域关系演算 首先定义域关系演算中的一个术语域变量:元组变量的分量,其变化范围是某个值域,而不是某个关系。 域关系演算是关系演算的另一种形式。它以域变量作为谓词变元的基本对象,可以像元组演算一样定义域演算的原子公式和公式,所不同的是公式中的元组变量由域变量代替。关系的属性名可以视为域变量。 域关系演算的原子公式有两种形式: 域关系演算表达式的一般形式是: x1,x2,x3, ,
15、xk|(x1,x2,x3, ,xk) 其中x1,x2,x3, ,xk都是域变量,是域演算公式。该表达式的含义是:使为真的域变量x1,x2,x3, ,xk组成的元组的集合。 域关系演算、元组关系演算、关系代数三者的表达能力是一样的,可以互相转换。 2.2 关系代数和关系演算关系代数和关系演算 关系的完整性包括实体完整性(Entity Integrity)、参照完整性(Referential Integrity)和用户定义完整性(User-defined Integrity)。 l2.3.1 实体完整性实体完整性 实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值,即关系中的主码不
16、允许取空值。 实体完整性是保证表中记录唯一的特性,即保证在表中不允许有重复的记录。如果一个字段的值或几个字段的值能够惟一标识表中的一条记录,则这样的字段称为候选码。在一个表上可能会有几个具有这种特性的字段或字段的组合,这时从中选择一个作为主码。2.3 关系的完整性关系的完整性l2.3.2 参照完整性参照完整性 参照完整性规则是指任一时刻,关系R1中外部码属性A的每个值,必须或者为空(但不允许为无效值),或者等于另一个关系R2(R2和R1可以是相同的)中某一元组的主码值。R1中的属性A和R2中的主码是定义在一个共同的基本域上的。 l2.3.3 用户自定义完整性用户自定义完整性 用户自定义的完整性规则是针对某一具体关系数据库的约束条件,它反映某一个具体的应用所处理的数据必须要满足的条件。关系模型提供定义和检验这类完整性约束条件的机制,并用统一的系统方法来处理它们,应用程序就不用承担这一功能。2.3 关系的完整性关系的完整性 本章首先介绍了关系数据结构及形式化定义,以及域、关系和笛卡尔积等概念,接着介绍了关系代数,并同时介绍了用谓词来表达查询要求的关系演算。最后介绍了对关系数据库加以约束的关系完整性。本本 章章 小小 结结