[理学]数据库-第二章无QBE.ppt_第1页
[理学]数据库-第二章无QBE.ppt_第2页
[理学]数据库-第二章无QBE.ppt_第3页
[理学]数据库-第二章无QBE.ppt_第4页
[理学]数据库-第二章无QBE.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统原理教程 Database Systems,关系数据库自从诞生以来,逐渐成为目前最为先进的数据库系统,较有代表性的关系数据库有70年代末IBM公司的System R,ORACLE公司的ORACLE系统,80年代推出的SQL/DS等。80年代以来,先后出现dBASE,FOXBASE,FOXpro 以及Visual FOXpro等系统,极大的推动了关系数据库的发展和完善。,2.1 关系数据库概述,关系数据库系统是建立在关系模型上的数据库系统,组成:,关系数据结构 关系操作 完整性约束,数据结构 两维的扁平表 数据操作 关系代数 关系演算,关系数据模型:,数据的完整性 实体完整性 参照完整性 用户定义的完整性,SQL,QBE,APLHA,QUEL,ISBL,2.2 关系数据结构,关系模型的数据结构非常单一 实体及实体间的联系都用关系表示, 关系就是一张二维表,关系示例(Example of a Relation),1)域:域是一组具有相同数据类型的值的集合。 和以前域的概念本质上是一样的,只不过抽象为数据类型。,1. 关 系,例:实数,0 , 1,定义:给定一组域D1,D2,Dn,这些域中可以有相同的。D1,D2,Dn的笛卡儿积为: D1D2Dn ( d1 , d2 , , dn) | diDi , i=1,2, ,n,2)笛卡儿积,其中每一个元素( d1,d2, ,dn )叫做一个 n 元组或简称元组。元组中的每一个值 di 叫做一个分量。 若 Di( i=1,2, ,n )为有限集,其基数为mi(i=1,2, ,n),则D1D2Dn的基数M为:,例子:,D1=SUPERVISOR=张清枚,刘艺 D2=SPECIALITY=计算机,信息 D3=POSTGRADUATE=李勇,刘晨,王敏,笛卡儿积:,D1D2D3(张清枚,计算机,李勇),(张清枚,计算机,刘晨),(张清枚,计算机,王敏),(张清枚,信息,李勇),( ),该笛卡儿积的基数为: 22312,关 系,定义:D1D2Dn的子集叫做在域D1,D2,Dn上的关系 表示: R(D1,D2,Dn) D1D2Dn表示的是域上所有可能的组合,很多元组是无意义的数据,关系包含在D1D2Dn之中,把关系定义为D1D2Dn的子集。,这里 R 表示关系的名字,n 是关系的目和度。 关系中的每个元素是关系中的元组,通常用 t 表示。当 n1 时,称该关系为单元关系。当 n2 时,称该关系为二元关系。,关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。 由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。 n目关系必有n个属性。,例:设D1=0,1,D2=a,b,c,则D1D2=(0,a),(0,b),(0,c),(1,a),(1,b),(1,c),R=(0,b),(0,c),(1, a),(1,b),属性类型,每个关系的属性都有一个名称。,各属性的取值范围集称为属性的域,属性的值通常要求是原子性的,即不能分割,例如,多值属性可以不是原子性的。 组合属性值不是原子性的,空值这一特殊的值包含在所有的域中。 空值导致了许多操作定义的复杂性。 在主体表示中可以先忽略空值,将其放在以后再考虑。,码(Keys),如果K是可以唯一R中元组的,则K是超码,它应该可以对任何可能的关系都有这种唯一性。Example: customer-name, customer-street and customer-name 上述都是客户表中的超码(前提是没有同名的客户存在),如果K是最小的形式,则K是候选码。 Example: customer-name是客户表中的候选码,因为它既是超码,同时又不可能找到比它更小的集合形式了。(假定不允许同名客户存在),在一个关系中,有些属性能唯一的识别元组,但有些属性不具备这种性质。 例如:在零件的关系中 P(PNO , PNAME , COLOR , WEIGHT) PNO可以唯一的识别某一个零件,但COLOR就不能。,候选码:,定义:具有唯一标识关系中元组的属性或最小属性组,称为该关系的候选码(关键字)。 在一个关系中如果只有一个候选码,那么该候选码就指定为该关系的主码。如果由多个候选码,则可以指定其中任一个为主码。,主码的诸属性为主属性; 不包含在任何候选码中的属性称为非码属性。 最简:只有一个属性 最多:关系模式的全部属性组全码,元组 (行、记录),Student ( sno, sname, ssex, sage, sdept ),性质:,列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。 不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。 列的顺序无所谓,即列的次序可以任意交换。,4.任意两个元组不能完全相同。 5.行的顺序无所谓,即行的次序可以任意交换。 6.分量必须取原子值,即每一个分量都必须是不可分的数据项。,关系的描述称为关系模式。 表示: R(U,D,dom,F) 其中: R为关系名, U为组成该关系地属性名集合, D为属性组U中属性所来自的域, dom为属性向域的映象集合, F为属性间数据的依赖关系集合。,2.关系模式(Relation Schema),关系模式通常可以简记为: R(U)或R( A1 ,A2 , , AN ),域名及属性向域的映象为属性的类型、长度。,A1, A2, , An 是属性 R = (A1, A2, , An )是关系模式 r(R) 是关系模式R中的一个关系。,关系实例 (Relation Instance),关系的当前值(关系实例)用表来表示。 r中元素t称为元组,由表中的行表示。,数据库(Database),数据库由多个关系组成。 企业信息被划分成若干部分,每一部分都存储着部分的信息。 例如(E.g.): account : 存储帐户信息。 depositor : 存储客户拥有的帐户的信息。 customer : 存储客户信息。 将所有信息存储在一个关系中会导致一些问题.,帐户关系 account,储户关系 depositor,客户关系 customer,bank(account-number, balance, customer-name, .) 信息重复(如,两个客户拥有同一帐户时) 需要空值(如,没有帐户的客户) 范式理论(第四章)用于设计关系模式。,对应于一个关系模型的全部关系的集合称为关系数据库。概括起来一个关系应具备以下特点: 关系的每一列具有不同的名称(属性名) 关系的每一列具有同一类型的域值 关系重任一两行(元组)不能完全相同 关系中每一列是不可再分的数据单位 关系中行、列的次序可以互换 每一个关系有一个唯一的主关键字,3.关系数据库,2.3 关系的完整性,关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。,实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。 基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。 例如:学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”都不能取空值,而不是整体不为空。,一、实体完整性, 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。 现实世界中的实体是可区分的,即它们具有某种唯一性标识。 关系模型中以主码作为唯一标识。 主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。 实体完整性引申:主码不能取重复值。,说明:,现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。引用的时候,必须取基本表中已经存在的值。由此引出参照的引用规则。,二、参照完整性,外码:设F是基本关系 R 的一个或一组属性,但不是关系R的码,如果 F与基本关系S的主码Ks相对应,则称F是基本关系 R 的外码(Foreign Key),并称基本关系 R 为参照关系,基本关系 S 为被参照关系或目标关系。关系 R 和 S 不一定是不同的关系。,注意:F不能是关系R的主码,Ks必须是关系S的主码。 显然,目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。 外码并不一定要与相应的主码同名。在实际应用当中,为了便于识别,当外码与相应的主码属于不同的关系时,往往给它们取相同的名字。,参照完整性规则就是定义外码与主码之间的引用规则。 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。,学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名),学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名),选修关系,学号,课程号,学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩),学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩),学生2(学号,姓名,性别,专业号,年龄,班长),不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。 例如,成绩的取值必须在0100之间。,三、用户定义的完整性,一体化 一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。,关系数据语言的特点,非过程化 用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成 面向集合的存取方式 操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式,关系数据语言概述,抽象的查询语言 关系代数 用对关系的运算来表达查询,需要指明所用操作 关系演算 用谓词来表达查询,只需描述所需信息的特性 元组关系演算 谓词变元的基本对象是元组变量 域关系演算 谓词变元的基本对象是域变量,关系代数是以关系作为运算对象的一组特定的运算,用户通过这组运算,对一个或多个关系不断地进行“组合”或“分割”,从而得到所需要的数据集合。,2.4 关系代数(Relational Algebra),过程化语言(Procedural language) 基本操作( basic operators) 选择(select) 投影(project) 集合差(set difference) 笛卡尔积(Cartesian product) 重命名(rename),操作以二个或多个关系为输入,结果是一个新的关系。,关系代数运算汇总,基本运算 一元运算 选择、投影、重命名 多元运算 笛卡儿积、并、集合差 其它运算 集合交、自然连接、除 修改操作 插入、删除、更新,给定关系模式R(A1 , A2 , , An),设R是它的一个具体的关系,tR是关系的一个元组分量 设tR,则tAi表示元组t中相应于属性Ai的一个分量 属性列 Ai=Ai1, Ai2, ,AikA1, A2, ,An,称Ai为属性列 Ai表示A1 ,A2 , ,An中去掉Ai后剩余的属性组 tAi = ( tAi1, tAi2, , tAik),基本概念,设R和S为同类关系,则R和S的并运算是由属于R和S的元素组成的新关系,它与R和S是同类关系,即它的属性名及其排列完全和R,S一样。记为RS。,并运算,所有至少出现在两个关系中之一的元组集合 RS = r | rR rS ,两个关系R和S若进行并运算,则它们必须是相容的:关系R和S必须是同元的,即它们的属性数目必须相同,对 i,R的第 i 个属性的域必须和S的第i个属性的域相同,并操作成立的要求: 1. r, s 必须是同元的(属性数目相同) 2. 属性域兼容(对任意的i,r的第i列与s的第i列必须具有相同域即有相同类型的值) 例如,找出有帐户或者有贷款的所有客户。 customer-name (depositor) customer-name (borrower),设R和S为同类关系,则R和S的交运算是同属于R和S的元组集,记为RS。显然,RS与R,S为同类关系。,交运算,所有同时出现在两个关系中的元组集合 RS = r | rR rS 交运算可以通过差运算来重写 RS = R (R S),设R和S为同类关系,则R和S的差是由属于R而不属于S的所有元组组成的集合,记为R-S。R-S 与R,S为同类关系.,差运算,所有出现在一个关系而不在另一关系中的元组集合 RS = r | rR rS ,设R为m元关系,T为n元关系,则R和T的笛卡尔积R T是一个(m+n)元组集合,其中元组的前m个分量是T的一个元组,后n个分量是T的一个元组,则R T共有mn个元组.,笛卡尔积,元组的连接(Concatenation) 若元组r = (r1, ,rn),s = (s1 , ,sm),则定义r与s的连接为:,定义 两个关系R,S,其度分别为n,m,则它们的笛卡尔积是 所有这样的元组集合:元组的前n个分量是R中的一个元 组,后m个分量是S中的一个元组 RS的度为R与S的度之和, RS的元组个数为R和S的元 组个数的乘积,由于相同的属性可能同时出现在R和T中,需要提出一个命名机制来区别这些属性。 采用: 在属性上附加该属性所来自的关系名称 例:r=borrowerloan的关系模式为 (borrower.customer-name,borrower.loan-number,loan.branch-name,loan.loan-number,loan.account) 对那些只在两个关系模式之一出现的属性,省略关系名前缀,无歧义。 (customer-name,borrower.loan-number,branch-name,loan.loan-number,account),贷款信息关系 loan,例子,借款关系 borrower,例子,上述命名规则规定: 作为笛卡儿积运算参数的关系名必须不同,这一规定有时会带来问题。 例如,某个关系需要与自身做笛卡儿积 另外在笛卡儿积中使用关系代数表达式的结果时也会产生类似的问题,因为必须给关系一个名字以引用其属性。 通过更名运算避免这样的问题。 后面介绍,其运算结果是一个新的关系,选择运算,在关系R中选择满足给定条件的元组(从行的角度) F(R)=t | t R , F(t) = 真 F是选择条件,t R, F(t)要么为真,要么为假,专门的关系运算,记作: F( R ) ;F 称为选取谓词。 Defined as: F(R) = t | t R and F(t) 其中F是命题演算公式,可以由与、或、非连接各公式项。 (and), (or), (not),选取示例: branch-name=“Perryridge”(account),每一项的形式可以下面中的一种: op 或 其中op是比较操作符。where op is one of: =, , , , , ,Sdept=IS(S)或5=IS(S),Sage20 Ssex=male(S),投影运算是从一个现有的关系中选取某些属性,并可对这些属性重新排序,最后从得出的结果中删除重复的元组,而得到一个新的关系。记作: 属性名1,属性名2,(关系名) 它表示在指定的关系上对指定的属性进行投影操作。,投影运算A1, A2, , Ak (R),从关系R中取若干列组成新的关系(从列的角度) A(R) = tA | tR , AR 投影的结果中要去掉相同的行,记作: A1, A2, , Ak (R) 其中A是属性名,R是关系名。 结果是包含K个列的关系,其它的列被删除了。 由于关系是集合,故结果中消除了重复的行。 例如,消除了属性“部门名”的帐户如下: account-number, balance (account),取消重复的行,给出所有学生的姓名和年龄 找001号学生所选修的课程号,Sname, Sage(S) / 2, 4(S),Cno( Sno=001 (SC),S ( Sno,Sname,Ssex,Sage,Sdept ),SC(Cno,Sno,Grage),设R和S分别为m元和n元关系,R在第i列和S在第j列上的连接记为R S,其中是关系比较符,连接成一个新的关系。根据分别为(=,)时称为等值、小于和大于连接等。,连接运算,连接,从两个关系的广义笛卡儿积中选取给定属性间满足 一定条件的元组,A,B为R和S上度数相等且可比的属性列 为算术比较符,为等号时称为等值连接,在连接运算中一种特殊的等值连接用处最大,称为自然连接,记作 R S。它的运算过程为: 计算R,S的笛卡尔积; 挑选R和S中相同属性名中具有相等值的元组; 去除重复属性,形成新的关系。,自然连接,从两个关系的广义笛卡儿积中选取在相同属性列B上取值 相等的元组,并去掉重复的行。 自然连接与等值连接的不同 自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。 当R与S无相同属性时,R S RS,示例:求001号学生所在系的名称 Dname(Sno = 001(S) DEPT),DEPT (Dname Dno Master ),除运算,如何得到选修了全部课程的学生?,S ( Sno,Sname,Ssex,Sage,Sdept ),S-C(Cno,Sno,Grage),C(Cno,Cname,Cpno,Credit),做法:逐个考虑选课关系S-C中的元组r,求r在学号Sno上的分量x,再求x在选课关系中的象集课程Cx,若Cx包含了所有的课程C,则x是满足条件的一个元组, x | x=rSno rS-C CxC ,选修全部课 程的学生,全部课程,x同学所选修 的全部课程,应用:对于全部的,所有的,除操作是同时从行和列的角度进行运算。,关系R(X , Z), X, Z是属性组,x是X上的取值(tx),定义x在R中的象集为 Zx = tZ | tR tX= x 从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的 分量,X Z,张军同学所选修的全部课程,x=张军,Zx,象集(Image Set),没有选修全部课程的学生,所有学生选修全部课程,选修了全部课程的学生,对应操作,除定义 R(X , Y) S(Y) = tX | tR Yx y(S) ,说明:Yx=y|trRy=trYx=trX。Yx为x在R中的象集x=trX(即Yx为属性X取值x时,相应的Y值的集合) 。,R,AB (R),S,AB (R) CD (S),AB (R) CD (S)-R,R S=,-,=,求同时选修了001和002号课程的学生号,方案2: SNO(SC (CNO( CNO = 001 CNO = 002 (C),方案1: SNO,CNO(SC) CNO (CNO = 001 CNO = 002 (C),求选修了001号或002号课程的学生号 方案1: Sno(Cno = 001 Cno = 002(SC) 方案2: Sno(Cno = 001 (SC)Sno(Cno = 002(SC),集合运算的应用,并,差运算,求选修了001号而没有选002号课程的学生号,Sno(Cno = 001 Cno 002(S-C),Sno(Cno = 001 (S-C) Sno(Cno = 002(S-C),交,求同时选修了001号和002号课程的学生号,Sno(Cno = 001 Cno = 002(S-C),正确的写法: Sno(Cno = 001 (SC)Sno(Cno = 002(SC),改名(),对关系R实施改名运算,可显式地改变关系名及属性名 将关系R改名为S: s(R) 将关系R(B1,B2,Bn)改名 S(A1,A2,An): S(A1,A2,An)(R),查询中的复合运算,s.sno,s.sname,s.sage(stu.sno=95001 and s.sage stu.sage (s(student)(stu(student),比较:,例题:,至少选修1号课和3号课的学生的学号,Sno,Cno(SC) (Cno = 1 v Cno = 3(C),思考还有其他什么方法可以表示此查询?,方法一:先找到选修了1的学生,然后找到选修了3的学生,求其交集就是至少选修了1和3的学生。 方法二:至少选修了1和3可以理解为学生选修了1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论