理学数据库无_第1页
理学数据库无_第2页
理学数据库无_第3页
理学数据库无_第4页
理学数据库无_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

关系数据库自从诞生以来,逐渐成为目前最为先进的数据库系统,较有代表性的关系数据库有70年代末IBM公司的SystemR,ORACLE公司的ORACLE系统,80年代推出的SQL/DS等。80年代以来,先后出现dBASE,FOXBASE,FOXpro以及VisualFOXpro等系统,极大的推动了关系数据库的发展和完善。2.1关系数据库概述关系数据库系统是建立在关系模型上的数据库系统组成:关系数据结构关系操作完整性约束

数据结构两维的扁平表数据操作关系代数关系演算关系数据模型:数据的完整性实体完整性参照完整性用户定义的完整性关系数据语言关系代数关系演算关系代数与关系演算双重特点的语言元组关系演算语言域关系演算语言SQLQBEAPLHA,QUELISBL2.2

关系数据结构关系模型的数据结构非常单一实体及实体间的联系都用关系表示,关系就是一张二维表关系示例(ExampleofaRelation)1)域:域是一组具有相同数据类型的值的集合。和以前域的概念本质上是一样的,只不过抽象为数据类型。1.关系例:实数,{0,1},…定义:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡儿积为:D1×D2×…×Dn={(d1,d2,…,dn)|

di∈Di,i=1,2,…,n}2)笛卡儿积其中每一个元素(d1,d2,…,dn)叫做一个n元组或简称元组。元组中的每一个值di叫做一个分量。若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:例子:D1=SUPERVISOR=张清枚,刘艺D2=SPECIALITY=计算机,信息D3=POSTGRADUATE=李勇,刘晨,王敏笛卡儿积:D1×D2×D3={(张清枚,计算机,李勇),(张清枚,计算机,刘晨),(张清枚,计算机,王敏),(张清枚,信息,李勇),……()}该笛卡儿积的基数为:

2×2×3=12关系定义:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系表示:

R(D1,D2,…,Dn)D1×D2×…×Dn表示的是域上所有可能的组合,很多元组是无意义的数据,关系包含在D1×D2×…×Dn之中,把关系定义为D1×D2×…×Dn的子集。这里R表示关系的名字,n是关系的目和度。关系中的每个元素是关系中的元组,通常用t表示。当n=1时,称该关系为单元关系。当n=2时,称该关系为二元关系。

关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。n目关系必有n个属性。例:设D1={0,1},D2={a,b,c},则D1×D2={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}R={(0,b),(0,c),(1,a),(1,b)}D1D2域0a元组0b0cR1a1b1c属性类型每个关系的属性都有一个名称。各属性的取值范围集称为属性的域属性的值通常要求是原子性的,即不能分割例如,多值属性可以不是原子性的。组合属性值不是原子性的空值这一特殊的值包含在所有的域中。空值导致了许多操作定义的复杂性。在主体表示中可以先忽略空值,将其放在以后再考虑。码(Keys)

如果K是可以唯一R中元组的,则K是超码,它应该可以对任何可能的关系都有这种唯一性。Example:{customer-name,customer-street}and{customer-name}

上述都是客户表中的超码(前提是没有同名的客户存在)如果K是最小的形式,则K是候选码。Example:{customer-name}是客户表中的候选码,因为它既是超码,同时又不可能找到比它更小的集合形式了。(假定不允许同名客户存在)在一个关系中,有些属性能唯一的识别元组,但有些属性不具备这种性质。例如:在零件的关系中P(PNO,PNAME,COLOR,WEIGHT)PNO可以唯一的识别某一个零件,但COLOR就不能。候选码:定义:具有唯一标识关系中元组的属性或最小属性组,称为该关系的候选码(关键字)。在一个关系中如果只有一个候选码,那么该候选码就指定为该关系的主码。如果由多个候选码,则可以指定其中任一个为主码。主码的诸属性为主属性;不包含在任何候选码中的属性称为非码属性。最简:只有一个属性最多:关系模式的全部属性组——全码SnoSnameSsexSagesdept95001张三男25CS95002李四女24CS96101王五男23MA96001赵六男23CS关系(表)属性(列、字段)元组(行、记录)域(string,{男,女})Student(sno,sname,ssex,sage,sdept)性质:列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。列的顺序无所谓,即列的次序可以任意交换。4.任意两个元组不能完全相同。5.行的顺序无所谓,即行的次序可以任意交换。6.分量必须取原子值,即每一个分量都必须是不可分的数据项。关系的描述称为关系模式。表示:

R(U,D,dom,F)其中:R为关系名,

U为组成该关系地属性名集合,

D为属性组U中属性所来自的域,

dom为属性向域的映象集合,

F为属性间数据的依赖关系集合。2.关系模式(RelationSchema)关系模式通常可以简记为:

R(U)或R(A1,A2,…,AN)域名及属性向域的映象为属性的类型、长度。A1,A2,…,An

是属性R=(A1,A2,…,An)是关系模式r(R)是关系模式R中的一个关系。关系实例(RelationInstance)关系的当前值(关系实例)用表来表示。r中元素t称为元组,由表中的行表示。JonesSmithCurryLindsaycustomer-nameMainNorthNorthParkcustomer-streetHarrisonRyeRyePittsfieldcustomer-citycustomer属性attributes元组tuples数据库(Database)数据库由多个关系组成。

企业信息被划分成若干部分,每一部分都存储着部分的信息。

例如(E.g.):

account:存储帐户信息。

depositor:存储客户拥有的帐户的信息。

customer:存储客户信息。将所有信息存储在一个关系中会导致一些问题.帐户关系account储户关系

depositor客户关系

customerbank(account-number,balance,customer-name,...)

信息重复(如,两个客户拥有同一帐户时)需要空值(如,没有帐户的客户)范式理论(第四章)用于设计关系模式。对应于一个关系模型的全部关系的集合称为关系数据库。概括起来一个关系应具备以下特点:关系的每一列具有不同的名称(属性名)关系的每一列具有同一类型的域值关系重任一两行(元组)不能完全相同关系中每一列是不可再分的数据单位关系中行、列的次序可以互换每一个关系有一个唯一的主关键字3.关系数据库2.3

关系的完整性

关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如:学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”都不能取空值,而不是整体不为空。一、实体完整性⑴实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。⑵现实世界中的实体是可区分的,即它们具有某种唯一性标识。⑶关系模型中以主码作为唯一标识。⑷主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。实体完整性引申:主码不能取重复值。说明:

现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。引用的时候,必须取基本表中已经存在的值。由此引出参照的引用规则。二、参照完整性外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(ForeignKey),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。注意:F不能是关系R的主码,Ks必须是关系S的主码。显然,目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。外码并不一定要与相应的主码同名。在实际应用当中,为了便于识别,当外码与相应的主码属于不同的关系时,往往给它们取相同的名字。参照完整性规则就是定义外码与主码之间的引用规则。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。学生关系专业号专业关系学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)选修关系学号学生关系课程号课程关系学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)学生2(学号,姓名,性别,专业号,年龄,班长)

不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。例如,成绩的取值必须在0~100之间。三、用户定义的完整性一体化一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。关系数据语言的特点非过程化用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成面向集合的存取方式操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式关系数据语言概述抽象的查询语言关系代数用对关系的运算来表达查询,需要指明所用操作关系演算用谓词来表达查询,只需描述所需信息的特性元组关系演算谓词变元的基本对象是元组变量域关系演算谓词变元的基本对象是域变量

关系代数是以关系作为运算对象的一组特定的运算,用户通过这组运算,对一个或多个关系不断地进行“组合”或“分割”,从而得到所需要的数据集合。2.4关系代数(RelationalAlgebra)过程化语言(Procedurallanguage)基本操作(basicoperators)选择(select)投影(project)集合差(setdifference)笛卡尔积(Cartesianproduct)重命名(rename)操作以二个或多个关系为输入,结果是一个新的关系。关系代数运算汇总基本运算一元运算选择、投影、重命名多元运算笛卡儿积、并、集合差其它运算集合交、自然连接、除修改操作插入、删除、更新给定关系模式R(A1,A2,…,An),设R是它的一个具体的关系,t

R是关系的一个元组分量设t

R,则t[Ai]表示元组t中相应于属性Ai的一个分量属性列Ai={Ai1,Ai2,…,Aik}{A1,A2,…,An},称Ai为属性列Ai表示{A1,A2,…,An}中去掉Ai后剩余的属性组t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])基本概念设R和S为同类关系,则R和S的并运算是由属于R和S的元素组成的新关系,它与R和S是同类关系,即它的属性名及其排列完全和R,S一样。记为R∪S。并运算所有至少出现在两个关系中之一的元组集合R

S={r|r

R

r

S}R

S两个关系R和S若进行并运算,则它们必须是相容的:关系R和S必须是同元的,即它们的属性数目必须相同,对

i,R的第i个属性的域必须和S的第i个属性的域相同

关系RABCabcdafcbd

关系SABCbgadaf

关系R∪SABCabcdafcbdbga并操作成立的要求:1.r,

s

必须是同元的(属性数目相同) 2.属性域兼容(对任意的i,r的第i列与s的第i列必须具有相同域即有相同类型的值)例如,找出有帐户或者有贷款的所有客户。

customer-name(depositor)

customer-name(borrower)344543327752763CBA327543CBASR∪S344327752763CBAR设R和S为同类关系,则R和S的交运算是同属于R和S的元组集,记为R∩S。显然,R∩S与R,S为同类关系。交运算所有同时出现在两个关系中的元组集合R

S={r|r

R

r

S}交运算可以通过差运算来重写R

S=R

(R

S)R

S

关系R∩SABCdaf

关系RABCabcdafcbd

关系SABCbgadaf344327752763CBAR327543CBAS327CBAR∩S

设R和S为同类关系,则R和S的差是由属于R而不属于S的所有元组组成的集合,记为R-S。R-S与R,S为同类关系.差运算所有出现在一个关系而不在另一关系中的元组集合R

S={r|r

R

r

S}R

SS

关系R-SABCabccbd

关系SABCbgadaf

关系RABCabcdafcbd344327752763CBAR327543CBAS344752763CBAR-S543CBAS-R

设R为m元关系,T为n元关系,则R和T的笛卡尔积R×T是一个(m+n)元组集合,其中元组的前m个分量是T的一个元组,后n个分量是T的一个元组,则R×T共有mn个元组.

关系RABCabcdaf

关系TDEFghijkl

关系R×TABCDEFabcghiabcjkldafghIdafjkl笛卡尔积元组的连接(Concatenation)若元组r=(r1,…

,rn),s=(s1,…,sm),则定义r与s的连接为:

rs=

(r1,…

,rn,s1,…,sm)定义两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组R

S的度为R与S的度之和,R

S的元组个数为R和S的元组个数的乘积假设属性不相交(即R

S=

)如果属性是相交的,则必须重命名。R

S={rs|r

R

s

S}由于相同的属性可能同时出现在R和T中,需要提出一个命名机制来区别这些属性。采用:

在属性上附加该属性所来自的关系名称例:r=borrower×loan的关系模式为(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

例子branch-nameloan-numberamountDowntownL-171000RedwoodL-232000PerryridgeL-151500DowntownL-141500MianusL-93500RoundHillL-11900PerryridgeL-161300customer-nameloan-numberJonesL-17SmithL-23HayesL-15JacksonL-14CurryL-93SmithL-11WilliamsL-16AdamsL-16借款关系borrower

例子上述命名规则规定:作为笛卡儿积运算参数的关系名必须不同,这一规定有时会带来问题。例如,某个关系需要与自身做笛卡儿积另外在笛卡儿积中使用关系代数表达式的结果时也会产生类似的问题,因为必须给关系一个名字以引用其属性。通过更名运算避免这样的问题。后面介绍AB

12rCD

10102010EaabbsAB

11112222CD

1019201010102010Eaabbaabbrx

s其运算结果是一个新的关系选择运算

在关系R中选择满足给定条件的元组(从行的角度)

F(R)={t|tR,F(t)=‘真’}F是选择条件,

tR,F(t)要么为真,要么为假专门的关系运算记作:

F(R);F

称为选取谓词。Definedas:

F(R)={t|t

RandF(t)}

其中F是命题演算公式,可以由与、或、非连接各公式项。(and),(or),(not)选取示例:

branch-name=“Perryridge”(account)每一项的形式可以下面中的一种:

<attribute>op

<attribute>或<constant>

其中op是比较操作符。whereopisoneof:=,,>,,<,344327752763CBAR

A<5(R)

344752763CBA

A<5

C=7(R)

752763CBA

关系RABCabcdafcbd

B=b(R)ABCabccbd

Sdept=‘IS’(S)或5=‘IS’(S)

Sage≥20∧

Ssex=‘male’(S)找年龄不小于20的男学生S(Sno,Sname,Ssex,Sage,Sdept)C(Cno,Cname,Cpno,Credit)找信息系全体同学SC(Cno,Sno,Grage)

投影运算是从一个现有的关系中选取某些属性,并可对这些属性重新排序,最后从得出的结果中删除重复的元组,而得到一个新的关系。记作:

属性名1,属性名2,…(关系名)它表示在指定的关系上对指定的属性进行投影操作。投影运算

A1,A2,…,Ak(R)从关系R中取若干列组成新的关系(从列的角度)

A(R)={t[A]|tR},AR投影的结果中要去掉相同的行记作:

A1,A2,…,Ak(R)

其中A是属性名,R是关系名。结果是包含K个列的关系,其它的列被删除了。由于关系是集合,故结果中消除了重复的行。例如,消除了属性“部门名”的帐户如下:

account-number,balance(account)

cbcfedcbaCBAfecbCB

R

B,C(R)

关系RABCabcdafcbd

A,C(R)

ACacdfcd取消重复的行给出所有学生的姓名和年龄找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,其中θ是关系比较符,连接成一个新的关系。根据θ分别为(=,<,>)时称为等值、小于和大于连接等。连接运算iθj

连接

从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组A

BRS={rs|r

R

s

S

r[A]

s[B]}A

BRS=

r[A]

S[B](

R×S)A,B为R和S上度数相等且可比的属性列为算术比较符2613ED

S987654321CBA

R266542632113321EDCBA

RSB<D987654321132698732113654261326

R×SCBAED

RSB<D

为等号时称为等值连接A=BRS={rs|r

R

s

S

r[A]=s[B]}A=BRS=

r[A]=S[B](

R×S)987654321CBA2613DC

R

S987654321132698732113654261326

R×SR.CBADS.C

RSc=c3211365426R.CBADS.C

RSB=D32126R.CBADS.C在连接运算中一种特殊的等值连接用处最大,称为自然连接,记作RS。它的运算过程为:计算R,S的笛卡尔积;挑选R和S中相同属性名中具有相等值的元组;去除重复属性,形成新的关系。自然连接从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的行。自然连接与等值连接的不同自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。当R与S无相同属性时,RS=R×SRS={rs[B]|r

R

s

S

r[B]=S[B]}987654321CBA2613DC

R

SABCD12314562

RS987654321132698732113654261326

R×SR.CBADS.CAB

12412CD

aababrB13123DaaabbE

s

11112

aaaab

ABCDErs示例:求001号学生所在系的名称∏Dname(Sno=‘001’(S)DEPT)DEPT(DnameDnoMaster)

关系R1ABC1ab3cd5ef

关系S1DEA4g33h72i5R1S1ABCDE3cd4g5ef2i除运算如何得到选修了全部课程的学生?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是满足条件的一个元组950011859500129295001388.........GradeCnoSnoS-C{x|x=r[Sno]

rS-C

CxC}选修全部课程的学生全部课程x同学所选修的全部课程应用:对于全部的,所有的除操作是同时从行和列的角度进行运算。关系R(X,Z),X,Z是属性组,x是X上的取值(t[x]),定义x在R中的象集为Zx={t[Z]|t

Rt[X]=x}从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量XZ张军同学所选修的全部课程x=张军Zx姓名课程张军物理王红数学张军数学课程数学物理象集(ImageSet)

物理数学课程=物理王红数学张军数学王红物理张军课程姓名王红张军姓名没有选修全部课程的学生所有学生选修全部课程

=数学张军数学王红物理张军课程姓名物理王红数学张军数学王红物理张军课程姓名姓名王红姓名王红张军姓名王红

=姓名张军选修了全部课程的学生对应操作除定义R(X,Y)

S(Y)={t[X]|t

R

Yx

y(S)}说明:Yx={y|tr∈R∧y=tr[Y]∧x=tr[X]}。Yx为x在R中的象集x=tr[X](即Yx为属性X取值x时,相应的Y值的集合)。ABCDabcdabefabdebcefedcdedefCDcdefABabedABabbcedABCDabcdabefbccdbcefedcdedefR

AB(R)S

AB(R)

CD(S)

AB(R)

CD(S)-RABCDbccdR

S=ABabbcedABbc-=求同时选修了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

温馨提示

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

评论

0/150

提交评论