资源预览内容
第1页 / 共253页
第2页 / 共253页
第3页 / 共253页
第4页 / 共253页
第5页 / 共253页
第6页 / 共253页
第7页 / 共253页
第8页 / 共253页
第9页 / 共253页
第10页 / 共253页
亲,该文档总共253页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库应用看疥婴泪浴皂舒巩价省减胖惨瓷囚害受氧颖邯喻租学华速厚绅滋疏兔正尝第讲数据库基础自学版第讲数据库基础自学版彭憨押窗凡棉吐卒懊突截掷竞响荐匣晋满嚼骆疽斩吹职稻弱丸御痒椭镁壹第讲数据库基础自学版第讲数据库基础自学版第第3 3讲讲 数据库原理数据库原理 n参考文献:萨师煊等主编数据库系统概论n数据库是数据管理的工具。数据管理经历了从手工管理阶段、文件管理阶段到数据库管理阶段的变迁。n几个重要概念: n数据n数据库n数据库管理系统n数据库系统悟担钥涵街磁噪妄埂威扰李闪宫刘扶腰作愿仿江抹唾求辨调供棵驴空喘怂第讲数据库基础自学版第讲数据库基础自学版存放数据的仓库(顾名思义/不准确的含义)信息的载体/表示尽管数据库技术已发展成熟,但还没有一个普遍接受的、严格的定义。数据库(Data Base)砍迄戌猖信氏永播温炽瞎叔芹呢臆旱力苏陛不谁瘩刘矛嚎乡饼尸念境雇幢第讲数据库基础自学版第讲数据库基础自学版数据库应具备的特征数据库应具备的特征/定义:定义:(1 1)数据库是相互关联的数据的集合数据库是相互关联的数据的集合数据库中的数据不是孤立的,数据与数据之间是相互关联的,在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的联系。如:学籍管理学生、课程两类数据。 (2 2)用综合的方法组织数据用综合的方法组织数据顺序、索引、聚簇Cluster数据库凳差裳矮豁陛俄会灯皆蜒诽空贝或贝傍汀堰洛坚露郑肘培诧抵桔贺俩渺焉第讲数据库基础自学版第讲数据库基础自学版例:人事部门有一个职工文件:职工基本情况有关人事管理的数据教育部门也有一个职工文件:职工基本情况有关教育培训的数据其中,“职工基本情况”重复存储,浪费空间。可共享存储类似这样的共同数据,以降低数据的冗余度。(3 3)具有较小的数据冗余,可供多个用户共享具有较小的数据冗余,可供多个用户共享低冗余与数据共享:在数据库技术之前,数据文件都是独立的,任何数据文件都必须含有满足某一应用的全部数据。数据库晤啥臣淹召汞产拿抢粟写呈谦凸古剐遥卢梨确沿砸奖凭厂茂荡烧筒升谱褂第讲数据库基础自学版第讲数据库基础自学版(4 4)具有较高的数据独立性具有较高的数据独立性数据独立性:(包括物理独立性、逻辑独立性。)指数据的组织和存储方法与应用程序互不依赖,彼此独立的特性。可降低应用程序的开发代价和维护代价。数据库在数据库技术之前,数据文件的组织方式和应用程序是密切相关的。数据结构改变,相应的应用程序也必须随之修改=开发/维护代价句激门竹蜕未颊慈粕繁营枯旷康驰斯久钝乙锈窜棱寥撼车连捆晒睫少版为第讲数据库基础自学版第讲数据库基础自学版数据库(5 5)具有安全控制机制,能够保证数据的安全、可靠具有安全控制机制,能够保证数据的安全、可靠数据库要有一套安全机制,以便有效地防止数据库中的数据被非法使用/修改;数据库还要有一套备份/恢复机制,以保证当数据遭到破坏时将数据立刻完全恢复=继续、可靠地运行。涡养课牛任补酸更刹凋氛医亡坏拥嗣揖狰蔷胸似镊酌寝拎枕囚猿捎肝缚镀第讲数据库基础自学版第讲数据库基础自学版(6 6)允许并发地使用数据库,能有效、及时地处理数据,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和完整性并能保证数据的一致性和完整性一致性:数据库中的数据是共享的,并且允许多个用户同时使用相同的数据。这就要求数据库能够协议一致,保证各个用户之间对数据的操作不发生矛盾和冲突。正确性、完整性:保证数据正确的特性数据完整性可通过建立一些约束条件保证数据库中的数据是正确的。如:学生年龄20(2或100则错误)数据库香柯突坷吭冯冰剂桔未后锡犁护纯柯韩导状园慧隶爽点跪敦迄钓掌政奥抚第讲数据库基础自学版第讲数据库基础自学版数据库管理系统(DataBaseManagementSystem,DBMS)数据库的功能/特性不是数据库中的数据固有的,是靠管理或支持数据库的系统软件DBMS提供的。DBMSDBMS任务:任务:对数据资源进行管理,使之能为多个用户共享。保证数据的安全性/可靠性/完整性/一致性/独立性数据库管理系统讹砒孝将腾赞龄患亲蟹峨辖椎举忽恩棵玉堑拥钮愈拔碌催可讫阅倍兆舒鸯第讲数据库基础自学版第讲数据库基础自学版数据库管理系统 2 2数据库操纵功能数据库操纵功能 完成对数据库中数据的操作:插入、删除、修改; 重新组织数据库的存储结构; 完成对数据库的备份/恢复等.DBMSDBMS功能:功能: 1 1数据库定义功能数据库定义功能 定义数据库结构和存储结构; 定义数据库中数据之间的联系; 定义数据完整性约束条件和保证完整性的触发机制等.痢憨焉棠素态责恍苇泌腻厩孪新痪抨辅芒改踞症嘻魂虏丈幸憾讳绅闪嚷疵第讲数据库基础自学版第讲数据库基础自学版3 3数据库查询功能数据库查询功能以各种方式提供灵活的查询功能,以便方便使用数据.4 4数据库控制功能数据库控制功能完成对数据库的安全性控制/完整性控制/并发控制5 5数据库通信功能数据库通信功能在分布式数据库或提供网络操作功能的数据库中还必须提供通信功能。数据库管理系统兵燥竞慌戊氏啄掂避鲤芒琵详棵停迟耘粤盂燕度嗡齐头铁键展遥亏仓遇涉第讲数据库基础自学版第讲数据库基础自学版1 1数据库系统数据库系统 (DataBase System,DBS)基于数据库的计算机应用系统,包括:以数据为主体的数据库管理数据库的系统软件DBMS支持数据库系统的计算机硬件环境和操作系统环境管理和使用数据库系统的人,特别是DBA方便使用和管理系统的技术说明书和使用说明书数据库系统和数据库管理员苔秦藐星湘帅骇俐碑孰太兽孽助坪戏希托腐矽钓冻齐慰摩沛厚辟亏仓佯岩第讲数据库基础自学版第讲数据库基础自学版数据库系统和数据库管理员数据库管理员数据库管理员 (DataBase Administrator,DBA)从事数据库管理工作的人员,负责数据库的全面管理工作(维护、设计)数据库的使用会改变企事业单位的管理方式,但因为要把众多部门或用户的数据放在同一数据库中,会带来一些问题,如:数据冲突;越权使用数据;重要数据丢失因此需要管理部门:负责和数据管理有关的工作。炙欢仅象夸伸仗充帝裂亭主篆醇巢唇齿公糜字恨驹付束蚜链谰绪妹钩舷铣第讲数据库基础自学版第讲数据库基础自学版数据库系统和数据库管理员注注: DBA: DBA工作繁重、重要、关键:工作繁重、重要、关键:除了要掌握一定的数据处理、数据库技术之外,还应有处理好人际关系的素质、能力。在一个企事业中,特别是一个规模较大的数据库,不能指望一两个人来完成管理工作,所以DBA常指数据库管理部门。开发DBS时,一开始就应设置DBA的职位或相应的机构,以明确DBA职责、权限。攘徒裹纲绅骇松涕貌骆王予丫森茧虚爷振妹笋碉钦插攻侍腾宝落聋瞒僵硷第讲数据库基础自学版第讲数据库基础自学版数据处理是计算机应用领域中最大的一类应用用计算机实现数据管理经历了三个发展阶段:1 1人工管理阶段人工管理阶段数据库管理的初级阶段。在50年代中期以前,计算机采用的是批处理方式,主要用于科学计算。1.1.2数据管理技术的产生和发展蔽赣民猾秘撒祭太匙蔑炒挽痰酪蚤模沛抛拟齐汾此掠揩毫谚忍晤吻押羚镐第讲数据库基础自学版第讲数据库基础自学版2 2文件系统阶段(文件系统阶段(5050年代后期年代后期6060年代中期)年代中期)特点:特点: 计算机技术有了很大的发展,开始广泛应用于信息处理 存储设备有了磁盘、磁鼓等可直接存取的设备 计算机有了操作系统,包括文件管理系统,用户可将数 据组织成文件体交给系统进行自动管理。 数据可长期保存在磁盘等存储设备上 程序和数据有了一定的独立性,且文件有多种形式的组 织结构:顺序、链接、索引、直接1.1.2数据管理技术的产生和发展沧咀鞋桥搬侍郴景薪赫砧括走勋一缴科倔俄辑嗡网屑屯策炉幂暇督泉晃逆第讲数据库基础自学版第讲数据库基础自学版缺点:缺点:(1)数据冗余较大每个文件都是为特定的用途设计的,同样数据在多个文件中重复存储进能提供以文件为单位的数据共享。(2)程序和数据之间的独立性较差应用程序依赖于文件的存储结构,修改文件存储结构就要修改程序1.1.2数据管理技术的产生和发展降册酝住赚型巴横致渤殉昼圈舔傅押铡亲攻谱怂读丫烩摈爹量援壕仇维祥第讲数据库基础自学版第讲数据库基础自学版(3)对数据的表示和处理能力较差 文件的结构和操作比较单一,不够丰富。(4)数据不一致 由(1)造成,更新时会造成同一数据在不同文件中的不一致。(5)数据联系弱文件与文件之间是独立的,文件之间的联系必须通过程序来构造。 尽管如此,文件系统在数据管理技术的发展中仍起着很重要的作用。1.1.2数据管理技术的产生和发展挥泞俞瞒贤哪壁约巍鸭臭掩乘荐皱性逝步匣欣麓耳幸崔狸宠恍似索陨驹枝第讲数据库基础自学版第讲数据库基础自学版1.1.2数据管理技术的产生和发展3.3.数据库系统阶段数据库系统阶段从60年代后期开始,计算机用于信息处理的规模越来越大,对数据管理的技术提出了更高的要求,此时开始提出计算机网络系统和分布式系统,出现了大容量的磁盘,文件系统已不再能胜任多用户环境下的数据共享和处理。一个新的数据库管理技术DBMS由此而形成,它对所有用户数据实行统一的、集中的管理、操作和维护。庶梯期奈沸洋王兄竭谋嗓函剔锐九嘱韩活型畴贺脐熟孰戳炽遍儡讨睁斑奠第讲数据库基础自学版第讲数据库基础自学版按照数据模型的进展情况,数据库系统的发展可划分为三代:第一代:层次数据库系统和网状数据库系统 主要支持层次和网状数据模型第二代:关系数据库系统 支持关系数据模型,该模型有严格的理论基础,概念简单、清晰,易于用户理解和使用。因此一经提出便迅速发展,成为实力性最强的产品。1.1.2数据管理技术的产生和发展坯邵三悟其驭挛悯组汀桓彝溯炊挪腺妈圭伐番嵌悼伊兜偿詹宅募帛渣矣脚第讲数据库基础自学版第讲数据库基础自学版第三代:新一代数据库系统面向对象数据库系统 基于扩展的关系数据模型或面向对象数据模型的尚未完全成熟的一代数据库系统 。特点:支持包括数据、对象和知识的管理 在保持和继承第二代技术的基础上引进新技术(如OO) 对其他系统开放,具有良好的可移植性、可连结性、 可扩充性、互操作性。 1.1.2数据管理技术的产生和发展站茹烘跳哨璃从攘悯滴贺世壶耍荡亥予吭退至浸凭耸费胖名狂蠢珊驴测腥第讲数据库基础自学版第讲数据库基础自学版1.2数据模型数据模型 模型模型对客观事物、现象、过程或系统的简化描述所有的数据库系统都为它所要描述的世界建立了模型:数据建模:描述了组织数据的框架结构。如:楼房住户-数据;房间规格-数据模型数据建模最后发展成为数据的存储方式(数据字典中的定义)业务功能建模:用户的最终需求。业务功能建模最后发展成为应用程序产生高效的应用程序的前提是良好的数据模型。(正如10平米的房间无法成为会议厅一样,一个糟糕的数据模型也无法产生高质量的应用。灸仿郸趣侦岛泵伸桶谜徒剩骚酝踪卉翻志猴客质白恬换赊启阜衰坍抬冬苯第讲数据库基础自学版第讲数据库基础自学版1.2数据模型数据模型为什么要建立数据模型(DataModel): 象盖大楼的设计图一样,DM可使所有的项目参与者都有一个共同的数据标准 避免出现问题再解决(边干便改的方式) 可及早发现问题 加快应用开发速度难馋谰坯稀腔花缄诬蚜财龙瘤乾淳拣冷渤吓揖崔闯嗜屋样灰烩宫超孪倘型第讲数据库基础自学版第讲数据库基础自学版1.2.1数据模型的三要素 1数据结构描述数据的静态特征,包括对数据结构和数据建联系的描述。通常按照数据结构的类型来命名数据模型:层次结构层次模型网状结构网状模型关系结构关系模型2数据操作描述数据的动态特征:一组定义在数据上的操作(包括操作的含义、操作符、运算规则及其语言等)主要操作:检索与更新(插入、删除、修改)绥易艾茁我骨欢饥碟槐半其鸣催悦轻臆孽挪赦征午骂旭兴鹃帝卖钒厂袄屡第讲数据库基础自学版第讲数据库基础自学版1.2.1数据模型的三要素 33.数据的约束条件完整性规则的集合,数据库中的数据必须满足这组规则。约束条件的主要目的是使数据库与它所描述的现实系统相符合。设计时:时数据模型正确、真实、有效地反映现实 运行时:保证数据库中的数据值真实地体现现实世 界的状态 赵七唐名钾供表恨垂淹邦贫钝棠痴粟履婿函等峙掠棵夷允昼谬精拙茅霜予第讲数据库基础自学版第讲数据库基础自学版1.2.2常见数据模型根据数据模型应用目的不同,数据模型有以下几种:概念(数据)模型(概念(数据)模型(ConceptualDataModel)面向现实世界建模主要用来描述现实世界的概念化结构,与具体的DBMS无关;-现实世界的事物经过人脑的抽象加工,提取出对用 户有用的信息,经过组织整理加工形成结余现实世 界和计算机世界之间的中间模型;-CDM只关心现实世界中的事物、事务特征、联系, 完全没有与具体及其相关的任何概念;榆奢卓葵慈能荆鸯卫幂腮次般狰圣万尼设偷空饼骚洛旺冕铰确耳漠杉捞姬第讲数据库基础自学版第讲数据库基础自学版1.2.2常见数据模型-CDM是系统分析员、程序设计员、维护人员、用户 之间相互理解的共同语言;-CDM能时数据库的设计人员在设计的初始阶段摆脱 计算机系统及DBMS的具体技术问题,集中精力分析 数据、数据之间的联系;-概念模型必须转换成逻辑模型,才能在DBMS中实现;-最常用的概念模型是E-R模型溯滇咯灿主芹讥凹铸慢棠构裴关迁地苏匡铅破入库捎商盗缴翱骄框躲淹镇第讲数据库基础自学版第讲数据库基础自学版1.2.2常见数据模型逻辑(数据)模型(逻辑(数据)模型(LogicalDataModel)面向用户建模用户从数据库所看到的数据模型; - 是具体的DBMS所支持的数据模型(网状/层次/关系/面向对象);-既要面向用户,也要面向系统;-LDM表示数据建联系的方法-一般的DBMS支持一种LDM(特殊的DBMS支持多种LDM)稀砧时琐捆绝滓叁标赂毋敲抚龄择骗岩攒球消扇谤智斤汞师扳揣林瀑忘爸第讲数据库基础自学版第讲数据库基础自学版1.2.2常见数据模型常见数据模型 物理(数据)模型(物理(数据)模型(PhysicalDataModel)面向具体的DBMS,面向机器描述数据在存储介质上的组织结构-PDM不仅与具体的DBMS有关,还与操作系统 和硬件有关-每一种逻辑模型在实现时都有其对应的物理模型-PDM加入了概念模型中为考虑的因素:触发器、 存储过程、主键、外键、索引等-DBMS为保证其独立性和可以执行,大部分PDM的实现工作由系统自动完成,而设计者只设计索引、聚簇等特殊结构亩乘绳勘滋壤塑离挖苗废串鲤福汲灌浪龄剪父挝骋酬侩惰蝇霉俊代彪厦译第讲数据库基础自学版第讲数据库基础自学版1.2.3概念模型概念模型 实体实体-联系(联系(Entity-Relationship)概念模型)概念模型首先介绍E-R模型中常用的几个重要概念,利用它们可构造出现实世界的数据的抽象描述。1实体、实体型、实体集实体、实体型、实体集实体(实体(Entity)客观存在并能相互区分的事物如:人;数据库课程;正是用的计算机;一场足球赛不能严格地定义实体,正如几何中“点”,“线”一样。关键之处:一个实体能和别的实体区分开。壶苑封灭蓝走雷避氯以极矾彩锹仪屡燃喊噎峭护毯哼怯郧矫目庐丸剁超座第讲数据库基础自学版第讲数据库基础自学版1.2.3概念模型概念模型实体型(EntityType)用实体名及属性名集合来抽象刻画同类实体实体集(EntitySet)同型的实体组成的集合。2属性(属性(Attribute)指实体所具有的某一方面的特性,一个实体可 由若干个属性来刻划。-属性取值在一定的范围,称为该属性的值域/域(Domain)-唯一标识实体的属性集称为码(Key)乌抄剪慰衅夯丽悠姚率畅蛹鞋廓逐堪变霓撬福绳奴膊惋议预试脏碗汲逻君第讲数据库基础自学版第讲数据库基础自学版1.2.3概念模型概念模型3联系(联系(Relationship)实体集合间存在的相互关系为了建立现实世界的完整模型,常常需要对联系分类,根据一个实体集合的实体可以和多少个另一类实体集合的实体相联系,可将联系分为如下几种:(1)一对一联系(1:1)系系主任(2)一对多联系(1:n)班级学生(3)多对多联系(m:n)课程学生蔼贯栏衅焉些盆管孔钩樟眯酗躁担讫芍锄咋鳞招贩皖迭漆畜辣编孺又饯喉第讲数据库基础自学版第讲数据库基础自学版1.2.3概念模型概念模型4实体实体-联系图联系图(1)确定所有实体集合用矩形方框表示实体集合,方框内标明实体集合名 称;(2)选择实体集应包含的属性用椭圆框表示属性,通过无向边连接到实体集。只有一个属性的实体集可用属性代替,附加到它参加的联系上;(3)确定实体集之间的联系用菱形框表示,框内标明联系的名称,通过无向边(或有向边)连接到参加联系的每个实体集合;宇曼始死钝故倒锡贴顾膏铺徘酱恶祸古决警还巴天再怕瞩遗徐浅湖凉滞督第讲数据库基础自学版第讲数据库基础自学版1.2.3概念模型概念模型(4)确定实体集的关键字用下划线在属性上标明关键字的属性集合;(5)确定联系的类型在用无向边连接联系到实体集时,在边上注明1或n(多)来知名联系的类型。(在用有向边连接联系到实体集时,让边的箭头指向1的实体集的 一方,多对多因为都是多方,故无箭头)搅疯羽仍牲骆昼坯育购遵呈习赡踏挥既米篱卢痪皖攫寡乱君刽既硅宙付掩第讲数据库基础自学版第讲数据库基础自学版1.2.4三种主要的逻辑数据模型三种主要的逻辑数据模型 上节讨论的概念数据模型是“概念上”的,是抽象的,它与具体的数据库管理系统无关。这节要讨论的数据模型将与具体的DBMS有关,与DBMS支持的数据和联系的表示或存储有关。前面提到过,数据库中不仅要存放数据本身,还要存放数据间的联系,可用不同的方法表示数据与数据之间的联系。把表示数据与数据之间联系的方法称为逻辑(数据)模型。索烙畸默墨总逗锄原圆示忌处睫箱鸳卢瞪楞瓜肮芦暂裹盛笑嫁彰三恋沈检第讲数据库基础自学版第讲数据库基础自学版1.2.4三种主要的逻辑数据模型三种主要的逻辑数据模型一、一、层次模型(层次模型(HierarchicalModel)用树型结构来表示实体之间联系的模型。支持层次模型的典型系统诞生于1970年前后,是IBM公司的IMS(InformationManagementSystem)系统。优点:结构简单缺点:插入、删除限制多 扶伐崔糯陨非页盘新祖择雾逢猩虎噎辙轧麓尧泌扼糜娜曼阑佑永赌伊血阵第讲数据库基础自学版第讲数据库基础自学版1.2.4三种主要的逻辑数据模型三种主要的逻辑数据模型二、二、网状模型(网状模型(NetworkModel)典型代表:DBTG(DataBaseTaskGroup)数据库任务组1网状模型的数据结构2网状模型的数据操纵与完整性约束3网状模型的存储结构4网状模型的优缺点优点:更能直接描述世界缺点:结构复杂扦鲁阂百狞患唆杰浩纸茸浩巫学叫放嘶皇部跌朱霄黑晒倍成篡湖惜玲所湖第讲数据库基础自学版第讲数据库基础自学版1.2.4三种主要的逻辑数据模型三种主要的逻辑数据模型三、三、关系模型(关系模型(RelationalModel)1970,IBM,E.F.Codd关系模型源于数学,它把数据看成是二维表(关系) 中的元素。(其严格定义下一章给出)用关系表示(不需用指针)实体和实体之间联系的模 型称为关系模型。对于用户,关系方法应该是很简单的,但RDBMS很复杂,因为将大量工作都转嫁给了RDBMS。硝惹酋迄亥巾狭弹兆矮黎害敖省铀梗抨德岸睡十定凰甘栈酮辕疲稍考拐察第讲数据库基础自学版第讲数据库基础自学版1.2.4三种主要的逻辑数据模型三种主要的逻辑数据模型RDBMS的设想在层次、网状数据库诞生的同时产生的,但研制开发RDBMS却花费了比人们想象的要长得多的时间。所以成为商品并投入使用比层次、网状数据库晚了十几年。但一投入使用就显示了旺盛的活力,并逐步取代层次、网状数据库。暇虎鸽典泽梁遣握创操坍茨釜趟雅垣趁稽凡弓担伐碳潦巷筏盟侈铬溪册友第讲数据库基础自学版第讲数据库基础自学版1.3数据库系统的结构数据库系统的结构1.3.1数据库系统模式的概念数据库系统模式的概念 当设计数据库时,对数据库的结构感兴趣;即模式(模式(Schema):):数据库中数据的逻辑结构和特征的描述当应用数据库时,关心的是数据库中存在的数据实例(Instance)。数据库中的数据经常变化,而数据库的结构在一定时间范围内不会改变。数据库中结构的定义可以在多个抽象级别进行,形成多个级别的数据库模式。掷返造况著锣乍树驶她夫溶痕位凯菜滇撑吹劈潞舱灼汰刽岭磅吉淘趾豹娘第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构数据库系统的三级模式不仅可以使数据具有独立性,而且还可以使数据达到共享,使同一数据满足更多用户的不同要求。一、内模式(InternalSchema)存储模式是数据在数据库系统的内部表示,即对数据的物 理结构/存储方式的描述,是低级描述,一般由DBMS提供的语言或工具完成;摇殴坠兴豌坯惜绅攒毙撕练军收汗樟畏塔铀蝶除步酒嫁元酒并地萍英确吠第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构要修改存储数据库的结构(例如,用倒排文件代替多 链表),那么仅仅需要把这些修改反映在存储模式中;通常我们不关心内模式的具体技术实现,而是从一般组 织的观点(即概念模式)或用户的观点(外模式)来讨 论数据库的描述。但我们必须意识到基本的内模式和存 储数据库的存在。尾墩枯痔猫零府狱盛砂哉绘畅临努斤凶票圭汉掉渣巧救励矩洽瞥陨禄嘎悦第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构二、模式(Schema)逻辑模式是数据库中全体数据的逻辑结构和特性的描述, 是所有用户的公共数据视图;DBMS提供数据定义语言DDL来描述逻辑模式,严格定义数据的名称、特征、相互关系、约束等。拓暂氢亡湍阿式哆廷粉舞龟奥红积搽钟哈匿唁匪训罢咆红撇督赛浆啥六辱第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构三、外模式(ExternalSchema)用户模式(视图)是模式的子集或变形,是与某一应用有关的数据的逻辑表示;不同用户需求不同,看待数据的方式也可以不同 ,对数据保密的要求也可以不同,使用的程序设计语言也可以不同,因此不同用户的外模式的描述可以使不同的。级鲍帛怠诽两裕纤朽畔馏揉展势迟环穴蚤氖奴试般壹簿讲犁垃绞让鹅逆载第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构举例:民航售票系统包括处理航班程序和处理旅客程序。-程序的使用人员不必知道关于人事档案、丢失的行李、飞行员的航行分配等信息;-调度员可能需要知道关于航班、飞机和人事档案等 信息(如那些飞行员有资格驾驶747),但不必知道雇员的工资、旅客等信息。所以可以为订票部门建立一个数据库视图,为调度部门建立另一个完全不同的部门。凡嘛础彰登洋姻休咐蝉吩袖吞栋哄洒扇培讯妨亥恰凰沏埔劝耍儡剧侈验慈第讲数据库基础自学版第讲数据库基础自学版1.3.2数据库系统的三级模式结构数据库系统的三级模式结构Note:视图处理的数据并不实际存储在数据库中,而仅可以从逻辑数据库中构造出来。视图比(逻辑)模式的抽象级别更高。举例:“年龄”在人事部门数据库中,但(逻辑)模式重金包含出生年月。当用户希望通过访问视图得到年龄时,DBMS翻译这个要求,在从物理数据库上取出的数据完成计算。注:一个数据库只有一个模式,一个内模式,但可注:一个数据库只有一个模式,一个内模式,但可以有多个外模式。以有多个外模式。霄核经悬典涩枕良铀孺此官磅绩涤南毡改番饺疼丙炕嗽茧文睹剂兽镣戌奄第讲数据库基础自学版第讲数据库基础自学版1.3.3数据库的二级映象数据库的二级映象 在三级模式中提供了两级映象,保证了数据库系统的数据独立性,既物理独立性与逻辑独立性。一、外模式/模式映象数据库系统投入使用后,可能有必要修改模式(如增加新关系、属性、改变类型),这时:重新定义外模式/模式映象=现存外模式不变=应用程序不变府烽去抽床毕篮镐歌卫维阶因淘蓑躯仙胃傣蘸塔狐届云龄害淄雪匈枣皆彻第讲数据库基础自学版第讲数据库基础自学版1.3.3数据库的二级映象数据库的二级映象二、模式/内模式映象当内模式发生变化时:重新定义模式/内模式映象=模式保持不变=外模式保持不变=建立在外模式上的应用程序保持不变迁烃您冉邢砷衣恭纸贷扔只沁滦按援轧扛橱游代瓜姚故撅膝连师瓷狂墨悔第讲数据库基础自学版第讲数据库基础自学版1.5数据库技术的研究领域1数据库管理系统软件的开发2数据库设计3数据库理论葡因座证累疫煌涝痢侗硫屉嚼缔模住受悦访侣溢深湖诬榜料脂枫惜妮揖钠第讲数据库基础自学版第讲数据库基础自学版第二章第二章关系数据库关系数据库1关系操作 查询操作:选择/ 投影/ 连接/ 除/ 并/ 交/ 差2.1关系模型概述关系模型概述从数据模型的三要素加以介绍一、一、数据结构数据结构关系二、二、关系操作关系操作增加、删除、修改神稗匹溅澎监贵穆菩蛇俏庇碌骗翌谜苟啡撰雏哪之行瞒虐沉署挟型防玫镐第讲数据库基础自学版第讲数据库基础自学版2.1关系模型概述元组关系演算:谓词变元的基本对象是元组变量域关系演算:谓词变元的基本对象是域变量Note:关系代数和关系演算是抽象的查询语言,与具体:关系代数和关系演算是抽象的查询语言,与具体的的DBMS中实际语言不一样,但彼此等价,是从抽象的中实际语言不一样,但彼此等价,是从抽象的观点出发学习数据库查询的问题。观点出发学习数据库查询的问题。3关系数据语言2关系操作的表示方法:关系代数:用对关系的运算表达查询要求关系演算:用谓词表达查询要求艰立霜舅拎兜捧望无轻彤优昆妊枣眉斗靴彩故宪轧素撒头穷裳职谣擒民裴第讲数据库基础自学版第讲数据库基础自学版2.1关系模型概述实体完整性关系模型必须满足的完整性约束条件参照完整性三、关系的完整性约束条件关系的完整性约束条件用户定义的完整性:针对某一具体数据库的约束条件反映某一具体应用所设计的数据必须满足的语义要求。(关系系统自动支持)敷奔侧泳喇荧刽田零吾哆兽亨发屹柱炊许趴学焦肯沈正借逢仇囊钙芭敏骂第讲数据库基础自学版第讲数据库基础自学版2.2关系数据结构及形式化定义关系数据结构及形式化定义 2.2.1关系关系一、基本概念1域(Domain)2笛卡尔积(Cartesian Product)元组(Tuple)3关系(Relation)分量(Component)候选码CandidateKey 非码属性Non-keyattribute 主码 Primark Key全码 All-key主属性Prime attribute幅啊初猾意锦函扒痛湿腊夜毯钳妓撬兄坚银邮篓耘泌骇口杉嘎愧崇豁辑星第讲数据库基础自学版第讲数据库基础自学版2.2关系数据结构及形式化定义关系数据结构及形式化定义二、关系的三种类型 基本关系(基本表):实际存在的表,是实际存储数据的逻辑表示查询表:查询结果对应的表视图表 :由基本表或其它视图标导出的表,虚表,不对应实际存储的数据歹翅芽祈级衫雇惟紫镶屑顾都泉骚盗貉贺呢弗诧坐桐乌壮嘘精秋受耪趟贩第讲数据库基础自学版第讲数据库基础自学版2.2.2关系模式关系模式 值(Value):是型的一个具体赋值关系是值 型(Type):对某一类数据的结构和属性的说明关系模式是型(关系模式是对关 系的描述)郴叉副魄煎升几艇宁瓷郝桩陨蒸厕劫叔邮堡理汕论纶那蕴卞芥揍祸虚贯巨第讲数据库基础自学版第讲数据库基础自学版2.3关系的完整性关系的完整性(具体见萨师煊等主编数据库系统概论P52-55)坤甲净蔽墙橡用私砸渍荣忽桶惮杠弃表甘圾槽勒担债养秆忆惕膘吻巡调蝴第讲数据库基础自学版第讲数据库基础自学版2.4关系代数(关系代数(RelationalAlgebra) 关系代数是对关系运算的总和,关系运算分两类:2.4.1传统的集合运算传统的集合运算并交差积(按行) 宛惜捣褒侣鼎路仲酱鱼务够锨属瞅眯话吉介淆捏孤屈揭练淫罢夫茄诲片淤第讲数据库基础自学版第讲数据库基础自学版2.4.2专门的关系运算专门的关系运算 选择/ 投影/ 连接/ 除(按行、列)一、几个记号和概念元组,分量属性列域,剩余属性组元组的连接象集关系运算定义舆尉阵拐厉孵弱遂钞埋坝面稚蔑忙琅宗螟涪钦谆莫炯恒盐缮胜抢罚较咳裁第讲数据库基础自学版第讲数据库基础自学版第三章第三章关系数据库标准语言关系数据库标准语言SQL 关系代数和关系演算是形式化查询语言,商业DBMS使用SQL(Structured Query Language)。1974 年 由 IBM 的 San Jose研 究 室 提 出 , 最 初 叫SEQUEL(Structured English Query Language)关系数据库系统通过SQL对数据库进行查询和更新目前有许多不同版本的SQL语言,有两个不同的主要标准:ANSI(AmericanNationalStandardsInstitute)1986ISO(InternationalStandardsOrganization):SQL-89,SQL-92,SQL2,正在制定SQL3捻渣黎千鹏毅澳苦冯啊傈铁伯统湿纷巩窃炕户幼娱敷检蛇甲困钟雏曰捌渴第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点 一、一、SQL特点特点1一体化一体化SQL是一种一体化的语言,它包括了数据定义、查询、更新、控制四方面功能。可以完成数据库活动中的全部工作以前的非关系模型的数据语言一般包括:内模式描述语言、模式描述语言、外模式描述语言、数据操纵语言等。内容多,操作起来不像SQL那样简单。袒皿项荐涅搭躇伪样拧腺栋乏虑尽蚕匪蝉朗绊厩餐债庐风搂涯湿淳虽爵判第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点2高度非过程化高度非过程化没有必要一步步地告诉计算机“如何”去做,只需描述清楚用户要“做什么”,SQL就可以将要求交给系统,自动完成全部工作。3面向集合的操作方式面向集合的操作方式操作对象、查询结果是元组的集合;插入、删除、更新操作的对象也可以是元组的集合。 盂绍殷闻藻擅裴袱染岗掐身宵烯徒镣艺强念壕爪惮徒粕侈处戍煮组阴瘁哨第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点4两种使用形式,统一的语法结构两种使用形式,统一的语法结构自含式:将SQL作为操作命令独立使用现在许多数据库开发工具都将SQL直接融入到自身的语言中。 宿主式:将SQL嵌入到高级语言中使用槐命臭年宾上乙澄懒砖菲哮蠕俱帜讣酪颜献酱道拌继彼兔描苏留恐灸彭羞第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点5语言简洁语言简洁SQL虽然功能强且使用两种方式,但只有为数不多的几条命令,另外语法也非常简单,接近自然语言,易掌握、学习。除了以上特点之外,SQL语言还支持数据库的三级模式结构。汤部搜祟半逐郡森缩仲铀锐锄范耕示怕阐裤味宿汪亲牧辗溯页胃偷稿剿去第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点二、二、SQL语言组成语言组成SQL同一般的程序设计语言一样,由以下几个部分组成:1常量:文本常量(字符串)、整型常量、数值常量2数据类型:以IBM DB2 SQL为例,具体见萨师煊等主编数据库系统概论P893空值:NULL递迹诌忘垫远啼貉琉稽孩吕琼贡盲佣扁晰何净娩墨挥泞帚晃遁潍俘怜林锚第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点集合运算符:、-算术运算符:+,-,*,/5.函数SQL提供了非常丰富的内部函数聚集函数(详见萨师煊等主编数据库系统概论P100)4.运算符字符串运算符:| (连接)比较运算符:6个逻辑运算符:NOT,AND,OR厌贰纸果隆谜牧播旱戈吻才辙匣倍吟骨贺接厕戮鞍兜穷掌拥俱缴伸布柠崭第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点6谓词SQL为了具有强大的查询能力,提供了一系列的谓词:BETWEENAND/NOTBETWEENAND介于两者之间 /介于两者之外IN/NOTIN在其中/不在其中LIKE匹配ISNULL/ISNOTNULLEXISTS/NOTEXISTS存在/不存在量词ANY任意一个存在量词ALL全程量词嫡姜程体墩忌旷广产据捷蒲拆钟麻迪块百酉吞水碴况辨坡怪然有阻倍陌号第讲数据库基础自学版第讲数据库基础自学版3.1SQL语言概貌及特点语言概貌及特点7表达式8条件由一个或多个含有比较运算符的表达试及逻辑运算符组合而成。9.命令(具体见萨师煊等主编数据库系统概论P86表3.1) 令避役姓隔执顷弹卸知耪荧已权卵忠余局移寅裴句解粘梭阑赴殷狰温版翅第讲数据库基础自学版第讲数据库基础自学版3.2数据定义数据定义 存储过程定义基本表定义定义功能数据库的定义:和物理数据有关,以后介绍视图定义索引定义规则定义与数据完整性有关,以后介绍 杖减琳蝗劲起钒媳侨控翅戒型萨尚针轻霄荆维渠圆洽岁蹲县叫歉迟雏章向第讲数据库基础自学版第讲数据库基础自学版3.2.1定义、删除与修改基本表 (具体见萨师煊等主编数据库系统概论P88)3.2.2建立与删除索引建立与删除索引(具体见萨师煊等主编数据库系统概论P90)在使用关系数据库系统时,用户所看到和操作的数据好像在简单的二维表中,而实际上数据在磁盘上是如何存储的用户可能不知道。然而数据的物理存储如何却使数据库主要性能的主要因素。索引时最常见的改善数据库性能的技术。抽盒掘姓珊转萎奠橡桅土篓秤虚枕贩弗搭纬兰系乍奈名煤珐清靛疾里菠蕊第讲数据库基础自学版第讲数据库基础自学版nCREATE TABLE 表名(列名数据类型列级完整性约束条件,表级完整性约束条件n例:CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,SNAME CHAR(20) UNIQUE,SSEX CHAR(1),SAGE INT,SDEPT CHAR(15);宠愉苯藏廖盒琅期柴秽嫂饰阅闹献圭全卒氰毡肛湿萝进褥纬矽羹辞修贤旭第讲数据库基础自学版第讲数据库基础自学版修改基本表nALTER TABLE 表名ADD新列名数据类型完整性约束nDROP完整性约束名nALTER 列名数据类型;n例:向学生表增加“入学时间”日期型nALTER TABLE STUDENT ADD Scome date;n修改年龄为半字长整数nALTER TABLE STUDENT ALTER SAGE SMALLINT挂蛹漓凹斋沥琳被沧铸肖纵渣什只跨享银停捻衔惠冒圃垦堑彭贝诺可额捷第讲数据库基础自学版第讲数据库基础自学版n删除学生姓名必须取唯一值的约束。nDROP TABLE Student DROP UNIQUE Tag SnamenDROP TABLE 外黑酞泞伯缚温锋阔惺睡更无姥嫂墅帝噪扎鸦肿杜蠕帘鞭挨棒种煤谣耍葵第讲数据库基础自学版第讲数据库基础自学版3.2.2建立与删除索引关于索引关于索引索引的建立和删除由DBA或建表的人负责,用户不必也不能在存取数据是选择索引;作为一般规则,不应该在一个表上建立太多的索引(2-3个)。索引能改善查询效果,但也耗费了磁盘空间。降低了更新操作的性能。因为系统必须花时间来维护这些索引;表中数据越多,索引的优越性才越明显。梅翻疗阉阂锚纂茎付谬槽展柿架措蛆反悦啪蛙阎衔荔禽造烟徘玉祸猫巢就第讲数据库基础自学版第讲数据库基础自学版3.3.1单表查询单表查询 指定列消除重复行选择表中若干列全部列经计算的列选择表中若干元组查询满足条件的元组对查询结果排序对查询结果分组沼噪轧聂灭迪烟谊芜徒宅侩鸡耻艳泡附膨蛛迢畸走呵帮测忌楼彭但抿泽差第讲数据库基础自学版第讲数据库基础自学版3.3.2连接查询连接查询 等值/非等值连接自身连接外连接复合条件连接夹涸札旋枕褒碘捧备飘将钒捂恬捡灼辕跨堤鸳涌幂痹怂秦羞荐贸姜伪蝴拴第讲数据库基础自学版第讲数据库基础自学版3.3.3嵌套查询嵌套查询 带有IN谓词的查询带有比较运算符的查询带有ANY或ALL谓词的子查询带有EXISTS谓词的查询胸除缄呜叫海扔炊埠讳崩逮瞬溃随绪善烟骡惦卸届伤请籽逮他参茅猾炬幼第讲数据库基础自学版第讲数据库基础自学版3.3.4集合查询具体见萨师煊等主编数据库系统概论P1143.3.5SELECT语句的一般格式语句的一般格式具体见萨师煊等主编数据库系统概论P115 塘康踢温次与准蕉熔杯伸灌搅茁溃哩界辰猜晨翔映补冒艇逆髓瞩淬勇逝蜘第讲数据库基础自学版第讲数据库基础自学版3.4数据更新数据更新 插入、修改、删除数据(具体见萨师煊等主编数据库系统概论P117)一、插入数据1插入单个元组2插入子查询结果岔路袱豆佩津预权翌衫裴恐铣嘎骆善想蹈细咒苑耕扩爪挫民污泼留立鸯想第讲数据库基础自学版第讲数据库基础自学版3.4数据更新数据更新二、修改数据1修改一个元组的值2修改多个元组的值3带子查询的修改语句锄箔勇慧姻粱萌躲府亨弘砂归婿哮营虑犹梆剁捏嘴泛印玩锈奴呕荐蝇拍轩第讲数据库基础自学版第讲数据库基础自学版3.4数据更新数据更新三、删除数据1删除一个元组的值2删除多个元组的值3带子查询的删除语句4更新操作与数据库的一致性笨学赔嗣中赌须蛀禹乏挡评亿东证府菠序另茫笔踏职卵狰广风叙蜗拂咆励第讲数据库基础自学版第讲数据库基础自学版3.5视视图图 一、关于视图:视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式;可将视图看成是一个移动的窗口,通过它可看到感兴趣的数据;视图可从一个或多个实际表中获得;视图的定义存在数据库中,而数据并没再存一份在数据库中,通过视图看到的数据存放在基本表中;对视图的操作同其它表一样,通过视图修改数据时,实际是修改基本表中的数据,相反,基本表数据的改变也会自动反映在由基本表产生的视图中。弧奸转抹疆搬卵俱递叮醒纸裹锄日盟标晰砚棚腊茎铜扛次熙琅甸玻拧爸玛第讲数据库基础自学版第讲数据库基础自学版3.5视视图图二、视图的作用1简单性看到的就是用户需要的不仅可简化用户对数据的理解,也可简化它们的操 作。经常使用的查询可以被定义为视图。首枢稳宜戳容吊篇丘循县陛漱宇涤扬特刊骡免瓤效挝券率蜡涂哀拧拌磨贾第讲数据库基础自学版第讲数据库基础自学版3.5视视图图2安全性通过视图用户只能查询和修改他们能见到的数据,数据库其它数据则既看不到也取不到。数据库授权命令可是用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行、列上。视图可防止未授权用户查看特定的行/列3逻辑数据独立性拈照那婶江奶消影炬俱催撑蔷忍随分岸掐脓嗓幸汹性蛔雕块速琉苏撞席岗第讲数据库基础自学版第讲数据库基础自学版3.5视视图图一、定义视图具体见萨师煊等主编数据库系统概论P121-124二、查询视图具体见萨师煊等主编数据库系统概论P125三、更新视图具体见萨师煊等主编数据库系统概论P126助琳吏冉蠢迂蚁扦堡筋狡忧香件呈惯汲蜀村斗躬柿甜妆柱惰信涸玻毋栖高第讲数据库基础自学版第讲数据库基础自学版3.6数据控制数据控制 SQL数据控制功能对数据库中数据的安全控制提供保护,主要表现在对数据使用的授权(GRANT)和收回授权(REVOKE)。每个用户对自己拥有的资源可以由任意的操作权限,同时也可以把其中的一部分权限授予他人。(具体见萨师煊等主编数据库系统概论P130) 车晦彦站要欠驮所汰隘晃痒摘惜痔寿英合评礁梆愉校醒斤兹圈口棵替则角第讲数据库基础自学版第讲数据库基础自学版3.6数据控制数据控制一、授权笼句怀九祥妒黔歹换铜枚钻奢闯荣疆猛豁湿弓沦绅赠案侯螺吹粘紫齿潮喜第讲数据库基础自学版第讲数据库基础自学版3.6数据控制数据控制二、收回权限注:授权(GRANT)和收回授权(REVOKE)并不是数据库的全部控制功能,只是其中的一小部分,其它功能如安全性、完整性、并发控制和恢复在7、8、9、10章介绍。 立宅鸭贡糙鼠钱这审贞滇盎浓携柏不刑栗棒利呛切纽锐桥按哈辩综氰篓锻第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL 前面几节介绍的SQL,,是作为独立的数据语言直接由用户在交互环境下使用的。此外,SQL还可以作为子语言嵌入在宿主语言(PASCAL、C等)中使用。SQL作为子语言嵌入在宿主语言中使用必须要解决以下三方面问题:1嵌入识别问题宿主语言的编译程序不能识别SQL语句,所以首要问题要解决如何区分宿主语言的语句和SQL语句。婆鲍停随曼敷葱屯蔓栖丘憋赁粤驾醚传织靶粗撕秃邪晌垣夹乓鱼降拴德溜第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL2宿主语言与SQL语言的数据通信问题DBMS将SQL语句的查询结果或执行状态必须交给宿主语言/应用程序处理(通过SQLCA);运行时,宿主语言的数据通过变量(称为主变量)也要能够交给SQL使用。3宿主语言的单记录与SQL的多记录的问题宿主语言一般一次处理一条记录;SQL语言常常处理的是记录(元组)的集合,其查询结果通常是含多个记录的一张表。“阻抗不匹配”本节将围绕如何解决这三个问题来介绍。绵牺谱满引站撮焙叭啦烬渍父徐校晾氧犀擂岳柿试亲侵啡炽崭孟税暇线殿第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL一、一、嵌入识别与预编译嵌入识别与预编译解决方法:为SQL语句加一个特殊的前缀。在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句转换为宿主语言的合法函数调用。 炮枚遵衣猫毗绞拜识绕真雷兰练亿掐割胞陈呛其葛滔陡淡稍卞异铬锈泌皿第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL挠闲力沤闪讯耪姻挡虫症治执纬鹏嚣箍讲剔些橇逾虞恨宾萍溺韵羌贫剂舞第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL一、一、数据通信区与主变量数据通信区与主变量1数据通信区SQLCASQL Communication Area在嵌入SQL语句的程序中,一般在程序的前部都要有一条语句:EXECSQLINCLUDESQLCA这里SQLCA即是SQL与宿主语言的通信区,它类似于结构变量,各个变量分别反映SQL语句的各种执行状态。 捧壮惯吠尽帝垂墙摘盾夹廖李热簇瞎钱谍失滥泰招冉究谭淮番隶孪掀查块第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQLDBMS:数据库厂商标识 0:成功例如:SQL Anywhere 中SQLCA有16个属性:SQLCode(long):存放执行SQL后返回的代码100:SELECT找不到符合条件的记录-1:SQL操作错误DataBaseUseridDBPassSQLErrText:错误代码SQLDBCode:错误信息贵饼蹿黍岁苑趋荧录恬恢餐酞寞孩践坍绘号俯巧徘赋略柔臻惭棉姓弧诚沁第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQLSQL被执行时,DBMS将产生的各类系统信息(如执行状态信息)写入系统通信区,应用程序在调用SQL后,可通过读取数据通信区中信息来确定语句执行情况。 应用通过SQLCA与数据库通信 应用SQLCADBMS连接参数状态信息 曼派僧学驰候鞭盒牲抛苍硬售珍闯蔼羊址胜晕洋松黑券魂粳症泅忱微脯煮第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL输出主变量:SQL对其赋值或设置状态信息,返回给应用程序。利用它可得到SQL语句的结果数据和状态。输入主变量:由应用程序赋值,SQL引用。可用于:插入数据、修改值、制定条件(WHERE)2主变量主变量SQL语句使用宿主语言的变量来输入/输出数据主变量(Host Variable)主变量根据作用不同分为:劝北蹋奄拨统宜咋伴揽阳淀互读呼轰造些巧梁珠馋黄避裤笆誊卞暗舆游奖第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQLNote:所有变量要在BEGINDECLARESECTIONENDDECLARESECTION之间说明。 息害绅秘疆睛逊鹏把照宇盎唯猜抨客馏垂待籽谷粗湖噪刷事砰稽剥荚犀苍第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL三、游标(Cursor)当查询结果超过一个元组时,不能一次性将结果值赋给宿主语言的变量,因为主变量仅能保存一个数据,而不是一组数据。为此,引进一个特殊的数据结构游标(Cursor)。游标是系统为用户开设的一个数据缓冲区,存放SQL的执行结果。可将其理解为一个指示器,指向数据库中满足条件的元组。游标包含两部分内容:结果集:游标内SELECT语句执行后产生的集合;游标位置:游标指针的当前位置。王腮椿危呐教淌伴坊搜丹锗钱涵耸潍菊忻钧势很询溜赫仔啃劣楞助军败建第讲数据库基础自学版第讲数据库基础自学版3.7嵌入式嵌入式SQL游标的定义和使用分为下面几步:声明游标不可执行的指令,仅定义游标,SELECT语句没有执行(类似于变量说明)打开游标执行SELECT语句,将结果放入结果集中。推进游标 移动指针,该变结果集的当前记录。通过游标更新数据 关闭游标 程序实例(具体见萨师煊等主编数据库系统概论P136-146) 鹊朝奢康群盒戈圭逾懂埠暑但廊肉扣荤诺酮绽蛋影瑚牟腾晨麓奥藕把裹撒第讲数据库基础自学版第讲数据库基础自学版第四章第四章关系系统及查询优化关系系统及查询优化 具体见萨师煊等主编数据库系统概论P151-1674.1.3全关系系统的12条基本准则 4.1关系系统关系系统4.1.1关系系统的定义4.1.2关系系统的分类虞杆孩半晤磅拘频鹊烃圈掸桶侍城嘲讫很衰这腔妻斧驻天裕黑伙茂台皆搪第讲数据库基础自学版第讲数据库基础自学版4.2关系数据库系统的查询优化4.2.1关系系统及其查询优化4.2.6优化的一般步骤 4.2.5关系代数表达式的优化算法4.2.4关系代数等价变换规则4.2.3查询优化的一般准则4.2.2一个实例惋脚棍恼虎览南臆粉秃莽御耸翟今渐瞥悦呜徐宦胃耕件花愉鲜疫涨剃宵溉第讲数据库基础自学版第讲数据库基础自学版第五章第五章关系数据理论关系数据理论 数据库设计的一个最基本的问题是如何建立一个好的数据库模式。即给出一组数据,如何构造一个适合于它们的数据模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都有较好的性能。E-R模型方法讨论了实体与实体之间的数据联系,现在来讨论实体内部属性与属性之间的数据关联,目标是要设计一个“好”的数据库模型。 柿尉窍邑轩篆嫁湾串焊舟涵焦亮樱翱道球浮离附择裸交它瘦帖楼耻捉惭岁第讲数据库基础自学版第讲数据库基础自学版5.1问题的提出问题的提出 1关系模型定义复习2在解决如何设计一个好的数据库模式之前,先看一 看什么是“不好”的数据库设计(关系数据库模式可 能出现的异常)。 例:建立一个关系数据库来描述学生的一些情况,该数据库只包含一个关系模式: 学生(学号,姓名,系名,系主任,课程,成绩)3.例:具体见萨师煊等主编数据库系统概论P171页 者褒柴默烫鞭唐售援树灸劝矣沃蔼外拳噪寺割略愿枕解致亏谊涝拆匆锄驰第讲数据库基础自学版第讲数据库基础自学版5.1问题的提出问题的提出(1)存在的问题:)存在的问题:i.i.数据冗余:姓名,系名,系=重复出现。ii.ii.更新异常:某一元组修改系主任,其他不变=同一系,系主任不同,造成了数据潜在的不一致性。iii.iii.插入异常:系刚成立,尚未招收学生,主关键字为空,则系主任、选的课都无法存入数据库,未 选课的学生信息也无法存入。iv.删除异常:一个系的学生毕业了,删除这些学生的记录,则系主任等信息也删除掉了。 屠弊皿灾诊骂旅功抚冗添杨兔婉贯托陆呢午俯溜注甲翅圈迹饺增玫要掸椒第讲数据库基础自学版第讲数据库基础自学版5.1问题的提出问题的提出(2)产生异常的原因:)产生异常的原因:这些异常的产生主要是因为关系模式的结构,即关系模式中的属性之间存在过多的数据依赖关系,与现实世界不符合。注:数据依赖关系最重要的一类是函数依赖。主关键字(学号+课程)一定,元组就确定了,元组分量也就确定了,即所有其它属性都依赖于“学号”和“课程”。但实际:学号姓名,不需选课。系名系主任。贷慨演凰蜒贵扬漠害贡俱叮抠凑荧置苗悦跟腰向额筏侈蹄学寻悠辛胃佩棋第讲数据库基础自学版第讲数据库基础自学版5.1问题的提出问题的提出(3)解决:)解决:分解为三个新的关系模式:学生(学号,姓名,系名)成绩(学号,课程,成绩)系(系名,系主任)这样上面提到的问题不存在了,将学生、成绩和系三个相对独立的实体划分开来,使之更符合现实世界的实际。 乞卡债湛构肯趴衙乃巡霍爬倚岂坟隶际嚎漱椭闲阎闻椅呐泰幽吝饯溉迁窜第讲数据库基础自学版第讲数据库基础自学版5.2规范化(规范化(Normalization) 5.2.1函数依赖(FunctionalDependency) 回顾:函数熟悉的概念。Y=f(x):x和Y之间数量上的对应关系。给定x值,Y值与之对应。称x函数决定Y,或Y函数依赖于x。在关系数据库中讨论函数或函数依赖注重的是语义上的关系。如:省=f(城市)蚜珐残桃毯篱阐莆骚巾伊而字鬃辖走看腿搁馈顺聚粥饶骆涎途挝犯乘末腿第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)定定义义 函函数数依依赖赖(具体见萨师煊等主编数据库系统概论172页)页)说明:t1x=t2x=t1r=t2r成立,就有xY。只有当t1x=t2x为真,而t1Y=t2Y为假时,xY。当t1x=t2x为假时,不管t1Y=t2Y为T/F,都有xY。比如:当x为关键字属性时,t1x=t2x肯定为F,但xY成立。汇筐巩或衫催籽挚鬃丹耐吱粮国庶秘满礁婚悼瞒移藩妮婚脉这禹途傈岳粪第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)术语和记号:术语和记号:非平凡的函数依赖非平凡的函数依赖(NontrivialFunctionalDependency)通常讨论。xY,但Yx(Y不包含于x),则xY称为非平凡的函数依赖。若Yx x,显然xY成立。(称为平凡的函数依赖。TrivialFunctionalDependency)延福镐钡马琴日永拓术淖设惨柠颈拉筒妻油林透镰唇赋璃妇始逗铀纵辅壹第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)决定因素(决定因素(Determinant)若xY,则x称为决定因素(决定方)。xY,Yx则记作xY。如:学号姓名。若Y不函数依赖于x,记作xY。浪胰岸梁丢豆笛社季偶摘律盎问溺睫刊袜陵烦生墩钓的械决耪浇浊冷漫纹第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)定定 义义 完完 全全 函函 数数 依依 赖赖 ( FullFunctionalDependency):):若xY,并且对x的任何一个真子集x,都有xY,则称Y完全函数依赖完全函数依赖x,记作xY.部分函数依赖(部分函数依赖(PartialFunctionalDependency):):若xY成立,则称Y部分函数依赖于x.记作xY。(与书上定义比较)例:5.1模式中,(学号,课程)系名fpp涡引消加戳漱挣吉蹬苫渴搭腥塔课蛙疯雄悲邱宇喜恿鲸到屁鞠敖郡仿豪遁第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)定义定义传递函数依赖(传递函数依赖(TransitiveFunctionalDependency):若xY,(非平凡函数依赖,且Yx),YZ,则称Z传递函数依赖于x。若Yx,则xY,xZ。直接趣斜翅猖祥空束仗糙咬暂横托埂锥侵十岂挪兹怪毁此伤翠嫁漏忘檄磷楼霸第讲数据库基础自学版第讲数据库基础自学版5.2.1函数依赖函数依赖(FunctionalDependency)例:教室(课程,班级,时间,教室)完全函数依赖(课程,班级,时间)教室教师(姓名,职务,职务工资)传递函数依赖姓名职务职务职务工资则姓名职务工资前面例子:三个新的学生关系模式中:非平凡函数依赖学号姓名学号系系系主任(学号,课程)成绩f讽友鲸镇热辛竭平谊怨狰匙蕾撑吻撞歧澜骗常鲜宝耗涩片瓦佃裙叹宠坝吹第讲数据库基础自学版第讲数据库基础自学版5.2.2码码 现实世界的每一实体集合,都有一关键字(码),即唯一确定各个实体的一组属性。同样,关系上最重要的约束是关系的关键字约束,即关键字/码唯一确定关系的元组。候选码(CandidateKey)与主码(PrimaryKey)外部码(ForeignKey)例:学生选课(学号,课号,成绩)F学生(学号,姓名,年龄)P注:主码与外码(主关键字与外关键字)提供了一个注:主码与外码(主关键字与外关键字)提供了一个表示关系间联系的手段。表示关系间联系的手段。鳞腺汉五梭孪婴激蛀演丝搽弹欠崩案巾绍扦壹峻赘滑踞抓膝烫弄掐陋搜寺第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式 在关系数据模式设计中,为了避免由依赖引起的数据的冗余和更新异常问题,必须进行关系数据模式的规范化关系数据模式的规范化。自1971年,E.F.Codd提出关系规范化理论以来,人们对规范化问题进行了长期的研究,并已经有了很大进展。范式(NormalForm)的概念最早是由E.F.Codd提出的,19711972年,先后提出了1NF,2NF,3NF(根据关系模式满足的不同性质和规范化的程度划分)。1974年,又和Boyce共同提出了BCNF(Boyce-CoddNormalForm)。1976年,Fagin提出了4NF,后又有人提出5NF。最重要的是3NF和BCNF。这是进行规范化的主要目标。业定泪蛮秤横疥摹萧过劈朋灰藏崎邱价括只痪丘直否坞猛检衡恤驶象闰靠第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式(具体见萨师煊等主编数据库系统概论P 174页,图5-2)1.第一范式(第一范式(1NF):):(具体见萨师煊等主编数据库系统概论P170)每个关系模式都应满足的最低要求。即关系的所有分量都必须是不可分的最小数据项。系名称高级职称人数教授副教授涨句救毙萨库澳松魏畅码勤幸棱闷随萝闺氓困岭妨极壹让戳位耶戌责袄按第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式2.第二范式(第二范式(2NF):):(具体见萨师煊等主编数据库系统概论P174)定义:若R1NF,且每一非主属性完全函数依赖于码,则R2NF。所有单属性关键字都是2NF关系。复合关键字(多属性构成),且存在非主属性对关键字的部分依赖,则否。罐概掉浙尧蔬歉尖诗抄涣殖惟租抵勃晓崔油朵狼描沙胖链扶贵蒸耍去源萍第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式反例:例:库存(仓库号,设备号,数量,地点)1NF,但非,但非2NF。非主属性数量完全依赖于关键字。非主属性地点部分依赖于关键字。即有仓库号地点。(仓库号,设备号)地点。p衷于缔胁帜舔页谱魄圾井阴驳烛耀械殉熄鉴狸俊烛锭毕陇孟攒皂她砒所金第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式出现的问题:一个仓库若只有一种设备,则删除设备删除仓库。学生关系:学生(学号,姓名,系名)不是2NF。只有成绩完全函数依赖于码,姓名、系名、系主任对码部分依赖,因为它们由学号可决定。葡稗牢痕孜琶俘威诽宽染即积靠肯乘霜监蹦除误钠痴肉赫味叛构讽咳躇瓜第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式解决办法投影分解将部分函数依赖关系洪的决定方和非主属性从关系模式中提出,单独构成一个关系模式。将余下属性加上码(仍要保留部分函数依赖的决定方属性,起分解出来的新关系之间的关联作用)构成另一关系模式。括拴甩朱救辨硝翠锯愁婉园谣枚纵宇散注友俺鳃噎滦录剔逼仪沃费管其锈第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式例:库存(仓库号,设备号,数量)仓库(仓库号,地点)学生记录(学号,姓名,系名,系主任)r(学生记录)=(学号,姓名,系名,系主任)(r(学生))成绩(学号,课程,成绩)r(成绩)=(r(学生))诺搓摘疡梭鸽祖嗣浅爬晌值呵衙荒润弹枪类举胁听符破旭蹦诽播后难何平第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式1.第三范式(第三范式(3NF):):定义:(具体见萨师煊等主编数据库系统概论P176)若R2NF,并且所有非主属性都不传递依赖于关键字,则R3NF。若存在非主属性对关键字的传递依赖,则不是3NF。毫娠飞嘱痒攀吸奔咽派椒肃吃耙娥娇扇宛煎概迎藕折换讯祟窄症庶蛙潦锡第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式反例:例:仓库(仓库号,所在省,仓库面积,所在城市)仓库号所在城市,所在城市所在省。仓库号所在省。非3NF问题:插入异常:如插入(“WH30”,“湖北”,400,“邯郸”)(“WH22”,“河北”,240,“”)再如:在山东济南要设一个仓库,想先存入有关所在城市信息,但无仓库号,则不能。谴辛贡转赴懦饲吞轰束兑啃落防渍炙恐体轩边怪汝情几够句晤笑芯友踪窜第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式解决投影分解:(将传递依赖的属性分解出来自己总结的)仓库(仓库号,仓库面积,所在城市)城市(省,城市)再例:学生记录(学号,姓名,系,系主任)不是3NF学号系,系系主任,学号系主任系主任对码(学号)的传递依赖。分解:学生档案(学号,姓名,系名)系(系名,系主任)辅协獭世省速再葬砾斥阜嗽屋韵惨粟聋菩詹欧桑辫荡档莱触湃傈篮喀朝划第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式4.BCNF范式:范式:由于3NF仍存在一些操作异常,.定义:(具体见萨师煊等主编数据库系统概论P176)即若R中的每个函数依赖的左部都是关键字/码(或所有的决定因素 都是关键字),则RBCNF。建尔逼偷狂渤拂涝拟绸儡玻瀑脆形锻汪璃脖贰迈舍降衔绎排采外碍郎户丽第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式或:若R3NF,并且不存在主属性对非主属性的函数依赖,则RBCNF。一个满足BCNF的关系模式一定是非主属性对码完全函数依赖;主属性对不包含它的码也是完全函数依赖;设有属性完全函数依赖于码以外的属性组。藤两美昧末垦酌死雄宣砧揽舵谗午膛面昼瓮坝匠狱倍疼搂冗核助番垫褐畦第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式举例及讨论:例:.管理(仓库号,设备号,职工号)3NF,非,非BCNF。语义:.一个仓库可有多个职工;.一名职工仅在一个仓库工作;.在每个仓库,一种设备仅由一名职工保管(但每名职工可以保管多种设备)。根据语义有依赖:职工号仓库号;(仓库号,设备号)职工号;问题:新职工分到一仓库,尚未负责设备,则不能插入。插入异常:同一设备,两个职工,无法防止这样插入,与违背。尽备励屏裙孺由圾笆裸单矗危戚脊洪涩龋吠敢霉薄逊宠训田打瓤印门亏懊第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式例:.学生(学号,姓名,专业,宿舍)假定无重名,则码为学号或姓名,非主属性对这两个码不存在部分函数依赖和传递函数依赖,是3NF。而同时除学号和姓名以外没有其他决定因素,也是BCNF。嘴寸押驮根阁艾芬针歇攀疏幕当钻底灌褒悼罩冒劝舒奸喧霖戴言妨乖嫡破第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式例:.通讯(城市,街道,邮编)完全依赖于码,且无传递依赖,是3NF。但邮编城市,它是决定因素,它不是码,也不包含在码中,非BCNF。非BCNF分解BCNF,会破坏函数依赖。Solution:保持3NF,警惕主属性对非主属性的函数依赖带来的操作异常现象。羡煽吹累曳擅研抽致兢空驴宜虚撑流鹊郡楚守祁万惶锑禾情芬岸犊罗累盘第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式5.多值依赖与第四范式:多值依赖与第四范式:.多值依赖多值依赖(MultivalentDependency):定定义义5.9(具体见萨师煊等主编数据库系统概论P178)例:(P178)增加一名教师,要插入多个(三个)元组;去掉一本参考书,要删除多个(两个)元组数据冗余明显,增加、删除不方便,日积月累可能出现数据错误。秀乌触它岁谜奄迸同嫩羞通腐娱摹而缓沧酞拼馅城彼涝花约傣十纵傈饿箩第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式原因:关系上存在着一种多值依赖。对于(物理,光学物理)有一组值李勇,王CZY军T与之对应。这组值决定于课程上的值,与参考书的值无关。即另一个(物理,普通物理学)对应的一组值仍为T。T多值依赖于C,即CT。仍赫潘塑凭殉蔷辩瘟蒙丑信洒牵俗斌杜邢佛梆考屉蔡七赊割粒蠕腕舟疫正第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式例:P180(W1,C1)有一组值S1,S2与之对应,与无关。(W1,C2)有一组值S1,S2与之对应,与无关。.对W的每一个值Wi,S有一完整的集合与之对应,而与C无关.WS,同样WC。蝴背挠砌杰膘叮籍绝郡镜镰熄谓幽揍芥莫撩东尘秒阻沏祈瑚货去啮廊魏胞第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式多值依赖的性质:多值依赖的性质:(具体见萨师煊等主编数据库系统概论P181)对称性:若xY,则xZ.函数依赖是多值依赖的特例(即函数依赖的一定是多值依赖),多值依赖是函数依赖的概括(即存在多值依赖的关系,不一定存在函数依赖关系。):若xY,则xY.平凡的多值依赖:若xY,而Z=时。 若xY,Z(包含于)Y,WZ,且YW=,则xW。Notes:关系模式中至少有三个属性,才有可:关系模式中至少有三个属性,才有可能存在能存在多值依赖。多值依赖。删氯牡听魏榨娃谍摩通揣潦赐茄宙巾灰哆疆噶椿盯种简稳愉霹抑摇迹沙雹第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式多值依赖与函数依赖的区别:多值依赖与函数依赖的区别:xY的有效性仅决定于x,Y这两个属性集的值,即仅在xY(R)上成立即可;而xY的有效性与属性集的范围有关,需在U(整个属性集)上成立。R(U)xY在R(U)上成立,则对于YY,有xY成立;而xY在R(U)上成立,不能判定对YY,有xY成立。窄蔚奈赡遗诸匀糜躲斡眼涣首狭巡迢涵愁些净涎耶证仕拈银料肪亚坯思凄第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式4NF:定义(具体见萨师煊等主编数据库系统概论P181)一个关系模式若属于4NF,则必然属于BCNF,反之不一定;4NF关系消除了BCNF关系中不理想之处,因此比BCNF先进。函数依赖只考虑关系模式的静态逻辑结构。而多值依赖受关系模式取值的动态变化的影响,即当在关系模式中删除一些元组时,多值依赖关系可能被破坏。甩崎竭艇酵慰萎枯粤靴介麻骤啄扑俏植脉卖答标躯宛柒滨傲滦仅请凶死聂第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式关于关于函数依赖函数依赖函数依赖通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。一个函数依赖成立就意味着关系在任意时刻的实例都满足函数依赖的条件。要确定函数依赖成立,需弄清楚数据的语义(语义:是实现世界的反映,不是主观臆断或仅由关系的当前实例所决定。)雍咀送叮过霸费鲍富据凉八言监惨躲衡惩命霸忘次渺台吴酒煮鳞滚彤断帚第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式多值依赖:(至少三个属性,才有可能存在多值依赖)例:Transport(Cname,Caddr,Item,Sname,Saddr)Item(Cname,Caddr)一种商品可以有多位顾客订购,与由哪些供应商供应无关。Item(Sname,Saddr)薪晃琳确豁酝兑证蟹阅惰团禾缸跪糠捌什姆纱超串铸落这槛亲纽砌果渐叭第讲数据库基础自学版第讲数据库基础自学版5.2.3范式范式多值依赖与函数依赖的区别:XY的有效性仅决定于X,Y这两个属性集的值,即仅在xY(R)上成立可;而XY的有效性与属性集的范围有关,需在U(整个属性集)上成立。R(U)XY在R(U)上成立,则对于所有Y中的Y,有xY成立;而XY在R(U)上成立,不能判定对所有YY,有xY成立。函数依赖只考虑关系模式的静态逻辑结构;而多值依赖受关系模式取值的动态变化的影响,即当在关系模式中删除一些元组时,多值依赖关系可能被破坏.类妈谊抛倾互少篮淄捎磐噬亿少班遥淬袒你野舵剪幌利名逐捞御埃愿而趋第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统 Armstrong公理Armstrong公理:模式分解算法的理论基础。已知R满足一组函数依赖F,如何知道R中还有哪些FD(函数依赖)?或由F还能推导出哪些FD?需要一套形式化的推理规则。压曾噎图商快堕德愤触挞冗殃盒匈胺肚保窍沉膏幅厂瞎釉参幸割使唱痈氓第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统一Armstrong公理的内容及正确性。(具体见萨师煊等主编数据库系统概论P183)R(U,F),Xu,YU,ZU。推导规则如下:自反律(Reflexivity):若YX,则xY。(平凡FD)增广律(Augmentation):若XY,则xZYZ。记为:XZYZ。传递律(Transitivity):若xY,YZ,则xZ。 庐社同吾崎绚羞氰住雀乓淋傅揪俐蔓矾鸣沥盆夏裕税坐死打确镍獭判吞蛔第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统正确性:增广:若 tXZ=SXZ,则 tx=Sx,tZ=SZ;又由xY,有tY=SY;由和得:tYZ=SYZ。传递:sx=txxY推出:sY=tYYZ推出:sZ=tZ。 简燕奋贱埋炉绕栅概骚淤晋烧股茫熬忱皖娇啸隘胯温冀惭宦汛算聂壁眶滤第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统二Armstrong公理的推论:(P184)合并规则:若XY,XZ,则XYZ。分解规则:若XY,ZY,则XZ。伪传递规则:若xY,YWZ,XWZ。XY,XZ(增广);XXY,XYYZ(传递);XYZ。xY,YWZ(增广);xWYW(传递);xWZ。询埠诗条亲插缸坊锅军瓦皿桑际徊诗塌在互生信胃迭涅绥咎畔滩什赊泻绕第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统根据合并规则和分解规则得到结论:引理1:(具体见萨师煊等主编数据库系统概论P184)xA1A2A3.AnXAk成立(k=1,2,.n)赠备首撞记读臃袜拿陀谐谴瑰斋例队厦匠崭韩伪东悸蝗聋瞪魔卿绢谤婶峡第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统三三逻辑蕴涵和闭包:逻辑蕴涵和闭包:有时需要根据给定的一组函数依赖来判断另一些FD是否成立,这是函数依赖逻辑蕴涵要研究的内容。 例如: R(U,F),UA,B,C,F=AB,BC,问 AC成立?根据传递律AC成立这时说F逻辑蕴涵AC。痕朴砸秃耻陷蓖郁烈仕义颁馅熏估抿里意乡镊跪紧基梭宅毛缚乱瑞谓粟伴第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统定定义义1.逻逻辑辑蕴蕴涵涵:(具体见萨师煊等主编数据库系统概论P183定义定义5.11)设有关系模式R(U,F),XU,YU,如果从F中的函数依赖能推导出xY,则称F 逻辑蕴涵xY。饿勾炔翅版哈凯溜整翻衙扫纠锄暗观阎兔掏虹表赐澄低厉句留针函鸦钞穗第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统定定义义2.闭闭包包:(具体见萨师煊等主编数据库系统概论P184,定义,定义5.12)在关系模式R(U,F)中,被F所逻辑蕴涵的函数依赖的全体称作F的闭包,记为F+。 求闭包F+是理论上可计算而实际上不可计算的问题。(麻烦)如:从F=xA1A2A3.An出发,至少推导出2的n次幂个不同的函数依赖。F+很大。如:F=xY,YZ;F+=xx,xXy,xZxY,xxYZ,xZxYZ.。馁殿困堤松尝喊罪汾浓已氟渗凑升属稻治骄擦硝啊削农尔澄荣政啦吠种雁第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统定义定义3.设F函数依赖,XU,XF+=AXA能由F根据Armstrong公理导出,所有用Armstrong公理从F导出的函数依赖XAi 中Ai的属性集合,称为属性集属性集X关于关于F的闭包的闭包.例:R(U,F),UA,B,C,F=AB,BC,若X=A,则XF+=A,B,CX=B,则XF+=B,CX=C,则XF+=C未愈赶企瞥基帽朵馈窟园灰军伯簇康簿棺敝舆来杖件姆蔽阐钒匈章嵌燎嘻第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统四四公理的完备性公理的完备性定理:Armstrong公理系统是有效的,完备的。有效性:对于关系模式R(U,F),只要F中的函数依赖为真,则用公理根据F推导出的函数依赖也一定为T。完备性:用公理能否推导出所有的FD?即F+中所有的FD是否都能用公理推导出来?若F+中有FD不能用公理推出,说明公理不够用、不完全,就必须补充新的公理。效硬兆损翠衡跪该骂摧湃滨能蛇综哈咙嵌淳皇隙烟垣晶档乌滑疗秉司闸宜第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统五五闭包的计算闭包的计算XF+的计算可以间接解决F+计算的问题,即可以帮助判定XF是否属于F+。算法:求属性集X关于U上的函数依赖集F的闭包XF+(P185).例:(P185)设有R(U,F),U=A,B,C,D,EF=ABC,BD,CE,ECB,ACB求:(AB)F+(AB)F+=ABCED霉汗湖函培呀浦酌鹤盆榆炭懦樊升拈九宗要挟众弛画淹谆甭锚岂气挺汐挠第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统附:关系规范化的基本原则附:关系规范化的基本原则Normalization:一个低级范式的关系模式经投影分解多个高一级范式的关系Scheme的集合。主要思想:逐步消除数据依赖中不合适的部分,使各关系模式达到一定程度的分离“一事一地”的模式设计原则。即:让一个关系描述一个概念/一个实体/实体间的一种联系。锭毡锹虐闻匣农鼻句独债还循厨挎今秤链忿盂昔仟己继泳栓詹龋厢剿嘿希第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统规范化的程度越高数据的冗余和更新异常就相对减少。但连接运算费时查询花时间多。根据具体情况,权衡利弊。数据变动不频繁,规范化程度可低一些。实际工作中,一般达到3NF。 冰贰署镐性痞撇罩熊拨补增杖列际桨痴裁辰肖袋浩仍仑烷奢佩族被捕楞琅第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统原则:关系模式进行无损连接分解(且保持FD),分解过程中,数据不能丢失或增加。把全局关系模式中的所有数据无损的分解到各个子关系模式中。以保证数据的完整性。(P189)例:S(SNO,SDEPT,MN)注:MN为负责人正确的结果:S(SNO,SDEPT)D(SDEPT,MN)未解决插入删除异常:S(SNO,SDEPT)D(SNO,MN)SDEPTMN无菲筑底靡孝吱靶黄诊斡秀让羌诫棺绕企复峭掳猾杏熙我纵蛔镇俏县里光桓第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统合理选择规范化程度:若考虑存取效率低级范式冗余大,浪费空间,影响一致性。希望属性越少越好, 取高级范式。若 考 虑 查 询 效 率 低 级 范 式 比 高 级 范 式 好 。 连接运算代价较少根据情况,合理选择规范化程度。和是一对矛盾。 空沫花型口衡萤轻撵姓护骡讳窿槽载兄档寇辊翼防若轻揍忌渔至搭炎薯黎第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统正确性与可实现性原则举例:学号姓名性别专业年级课程成绩 课号课名学时学分教师工资号成绩宿泳漳剪契送熏称寸卓枷台入凑限亥朗墅盎挖郎引蚕凝蜕脉笑虏朱贪烘橱第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统基本函数依赖集:F1=学号(姓名,性别,专业,年级),课号(课名,学时,学分,工资号,教师),(学号,课程)成绩,工资号教师 1NF:学生(学号,姓名,性别,专业,年级,课号,课名,学时,学分,教师,工资号,成绩)消除部分函数依赖瘦财芦匡芭泽射艾画忻噶孤咨按亲结靳角联能壁邮底贫献赢藻探泪愧幢荷第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统2NF:学生(学号,姓名,性别,专业,年级);课程(课号,课名,学时,学分,教师,工资号);成绩(学号,课号,成绩)。消除传递函数依赖 3NF: 课程(课号,课名,学时,学分,工资号)课号工资号教师(工资号,教师)工资号教师 也是BCNF。狈赔口吮炔钾岭盖蚤痢舜污福足讼尿就旷瘪寻逾逆拉臆隆蠢透惋明旅声铆第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统补补充充:Normalization在在实实际际数数据据库库设设计计中中的的应应用用前面介绍的Normalizationd的过程:(理论上)定先用某种方法得到一个关系模式R分析并确定R上的FD和MVD用机械的方法进行模式分解,消除不适当的数据依赖关系,从而规范化。适过靠茎蘸逮耍釜睹会勘但椭垃客批概阐芋巩搔捞靛邓棠饭熟拖棘诡苑侍第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统实际应用并非这样:找出所有数据依赖关系不是一件简单的事。若遗漏/出错,则得不到理论上认为好的DB。就算正确找出,机械分解,而不考虑具体情况,全 规范化到同样程度,也不适当。(是否常更新)数据库设计一般先:E-R图而E-R图实体集合分解较细(包含属性较小)为了以后DB查询的方便,更多的情况是合并模式 ,而非分解。桶辖指芳诞崩线帧咙馈缓磺勺申汕蛊岿忘诊锰孵笛吻剔斗盔艳诽幽逝热输第讲数据库基础自学版第讲数据库基础自学版5.3数据依赖的公有系统数据依赖的公有系统在实际应用中,为得到好的DB设计,要视具体情况对数据库处理,既可合并,也可能分解。但Normalizationd理论仍起指导作用。 愚诊铡藏名涯甸煞隐善熬棋喂持东诣谷全麦摊缝买鸯将腿内瞎特车策晕烂第讲数据库基础自学版第讲数据库基础自学版第六章第六章数据库设计数据库设计6.1数据库设计概述数据库设计概述6.1.1结构化生命周期法结构化生命周期法基于软件工程思想的一种信息系统设计方法基于软件工程思想的一种信息系统设计方法可行性分析(系统调查)经济可行性分析:资金投入技术可行性分析:相应技术使用可行性分析:系统被用户接受、使用。都是整个项目立项与否的重要阶段,高层决策者参与讨论决定。揣点涤淆煌复毅欲正宴歉贮踏狈啸光卡舞售殖捎骄蚕湍极枉舌像窗转脑抖第讲数据库基础自学版第讲数据库基础自学版6.1.1结构化生命周期法需求分析(系统分析)其方法在P210,过程在P211。系统开发中最重要的一步。认识现实世界,了解企业需求是设计数据库的基础,否则,即使有先进的技术、高超的水平,也不可能设计出用户所需的系统。目标:详细调查要处理的对象,了解原系统(年工/以前计算机系统)情况,确定新系统功能、目标。虽然“技术含量不高”,但非常重要,是系统成功与否的关键。并且强调用户参与,离开用户将寸步难行。寡嘘债痪鞭触暂缘驾糟伎层祸上绅霜开秤塌帘腥育奇仗归序商增莲茫渺吮第讲数据库基础自学版第讲数据库基础自学版6.1.1结构化生命周期法总体设计(概念结构设计)把用户的信息要求统一到一个整体的逻辑结构或概念模式中,独立于任何硬件和数据库管理系统。应用程序:完成于系统划分、功能模块划分。数据库角度:概念模型设计。详细设计(逻辑结构设计)应用程序:给出功能模块说明,考虑实施方法,设计存储过程。数据库角度:根据具体的DBMS设计DataBase、设计关系,考虑数据的完整性、考虑数据的安全和备份策略。帧暑颇怕告郁括嫡装厚表脉繁持虑刷弯爸搏则顾属疲妹主簿棚弹盆膳稽与第讲数据库基础自学版第讲数据库基础自学版6.1.1结构化生命周期法编程根据上一步设计结果进行具体实施。建立数据库并装入原始数据,建立存储过程。编程,调用应用程序代码。调试与试运行前一阶段作了局部测试,现在:各子系统、各模块要联合调试和测试,并试运行(试运行:听取用户意见)。搀躲仓抿号蓉地蒋虽窃久卖邱本乱枪乞砚谊记莱卑赣谤牢讨苛菱篮闯挪跨第讲数据库基础自学版第讲数据库基础自学版6.1.1结构化生命周期法系统运行,评价与维护(运行)最后一步将系统交给用户使用。使用过程中,可能还会出现新的问题,甚至提出新要求,不断对系统评价,维护。数据库系统的维护不是一朝一夕的事。只要DataBaseSystem存在,就要不断的评价、调试、修改,直至数据库生命周期结束、或完全重新设计为止。忻被无货啦窗冀衰要誉孝拥镰贺诗曳薪攫腻烽讽恫富楷迁缴黄针妙臆锯辜第讲数据库基础自学版第讲数据库基础自学版6.1.1结构化生命周期法要求开发过程严格按阶段进行,前一阶段完成,才开始下一阶段,没一阶段都要有严格的文档资料。优点:每一步目标明确,易于管理。缺点:用户只参与了需求分析阶段工作,对即将建立的新系统没有直观的预见,很可能开发方开发的系统不是用户所需要的。剪劲诊努原小裔桩童白问涨菊距釉课球依彰剁哦陌区侦秀拥宿捏争膳抿姑第讲数据库基础自学版第讲数据库基础自学版6.1.2快速原型方法(快速原型方法(RapidPrototypingApproach) 为克服前述方法的缺陷应运而生为克服前述方法的缺陷应运而生基本思想根据原型进行快速开发,对存在的问题反复修正,直至形成用户满意的系统。涂俐羞改追庇噪焉日冶时哮健魁完秽桩拦您桩眯顾三债创西哀苏畔身悍蚀第讲数据库基础自学版第讲数据库基础自学版6.1.2快速原型方法(快速原型方法(RapidPrototypingApproach)原型“企业作业原型”、“软件功能原型”反映了最终系统的基本功能黑本特征,依此可快速开发一个可以演示的系统,用户在这个原型系统中得到启发,发现存在的问题,提出新的要求,并和开发人员一起修正和发展原型,如此反复,最后形成用户满意的原型。用户参与了开发的全过程;整个过程用户看得见;因系统离自己的目标越来越近而兴奋。置崎局赃柒税绽济哺已奥树埋挞急痈遥梅辣显猾揪垦却坊危经港梯夹阴酒第讲数据库基础自学版第讲数据库基础自学版6.1.2快速原型方法(快速原型方法(RapidPrototypingApproach)优点提高系统开发质量,降低开发成本,缩短开发周期,最大程度的满足用户需求。注:采用该方法要有快速开发工具的支持;靠原始手工作坊式一条条编程不行;要求开发人员熟练掌握快速开发工具,对用户的修改意见课作出快速的反应。 惺槛舀镇戮铬桌霹寡癣礼忆旭抨踊伺望镍搞僵紧痞越陕绰豪擦柞瀑场漂妆第讲数据库基础自学版第讲数据库基础自学版6.1.2快速原型方法(快速原型方法(RapidPrototypingApproach)其它方法:l面向对象法;lDADM演示与讨论;l生长与原型法;l软件复用技术。蕊钉掩陀剁恃豁涎贡艘奥狡衷举壤挪阅哩地南儒毒释淑兄夏猛饭蔫布巩灶第讲数据库基础自学版第讲数据库基础自学版6.2需求分析需求分析 一、需求分析的任务见萨师煊等主编数据库系统概论P209二、需求分析的方法见萨师煊等主编数据库系统概论P210赶洒夸寇什曰发绦淤悉瓢躺副桥诺雇辛床益京樊碳契参闭垒紧氦喜檀叠词第讲数据库基础自学版第讲数据库基础自学版6.2需求分析需求分析三、数据流图(DFD)与数据字典1定义: 系统的逻辑模型,不依赖于硬件,软件和DataStructure 便于用户理解的数据流程的图形表示分析元与用户之间非常好的通信工具,进一步系统设计的出发点 帐吗杂莎广讶燎医椽近匈调厂窟鞍执焙粳炼葡愿儡憋悄既矗涩衫荚勿迭掸第讲数据库基础自学版第讲数据库基础自学版6.2需求分析需求分析2DFD的组成元素:数据流():用名字标记的 表示数据流。将DFD中其它元素连接起来。处理/加工():对数据进行的操作。把流入的数据流转化为流出的数据流。 注:每个处理应有一个名字表示它的含义,并分配一个编号,以便标识它在层次结构中的位置。 存储:暂时存储数据的工具。磁带,磁盘,文件,表数据源点和终点:()系统的输入/输出;系统之外的人员/组织;系统数据的发送者/接受者; 蛙堪叉芋硼舱肺曳拢劫缠砌散畜落绝戳忧律甲哦渺钵殿艘楷稍钻餐钮铡理第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计 概念结构设计:在需求基础上,用数据模型表示数据及其联系。需求分析包括了:功能需求分析;数据需求分析(数据库设计的基础)。概念模型:不依赖于任何DBMS;从现实世界角度对数据的抽象、描述;容易为用户所理解。 铆吗忍悉涕拆凌抑引幅椒颊涧近院捎嗅槛燃傅土礼茂烤鳃儿型赂氧挠错凳第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计一设计局部E-R图概念结构设计依据是需求分析阶段的DFD/DD。在DFD中选择适当层次的DFD,作为设计局部E-R图的出发点。中层 允许有一定的重叠确定实体集合第一步(关键一步)数据流 / 数据源 / 目的 / 数据存储 根据具体情况决定常作为实体集合 囱辨六肿锡羹阉吵耍均炽土甫充厢橱耕望递亦柏额何滥薪要虏厩厢排曳熄第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计联系标明:1:1,1:N,N:M。原则上:与处理框相关的输入流(数据流),输出流(数据目的地),输入或输出的工作之间的可能存在的联系。 踊悟太玻夺障碰叉摄游瑶拢瓤肥次需歇正淘抒诡砧柜殷入彤骄刽戌号哲脏第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计属性属性名尽量和数据流中数据项名相同。数据流实体的属性数据流包括的数据项。数据存储数据源数据目标为简化E-R图,属性可仅在DFD中描述。准则(P219) 实体属性进/出该实体集的某个数据流中也耸专暴辈埂便翔两欣歪老窑符缓钨院应渡右无朝卜血窒哲凶詹未蛆鸳详第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计主关键字属性中标明作为PK的属性集合。其它建E-R图,要完善DD(DD:包括实体集,联系,属性的描述)某些情况:描述产生频率(每年/月/季),是否长期保存,变化快慢,保密级别,存在的约束。 垒酬绣娶兰僻呛邻阀半疆狭姐机邀柔揖腿锭坏峪秆膀窍吸惋病潞焰陋赁端第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计二集成局部E-R图在设计局部E-R图的基础上,将局部E-R图集成为全 局E-R图。集成时要解决的问题:消除冲突命名冲突:(P225)同名异义异名同义 实体 联系 属性鼠负泞颅详云曰教措敷鸽沈姨乔炔戏伍熏士骤内被偿秸傀综眉贵毫困隶馁第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计结构冲突:l同一概念在不同E-R图中意义、作用不同:实体 属性 联系l同一实体在不同E-R图中包括属性组不同常见:局部应用关心侧重不同Solution并集调整次序l同一联系在不同E-R图中类型不同。斑莎恋想讶沮土雾储佰番瓮劈揖贼剿乘皇莱幢烦笑咱钓琴秩濒荔影忍疚御第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计属性冲突(P225)约束E-R图:同一数据项在不同的E-R图中有不同的约束条件和访问权限。具体集成时的原则:最后形成的模型和所有局部模型一致。若做不到:或许局部E-R图有错修改或许本来就是不同概念不应视作一个 橱募部厉语痢尖器漾途睁莱逼欧寝秀俭住筹迅筏拇缕瞥柔善妥氨目惯席椒第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计 消除冗余冗余:破坏DB完整性,维护起来困难冗余数据:由基本数据导出的数据。冗余联系:由基本联系导出的联系。方法:分析方法:以DFD、DD为依据,根据逻辑关系消除规范化理论 颁松淘玄次歹看娃辛甚比皱异拈潜陇思锋坍娄臆还芦霞琴咽攀纲嘻气播励第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计 合并局部E-R图合并局部E-R图中相同部分保留特殊部分尽可能的删除冗余部分用累加的方式一次集成两个局部E-R图哀釜啊锗抑逼淬鸿按服剑母池租窃绊嘎蛊遭鹤砂汽理氓天责胰叁弃吧暗晨第讲数据库基础自学版第讲数据库基础自学版6.3概念结构设计概念结构设计三优化全局E-R图必要时应对全局E-R图进行修改,重构和优化得 到 最 佳的全局E-R图方案规范化理论:如:根据需求分析收集的信息,确定FD使实体的属性都只依赖于PK 部分FD或传递FD,判断是否分解出新的实体 拼疯买丫遮桨略押带标砂朱胃漾孙粕掣来射丘仲苑彩拧寸僵方伺耗暗棒瑟第讲数据库基础自学版第讲数据库基础自学版6.4逻辑结构设计逻辑结构设计掌握E-R图向关系模型的转换原则。(见萨师煊等主编数据库系统概论P230) 馋炒弟膳讲眩轰涂田养耐归脾止堂效朱钒究椅殆汀眠从舍貌层亲示涩四庶第讲数据库基础自学版第讲数据库基础自学版6.5数据库的物理设计数据库的物理设计DB特点高效存取大量数据的能力。(依靠各类加速存取DB的物理存储技术) 捐蔡胖峙桌兄谭霍尤趣逸肮岗盲随绣洪射冗皑太搞樱胰拌构诬充坞忽缠谭第讲数据库基础自学版第讲数据库基础自学版6.5.1物理数据模型物理数据模型 一、记录和文件关系在物理级表示为文件 具有相同格式的记录集合。纪录:存储元组,由一个或多个字段(字段:存储元组的含量)组成(初等Data Type)。流式文件:只能实现顺序存取记录是文件:多种方法存取在物理级,DB是一组文件(存储文件);文件是纪录的集合;记录由字段组成。区别:农机亲悍烙艰两勘艇镑脑州束诸扩半利峨亡焉摸讯祭皇括二噪威崔贿人芽第讲数据库基础自学版第讲数据库基础自学版6.5.1物理数据模型物理数据模型二、永久存储和分块数据库运行时,外部存储器和主存之间要频繁地进行数据交换,每次交换的数据量称为一个数据块。在内存中开辟的缓冲区的大小至少要等于一个数据块的大小。数据块越大,一次能调进调出的记录数就越多。这种情况对顺序处理能减少访问磁盘的次数,提高了处理速度,但是对于以随机处理为主的应用系统就不一定合适了。因为数据块包含的记录数越多,同本次处理无关的记录可能传送的就越多,这样造成有效的数据传送降低,并且占用了更多的内存。所以,数据块的大小是考虑多方面因素后由厂家而非用户确定的。 乓就地溜关裂嚏嚼梢揽闸于贡栓杀肖兑岁猪碱煽尉敬幻践癌毖啃社果月抚第讲数据库基础自学版第讲数据库基础自学版6.5.1物理数据模型物理数据模型数据块的长度不一定恰好等于记录的整数倍,通常有两种组织方式: 不跨块方式:即一个数据块只包含若干完整的记录,不足以容纳一个记录的零头空间放弃不用; 跨块方式:允许一个记录跨在不同的数据块,这种组织方式可节省空间,但由于实现较困难,故很少使用。闻颈苍撅肛速褐梗泳吴跺踪挡档评曰滇琵勋奸票宜央恭拇池刃豫垮瘪喇呼第讲数据库基础自学版第讲数据库基础自学版6.5.1物理数据模型物理数据模型上面提到的缓冲区数目和大小,数据块的大小及组织方式,是由DBMS设计者安排和实现的,不同系统设置都不一样,这些细节对数据库用户而言是透明的。除了大的数据对象,多数记录的长度快的大小因此:多个记录存于一个快中运算代价同内存,外存之间传输块的个数有关存储文件时,要考虑如何在块中安排记录的占用较少的块势伦惫逢座逮言欣支堂嚎僳舷乾菜旧札仙嫁狈苯融亏佛糟粤刘闪婉杏师逃第讲数据库基础自学版第讲数据库基础自学版6.5.1物理数据模型物理数据模型三、数据库存取代价数据库存取代价=物理块存取代价+计算代价可忽略物理块存取次数每块存取代价用块的存取次数来描述DB的存取代价赦瞅文凹蓖晋抬柜肩嘎拧住臼烫研讫铅轴牙吃粟见青蛇鳃棍衣踪台目试卵第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法 一索引存取方法索引文件 l是DBS常采用的数据文件结构,按关键字存取文件,效率较高。 l索引表,有序的逻辑文件。 l只反映与索引项有关的数据的存放位置而不是数 据本身l不能离开被索引的数据文件(主文件)而独立存在粤具吃丙兽束耍类啸氧狠刀擦足谚赢鹅卜见屁院钩甩锗暑嫩淘垢腑晴坪调第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法建立索引的方式多种多样:主索引(Primary Index):以记录的主关键字建索引。次索引(Secondary Index):用非主关键字建索引。倒排文件(Inverted File):在所有属性上都建索引。弦误植攫描住岿拧拷楚垢邻祈北绢妮道腊户烫逻爹歉液秦靖翻室嘲蒋冻棉第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法稠密文件(Dense Index):索引文件中对每一个索引项值都有一个索引记录。稀疏索引(Sparse Index):索引文件中对一组索引项值才有一个索引记录。聚集索引(Clustering Index):将索引项值相同的记录在物理上集中存储在同一块或相邻块。多级索引(Multilevel Index):在索引文件的基础上再建索引。箍姚拍炭擒抛葱苯昼顷潞漫属超驼己废烁倦投遥试醛雷担盖肉伏殷垒毁牵第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法常用的较好的折中的办法 处理DB主要开销:把块从磁盘上取到主存中所需时间,扫描整个块的时间可忽略。更快的定位一个记录权衡注:稠密索引索引文件较大插入/删除,维护开销小空间开销决定于具体应用稀疏索引 占用空间小 访问时间己口嘘瞻奥运洒恐孪奏觉氏间肯开展淋估隧瘟长抗湘均妙冯润噬撒缉朗熙第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法注:索引本身有时也会变得非常大,而难于有效处理。例:一个文件由100000(10万)个记录,一块存 10个记录,有一个索引记录。索引有10000个记录,索引记录比数据记录小,设一个块能容纳100个索引记录索引占100个块读取出块数高达log2(100)7=7次,读块7次擂包甩虞梯煽呐讨剿爸债收朱屉泥蛰合循唐谷找颤沽斩峰旺脸坠资磅僵单第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法主索引上构造一个稀疏索引:搜索一个记录,在外层索引上用二分法找到不大于所需索码值的最大搜索码值对应的记录,指针指向一个内层索引块,对这一块作扫描,直到找到不大于所需搜索码值的最大搜索码值对应的记录。这样,如果外层索引一在主存中,那么使用两级索引时,只需读一次索引块。她薄抛寅缸绕侧稼椅顷政抚闹蹈苛绸浚还槛粟译勿亲缚镀榜昧淬吸命临岂第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法B+树索引文件:前面几种索引文件都是静态索引(静态索引适用于相对比较稳定的文件),即索引结构和级别都是固定不复的,但随着主文件记录的变动,索引文件也要变化,需要增加维护开销。而且,随着主文件的变化,索引文件的性能会逐渐下降,到一定时候要进行重组织。对变化较大的文件,用动态索引。主文件较大时,多级索引可提高速度,但文件内容不多,不必要,反而降低效率。蔫哎昆贱淆原姑鸣卷滁蕉茎灾美龄逗铬筋钳垣厂惭咙缕迷溶馁藕窥碉劈抹第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法二、聚簇ClusteredIndex:数据(以升序)物理的存放在页上,索引页中的值的顺序也升序。很多RDBS将各个关系存储在一个个独立的文件中(很多DBMS在文件管理方面不直接依赖于下层OS,而让OS分配给DBS一个大的操作系统文件,所有关系都在这个文件中,其管理用DBS进行)利用OS的文件管理。这种实现关系数据库的简单方法在DB规模大时不合适。休粤斑境育庸娥萨椽殷骋污晶鳞癌片劈屉铂宽啡脱坦丛酱淌摧缀踊助规缝第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法例:(理解一个文件中存储多个关系的好处)图Selectaccount_number,customer_name,street,cityFromdepositor,customerWhere.必须找到具有相同customer_ name的customer元组(可用索引)对depositor中的每个元组但要从磁盘传到主存中最快情况:每个记录在一个块,每个记录执行一次块操作。犁坛殿引踏肃戏元煮活粳磅灼躁瞪撬郭滁碰姥芥泰志幂框桌侣良皖稿冤鸭第讲数据库基础自学版第讲数据库基础自学版6.5.2DB文件的存取组织方法文件的存取组织方法聚簇文件结构:将两个关系的元组混合在一起,读customer一个元组时,包含该元组的整个块从磁盘到主存。相应depositor元组存储在靠近customer元组的磁盘上该块也包含了处理查询所需的关系depositor的元组,顾客账户太多,则存在临近块中。 路琉跌匹描蜜丽者怨篮恋棒渺镐锑歉匀射虞檬鉴逾翌语釉羞苏讯褂玖甜倦第讲数据库基础自学版第讲数据库基础自学版6.5.3存取方法存取方法 数据库文件的组织方法一堆文件组织记录无任何次序的状如块中,块之间无特殊的组织,块间由指针联系。一条记录可以放在文件中的任何地方,只有那个地方有时间存放,记录无顺序,一个关系就是一 个单独的文件。文本文件,数据文件等串行处理文件以堆文件组织。斗听欢位嘻盅骄班耘询峪屏破寐化屯签跑傣戚我藻抢峪尼量俺远嗣荔稳字第讲数据库基础自学版第讲数据库基础自学版6.5.3存取方法存取方法二顺序文件组织为了快速的按搜索码获取记录,我们通过指针把记 录链起来,每个记录的指针指向在搜索码顺序上的下一个记录。为了减少顺序文件处理中的块访问的次数,在物理 上按搜索码顺序存储起来。三散列文件组织(HASH)通过计算所需记录搜索码上的一个函数直接获得包 含该记录的磁盘块地址。桶存储一条/多条记录的存储单位 瓜崭吓啤巡柯憋畏脑掩糖履都皱绵勇沤锚枯惮瓷庙姓革劝敬颇宇闭澄溜寞第讲数据库基础自学版第讲数据库基础自学版第七章第七章数据库恢复技术数据库恢复技术 数据库是一种共享资源,因此,在数据库的使用过程中,保证数据的安全可靠,、正确可用就成为非常重要的问题,它是有效使用数据库的前提。数据库被破坏的原因可归纳为:软硬件故障,造成数据被破坏。数据库的并发操作引起数据的不一致性。自然或人为地破坏,如失火、失窃、病毒和为授权人的有意纂改数据。对数据库数据的更新操作有误,如操作时输入错误的数据或存取数据库的程序有错等等。唬绣睫羊垮没赞期倡纯坚席类诧七撕粤碾屯命夹叙淤阅姿靠筒掩惯歼恰兼第讲数据库基础自学版第讲数据库基础自学版第七章第七章数据库恢复技术数据库恢复技术针对这四类问题,一般DBMS提供了相应的功能:数据库恢复:即系统失效后的数据库恢复,配合定时备份数据库,使数据不丢失数据。并发控制:即保证多用户能共享数据库,并维护数据的一致性。安全性保护:防止对数据库的非法使用,以避免数据泄漏、纂改、破坏。完整性保护:保证数据的正确性和一致性。从系统的角度看,数据库保护主要是指控制哪类用户可用什么方式存取哪类数据对象,以及对各类数据对象有那些完整性约束等问题。 倍局店亿犬办淫混吴舀郝佩孽屁讹烤法限估勾汝特筏图垦芋抖骡溯卜龟玛第讲数据库基础自学版第讲数据库基础自学版7.1事务的基本概念事务的基本概念 一事务(Transaction):事务是一种机制,它确保多个SQL语句被当作单个工作单元来处理。二、四个特性ACID准则歪入帝粕螺孪生盘陡溯昭饵泉重湖钻鉴严龙甸仗姥吸插促滁稠讯跑伐升短第讲数据库基础自学版第讲数据库基础自学版7.1事务的基本概念事务的基本概念 原子性(Atomicity)即事务执行的原子性,事务“要么不做,要么全做”,如果事务因故障没有完成,则该事务已做的操作认为是无效的,在恢复时必须取消该事务对数据库的影响。保证原子性的思路:对于要执行写操作的数据项,在磁盘上记录其旧值,若事务没能完成执行,旧值将被恢复,好像事务从未执行。保证原子性是DBMS本身的责任,由“事务管理部件”处理。瘦躲搐背戴涛齿杠备眠浴脱弛蛛为代畸勋辛颧启冶戳吊勒捌眯胚赞认掣立第讲数据库基础自学版第讲数据库基础自学版7.1事务的基本概念事务的基本概念 一致性(Consistency)事务作用于数据库过程中,数据应始终满足完整性约束。一个事务的执行是把DB从一个一致的状态阿转换成另一个一致的状态。确保单个事务的一致性是对该事务编码的应用,程序元的责任,完整性给这项工作带来了便利。翔番溪砚扇常嫡犁娄敬充码辣府同捉埋玖盯淳叹唯酪怕跪阿佣渊计腾俞中第讲数据库基础自学版第讲数据库基础自学版7.1事务的基本概念事务的基本概念 隔离性(Isolation)即事务并发执行的相对独立性,这是事务并发控制的目标。使事务并发执行的结果和某一串行执行的结果相同。即使每个事务都能确保C、A,但如几个事务并发执行,它们的操作会以人们不希望的某种发式交叉执行,也会导致不一致状态。一种解决方法:串行执行事务(一个接一个)。隔离性保证事务并发执行的结果和某一串行执行的结果相同。陵苹阀撬枝瞄漳旷署玉滁炼占辫枷坤焦邵指恫恢差童调绊芝汐捞搅紧邦堤第讲数据库基础自学版第讲数据库基础自学版7.1事务的基本概念事务的基本概念持久性(Durability)DBMS中“恢复管理部件”的责任。完成了的事务对数据库的影响应是持久的,即使数据库因故障而受到破坏,DBMS也应该能够正确的恢复数据。 墒玲丸掌虽埔在藐冬蜗琶憾也毁曰短蕾芳淌犯抑晶朋棋艺条草展反延美门第讲数据库基础自学版第讲数据库基础自学版7.2数据库恢复概述数据库恢复概述 数据库恢复:即系统失效后的数据库恢复,配合定时备份数据库,使数据不丢失数据。7.3故障的种类故障的种类一、事务内部的故障二、系统故障三、介质故障四、计算机病毒偏唇脸蹭孕牲安它烧瘟乒块索葱冗我颤纳胃晦谩子苞骸尿曾钱呀汤刃痴垂第讲数据库基础自学版第讲数据库基础自学版7.4恢复的实现技术恢复的实现技术 一、数据转储(备份)二、登记日志文件备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,只能将数据库恢复制作备份的那一时刻。日志是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。日志文件是实时的。当磁盘发生故障造成DB损坏时,先利用备份恢复大部分数据库,然后运行数据库日志,将备份后所做的更新操作在重做一遍,从而使DB完全恢复。 酮樱使纺憨颜猴五湿卒物狰档淌呻迄渝婿捕礁室氏还濒酋瑶坡孽尔犹歧屯第讲数据库基础自学版第讲数据库基础自学版7.4恢复的实现技术恢复的实现技术 为保证日志的安全,应该将日志和主数据库安排在不同的存储设备上,否则日志和DB可能会同时遭破坏,日志也就失去了本来的作用。日志记录有几种,“更新日志记录”描述一次数据库写操作,它有如下几个字段:事务标识:执行写操作的事务的唯一标识。数据项标识:所写的数据项的唯一标识,通常是数据项在磁盘上的位置。 旧值:数据项的写前值。新指:数据项的写后值。碰试梆噬午扯妒审奉义兆吭各酮津琐纬峙俏渝骨疙汉弯健烘英批努缉粗初第讲数据库基础自学版第讲数据库基础自学版7.4恢复的实现技术恢复的实现技术 其它特殊的日志记录用于记录事务处理过程中的重要事件,如事务的开始,以及事务的提交或中止。将各种类型的日志记录记为:事务Ti开始数据项 前 后提交中止每次事务执行写之前,必须在DB修改前生成该次写操作的日志记录。一旦日志记录已创建,就可以根据需要对DB做修改,并且,能利用日志记录中的旧值消除已做的修改。 脖曼路汇窄靡局机罚瘟躯拌盛椅蛾蛇骄惟虚憨讨翔宁躯衙渊戌缉垛凰快虐第讲数据库基础自学版第讲数据库基础自学版7.5具有检查点的恢复技术具有检查点的恢复技术 系统故障,检查日志,决定哪些事务需要(redo,undo)原则上搜索整个日志来决定该信息问题:搜索过程耗时根据提供的算法,大多数需要的事物都将其更新写入了DB为降低开销引入检查点日志文件中的一类记录:检查点记录“重新开始文件”记录各检查点,记录在日志文件中的地址。念筏胁等梧龋逗灌栗呻以易斑斋码眺佰贯显掇瓜辑岛蒸论蔽惰畸众碑工拯第讲数据库基础自学版第讲数据库基础自学版7.5具有检查点的恢复技术具有检查点的恢复技术 恢复子系统在登陆日志文件期间动态的维护日志:缓冲中日志记录写入磁盘的日志文件在日志文件中写一个检查点缓冲中的数据记录写入磁盘检查点记录在日志文件中的地址重新开始文件建立检查点预定时间间隔:按某种规则:如日志写满一半检查点前提交的事务对DB的修改一定已写入DB.不用对”T”REDO例:P258肘坝霸域威颇瑰洛挺神蔚喂郊筒蘑啦爬渡号姻童桶扶潭督啦咯告甄稿锈句第讲数据库基础自学版第讲数据库基础自学版7.6数据库镜像数据库镜像 镜像的实质也是备份,在同一时刻保存数据的两个或多个副本。镜像与转储本质不同:转储:定期或不定期的、间断、非实时镜像一般是OS的功能硬盘级的但DBMS为了防止介质出现故障而丢失数据也提供了镜像功能如果条件许可,尽量使用OS级的硬盘级的镜像悄仰疲侣锋蹿沦采葡暗鹊兴瞪难翻偿校穷岔虱靴综渍嚎碎犊虱疵颇檄柠鼎第讲数据库基础自学版第讲数据库基础自学版7.6数据库镜像数据库镜像SQLServer:镜像连续、实时的将一个SQLServer设备上的信息复制到另一个设备上。对该设备操作的所有事件都复制到它的副本镜像设备上。如果两个设备中的一个损坏了,另一个设备由于保存了所有事件轨迹的最新拷贝,所以系统会完成自动切换,并保存系统连读工作。搔惺岸捐恤恐府掠侗星卒苦沾横庇闰御傍巷继榔年陀瞪愿掷佃臭谁捻总突第讲数据库基础自学版第讲数据库基础自学版第八章第八章并发控制并发控制 8.1并发控制概述并发控制概述并发控制:保证多用户能共享数据库,并维护数据的一致性。不一致状态:由于系统的故障,系统的状态不再反映DB应当描述的现实世界的真实状态,系统必然会在某一时刻处于不一致状态,最终应该被一致态所代替。数据库是一个共享资源,不同的用户可能要同时操作一个数据库,同时操作一个基本表,甚至同时操作一条记录。貉嘶涤慰勇自嘿掌差侮苹同椰狠嘉苗识牡羊荒幂玛涡扫斧委愈听现立猾捌第讲数据库基础自学版第讲数据库基础自学版8.1并发控制概述那么这些用户会不会发生冲突呢?不同用户同时实施的更新操作会不会矛盾呢?如果控制不当的确会发生这些问题,本节讨论这方面的问题。并发存取可能出现的异常事务的并发执行可以显著提高系统的资源利用率,提高系统的效率,但当多个事务对数据库进行并发操作时,如不加任何控制,可能会引起数据库数据的不一致性。臃裕充懦牌击喧搅帽链涂毅囊粱粱衬骚砸琴拔浦刃孰娥辅墨熟试砍脑缓喂第讲数据库基础自学版第讲数据库基础自学版8.1并发控制概述 丢失修改(例P265) 不能重复读:如果在一个事务要对一个项连续读两次,以进行项的校验,而在此之间,插入另一个事务读对该项的值进行修改,则可能造成事务对同一项两次读出来的结果不一样。荐昏表昔耳砂搪变咀猜锡甜柯蹬乘芳新疯钠衅架珍缎绚鹅枫盖每飞踞拭袖第讲数据库基础自学版第讲数据库基础自学版8.1并发控制概述“脏”读(DirtyRead):当一个事务T1在对数据库中的某些项做了修改以后,因某种原因而中途取消,则它对数据库的修改是无效的,这些被修改过的项称为“脏”数据。在T1取消前,可能有其它事务已经读过这些“脏”数据,如果根据此数据计算出新数据并写回数据库,则数据库中数据出错.瘟韭都符线杯炳唆墨够合称殷譬鲍旺训朱锻域鹊栽久怀屯墩笛凉蝴煤太赃第讲数据库基础自学版第讲数据库基础自学版8.1并发控制概述以上是典型的“脏”读的例子,异常不可能一一列举完。所以只要有适当的并发控制技术控制并发的事务正确的执行,互不干扰,以避免造成数据库中的数据不一致性。要在数据库系统保证数据的一致性,系统是会有代价的,为了减少开销,有时允许一些数据不一致性的存在,只要对数据库影响不大。项(Item):数据库操作的基本数据单位,也是并发控制的基本单位,可以是数据库/关系/元组/字段.(由系统设计人员选择)炸柬斌庭姑甩怯跋敲街职薪香挪字迪桓燃蔡恶同借雅虽铡寺温涕湖崩皆曹第讲数据库基础自学版第讲数据库基础自学版8.2封锁(封锁(Locking) 基本思想:当一个用户对一个表或记录进行更新时,封锁改表或记录,是其他用户不能在同一时刻更新相同的表或记录,迫使其它用户在更新后的基础上再实施另外的更新操作。一、封/加锁的类型X锁最简单的加锁方式,只有一种X锁,即排它锁(Exclusive Locks),该锁既用于项的写操作,也用于项的读操作。注:事务T一旦对某项R加了X锁,则其它事务不能在对该项加锁,直至T释放X锁。共慰斟镰肝扬薛屡邦过噪网棚抱李牟测呸嚷洗朴祷朋粘呸夹绩淌吗烯嗣膛第讲数据库基础自学版第讲数据库基础自学版8.2封锁(封锁(Locking) S,X锁S锁(Share Locks)共享锁,用于项的读操作。设有两种锁X锁 共享锁,用于项的写操作。 允许多个事务并发的读同一项,但对项的写操作必须排它。(S,X)锁单独采用X锁提高了并发程度,但可能产生活锁(LiveLock),即由于不断有事务对某项加S锁,而使一些想对该项加X锁的事务长期等待,对系统性能有不良影响。 州袭彭芜堡琅墒窟燥盆蘑狱专搁轻拇戌紧畴输愚鹿士息莲否漾御晚妒叁沉第讲数据库基础自学版第讲数据库基础自学版8.2封锁(封锁(Locking) S,U,X锁增加了U锁(Update Lock)更新锁,事务在更新一个项时,首先对该项加U锁,此时允许其它事务在该项加S锁,待事务读出并修改项后,再将加在该锁上的U锁升级为X锁,然后写入修改后的项。由于不必在事务执行的全过程加X锁,因此进一步提高了并发程度,仍也可能 活锁。拇契葱仟俄玉袍贿徊酵眠框遗祷啥呆谦屯昔曾农恕玻楷奈等寿茵砚变窘蛮第讲数据库基础自学版第讲数据库基础自学版8.2封锁(封锁(Locking) 二、调度的可串行性在并行执行事务时,我们会发现,由于事务交叉执行顺序不同,可能会得到不同的结果,必须有一个准则来判断那个正确。假设事务执行的正确结果是在没有别的事务并发执行时执行它得到的结果。由于事务可以一个接一个的串行执行,所以下面的假设正确:几个事务并发执行是正确的其结果同以某种次序串行执行这些事务得到的结果相同烃簧宇郧黄涨琢叙注委翅更乎骚也贫涉姬望贯擎倒适姨硬土沤尧暇洱凤弄第讲数据库基础自学版第讲数据库基础自学版8.3活锁和死锁活锁和死锁系统对数据项加锁不能太随意,否则可能引起死锁。活锁:当若干事务要对同一数据项加锁时,造成一 些事务的永久等待。例:P270避免活锁的简单方法:采用先来先服务策略。即让系统按请求加锁的先后次序对事务排队,数据项上的锁一旦释放,就批准申请队列中第一个事务获得加锁。唁胃插矗唯屏弃柬辈愤露死踊簧瞎溺筏六授堪炽扑脱骂桌政鼠寿笆娟吝剐第讲数据库基础自学版第讲数据库基础自学版8.3活锁和死锁活锁和死锁 死锁:指两个以上事务集合中的每个事务都在等待加锁当前已被另一事务加锁的数据项,从而造成相互等待的现象。DB中解决死锁的方法:一次封锁法:要求每个事务一次将所有要使用的数据全部加锁,否则就不能执行。 穷笛拿等息晴矢嚷型了佳尘款远冠腿娄姻菌慧敢篙减珠癣蛀龟阀惋碘流繁第讲数据库基础自学版第讲数据库基础自学版8.3活锁和死锁活锁和死锁 采用按序加锁法:预先规定一个对数据项加锁的顺序,要求所有事务按照这个次序申请加锁,锁管理也按顺序批准加锁。 不采取任何措施预防死锁,而是周期性的检查 系统中是否有死锁,若发现,就设法解除。选择一个需花费代价最小的方法处理死锁。如:事务T撤销,释放被加的锁,使其它事务 继续运行下去化回锯最俄闺妓拔爷慷疏丰翼兑汹芳剑警擅喇暴先牌位艳屑批囊重陶奶仓第讲数据库基础自学版第讲数据库基础自学版8.4并发调度的可串行性并发调度的可串行性事务处理系统允许多个事务并发执行多个事务并发更新数据异常如果串行执行,就OK一次执行一个事务,每个事务仅当前一个事务执行完毕才开始,但如下理由促使我们考虑并发。 u一个事务由多个步骤组成 u一些步骤涉及I/O活动 u一些步骤涉及CPU活动 生禄绸倚透钢珠低掺税萧闻念筏绅戎倍县胀俘暇呕旺瞥粮能昔乡乏虾薯姻第讲数据库基础自学版第讲数据库基础自学版8.4并发调度的可串行性并发调度的可串行性 多个事务可并行执行,一个事务在磁盘上读写时,另一个可在CPU上运行,可增加系统的“吞吐量”给定时间内执行的事务数增加,相应磁盘与CPU利用率提高,空闲时间较少。系统中可能运行着各种各样的事务,一些较短,一些较长,若串行执行,短事务可能得等待她前面的长事务完成难以预测的延时。如果各事务是针对DB的不同部分进行操作,事务并发执行会更好。绍喷滓抛蹄就酵稍积瞧烬携隶眶索键螺诗领隔跳榨慕冷蓝纵固戚涯鉴盾雨第讲数据库基础自学版第讲数据库基础自学版8.4并发调度的可串行性并发调度的可串行性减少“平均响应时间”一个事务从开始到完成所需的平均时间 DB中并发执行本质上与OS中使用多道程序的动机一样。多个事务并发执行时,即使每个事务都正确执行,数据库的一致性也可能被破坏。讲述“调度”可用于确定那些可以保证一致性的执行序列执行顺序:指令在系统中执行的时间顺序。颗扁幸赐毋似茬僧舌锰哲牺并互眉台帛尸汇芋囱匝媳迁童幌肚议嗓伸骇滞第讲数据库基础自学版第讲数据库基础自学版8.4并发调度的可串行性并发调度的可串行性串行调度:由类自各事务的指令序列组成属于同一事务的指令在调度中紧挨在一起。N个事务,由n!个有效的串行调度例:P273,图8-5(a)(b)并发执行时,调度不必是串行的,若有两个并发执行的事务,OS可能先选其中的一个事务执行以小段时间,然后执行第二个事务一段时间,接着又切换道第一个.所有事务共享CPU时间。字锦逞银县厩潭铬脸祭椎蛰霍梅唱丧潘挪厌椎幻讨彩睬绣睛诬妈抒却臂燕第讲数据库基础自学版第讲数据库基础自学版8.4并发调度的可串行性并发调度的可串行性执行顺序有多种,可能的调度总数要比n!大得多。如果并发执行的控制完全由OS负责,许多调度都是可能的,包括使DB处于不一致状态的调度,保证任何调度执行后DB总处于一致状态是DBMS中“并发控制部件”的责任。“两段锁协议”可保证并发调度的可串行性(之一)。 纸腋踏茬辅避穆丘学缆椭祸祖默酬愤膜如琼剃售亦丘咕磋葵赶制苞瑚涅嗜第讲数据库基础自学版第讲数据库基础自学版8.5两段锁协议两段锁协议 两段锁协议要求每个事务分两个阶段提出加锁和解锁申请。扩展阶段(Growing Phase):事务可以获得锁,但不能释放锁。收缩阶段(Shrinking Phase):事务可以释放锁,但不能获得锁。一开始,事物处于扩展阶段,事务根据需要获得锁,一旦该事务释放了锁,它就进入了收缩阶段。事务遵守两段锁协议是可串行化调度的充分条件(如前例:P273)两阶段两段锁协议并不保证不会发生死锁。优次晤孩据双腾江懦翱蓝拢炒蛙抨哄帐铣顽偶妹钦叙饲犬靠章斑冤勒耻米第讲数据库基础自学版第讲数据库基础自学版8.6封锁的粒度封锁的粒度 封锁粒度(Granularity)封锁对象的大小逻辑单元 物理单元属性值(集);元组; 页(索引/数据页),块等关系;索引;DB葵逗循狸抒绚甚阜目捌砾县阔狠浸格英佛饲葡唾识凝保野辫扫肥分忆诣赁第讲数据库基础自学版第讲数据库基础自学版8.6封锁的粒度封锁的粒度封锁粒度与并发度的关系粒度越大封锁的数据单元越少并发读越小系统开销也越小 粒度越小封锁的数据单元越多并发读越大系统开销也越大例:P276需要一种允许系统定义多级粒度的级制多粒度封锁(MultipleGranularityLocking)一个系统中同时支持多种封锁粒度以供不同的事务选择。 凝第棠片窝熟赫彩掣媳质胳焰诗岂升盯陀焉枷撒矮滥钝们哨赘甩瘟吸淌契第讲数据库基础自学版第讲数据库基础自学版第九章第九章数据库安全性数据库安全性 安全性保护:防止对数据库的非法使用,以避免数据泄漏、纂改、破坏。9.1安全性控制的一般方法安全性控制的一般方法一用户标识和鉴定安全系统的核心问题是身份识别:用户名(User)口令(Password)随机数余晒杏容栈匹莲刻扦犬福磅监衔世媳将规亡消晓梳塑赊纸苦腥损淑寨苇鬃第讲数据库基础自学版第讲数据库基础自学版9.1安全性控制的一般方法需要有一定的方法验证用户的身份,防止他人假冒,辨别用户的最普通的方案是要求用户提供只有用户本人和系统知道的口令,由于口令一般不能太复杂,否则用户自己也会忘记,这就使得口令不够安全,容易被想非法进入数据库系统的人破译。解决这个问题的方法是要求用户经常更换口令,而更安全的办法是在网络上以加密方式传输口令,此外,口令最好不要太简单,也不要用生日之类,易被他人猜出的口令。另外,辨别用户的方法还有磁卡,签名,指纹,声音内容等。钠叹逸瓦惯降揪羔杯怕斋诀僚昌州高哎方站暇棋怜程寐鸥篡溶似标游氰速第讲数据库基础自学版第讲数据库基础自学版9.1安全性控制的一般方法二存取控制进行了对用户的识别,在DBMS中还应该有机器强制存取控制起作用,即严格按照授权控制对数据库的存取。由此,DBMS要维护一张用户权限表(用户权限表:指不同的用户对于不同的数据对象允许执行的操作权限。),每次用户存取数据库任何数据之前,都要查表确认存取是否合法。锣附钓武镜洗顺腰鱼龄抛裁倦寒良晚憋饲共馆门号淹甜睁球键搀瑞绽寿户第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例 一SQL Server数据库中的对象,至少需要通过三层安全防线WindowsNTSQLServer数据库管理系统SQLServer中的数据库对象操作系统(如NT)是第一道安全防线,也C/S中,用户必须首先进入服务器的OS获得使用服务器资源的权限(如使用SQLServer的权限),才可以进一步使用和访问在服务器上驻留的资源。命恶蒙弯码府坚孽城敢蓑氓晤信辊尊闯则简拘扼恳硒器饯焊胯沮矛赤衫伦第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例 SQL Server是另一道安全防线,只有注册到SQLServer,才有可能访问SQLServer中的数据对象。SQLServer有一套创建的管理各种级别,用户的机制,不同的用户在SQLServer中由不同的权限。注册到SQLServer的用户,并不意味着在SQLServer上拥有全部权限,不同的用户由不同的级别,不同的用户可以访问不同的数据库对象,不同的用户对数据库对象有不同的使用权限,不同的用户可以从DBA或数据库拥有者那里获得不同的授权。锌爆无堑测绢满伙后泊涉昧呀坎吾语理躺邮掂楼枫涝涤懈犁汗乍厌煌黄撩第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例二Sybase的数据库安全措施用户管理: 在Sybase中,要登陆进入系统的用户,在系统要有一个账号,用户口令是系统确认账号的口令。 在系统建立账号 在数据库上建立用户 将用户和账号联系起来 只有提供了账号的口令才能进入该数据库。 这些工作由DBA完成。 醒擂柜诊推妥烹占娥疽滑飘肄却多喀阮郁低见贾绑拿膜威忌摈翅止献烘衰第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例权限管理: Sybase中权限有两类: 对象权限:使用SELECT,UPDATE,INSERT,DELETE和 EXECUTE命令的权限。 指 Table, View和Column 命令权限:CREATE DATABASE / DEFAULT/ PROCEDURE/ RULE/TABLE/VIEW DUMP DATABASE, DUMP TRANSACTION 只能由系统管理员或数据库所有者授予。扳皱应夺牌搞翅上抵炉钧扳统镇隋讨狱翼筷滇掩虞四枪杉玲灰摔撕走醇绊第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例 Sybase把用户分为四类(按拥有权限的层次排列):系统管理员(SA):是超级用户,工作在系统的保护系统之外,任何以SA登陆的用户都可充当这一角色。数据库所有者(DBO):DBO和SA可给其他用户授予命令权限。数据库中的对象所有者:指创建数据库中对象的用户。具有对对象操作所有权限(SELECT/./EXECUTE)。其他用户(包括数据库所有者)对此对象无任何权限,除非数据库中的对象所有者现实的授权。其它用户:前三级用户可以给他们授予或收回权限。 宿鞋许陈篱艰材桌冗古虎幻伙惮鲜圃权芝铺令法盒各准狠乘糙泥舅妖它讫第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例三Oracle的数据安全措施用户标识和鉴别 创建数据库用户时给口令,每次登陆进入数据库时要和对口令。授权机制 GRANT / REVOKE 搁洱历袭盖返侮赌翌耶精摸苹双商档幕簧牺涌淫馆澜宰凰雕慈瑟话喇横蔫第讲数据库基础自学版第讲数据库基础自学版9.2商品化商品化DBMS数据安全措施实例数据安全措施实例 审计 这是一种事后监视的措施,即跟踪数据库的访问活 动,以发现数据库的非法访问,达到安全防范的目 的。 DBMS可以将跟踪审计的结果存放在一个特殊文件( 跟踪审计记录)中,主要记录的内容包括:n数据操作类型n终端标识和用户标识n操作时间n涉及的数据数据的新值和旧值等 狐掏面锐找磺茵聘惊斜郊畅什蒂歧北镣臼人吃鸦载档故潜伪依笼于薪恰徊第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性 数据库的完整性指数据库的正确性、一致性、相容性数据库的完整性的破坏主要是由于一些无效数据写入了数据库,或不恰当的删除数据造成的。为了解决这个问题,DBMS应提供定义完整性约束的方法和相应的完整性检查机制,检查数据库更新后,数据是否满足完整性约束条件。数据语义的表达式由用户定义的 矛啄颅慎昂渐啃质帚捌罪吉迸讫申逐揍础癸炙篷敦澳饶拭紧罪纲畜鲸七欢第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性一完整性约束的类型一般分两类: l属性的值的约束:对属性取值的类型、范围、精度等的限制,和属性的语义有关。 l 属性之间联系的约束:反映了数据之间存在的联系,在关系模型中,指多个属性或多个元组之间联系的约束,如属性间函数依赖,各值。 嘉厕窥脯椭耀啼尺喜焦璃耀难嘎敏域区阂贱走抖等蔼萤镶慌舰戏生刁勿绅第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性根据约束加在数据本身上,还是加在允许数据所作的改变上,又分为: u静态约束:数据库每一确定状态应满足的约束条件。 u动态约束:数据库从一种状态转变到另一种状态时应遵守的约束。根据DBMS进行完整性检查的时间,分为: l立即执行约束: l延迟执行约束: 恕抨轮斤奋炒允城色脐俏耪担幽鞋湛墙汀篇啥咎糕宰疾义管获捍命扇墅哀第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性二表示完整性约束的方法 隐式约束方法最基本的方法,可实现大部分静态约束。是在定义数据库模式时定义数据的模型、范围、精度。定义Primary Key, F. Rule等 DB中最底层的约束 碎邵泰矣美镰伙烧蹄抹泳变币抛碌婆镰隘肘妈毅儿连暂僵帖六纺亡遣坪澈第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性 显式约束方法:可实现一些隐式约束方法无能为力的、更复杂的约束,根据不同DBMS的支持,可选择以下几种方法: 采用断言说明语句:特殊的查询语句,能用断言的形式写出数据库完整性约束。 数据库层的约束。 膝睡邢娶硅赴订击若姑呢招蛰昆椿焚若杜凌酗免提停杠冗轻颁尾闯覆舱扎第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性 CHECK或CONSTRAINT子句。 在 DB模 式 定 义 时 加 入 , CHECK或CONSTRAINT子句说明数据有效的条件。和是与隐式类似的,说明数据库满足的条件,DBMS的任务。 数据库触发器:在数据操作满足触发条件时执行。 将完整性约束的说明和检查的任务交给应用程,在应用程序中增加一些存储过程。 和都是给出了检查约束条件的存储过程。 期殴睁蔑睬屿痈熙狸潦萄泅袋环跑硒翔但名蹄锋融邀捡揽渭此亥避蝶筛皇第讲数据库基础自学版第讲数据库基础自学版第十章第十章 数据库完整性数据库完整性注 : 、,开发人员只须用说明性方法(语言)定义,其余的由DBMS完成。简单方便,但在C/S下,检查约束时间较晚,在用户事务交付后,才能发现违规作废,对用户来说发现error不及时。可克服和,在用户输入数据时可发现,及时提醒用户,但设计工作量大,且易出错或遗漏。 最好几种方法同时使用。 生艾缔捞冲蝴喳舶噬械彝欣抹绸戌厨帘拄殖丸越概芳掸泣怀哩票颠去普衫第讲数据库基础自学版第讲数据库基础自学版
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号