数据库第二章

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

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

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

资源描述

数据库系统原理1陈岭浙江大学计算机学院关系模型2关系和关系模式关系代数扩展的关系代数运算数据库的修改关系模型关系数据库基于关系模型,是一个或多个关系组成的集合关系通俗来讲就是表(由行和列构成)关系模型的主要优点是其简单的数据表示,易于表示复杂的查询SQL语言是最广泛使用的语言,用于创建,操纵和查询关系数据库,而关系模型是其基础。什么是关系模型?3关系示例4联系:一些实体之间的关联关系:是一种数学概念,指的是表实体集和联系集真实的世界关系-表,元组-行机器的世界Instructor:一般地,给出集合D1,D2,…,Dn,(Di=aij|j=1…k)关系r是:D1xD2x…xDn的子集,即一系列Di域的笛卡尔积因而关系是一组n元组(a1j,a2j,…,anj)的集合,其中每个aijDi例如:张清玫教授,计算机,李勇张清玫教授,计算机,刘晨刘逸教授,信息,王名关系基本结构5关系:导师-专业-学生笛卡尔积示例6例如:D1=导师集合={张清玫,刘逸},D2=专业集合={计算机,信息},D3=研究生集合={李勇,刘晨,王名}则D1XD2XD3={(张清玫,计算机,李勇),(张清玫,计算机,刘晨),(张清玫,计算机,王名),(张清玫,信息,李勇),(张清玫,信息,刘晨),(张清玫,信息,王名),(刘逸,计算机,李勇),(刘逸,计算机,刘晨),(刘逸,计算机,王名),(刘逸,信息,李勇),(刘逸,信息,刘晨),(刘逸,信息,王名)}共12个元组D1D2D3张清玫张清玫张清玫张清玫张清玫张清玫刘逸刘逸刘逸刘逸刘逸刘逸计算机计算机计算机信息信息信息计算机计算机计算机信息信息信息李勇刘晨王名李勇刘晨王名李勇刘晨王名李勇刘晨王名√√√笛卡儿积可用一张二维表表示张淸玫计算机李勇张淸玫计算机刘晨刘逸信息王名导师-专业-学生笛卡尔积示例7dept_name={Biology,Finance,History,Music}building={Watson,Painter,Packard}budget={50000,80000,90000,120000}那么,r={(Biology,Watson,90000),(Finance,Painter,120000),(History,Painter,50000),(Music,Packard,80000)}是dept_namexbuildingxbudget三者间的关系。(共48个元组)属性类型8关系的每个属性都有一个名称域:每个属性的取值集合称为属性的域属性值必须是原子的,即不可分割(1NF,第一范式)多值属性值不是原子的复合属性值不是原子的特殊值null是每一个域的成员空值给数据库访问和更新带来很多困难,因此应尽量避免使用空值我们先假设不存在空值,在后面的章节中,再讲解空值对不同操作的影响关系的概念9关系涉及两个概念:关系模式和关系实例关系模式描述关系的结构:例,Instructor-schema=(ID:string,name:string,dept_name:string,salary:int)或Instructor-schema=(ID,name,dept_name,salary)关系实例表示一个关系的特定实例,也就是所包含的一组特定的行关系、关系模式、关系实例区别:变量关系变量类型关系模式变量值关系实例关系模式10A1,A2,…,An是属性一般地:R=(A1,A2,…,An)是一个关系模式例,Instructor-schema=(ID,name,dept_name,salary)r(R)是在关系模式R上的关系例,instructor(Instrutcor-schema)=instructor(ID,name,dept_name,salary)关系实例11关系的当前值(关系实例)由表指定一个元组t代表表中的一行如果元组变量t代表一个元组,那么t[name]表示属性name的t的值attributes(orcolumns)tuples(orrows)关系的无序性12元组的顺序性是无关紧要的(元组能够以任意顺序存储),但一个关系中不能有重复的元组例,department(dep_name,building,budget)关系的无序显示码、键13使KR如果K值能够在一个关系中唯一地标志一个元组,则K是R的超码例,{instructor-ID,instructor-name}和{instructor-ID}都是instructor的超键如果K是最小超码,则K是候选码例,{instructor-ID}是instructor的候选码。因为它是一个超码,并且它的任意真子集都不能成为一个超码如果k是一个候选码,并由用户明确定义,则K是一个主键。主键通常用下划线标记外键14假设存在关系r和s:r(A,B,C),s(B,D),则在关系r上的属性B称作参照s的外码,r也称为外码依赖的参照关系,s叫做外码被参照关系例,学生(学号,姓名,性别,专业号,年龄)-参照关系专业(专业号,专业名称)-被参照关系(目标关系)其中属性专业号称为关系学生的外码instructor(ID,name,dept_name,salary)-参照关系department(dept_name,building,budget)-被参照关系选修(学号,课程号,成绩)课程(课程号,课程名,学分,先修课号)参照关系中外码的值必须在被参照关系中实际存在或为null大学数据库模式15classroom(building,room_number,capacity)department(dept_name,building,budget)course(course_id,title,dept_name,credits)instructor(ID,name,dept_name,salary)section(course_id,sec_id,semester,year,building,room_number,time_slot_id)teaches(ID,course_id,sec_id,semester,year)student(ID,name,dept_name,tot_cred)takes(ID,course_id,sec_id,semester,year,grade)advisor(s_ID,i_ID)time_slot(time_slot_id,day,start_time,end_time)prereq(course_id,prereq_id)大学数据库模式图16被参照关系参照关系查询语言17查询语言:用户用来从数据库中请求获取信息的语言“纯”查询语言:关系代数-SQL的基础元组关系演算域关系演算“纯”查询语言奠定了人们使用查询语言的基础,如SQL关系代数18在某种程度上是过程化语言六个基本运算Select选择Project投影Union并setdifference差(集合差)Cartesianproduct笛卡儿积Rename更名(重命名)用户输入一个或两个关系,并得到新的关系关系代数19附加运算Setintersection交Naturaljoin自然连接Division除Assignment赋值选择运算20例:关系r注:执行选择时,选择条件必须是针对同一元组中的相应属性值代入进行比较。选择元组,满足:A=BandD5σA=BandD5(r)选择运算21定义:p(r)={t|trandp(t)},读作sigma,其中p为选择谓词其中p是由逻辑连词(与),(或),(非)连接起来的公式。逻辑连词的运算对象可以是包含比较运算符、=、、=、=和的表达式例如:dept_name=‘Finance’(department)投影运算22例:关系r选择属性A、C投影:ΠA,C(r)投影23定义:A1,A2,…,Ak(r),读作pi,A1,…Ak是属性名,r为关系名其结果为保留此k列的值,并删除重复的行例如:building(department)buildingWatsonTaylorPainterPackard并运算24例:关系r并运算rs:并运算25定义:rs={t|trorts}rs条件:等目,同元,即他们的属性数目必须相同对任意i,r的第i个属性域和s的第i个属性域相同例如:name(instructor)name(student)差运算26例:关系r,s差运算r–s:差运算27定义:r–s={t|trandts}r-s条件:等目,同元,即他们的属性数目必须相同对任意i,r的第i个属性域和s的第i个属性域相同广义笛卡尔积28AB12AB11112222CD1010201010102010EaabbaabbCD10102010Eaabbrs例:关系r,s广义笛卡尔积rxs:广义笛卡尔积29定义:rxs={{tq}|trandqs}假设r(R)的属性和s(S)的属性没有交集如果r(R)和s(S)的属性有交集,那么必须重命名这些有交集的属性广义笛卡尔积30AB121BCkd23rsAr.B121s.BCkkk222121ddd333rxs=例:关系r,s复合运算31可以使用多种运算符构建表达式例:A=C(rxs)AB11112222CD1010201010102010EaabbaabbABCDE122102020aabAB12CD10102010Eaabbrsrxs=A=C(rxs)=更名运算32允许我们使用其他名字指代关系例:x(E),读作rho,返回表达式E的结果,并把名字X赋给了它。假设关系代数表达式E是n元的,则表达式x(A1,A2,…,An)(E)(对关系E及其属性都重命名)返回表达式E的结果,并赋给它名字X,同时将属性重命名为A1,A2,…,An.银行示例33branch(branch-name,branch-city,assets)customer(customer-name,customer-street,customer-city)account(account-number,branch-name,balance)loan(loan-number,branch-name,amount)depositor(customer-name,account-number)borrower(customer-name,loan-number)查询示例34例1:找出贷款额大于$1200的元组amount1200(loan)例2:找出贷款大于$1200的贷款号loan-number(amount1200(loan))loan(loan-number,branch-name,amount)查询示例35例3:找出有贷款或有帐户或两者兼有的所有客户姓名customer-name(borrower)customer-name(depositor)例4:找出至少有一个贷款及一个账户的客户姓名customer-name(borrower)customer-name(depositor)depositor(customer-name,account-number)borrower(customer-name,loan-number)查询示例36例5:找出在Perryridge分支机构有贷款的顾客姓名查询1:customer-name(branch-name=“Perryridge”(borrower.loan-number=loan.loan-number(borrowerxloa

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

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

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

×
保存成功