关系数据模型_第1页
关系数据模型_第2页
关系数据模型_第3页
关系数据模型_第4页
关系数据模型_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 关系数据模型刘红岩清华大学 管理科学与工程系Hongyan Liu Tsinghua University2简介关系模型是目前商品化数据库产品的主流数据模型: IBM DB2、Oracle、Sybase、Microsoft SQL Server和Microsoft Access、n关系模型有着坚实的理论基础(集合论,数理逻辑),可以保证关系模型的合理设计和有效实现。n关系模型简洁易用,关系数据库是由一系列的关系组成,而关系是以人们最熟悉的表格的形式组织和展现给用户的。n表格中的数据可以使用简单易懂的语言进行复杂地查询。 Hongyan Liu Tsinghua University3主

2、要内容n 关系模型的数据结构n 关系模型的约束n 关系操作语言:关系代数5.1 关系模型的数据结构n关系(relation):关系模型的基本组成单元 a named, two-dimensional table of data, consisting of a set of named columns and an arbitrary number of unnamed rows. 描述产品的关系 return to page 16pCodepTypepNamecostprice101足球类足球85110102足球类手套90122201羽毛球类羽球鞋2838202羽毛球类球拍200250301

3、游泳类泳镜85102302游泳类泳帽5063401健美类拉力器40.554.5402健美类十磅哑铃7092403健美类跳绳 20Hongyan Liu Tsinghua University5关系n列(column):属性(attribute),字段(field)n第一行各列的值,其余各行对应列的标题 pCodepTypepNamecostprice101足球类足球85110102足球类手套90122201羽毛球类羽球鞋2838202羽毛球类球拍200250301游泳类泳镜85102302游泳类泳帽5063401健美类拉力器40.554.5402健美类十磅哑铃7092403健美类跳绳 20Ho

4、ngyan Liu Tsinghua University6关系n行(row):元组(tuple),记录(record)q除属性所在行之外的每一行pCodepTypepNamecostprice101足球类足球85110102足球类手套90122201羽毛球类羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类泳镜85102302游泳类泳帽5063401健美类拉力器40.554.5402健美类十磅哑铃7092403健美类跳绳 20Hongyan Liu Tsinghua University7关系n属性的域(domain)q每一个属性在各行中的取值类型都是相同的,都有一个取值范

5、围 pCodepTypepNamecostprice101足球类足球85110102足球类手套90122201羽毛球类羽球鞋2838202羽毛球类球拍200250301游泳类泳镜85102302游泳类泳帽5063401健美类拉力器40.554.5402健美类十磅哑铃7092403健美类跳绳 20Hongyan Liu Tsinghua University8关系n分量(item):每个属性对应每一行的值q原子性,即分量不可以再细分q关系模型的基本要求:分量不可分,1NF sNosNamesexaddresstelNo945599张珊f山东省烟台市62783456,82345679945598李

6、思m北京市62445678Hongyan Liu Tsinghua University9关系n解决方法:横向和纵向分解 return to page 16sNosNamesex provincecitytelNo945599 张珊f山东省烟台市62783456945599 张珊f山东省烟台市82345679945598 李思m北京市62445678sNosName sex provincecity945599张珊f山东省烟台市945598李思m北京市telNo627834568234567962445678sNo945599945599945598Hongyan Liu Tsinghua U

7、niversity11关系n分量q分量可以是空值(null),即什么值都没有,这意味着两种可能:n一种是其值未知,即目前尚不知道它的取值,如编号为403的产品的成本,n另一种是不存在,例如,北京市的学生其所属省这个属性的取值就不存在。q对空值进行判断时,采用特殊的方法,不论属于何种数据类型,一般都采用“is null” 或者“is not null”来判断。 Hongyan Liu Tsinghua University12关系n关系的度或目(degree):属性的个数n关系的基数(cardinality)元组个数n总结关系的特点为:each relation has a unique nam

8、eq分量不可分(single-valued)q行相异(each row is unique, sequence is insignificant)q列同质(each attribute has a unique name, sequence of columns is insignificant)Hongyan Liu Tsinghua University13关系模式n关系:关系的实例:q一个关系的内容是随时间而变化的,因此准确地说,关系实际上是关系的实例(instance)的简称,n关系模式:关系的型q关系模式是关系的型的描述,它一般包括关系的名字,属性的名字,属性的域等信息 Produc

9、t(pCode: char(3), pType: char(50), pName: char(50), cost: real, price: real) 也可暂时忽略域的信息变为:Product(pCode, pType, pName, cost, price)Hongyan Liu Tsinghua University14关系数据库n关系数据库关系数据库是若干互不相同的关系组成的,而关系数关系数据库模式据库模式是由若干个与某应用背景相关的关系模式构成的。例如,与某公司销售系统有关的另两个关系模式为:Order(orderNo, custNo, orderDate, delivDate) o

10、rderNocustNoorderDatedelivDate21100012002-1-52002-1-522100022002-1-52002-1-623100032002-2-102002-2-2024100022002-3-42002-3-5return to page 16Hongyan Liu Tsinghua University15关系数据库OrderDetail(orderNo, pCode, qty, discount) return to page 16orderNopCodeqtydiscount21101100021102600.05212022000.12230110

11、000.252230210000232022002440180002244035000241012000Hongyan Liu Tsinghua University16键(key)n候选键候选键(candidate key) :简称为键(key)q那些能够唯一标识关系里每一行的属性或属性组,如果是属性组(复合键,composite key),该属性组的任一个真子集不具有此特性 :一个取值只对应一行元组q例如:如下表的候选键各有哪些? Order(orderNo, custNo, orderDate, delivDate) page 14 OrderDetail(or

12、derNo, pCode, qty, discount) page 15 Product(pCode, pType, pName, cost, price) page 4 Student(sNo, sName, sex, province, city, telNo) page 9Hongyan Liu Tsinghua University17键n主键主键(primary key) q任意一个候选键都可以定义为主键 q每一个表都应该定义一个主键n定义主键之后,DBMS可以识别行的重复,在其他关系模式中可以通过主键属性来引用该关系模式中的元组。n例如: Customer(custNo, cust

13、Name, custTel1, custTel2) Order(orderNo, custNo, orderDate, delivDate)Hongyan Liu Tsinghua University18键外键外键(foreign key)q是一个关系中的一个属性或属性组,它不是本关系的候选键,但它的值引用的是本关系的键的取值,或是其他关系的键的取值。n例1: Customer(custNo, custName, custTel) Order(orderNo, custNo, orderDate, delivDate)n例2: Part(partNo, partName, weight, c

14、olor, itemNo)Hongyan Liu Tsinghua University19键CustomerorderNocustNoorderDatedelivDate21100012002-1-52002-1-522100022002-1-152002-1-1623100032002-2-102002-2-2024100022002-3-42002-3-5 OrdercustNo custName AddresscustTel110001BC 北京市海淀区中关村大街北京市海淀区中关村大街25号号 (010)6278900010002ADE(0749)85349210003CFMHongy

15、an Liu Tsinghua University20键n例2: Part(partNo, partName, weight, color, itemNo)partNo partNamecolor weight ItemNop1screwblue10p2boltgreen 15P1p3nutred22p2p4screwred25p3Hongyan Liu Tsinghua University21键n超键超键(super key)是包含任一个候选键的属性或属性组,q例如,pCode和( pCode, pType)都可以称作关系模式Product的超键。orderNo pCodeqty dis

16、count21101100021102600.05212022000.123202200244018000.15pCode pTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球类羽毛球类 羽球鞋羽球鞋2838202羽毛球类羽毛球类 球拍球拍200250OrderDetail(orderNo, pCode, qty, discount)的超键有哪些?Hongyan Liu Tsinghua University22键n主属性、非主属性q包含在任一个候选键中的属性称为主属性(prime attribute),q没有包含在任一个候

17、选键中的属性称为非主属性(non-prime attribute)q例:Product(pCode, pType, pName, cost, price)的主属性和非主属性各有哪些?n假设产品没有重名时,情况又怎样?Hongyan Liu Tsinghua University235.2 关系模型的约束n约束的类型q域完整性约束(domain integrity constraint)q实体完整性约束(entity integrity constraint)q参照完整性约束(referential integrity constraint)q其他一般性约束 n约束的作用q可以检查数据库中数据取

18、值的正确性,最大限度地符合数据的语义 Hongyan Liu Tsinghua University24域完整性约束n一个关系中某列的所有取值必须来自该属性的域属性的域q例如,产品的编号pCode属性的域为包含3个数字的字符串,如果某一个元组在该属性上的取值为“a01”就违反了该属性的域约束。 qDBMS应该提供为每个属性定义域的方法,并且为定义的域进行合法性检查,具体定义方法在介绍SQL语句和Access中表的创建时再详细介绍。Hongyan Liu Tsinghua University25实体完整性n约束主键属性的取值q要求每个关系都要定义一个主键,而且主键的取值主键的取值不能为空不能为

19、空,如果主键是复合键(属性组),则该属性组中的任一个属性的取值都不能为空。q一般来说,如果一个关系定义了主键,则系统会自动检查它的每一个取值是否为空,是否重复,如果为空,或者重复,则系统会给出提示,并且不允许相应操作的执行。 q例:Order(orderNo, custNo, orderDate, delivDate) OrderDetail(orderNo, pCode, qty, discount) 哪些属性的取值不能为空?Hongyan Liu Tsinghua University26参照完整性n参照完整性约束又称为外键约束(foreign key constraint)q约束的是外键

20、属性的取值:一个表的外键的取值只能有两种情况:n或者取所参照的表的主键的某个取值,n或者为空,如果属性的域定义或其他约束没有限定相应属性的取值不可以为空。 Order(orderNo, custNo, orderDate, delivDate)OrderDetail(orderNo, pCode, qty, discount)Product(pCode, pType, pName, cost, price)参照完整性OrderorderNocustNoorderDate21100012002-1-52002-1-522100022002-1-152002-1-1623100032002-2-1

21、02002-2-2024100022002-3-42002-3-5delivDatedelivDateorderNopCodeqtydiscount21101100021102600.05212022000.12230110000.252230210000232022002440180002244035000241012000OrderDetail此时,orderNo可以取空值吗?Hongyan Liu Tsinghua University28一般性约束n还有一些约束不是所有关系模式所共同拥有的,而是依赖于具体的应用背景而具有的一些约束,例如:Product表中属性

22、price的取值应该大于属性cost的取值等。 这些约束应该能够由数据库系统提供的方法来定义和实施。 Hongyan Liu Tsinghua University295.3 关系数据模型的操纵语言n关系数据模型的操纵语言分为两类:q关系代数q关系演算n关系代数包括一系列操作符,描述如何一步步地得到查询结果,n关系演算用谓词表达关系的操作,根据变量的不同分为:q元组关系演算q域关系演算 Hongyan Liu Tsinghua University30关系代数(relational algebra)n关系代数的基本操作包括5个:q选择(selection)q投影(projection)q并(u

23、nion)q笛卡儿积(cross-product)q集合差(set-difference)Hongyan Liu Tsinghua University31关系代数n除此之外,还有一些可以由基本运算推导出的其他运算,如:q交(intersection)q连接(join)q重命名(renaming)q除(division)等。 Hongyan Liu Tsinghua University32选择n选择条件(关系)q小括号里的关系,即表名,是该操作的参数。q“选择条件”是个布尔表达式,由逻辑运算符“与”(“ ”)和“或”(“ ”)连接算术比较表达式构成的,每个算术比较表达式算术比较表达式的构成为

24、:属性名 常数或属性名n属性名(操作符左边)可由属性在关系中的顺序号代替n代表算术比较运算符,包括 、 、 、 、 、 。q选择操作的结果仍然是一个关系 选择nprice100(Product) pCodepTypepNamecostprice101足球类足球85110102足球类手套90122201羽毛球类羽球鞋2838202羽毛球类球拍200250301游泳类泳镜85102302游泳类泳帽5063401健美类拉力器40.554.5402健美类十磅哑铃7092403健美类跳绳 20pCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套9

25、0122202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102pCodepTypepNamecostprice202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102n2“足球类” 5100(Product)= 2“足球类” ( 5100(Product)选择npType“足球类” pType“游泳类”(Product)pCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球羽毛球类类羽球鞋羽球鞋2838202羽毛球羽毛球类类球拍球拍200250301游泳类游泳类泳镜泳镜8

26、5102302游泳类游泳类泳帽泳帽5063401健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑十磅哑铃铃7092403健美类健美类跳绳跳绳 20pCodepCodepTypepTypepNamepNamecostcostpriceprice101101足球类足球类足球足球8585110110102102足球类足球类手套手套9090122122301301游泳类游泳类泳镜泳镜8585102102302302游泳类游泳类泳帽泳帽50506363Hongyan Liu Tsinghua University35投影n属性表( ) pType足球类羽毛球类游泳类健美类pTypepNa

27、me足球类足球足球类手套羽毛球类球拍游泳类泳镜pCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球类羽毛球类羽球鞋羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102302游泳类游泳类泳帽泳帽5063401健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑铃十磅哑铃7092403健美类健美类跳绳跳绳20npType,pName(price100(Product)npType(Product)Hongyan Liu Tsinghua University36并n

28、关系1和关系2必须符合并兼容(union-compatible)特性:(1)有相同的属性个数(2)对应的属性有相同的域 rsHongyan Liu Tsinghua University37并npName, price(price100(Product)pName, price(pType=”游泳类”(Product) pCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球类羽毛球类羽球鞋羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102302游泳类游泳类泳帽泳帽506340

29、1健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑铃十磅哑铃7092403健美类健美类跳绳跳绳20pNameprice足球足球110手套手套122球拍球拍250泳镜泳镜102pNameprice泳镜泳镜102泳帽泳帽63pNameprice足球足球110手套手套122球拍球拍250泳镜泳镜102泳帽泳帽63差n - npCode(Product)-pCode(OrderDetail) 得到的什么?srorderNo pCodeqty discount21101100021102600.05212022000.12230110000.25223021000023202200244

30、0180002244035000241012000pCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球类羽毛球类羽球鞋羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102302游泳类游泳类泳帽泳帽5063401健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑铃十磅哑铃7092403健美类健美类跳绳跳绳20交n nrs=r-(r-s)pCode101202301 pCode101202301302202401402pCode101102

31、202301rsr-s例:npCode(price100(Product)pCode( qty=100 (OrderDetail)) Hongyan Liu Tsinghua University40笛卡儿积n q设两个关系分别为r和s,分别含有m1和m2个属性,以及n1和n2行元组,qr和s的笛卡儿积结果关系包含的属性依次是r的m1个属性和s的m2个属性qr和s的笛卡儿积结果将包含(n1 n2)行元组 n对于r和每一行元组tr和s的每一行元组ts,在结果中都有一行存在n符号代表两行元组的串接(concatenation)。Order orderDetailorderNo pCodeqty d

32、iscount21101100021102600.05212022000.12230110000.252230210000232022002440180002244035000241012000orderNocustNoorderDatedelivDate21100012002-1-52002-1-522100022002-1-152002-1-1623100032002-2-102002-2-2024100022002-3-42002-3-5ProductpCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套9

33、0122201羽毛球类羽毛球类羽球鞋羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102302游泳类游泳类泳帽泳帽5063401健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑铃十磅哑铃7092403健美类健美类跳绳跳绳20笛卡儿积pCodepCode, , pNamepName(priceprice120120(Product)(Product) (orderno=21orderno=21(OrderDetail)(OrderDetail) Product. Product. pCodepCodepNamepNameorderNoord

34、erNoOrderDetailOrderDetail. . pCodepCodeqtyqtydiscountdiscount102102手套手套21211011011001000 0102102手套手套212110210260600.050.05102102手套手套23232022022002000.10.1202202球拍球拍21211011011001000 0202202球拍球拍212110210260600.050.05202202球拍球拍23232022022002000.10.1orderNo pCodeqty discount21101100021102600.052120220

35、00.1pCodepName102手套手套202球拍球拍n product.pcodeproduct.pcode= =orderdetatil.pcodeorderdetatil.pcode ( (pCode,pNamepCode,pName(priceprice120120(Product)(Product) ( ( ordernoorderno=21=21(OrderDetail)(OrderDetail)Hongyan Liu Tsinghua University43笛卡儿积norderNo (OrderDetail) pCode(pType=”足球类” (Product)orderN

36、opCode2110121102221012210223101231022410124102 orderNo21222324pCode101102Hongyan Liu Tsinghua University44连接n c nr c s = =c( r s)qc代表连接条件,是由逻辑运算符“”或“”连接算术比较表达式构成的,每个算术比较表达式的组成为:AiBjq代表算术比较运算符:、,Ai和Bj是分别来自两个关系的属性,或属性和常数组成的算术表达式。 nProductproduct.pcode=orderdetail.pcodeOrderDetailorderDetailorderNo pCo

37、deqty discount21101100021102600.05212022000.12230110000.252230210000232022002440180002244035000241012000ProductpCodepTypepNamecostprice101足球类足球类足球足球85110102足球类足球类手套手套90122201羽毛球类羽毛球类羽球鞋羽球鞋2838202羽毛球类羽毛球类球拍球拍200250301游泳类游泳类泳镜泳镜85102302游泳类游泳类泳帽泳帽5063401健美类健美类拉力器拉力器40.554.5402健美类健美类十磅哑铃十磅哑

38、铃7092403健美类健美类跳绳跳绳20Hongyan Liu Tsinghua University46连接n查找足球类产品的销售情况,包括产品名称、订单编号,产品原价,折扣pName,orderno,price,discount(pTypepType=”=”足球类足球类” (ProductProduct) C C OrderDetailOrderDetail) C: product.pcode=orderdetail.pcodenpCode,pName (Product(price*(1-discount)cost) (product.pcode=orderdetail.pcode)Ord

39、erDetail)n连接条件为属性名相同的属性的取值相等属性名相同的属性的取值相等,结果关系将属性名相同的列只保留一个只保留一个的连接称为自然连接自然连接(natural join) r r s sHongyan Liu Tsinghua University47连接例: pCodepCode, ,pNamepName(pTypepType=”=”足球类足球类”( (Product) )Product) ) OrderDetailOrderDetailorderNoorderNo, , orderDateorderDate(Order(Order) ) pCode pName orderNo

40、orderDate qtydiscount101足球212002-1-51000102手套212002-1-5600.05101足球242002-3-42000Hongyan Liu Tsinghua University48连接n外连接:q左外连接(left outer join):r * c s q右外连接(right outer join):r * c s q全外连接(full outer join):r * c s 例:(pType=”羽毛球类”(Product) ) * OrderDetail pCodepTypepNamecostpriceorderNo qtydiscount201羽毛球类 羽球鞋 2838202羽毛球类 球拍200250212000.1202羽毛球类 球拍20025023200pCodepTypepNamecostprice201羽毛球类羽毛球类羽球鞋羽球鞋283820

温馨提示

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

评论

0/150

提交评论