数据库-03-第三章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关系数据库模型第3章第3章关系数据库3.1关系模型的基本概念3.2关系代数3.3关系演算3.4查询优化3.1关系模型的基本概念3.1.1关系模型概述3.1.2关系数据结构3.1.3完整性规则返回3.1.1关系模型概述(1)1、关系模型的数据结构:关系(元组的集合)。用户看来,一个关系就是一张二维表。2、关系模型的数据操作:集合操作,即操作的对象和结果都是关系(集合)。主要有:查询操作:选择(Select)、投影(Project)、连接(Join)、除(Division)、并(Union)、交(Intersection)、差(Difference)等更新操作:增加(Insert)、删除(Delete)、修改(Update)等。3.1.1关系模型概述(1)3关系操作的表示方式:代数方式、逻辑方式以及结合两者特点的方式。每一种表达方式称为一种关系查询语言或关系数据语言。⑴代数方式:用代数运算来表达关系的查询要求和条件,也称为关系代数方式。⑵逻辑方式(关系演算):用谓词来表达关系的查询要求和条件。①元组关系演算:谓词变元为元组②域关系演算:谓词变元为域说明:关系代数、元组关系演算和域关系演算均是抽象的关系查询语言,且在表达能力上是等价。(3)结合两者的方式:SQL(StructureQueryLanguage),是介于关系代数和关系演算之间的关系数据语言。3.1.1关系模型概述(2)4、关系语言可以分三类关系代数语言例如ISBL元组关系演算语言例如ALPHA,QUEL关系数据语言关系演算语言域关系演算语言例如QBE具有关系代数和关系演算双重特点的语言例如SQL5、完整性约束:关系模型允许定义三类完整性约束,实体完整性;参照完整性;用户定义的完整性。返回DBMS自动支持3.1.2关系数据结构(1)1关系的定义定义3.1:给定一组集合D1,D2,…,Dn,且这些集合可以相同,定义D1,D2,…,Dn的笛卡尔积(CartesianProduct)为:D1D2…Dn={(d1,d2,…,dn)|diDi,i=l,2,…,n},其中的每一个元素(d1,d2,…,dn)叫做一个n元组(n-tuple),元素中第i个值di叫做第i个分量。关系数据结构的例子例3.1设D1={1,2,3},D2={a,b},则D1D2={(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)},是元组的集合,它还可用下图表示。123D1D21a1b2a2b3a3bab=关系数据结构的例子定义3.2笛卡尔积D1D2…Dn的任一个子集称为D1,D2,…,Dn上的一个关系。集合D1,D2,…,Dn是关系中元组的取值范围,称为关系的域(Domain),n称为关系的度(Degree)。从例3.1可知,关系就是一个二维表,表中的每一行对应一个元组,每一列对应一个域。每一列有一个列名,它可以用域名表示,但由于不同列对应的域可以相同,因此各列需要不同的命名。关系中的列称为关系的属性,列名称为属性名例3.2:选课结果关系Scourses如下D1=Sno={S01,S02,S03,S04}D2=Sname={王建平,刘华,范林军,李伟}D3=Class={19990l,199902,200001}D4=Cname={数据结构,计算机原理,数据库原理}D5=Tname={张征,杜刚,赵新民}关系数据结构的例子SnoSnameClassCnameTnameS01S02S03S04王建平刘华范林军李伟19990l199902200001200001数据结构计算机原理数据库原理数据结构张征杜刚赵新民张征笛卡尔积D1D2D3D4D5是一个五元组的集合,共有44333=432个元组,而关系Scourses是它的一个子集。可以发现,笛卡尔积的某些元组并没有实际意义,如{S04,王建平,199902,数据结构,张征}是笛卡尔积中的一个元组,但它对于前面表中实际数据来说是无意义的。关系数据结构的例子由关系定义可得关系的如下性质1)每一列中的值是同类型的数据,都来自同一个域。2)不同的列可以有相同的域,每一列称为一个属性,用属性名标识。3)元组中的每个分量是不可分的数据项。4)关系中的各个元组是不同的,即不允许重复的元组。5)元组的次序是无关紧要的。说明:关系中的元组与E-R模型中的实体1-1对应,本书以后不加区别的使用。因此,关系是元组的集合,亦即实体的集合。3.1.2关系数据结构(2)3.1.2关系数据结构(3)候选键(CandidateKey):能唯一地标识出一个元组的属性或属性组。联合键(ConcatenatedKey):两个或两个以上属性组成的候选键。全键(All-Key):关系的全部属性构成关系的唯一候选键。该关系称为全键关系(All-KeyRelation)主键(Primarykey):在关系的多个候选键中选择的一个候选键,用它作为元组的唯一标识。在一个关系中只能有一个主键。外键(ForeignKey):关系R中的一组属性A不是关系R的主键,但A是另一个关系S的主键,则属性组A就是关系R的外键。3.1.2关系数据结构(3)关系模式:对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。若U={A1,A2…,An}为关系R的属性集,则关系模式简记为R(U)或R(A1,A2,…,An)关系模式和关系的区别和联系:关系模式描述的是关系的静态结构信息,是对一个关系的“型”的描述,是相对固定的。关系是在关系模式约束之下的若干实体的集合,实体的数量是随时间变化的,但这种变化必定在关系模式的约束范围内。返回3.1.3完整性规则(1)1、实体完整性规则(EntityIntegrity):关系中每个元组的主键属性对应的各个分量不能为空值。空值:当前“不知道”的值,它既不是0也不是空字符‘’,用NULL表示。以关系Students为例:CREATETABLEStudents(Snochar(4)PRIMARYKEYSname…………)2、参照完整性规则(ReferenceIntegrity):设属性组B是关系R的外键且B又是关系S的主键,则对于R中的每一个元组在属性B上的值必须为:或者空值或者等于S中某一个元组的主键值。(1)所谓参照,就是关系R与另一关系S之间的联系,这种联系是通过其相同属性来建立的。参照完整性规则给出了关系之间建立联系的约束条件。(2)实体完整性和参照完整性都是关系模型必须满足的完整性约束条件,这些约束条件由RDBMS自动支持。3.1.3完整性规则(2)SQLServer中按照以下命令建立参照完整性(假设Students和Courses已存在):CREATETABLEReports(SnoCHAR(10),CnoCHAR(6),GradeINT,PRIMARYKEY(Sno,Cno),CONSTRAINTStudent_ReportFOREIGNKEY(Sno)REFERENCESStudents,CONSTRAINTReport_CourseFOREIGNKEY(Cno)REFERENCESCourses,);3.1.3完整性规则(2)参照关系被参照关系3、用户定义的完整性规则(User-definedIntegrity):用户根据具体应用而对数据附加的约束条件。说明:现在的商品化RDBMS提供了定义和检查这类完整性约束的机制,例如:CREATETABLEReports(SnoCHAR(5)NOTNULL,CnoCHAR(5)NOTNULL,GradeINTCHECK(Grade=0andGrade=100),CONSTRAINTSno_CnoUNIQUE(Sno,Cno));3.1.3完整性规则(3)3.2关系代数3.2.1传统的集合运算3.2.2专门的关系运算返回1、关系R与S是相容的:若关系R和S满足:⑴R和S具有相同的度。⑵R中的第i个属性和S中的第i个属性定义在同一个域上(i=l,2,…,n);2、并运算:关系R和S的并是一个新的关系,记为R∪S={t|tR∨tS},它由属于R或属于S的所有元组构成。3、差运算:关系R和S的差是一个新的关系,记为R-S={t|tR∧tS},它由属于R但不属于S的元组构成。4、交运算:关系R和S的交是一个新的关系,记为R∩S={t|tR∧tS},它由属于R同时也属于S的元组构成。3.2.1传统的集合运算(1)R∩S=R−S=R∪S=3.2.1传统的集合运算(1)ABCa1a1a2b1b2b2c1c2c1ABCa1a2a2b2b2b2c2c1c2R=S=ABCa1a1a2a2b1b2b2b2c1c2c1c2ABCa1b1c1ABCa1a2b2b2c2c15、广义笛卡尔积:设R为m元关系,S为n元关系,则R与S的广义笛卡尔积R×S是一个(m+n)元关系,其中的每个元组的前m个分量是R中的一个元组,后n个分量是S中的一个元组。若R有k1个元组,S有k2个元组,则R×S有(k1×k2)个元组,即广义笛卡尔积R×S={(a1,a2,…,am,b1,b2,…,bn)|(a1,a2,…,am)R∧(b1,b2,…,bn)S}返回3.2.1传统的集合运算(2)说明:(1)若R有k1个元组,S为k2元关系,则R×S有(k1×k2)个元组,即广义笛卡尔积。(2)并、差、笛卡儿积、投影和选择常称为关系代数的五个基本操作,其余则成为关系代数的组合运算。3.2.1传统的集合运算(2)ABCa1a1b1b2c1c2DEd1d2e1e2ABCDEa1a1a1a1b1b2b1b2c1c2c1c2d1d1d2d2e1e1e2e2=3.2.2专门的关系运算(1)选择运算(Select):从关系R中选取满足给定条件的元组构成一个新的关系。选择运算记作:σF(R)={t|tR∧F(t)}其中σ是选择运算符,F是限定条件的布尔表达式。它由逻辑运算符∨、∧和┐等连接各个算术表达式组成。算术表达式的基本形式为XY,其中X,Y可以是属性名,常量或简单函数,算术比较运算符{,,,,,}。3.2.2专门的关系运算(1)SnoSnameSsexSageClassS01S02S03S04王建平刘华范林军李伟男女女男21191819199901199902200101200101关系StudentsCnoCnameDeptNameC01C02C03英语数据库网络自动化计算机数学关系CoursesSnoCnoGradeS01S01S02S02S02S03S03S04C01C03C01C02C03C01C02C03ABBABCAC关系Reports3.2.2专门的关系运算(1)例3.4从关系Students中选取所有的男生。其关系运算表达式为:σSsex=‘男’(Students)查询结果为:SnoSnameSsexSageClassS01S04王建平李伟男男2119199901200101请写出对应的SQL语句!投影运算(Projection):从一个关系R中选取所需要的列组成一个新关系,投影运算记为:∏A(R)=(R)={t[A]|tR}其中∏是投影运算符,A为关系R属性的子集,t[A]为R中元组相应于属性集A的分量,i1,i2,…,ik表示A中属性在关系R中的顺序号。3.2.2专门的关系运算(2)kiii,,,21例3.5选取学生关系Sudents中的所有Sname(姓名),Sage(年龄)和Class(班级),其关系运算表达式为:∏Sname,Sage,Class(Students)或者∏2,4,5(Students)其查询结果为:3.2.2专门的关系运算(2)SnameSageClass王建平刘华范林军李伟21191819199901199902200101200101对应的SQL语句如何?3.2.2专门的关系运算(3)连接运算(Join):从二个关系的广义笛卡尔积中选取满足一定连接条件的元组,记为:RS=R.A

1 / 88
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功