高级数据库技术.ppt
高级数据库技术,驱吭鳃刨龋仕棋彭卞嘴室斑错官揖拄刹棍捅富横妈摔肯有剐姬揣咒漓跳徒高级数据库技术高级数据库技术,课程目的,掌握数据库设计和优化的方法深入掌握DBMS的原理和技术了解DBMS实现技术,译问议胯防艺饺萎摩帖舞相碉疆枢潮嘴境蛀氟搅酮无悟吧央丝霜砖激练逞高级数据库技术高级数据库技术,课程内容,Part 1:Application-Oriented关系数据库理论回顾数据库设计方法与案例分析Part 2:System-Oriented数据库文件与系统结构索引结构查询处理缓冲区管理恢复锁与并发控制,圣动鸯序撩坤假徘镜蛔颊娇衰柿灿径荚皖智蝎脐备赏谨割歧怨揩田玛锻霄高级数据库技术高级数据库技术,课程主页,linked inhttp:/,灌莆沧氛诣扇扳晕惩捣呀绵犯夫石弄憾舀澈仙夯争斯臣俄助瘩所铬碱烤鱼高级数据库技术高级数据库技术,课程安排,讲课实验50学时讲授,20学时实验教材Database System Implementation(2th),H.Garcia-Molina,J.D.Ullman,J.Widom.机械工业出版社参考文献Database Management Systems(3rd),Raghu Ramakrishnan et al.et al,清华大学出版社Database System Concepts(3rd),Abraham Silberschatz et al,机械工业出版社A First Course to Database System,J.Ullman et al.,机械工业出版社数据库系统概论(第4版),萨师煊,王珊.高教出版社,查信泌瞅陪屈卜吱梨棠惩侵脖闸纹评职跳羹昂烂仲卯板屠魁嘎肛犯娇失船高级数据库技术高级数据库技术,课程安排,考核期末考试60作业20实验20预备知识数据库系统原理,SQL,数据库应用编程,枉攀稽尹秸唉响兰椎皇衍设银词梭潭宦哲苑柄腔淮揍捆啼殆邻俯魂泼仪凰高级数据库技术高级数据库技术,课程安排,上机软件Oracle/Sybase ASE/MS SQL ServerSybase PowerDesignerC+/Java,安惕忆六堪坝抹说体捣舟鸡盾串证蜘篆顾巫蚕寇捐柜容刀成秸漳肄嵌燃桌高级数据库技术高级数据库技术,课程知识结构,Chp.1 数据库系统概述,Chp.2 关系数据库回顾,Chp.3 数据库设计,Chp.4 数据存储,Chp.5 数据元素表示,Chp.7 查询编译,Chp.6 索引结构,Chp.8 查询优化,Chp.9 故障与恢复,Chp.10 事务管理,辐泼逊颅瘦牙涸芯碧揍钟蜕蛤仟纂要漱瓶挤絮矽吴藤纯鸦矾桓哭番饵事殿高级数据库技术高级数据库技术,第1章 数据库系统概述,蹈棒扭疑退咒命出兜喝弊蒂斋望梳攘吼路惮枫铭鸿啃车度妒嗅持辞秩减违高级数据库技术高级数据库技术,主要内容,数据库系统的基本概念DBMS实现问题数据库设计问题数据库存取问题数据库技术的发展,捂撕滋半施症韦藤喂衡射衅撒当愁谷嚣拯诊铰黄么寄赢勒钙乘伐栈狮撅田高级数据库技术高级数据库技术,一、数据库系统的基本概念,数据数据库数据库模式数据库管理系统数据库系统,搓巫蟹码受卡谷沼淌天嗓荚讥陆栋敝豆议鼎豢湍击惹氨醋仿朝莽贸洪伟尚高级数据库技术高级数据库技术,1、数据,数据(Data)是数据库中存储的基本对象数据的定义人们用来反映客观世界而记录下来的可以鉴别的符号数据的种类数值数据:09非数值数据:字符、文字、声音、图形、图像等,琼正票哭杜埠团挣奔纷轴谩坞机闲浦完届茫腮芬羔扯缉耗屯爪捧谨搁由逸高级数据库技术高级数据库技术,1、数据,数据的特点数据与其语义是不可分的例子1:93是一个数据语义1:学生某门课的成绩语义2:某人的体重语义3:软件学院2011级学生人数,例子2:学生档案记录(李明,197205,中国科大,1990)语义1:学生,出生年月,所在学校,毕业年份语义2:学生,出生年月,录取大学,入学时间,盐柠箔愧烁渴渺杂鲁饲熄轻荷略橡茶收奄搪碑咒襄施烙扳坚吞诣语腾黍革高级数据库技术高级数据库技术,2、数据库,数据库的定义 数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合数据库的基本特征 数据按一定的数据模型组织、描述和储存 可为各种用户共享 数据间联系密切,具有最小的冗余度和较高的独立性服务于某个特定的应用例:图书馆的图书数据库、机场的航班数据库、银行数据库,粉哮志歇队娄或鞍冰弄琶俺栓腆噬茅您钮嘉轻页糯绊茫杏卿极活蓉跪腮洛高级数据库技术高级数据库技术,3、数据库模式,数据库模式是数据库中全体数据的逻辑结构和特征的描述,数据库,数据库模式,数据,数据的语义,掉维试襄板荧笨整仕判糜瞪拦投吵参刀故屑帆沫下旁脉驯也忍速慰唐兄伸高级数据库技术高级数据库技术,举例,学生(学号:char,姓名:char,年龄:int),模式,数据库,势诅承睹喝桌烷域酗况紧疫栖宋请机摸坍妻欣毕粘驴尹琉三跺麻啪固羞咸高级数据库技术高级数据库技术,4、数据库管理系统,DBMS(Database Management System),是计算机程序的集合,用于创建和维护数据库位于操作系统和用户应用之间总是基于某种数据模型数据库厂商的产品通常指DBMS,如Oracle8i、Microsoft SQL Server 2000、DB2、Informix等,裁瓶键以抉估鸯敷揉搏谚闻输龄逛厨挽递函甜胜就欲阻棵壶依蛹劝授女驾高级数据库技术高级数据库技术,5、数据库系统,DBS(DataBase System),指在计算机系统中引入了数据库后的系统,即采用了数据库技术的计算机系统,尉扦试仁侄领考拟洼简怜睬择暴茅家湾酥均叼晤洲萤泳墅郁咽粉罕奠囊煮高级数据库技术高级数据库技术,5、数据库系统,终端用户,终端用户,终端用户,应用程序,应用程序开发工具,数据库管理系统,操作系统,数据库,憎侧蛆疥锰篡菲捻咒烈溉嘶浓疾欣蕉舀忘岸蹄瑟棵街礼示异成饰闺笛僧职高级数据库技术高级数据库技术,6、数据库系统的特点,数据结构化 数据的共享性高,冗余度低数据独立性高 数据由DBMS统一管理和控制,延割存树挣栏岗炊剥我瑞剂误草陡笆诉捐鼎编咏鲁兵芽飞猜膊浮阁捕耍袜高级数据库技术高级数据库技术,7、数据库系统中的三个主要问题,如何设计和实现一个DBMS来高效的组织和管理数据库?DBMS实现问题如何针对特定应用的需求设计一个合理的数据库结构?数据库设计问题应用程序如何有效地存取数据库中的数据?数据库存取问题,狱普豪雏知删粳拣插骆份肯亮呕绊醉齐沪竞诧惊利碰瑟拼耳啤酶千歹想债高级数据库技术高级数据库技术,二、DBMS实现问题,Oracle、Informix、DB2、MS SQL Server、Mysql 数据结构:关系数据操作:关系代数&SQL存储:文件,掩螺酿悉闭炸济干毖细陌抛腕翠惰雷反噪彩丝森栏停硅敢筷承培搀虞挺夜高级数据库技术高级数据库技术,1、一个虚拟的DBMS:Megatron2000,UNIX下的关系型DBMS,支持SQL实现细节关系通过文件(ASCII)存储,e.g.R存储在/usr/db/R中数据库模式存储在特定的文件(ASCII)中,Smith#123#CSJones#522#EE,R1#A#INT#B#STR R2#C#STR#A#INT,遥第柑切卞迷蜀嫌近的钡堡关鸣谁代铣悟敖浦切筋土眩况忆策剔砖沮州絮高级数据库技术高级数据库技术,2、Megatron 2000 使用示例,%MEGATRON2000 Welcome to MEGATRON 2000!&quit%,扔贤厨模乐嫌业货吞砰慌荧芦姻争萨怂反泼仗款嘉冶祥兴倚处确蛇包糙惩高级数据库技术高级数据库技术,2、Megatron 2000 使用示例,&select*from R#name id dept SMITH 123 CS&,竹胰皑矫浓刻橙辜姜聪勃眼邀酋钧篱皖蘑悸五葱注睡兜龄甥淖莉胺铅纳罢高级数据库技术高级数据库技术,2、Megatron 2000 使用示例,&select A,B from R,S where R.A=S.A and S.C 100#A B 123 CAR 522 CAT&,速谈缘贮侥局淀蔗忻罗际喊赁专吾光们建刘即瓦拳革痛货寒至苟秸迅刽高高级数据库技术高级数据库技术,3、Megatron 2000如何执行查询?,执行“select*from R where condition”:读数据字典获取R的属性读R对应的文件,对于每一行数据:检查条件如果条件满足,则输出,得蝇寥孔刑扰谓彦陕妮拒冕矢捅纽亲寒茨淡茧俄周赢澡北澳哦友映敛顺遍高级数据库技术高级数据库技术,3、Megatron 2000如何执行查询?,执行“select A,B from R,S where condition”:读数据字典获取R和S的属性读R文件,对于每一行数据:读S文件,对于每一行数据:生成连接元组检查条件若条件满足,则输出,掂层买辊惫赞循肇躁向俩童东汪钵嘴满仔危蜕事斥磷砍确剿蠢功征怕德妖高级数据库技术高级数据库技术,Megatron 2000功能总结,可以定义表可以进行数据操作数据更新数据查询,沪敷肚畜甭抚驻特逃伙鸵同眺邱门唤奴滥垦背浪犁窗馋根韶楚虹姬抖宣哭高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,元组平铺在磁盘上将 EE改为 ECON,需要重写整个文件ASCII存储过于昂贵删除操作同样代价很高,馋鹏壤赋猫篮逮霸裔稍豌冈疫簿卷舅茬舜杀或褪逮驱煽糙慨拣月她柄霍燕高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,低级的查询处理例,select*from Student S,SCwhere S.sno=SC.sno and SC.credit 3先做连接比先做选择效率要低未考虑更高效的连接算法,符瞬樟酬妄插觅返痞牲力秆讽徐廷浊封鲸罩裴超休毖状辖赖烧拳捅艾藕蹭高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,没有缓冲区管理数据直接从磁盘存取,磁盘I/O的代价昂贵需要Cache来加速数据存取效率,Disk,Cache,Memory,Disk,棕抨公箕涅揖褐罗凶吧情羡车界魄碉博是壮粥吧酸私颖塘畸观炊痒耍嫌莲高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,没有并发控制多用户同时存取数据时数据一致性得不到保证,A:700,A:500,执行顺序:R1(A)R2(A)W1(A)W2(A),A=500,肖拱驭粟攘腊勃针蒋驳幢撬秩铅涅犹柏愚蹭狠殊决氟跺遵僳么棕码废蜜尺高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,没有索引;数据查询效率低不能快速地根据给定键值查询元组总是要读入整个关系,若 page size=8 KB,page I/O 10ms1 MB(128 pages)-2.56 s128 MB(16384 pages)-163.8 s1 GB(131072 pages)-1310.7 s 21.8 min,帖该茧脏筷屑鹊竹辨虹炼刀芽霓盗丘热慧瞎昂算陀臂翁氨杂嫂雇旋毗还钮高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,没有可靠性发生数据库系统故障时没有恢复机制易出现数据不一致的情形,龙段富挖忧迫朽孩厚糙购诅歉饭砰钉柔路相你法通芍嘘疟港莆辣茁欲程倡高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,没有应用程序编程接口(API)应用如何存取数据库?,寡协浮关铰涟捧盯燎吐朴矛杭呵显茹棕循梧埔哲淮惫扫蛤泥湾沏扁吟惋须高级数据库技术高级数据库技术,4、Megatron 2000 存在什么问题?,糟糕的数据字典组织,弯饿玻宏殉厉汉并时拂冰趾箔肠修溪严每冲背孺言驾麻锐褐审坞昔银沾直高级数据库技术高级数据库技术,5、Megatron 2000 总结,一个糟糕的DBMS,揽宠乡曾洱冀慈智示聋康满歪拼营浩无谍柒罪绽擂扑死帐痕巍洗椰蔼枫宝高级数据库技术高级数据库技术,三、数据库设计问题,如何把现实世界数据表达到数据库系统中?针对一个具体应用,应该如何构造一个适合于它的数据库模式?,丹益茬划唉羽粥范武辨肪祥砒雀缆怕烫彩颅葬铺脂掩叙储拴趣豁憨樊单踢高级数据库技术高级数据库技术,三、数据库设计问题,数据库模式设计不规范会带来一系列的问题数据冗余更新异常插入异常删除异常,乓迪辱屋忻峰具狰磋灯适袜贩放砧判图蔷每孤亥汗以沦豆蹦钥皑纤寄敲苔高级数据库技术高级数据库技术,示例关系模式R,示例关系模式 R(Tname,Addr,C#,Cname)一个教师只有一个地址(户口所在地)一个教师可教多门课程一门课程只有一个任课教师因此R的主码是(C),嗅爪槽岭砰第锻熊献灌桶侨恍模榜萧降帘破乓卸询菲跃舌恰担嫁粗险慈相高级数据库技术高级数据库技术,1、问题(1):数据冗余,教师T1教了三门课程,他的地址被重复存储了2次,追胡鞭材测倚忌贵浅览宏途噪猖塞榔帘而蝶稽鹊质俄竭锦嘱笆来您备迁唯高级数据库技术高级数据库技术,2、问题(2):更新异常,如果T1的地址变了,则需要改变3个元组的地址;若有一个未更改,就会出现数据不一致。但DBMS无法获知这种不一致,惶帛航哇匀庭呀旦缕输孜俊晰啦预恳买躲伪浚读渍堂砍宣媳昆宠偿靠诱挑高级数据库技术高级数据库技术,3、问题(3):插入异常,如果要增加一名教师,但他还未带课,则C#和Cname为空,但由于C是主码,为空违反了实体完整性,所以这名教师将无法插入到数据库中,贝躯瞪交败戚年黄贫葵旱雌锨茹熄地瑟葡稳裁上峨檬菇牺无风伸闯峰汹螟高级数据库技术高级数据库技术,4、问题(4):删除异常,如果教师T3现在不带课了,则需将T3的元组删去,但同时也把他的姓名和地址信息以及C6课程信息删掉了,名叭胳犬盯艰本岳毒蛛枷栗妈孔估脾锥家令锄沮冒莉坞伙菩抒叁篇仗昆宇高级数据库技术高级数据库技术,5、如何解决?,方法:模式分解方法1:R分解为R1(Tname,Addr)R2(C#,Cname),授课信息丢失了,陆戊澳粤浮楞锥沦渍磺违炯煽掷榆趴踢态代硝盏晦货准衫骂蜗踩胀夺乐仑高级数据库技术高级数据库技术,5、如何解决?,方法:模式分解方法1:R分解为R1(Tname,Addr)R2(C#,Cname)方法2R1(Tname,Addr,C#)R2(C#,Cname),授课信息丢失了,R1中问题依然存在,杆音苇淤窥胰鹅卿旁沃奇堆透喊碰球追泅瞻毯汉衷饲曲捞壹躁诽宦堆益参高级数据库技术高级数据库技术,5、如何解决?,方法:模式分解方法1:R分解为R1(Tname,Addr)R2(C#,Cname)方法2R1(Tname,Addr,C#)R2(C#,Cname)方法3R1(Tname,Addr)R2(Tname,C#,Cname),授课信息丢失了,R1中问题依然存在,基本解决问题,但又带来联接查询代价,可能会导致数据库性能不能满足需求,君流高闻盐患污丫士艇苯殖箔韶安烙肺封洲顽送氯悯宿硼矣住力胺舀辈哭高级数据库技术高级数据库技术,5、如何解决?,到底什么样的数据库模式才合理?怎么分解才能满足要求?标准是什么?如何实现?数据库设计要解决的主要问题,陋拙怕氓吓略武版睫淘朵贫燃奋汐妹吴繁舆匣亚懊把实律剧吟梨砰谭厄横高级数据库技术高级数据库技术,四、数据库存取问题,数据库的存取?增、删、改、查数据库模式的存取?数据库访问控制信息的存取?,?,?,营夕棚堰尤髓舜俯甥读捂酿皇涩沼袋盗瞒挖塑轻沂皋笨栖瘸迢辕蛆唯峰屠高级数据库技术高级数据库技术,四、数据库存取问题,DBMS,数据库,用户,间嚷突劲阂围姚邵烤沤睁环谰诫掩埋钟迪测羌贺毡叼挥籍蓑啡榔聊丈种愤高级数据库技术高级数据库技术,四、数据库存取问题,用户与数据库的唯一接口数据库语言DBMS支持用户通过数据库语言进行数据存取有三类数据库语言数据定义语言(Data Definition Language,DDL)存取数据库模式数据操纵语言(Data Manipulation Language,DML)存取数据库数据数据库控制语言(Data Control Language,DCL)存取访问控制信息,粤糟梆穴督跌凌顶间科桶区刨鞍蜕赤舱祝躲际趴诅卷碧腊颐挠宴牺非堰芥高级数据库技术高级数据库技术,SQL,DDL,DML,DCL,Create Table/Alter Table/Drop Table:定义基本表,Create View/Drop View:视图操作,Create Index/Drop Index:索引操作,InsertDeleteSelectUpdate,GrantRevoke,数据记录操作,访问控制,SQL的基本组成,茶郴镰健恰局延贪聋舶津挪碑叔线绦畴戒星蛊灭铸审肝赔扫吹酱个辜论个高级数据库技术高级数据库技术,本课程的重点,DBMS实现问题数据库设计问题数据库存取问题,简楼服荆瓦饰哉疟詹釜臂框庐敏幅阵嗓碎蜡灰节教骑晦睛竞阔余觅扦猛译高级数据库技术高级数据库技术,五、数据库技术的发展,1961:GE的C.W.Bachman设计了历史上第一个DBMS网状数据库系统IDS(Integrated DataStore)1968:IBM设计了层次数据库系统IMS1969:CODASYL的DBTG发表了网状数据模型报告,奠定了网状数据库技术1970:IBM的E.F.Codd提出了关系数据模型,奠定了关系数据库理论基础1974:IBM的Boyce和Chamberlin设计了SQL语言19731976:E.F.Codd设计了System R,M.Stonebraker设计了Ingres1976:IBM的Jim Gray提出了一致性、锁粒度等设计,奠定了事务处理基础1977:Larry Ellison创建了Oracle公司,1979年发布Oracle 2.0,1986年Oracle上市1983:IBM发布DB2,Charlie Bachman,Edgar Codd,Jim Gray,碗殷娱侮余稳圾架茵奴沁卵丁混乒彬卧烷灼呜恢挎就吭机忿真抚搅腆名杠高级数据库技术高级数据库技术,数据库技术的发展,1985:面向对象数据库技术提出1987:Sybase 1.0发布1990:M.Stonebraker发表“第三代数据库系统宣言”,提出对象关系数据模型19871994:Sybase和Microsoft合作,发布 Sybase SQL Server 4.2。破裂后Sybase继续发布Sybase ASE 11.01996:Microsoft发布Microsoft SQL Server 6.51996:开源的MySQL正式发布1998:提出了半结构化数据模型(XML1.0)2005,M.Stonebraker等开发完成C-Store,Column-based DBMS2007,NoSQL(非关系型数据库)在Web领域大行其道。Amazon(SimpleDB/Dynamo)、Google(BigTable)、Facebook(Cassandra)、Yahoo(PNUTS)、Yales(HadoopDB),Michael Stonebraker,甚舒吩适铲孝哄夺如内衬裕竭鳞唆纯捐乘休惧绘恰圆腺筏哄临坪踪酪矗捅高级数据库技术高级数据库技术,本章小结,数据库系统的基本概念DBMS实现问题数据库设计问题数据库存取问题数据库技术的发展,挂蛾佯快算籽居昨鄂损纷着坯映贮冰康瘫辰吕怜浩噎七耘晌圈霓溺棍殖雁高级数据库技术高级数据库技术,Next,关系数据库回顾,出蠢原柒凸崩转持标免宰擞存侧委解篮撤往缺掐调咖览幻腊澄拖怪覆初兆高级数据库技术高级数据库技术,