数据库系统工程师-03关系模型_第1页
数据库系统工程师-03关系模型_第2页
数据库系统工程师-03关系模型_第3页
数据库系统工程师-03关系模型_第4页
数据库系统工程师-03关系模型_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

第三章关系模型(逻辑结构设计)关系理论是建立在集合代数理论基础上的,有着坚实的数学基础。E.F.Codd于70年头初提出关系数据理论,他因此获得1981年的ACM图灵奖。早期代表系统:SystemR:由IBM研制。INGRES由加州Berkeley分校研制。目前主流的商业数据库系统:Oracle,Informix,Sybase,SQLServer,DB2,Access,Foxpro,Foxbase。3.1关系基本概念关系理论是以集合代数为基础的。3.1.1域(Domain):一组值的集合,这组值具有相同的数据类型。如整数的集合、字符串的集合、全体学生的集合。用D表示。3.1.2笛卡尔积(Car’tesianProduct)一组域D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}。笛卡尔积的每个元素(d1,d2,…,dn)称作一个n元组(n-tuple)。元组的每一个值di叫做一个重量(component)。若Di为有限集,其基数为mi(i=1,2,3…n),则笛卡尔积的基数为笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中每列对应一个域。例:D1为老师集合(T)={t1,t2}D2为学生集合(S)={s1,s2,s3}D3为课程集合(C)={c1,c2}则D1×D2×D3是个三元组集合,元组个数为2×3×2,是全部可能的(老师,学生,课程)元组集合。笛卡尔积可表为二维表的形式:TSCt1s1c1t1s1c2t1s2c1………t2s3c2表中的行表示一个元组,列表示一个域。3.1.3关系(1)笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示。(2)R是关系的名字,n是关系的度或目。(3)关系是笛卡尔积中有意义的子集。关系也可以表示为二维表。TSC(属性)t1s1c1(元组)t1s2c2t2s3c1(4)关系的性质:列是同质的,即每一列中的重量来自同一域,是同一类型的数据。如TEACH(T,S,C)={(t1,s1,c1),(t1,t2,c1)}是错误的。(5)不同的列可来自同一域,每列必需有不同的属性名。如P={t1,t2,s1,s2,s3},C={c1,c2},则TEACH不能写成TEACH(P,P,C),还应写成TEACH(T,S,C)。(6)行列的依次无关紧要。随意两个元组不能完全相同(集合内不能有相同的两个元素)。每一重量必需是不行再分的数据。满意这一条件的关系称作满意第一范式(1NF)的。3.2关系模式数据结构:单一的数据结构——关系。实体集、联系都表示成关系。系系属于工作学生老师属于教授课程DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)C(C#,CN,CREDIT)PROF(P#,PN,D#,SAL)SC(S#,C#,SCORE)TEACH(P#,C#)3.2.1候选码(CandidateKey)关系中的某一属性或属性组的值能唯一地标识一个元组,称该属性或属性组为候选码如DEPT中的D#,DN都可作为候选码。任何一个候选码中的属性称作主属性。如SC中的S#,C#。3.2.2主码(PrimaryKey)进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。如可选定D#作为DEPT的主码。3.3.3外部码(ForeignKey)关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码。如S关系中的D#属性。3.3.4关系模式关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依靠关系等,记作R(A1,A2,…,An)。属性向域的映象一般干脆说明为属性的类型、长度等。某一时刻对应某个关系模式的内容(元组的集合)称作关系。关系模式是型,是稳定的。关系是某一时刻的值,是随时间不断变更的。3.3.5关系数据库其型是关系模式的集合,即数据库描述,称作数据库的内涵(Intension)。其值是某一时刻关系的集合,称作数据库的外延(Extension)。3.3.6关系操作关系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的方式,而非关系型的数据操作方式是一次一记录(Record-at-a-time)。关系操作可以用关系代数和关系演算两种方式来表示,它们是相互等价的。如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并等。3.3.7关系模式的完整性(1)实体完整性:A、关系的主码中的属性值不能为空值。B、空值:不知道或无意义。C、意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不行标识的实体,这是不容许的。(2)参照完整性:A、假如关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值。B、意义:假如关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必需存在。(3)用户定义的完整性:用户针对详细的应用环境定义的完整性约束条件。如S#要求是8位整数,SEX要求取值为“男”或“女”。(4)系统支持A、实体完整性和参照完整性由系统自动支持。B、系统应供应定义和检验用户定义的完整性的机制。3.3关系数据语言概述3.3.1抽象的查询语言(1)关系代数:用对关系的运算来表达查询,须要指明所用操作。(2)关系演算:用谓词来表达查询,只需描述所需信息的特性。元组关系演算:谓词变元的基本对象是元组变量。域关系演算:谓词变元的基本对象是域变量。3.3.2详细系统中的实际语言SQL:介于关系代数和关系演算之间,由IBM公司在研制SystemR时提出的。QUEL:基于Codd提出的元组关系演算语言ALPHA,在INGRES上实现。QBE:基于域关系演算,由IBM公司研制。3.3.3关系数据语言的特点(1)一体化:一般关系系统的数据语言都同时具有数据定义、数据操纵和数据限制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。而非关系型系统,如DBTG,有对记录的操作,有对系的操作。(2)非过程化:用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成。(3)面对集合的存取方式:操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式。3.4关系代数3.4.1关系代数(1)基本运算A、一元运算:选择、投影、更名。B、多元运算:广义笛卡儿积、并、集合差。(2)其它运算:集合交、自然连接、除、赋值。(3)扩展运算:广义投影、外连接、聚集。(4)修改操作:插入、删除、更新。3.4.2一些标记给定关系模式R(A1,A2,…,An),设R是它的一个详细的关系,tR是关系的一个元组。重量:设tR,则t[Ai]表示元组t中相应于属性Ai的一个重量。属性列:A={Ai1,Ai2,…,Aik}{A1,A2,…,An},称A为属性列或域列。t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])。3.4.3选择(1)基本定义:在关系R中选择满意给定条件的元组(从行的角度)。F(R)={t|tR,F(t)=‘真’}F是选择的条件,tR,F(t)要么为真,要么为假。(2)F的形式:由逻辑运算符连接算术表达式而成。逻辑表达式:(与),(或),(非) 算术表达式:XY X,Y是属性名、常量、或简洁函数。 是比较算符,{,,,,,≠}例:找年龄不小于20的男学生。AGE≥20∧SEX=‘male’(S)3.4.4投影(1)定义:从关系R中取若干列组成新的关系(从列的角度)。A(R)={t[A]|tR},AR投影的结果中要去掉相同的行。例:ABCDaBcdeFghiBclB,C(R)结果是:例:找001号学生所选修的课程号:C#(S#=001(SC))3.4.5并运算(1)定义:全部至少出现在两个关系中之一的元组集合。RUS={r|rRvrS}RRS(2)两个关系R和S若进行并运算,则它们必需是相容的:A、关系R和S必需是同元的,即它们的属性数目必需相同。B、对i,R的第i个属性的域必需和S的第i个属性的域相同。例:求选修了001号或002号课程的学生号。方案1:∏S#(C#=001vC#=002(SC))方案2:∏S#(C#=001(SC))∪∏S#(C#=002(SC))3.4.6差运算(1)定义:全部出现在一个关系而不在另一关系中的元组集合。RS={r|rRrS}R-SR-SR和S必需是相容的。例:求选修了001号而没有选002号课程的学生号。∏S#(C#=001(SC))-∏S#(C#=002(SC))3.4.8更名运算(1)定义:给一个关系表达式给予名字x(E) 返回表达式E的结果,并把名字x赋给E。x(A1,A2,,An)(E) 返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,..An。关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参加同一运算时很有帮助。3.4.7广义笛卡尔积运算(1)元组的连串(Concatenation):若r=(r1,…,rn),s=(s1,…,sm),则定义r与s的连串为:rs=(r1,…,rn,s1,…,sm)(2)定义:两个关系R,S,其度分别为n,m,则它们的笛卡尔积是全部这样的元组集合:元组的前n个重量是R中的一个元组,后m个重量是S中的一个元组。RS={rs|rRsS}RS的度为R与S的度之和,RS的元组个数为R和S的元组个数的乘积。例:求数学成果比王红同学高的学生姓名。∏S.姓名(R.成果S.成果R.课程=数学S.课程=数学R.姓名=王红(RS(R))姓名课程成果张三物理93王红数学86张三数学89R.姓名R.课程R.成果S.姓名S.课程S.成果王红数学86张三物理93王红数学86王红数学86王红数学86张三数学893.4.8交运算(1)定义:全部同时出现在两个关系中的元组集合。RS={r|rRrS}RRS交运算可以通过差运算来重写:RS=R(RS)例:求选修了001号和002号课程的学生号。∏S#(C#=001(SC))∩∏S#(C#=002(SC))3.4.9连接(1)定义:从两个关系的广义笛卡儿积中选取给定属性间满意肯定条件的元组。ABRS={rs|rRsSr[A]AB为算术比较符,为等号时称为等值连接,为>时,为大于连接,为<时,为小于连接。例:RABC123456789SDE3162RSB<DABCDE123311236245662例:求数学成果比王红同学高的学生。∏S.姓名((课程=数学姓名=王红(R))(课程=数学S(R)))R.成果<S.成果(2)自然连接:从两个关系的广义笛卡尔积中选取在相同属性列B上取值相等的元组,并去掉重复的列。RS={rs[B]|rRsSr[B]=S[B]}自然连接与等值连接的不同:自然连接中相等的重量必需是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。例:求001号学生所在系的名称。∏DN(S#=001(S)DEPT)(3)当R与S无相同属性时,RS=R×S。3.4.10除运算(1)除运算给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必需出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满意下列条件的元组在X属性列上的投影:元组在X上重量值x的象集YX包含S在Y上投影的集合:记做:R÷S={tr[Z]|trR∏y(S)YX}其中YX为x在R中的象集,x=tr[Z]。例:RABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1SBCDb1c2d1b2c1d1b2C1d2(1)象集(ImageSet)关系R(X,Z),X,Z是属性组,x是X上的取值,定义x在R中的象集为:Zx={t[Z]|tRt[X]=x}从R中选出在X上取值为x的元组,去掉X上的重量,只留Z上的重量。XZ姓名课程张三物理王红数学张三数学x=张三Zx课程物理数学(2)除运算例:3.4.11赋值运算为使查询表达简洁、清楚,可以将一个困难的关系代数表达式分成几个部分,每一部分都给予一个临时关系变量,该变量可被看作关系而在后面的表达式中运用。临时关系变量关系代数表达式。赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改。例:RS=X(R)X(X(R)Y(S)R)用赋值重写为:temp1X(R),temp2X(temp1Y(S)R)resulttemp1temp2例:求选修了其选修课为001号课程的学生名。(哪个效率高?)方案1:∏SN(PC#=001(SCCS))方案2:∏SN(PC#=001(C)SCS))例:求未选修001号课程的学生号。(哪些正确?)方案1:∏S#(C#≠001(SC))方案2:∏S#(S)-∏S#(C#=001(SC))例:求仅选修了001号课程的学生号。选修001号课程的学生-仅选001号课程之外的学生=∏S#(C#=001(SC))-∏S#(SC-C#=001(SC))=∏S#(C#=001(SC))-∏S#(C#≠001(SC))3.4.12广义投影(1)定义:在投影列表中运用算术表达式来对投影进行扩展。F1,F2,…,Fn(E)F1,F2,…,Fn是算术表达式。例:求教工应缴纳的所得税。P#,SAL*5/100(PROF)p#,INCOME-TAX(P#,SAL*5/100(PROF))3.4.13外连接(1)定义:为避开自然连接时因失配而发生的信息丢失,可以假定往参加连接的一方表中附加一个取值全为空值的行,它和参加连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接。外连接=自然连接+失配的元组(2)外连接的形式:左外连接、右外连接、全外连接。左外连接=自然连接+左侧表中失配的元组。右外连接=自然连接+右侧表中失配的元组。全外连接=自然连接+两侧表中失配的元组。例:列出全部老师的有关信息,包括姓名、工资、所教授的课程。3.4.14聚集函数(1)定义:求一组值的统计信息,返回单一值。运用聚集的集合可以是多重集,即一个值可以重复出现多次。假如想去除重复值,可以用连接符‘-’将‘distinct’附加在聚集函数名后,如sum-distinct。A、sum:求和:求全体教工的总工资。sumSAL((PROF))求001号学生的总成果。sumSCORE(S#=001(SC))B、avg:求平均:求001号同学选修课程的平均成果。AvgSCORE(S#=001(SC))count:计数:求001号同学选修的课程数。countC#(S#=001(SC))求任课老师的总数。count-distinctP#(PC)max:求最大值。min:求最小值。求学生选修数学的最高成果。MaxSCORE(CN=数学(C)SC))(2)分组将一个元组集合分为若干个组,在每个分组上运用聚集函数。属性下标G聚集函数属性下标(关系)分组运算G的一般形式G1,G2,...,GnGF1,A1,F2,A2,…,Fm,Am(E)Gi是用于分组的属性,Fi是聚集函数,Ai是属性名。G将E分为若干组,满意:A、同一组中全部元组在G1,G2,...,Gn上的值相同。B、不同组中元组在G1,G2,...,Gn上的值不同。例:求每位学生的总成果和平均成果。S#GsumSCORE,avgSCORE(SC)3.4.15数据库修改(1)删除将满意条件的元组从关系中删除。rrE是对永久关系的赋值运算。例:删除001号老师所担当的课程。PCPCPC#=001(PC)删除没有选课的学生。SS(∏S#(S)∏S#(SC))S(2)插入插入一个指定的元组,或者插入一个查询结果。rrE例:新加入一个老师PCPC{(P07,“周正”,750,D08)}加入计算机系学生选修“数学”的信息。SCSC∏S#(SDN=计算机系(DEPT))∏C#(CN=数学(C))(3)更新利用广义投影变

温馨提示

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

最新文档

评论

0/150

提交评论