还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
软考数据库系统工程师复习资料
一、数据模型.数据模型的三要素1数据结构数据结构是所研究的对象类型的集合这些对象和对象类型是数据库的组成成分一般1ObjectType可分为两类:一类是与数据类型、内容和其它性质有关的对象;一类是与数据之间的联系有关的对象前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等后者如网状模型中的关系模型在数据库领域set type中,通常按照数据结构的类型来命名数据模型,进而对数据库管理系统进行分类如层次结构、网状结构和关系结构的数据模型分别称作为层次模型、网状模型和关系模型相应地,数据库分别称作为层次数据库、网状数据库和关系数据库数据操作数据操作是指对各种对象类型的实例或值所允许执行的操作的集合,包括操作及有关的操作规则2在数据库中,主要的操作有检索和更新包括插入、删除、修改两大类数据模型定义了这些操作的定义、语法即使用这些操作时所用的语言数据结构是对系统静态特性的描述,而数据操作是对系统动态特性的描述两者既有联系,又有区别数据的约束条件数据的约束条件是完整性规则的集合完整性规则是指在给定的数据模型中,数据及其联系3所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,确保数据的正确性、有效性和一致性.概念模型2数据模型是数据库系统的核心和基础每个软件都是基于某种数据模型的为了把现实世界中的具体事物DBMS或事物之间的联系表示成所支持的数据模型,人们首先必须将现实世界的事物及其之间的联系进行抽象,DBMS转换为信息世界的概念模型;然后将信息世界的概念模型转换为机器世界的数据模型也就是说,首先把现实世界中的客观对象抽象成一种信息结构这种信息结构并不依赖于具体的计算机系统和然后,再把概念模型转DBMS换为某一计算机系统上某一所支持的数据模型因此,概念模型是从现实世界到机器世界的一个中间层次DBMS现实世界的事物反映到人的大脑之中,然后人们开始认识这些事物,经过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到信息世界用户关心的是现实世界中的事物、事物的属性及其相互关系例如,用户可能关心他的顾客及其属性,如user顾客地址、银行帐号等等用户也关心自己的定货帐目,如谁订的货、订的什么和订多少等等系统分析员同样也关心现实世界,但是系统分析员需要分析用户的信息需求作为需求分析的结果,分analyst析员必须以文档的形式对需求进行结构化的描述;这个文档就是信息模型实体实体是构成数据库的基本元素实体是指一个存在的东西以区别这个东西所具有的属性和这个东西与Entity其它东西的联系实体可以是人,也可以是物;可以是实际对象,也可以是概念;可以是事物本身,也可以是指事物之间的联系属性一个实体可以由若干个属性来刻画属性是相对实体而言的,是实体所具有的特性Attribute关键字能唯一地标识实体的属性的集合称为关键字或码Key域属性的取值范围称作域Domain实体型一类实体所具有的共同特征或属性的集合称为实体型一般用实体名及其属性来抽象地刻画Entity Type一类实体的实体型实体集同型实体的集合叫实体集例如,学生就是一个实体集实体集的名即是实体型对于学生和学Entity Set号,姓名,年龄,系,年级均是实体型,而学生是对实体型学号,姓名,年龄,系,年级所起的名称,两者是指同一客观对象但本科生和研究生可以为相同实体型,而实体集不同联系现实世界的事物之间是有联系的一般存在两类联系:一是实体内部的组成实体的属性之间的联Relationship系,二是实体之间的联系在考虑实体内部的联系时,是把属性看作为实体一般来说,两个实体之间的联系可分为三种1一对一11联系若对于实体集A中的每一个实体,实体集B中至多有唯一的一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记作112一对多1n联系若对于实体集A中的每个实体,实体集B中有n个实体n0与之联系;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1n相应地有多对一n1联系多对一联系,从本质上说,是一对多联系的逆转其定义同到一个不存在的部门也就是说,被参照的关系中一定存在一个元组,该元组的关键字的值等于中某元组的外部关键字的值DEPT EMP实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则用户定义的完整性针对某一具体的数据库的约束条件条件是由现实世界中的应用环境决定的它涉及到某一具体的应用中的数据所必须满足的语义要求关型模型的应提供定义和检验这类完整性条件的机制,以使用统一的方法来自动地处理它们DBMS而不要求应用程序员来承担这一功能.关系数据库语言概述5关系数据库语言分三类:数据描述语言数据操纵语言和数据控制语言其中,负责数据库的DDL,DML DCL DDL描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构负责数据库的操作,提供一种处DML理数据库操作的机制负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制是DCL DML用户经常使用的语言,包括了的主要功能包括数据查询和数据的增、册改等功能其中查询的DBMS DMLh表达方式是的主要部分关系数据库的按照查询方式可以分为两大类DML DML用对关系的集合代数运算来表示查询的方式,称为关系代数1RelationalAlgebra用谓词演算来表达查询的方式,称为关系演算关系演算又可按谓词变元的基本对象是元2Relational Calculus组变量还是域变量分为元组关系演算和域关系演算两种关系代数和两种关系演算tuple variabledomain variable均是抽象的查询语言,这些抽象的查询语言和实际的软件产品中实现的具体的查询语言并不完全一样但DBMS它们是中查询语言的理论基础关系代数、元组关系演算和域关系演算这三种语言在表达能力上是彼此相DBMS互等价的,它们均可以作为评价实际软件产品中查询语言能力的标准实际软件产品的查询语言,DBMS DBMS除了提供关系代数或一种关系演算之外,还提供了许多附加的功能,如库函数、算术运算等功能是介于SQL关系代数,和关系演算之间的一种语言不仅具有丰富的查询功能,而且还具有数据库定义和数据库控制功SQL能是集、、为一体的标准的关系数据库语言充分体现了关系数据库语言的优点SQL DDLDML DCLSQL.关系代数6关系代数中的运算可以分为两类传统的集合运算,如并、交、差、笛卡尔乘积等这类运算是从关系的“水平方向即按行”来进行的1专门的关系运算,如选择、投影、连接、除这类运算不仅涉及到行而且也涉及到列
2.关系演算7关系演算是以数理逻辑中的谓词演算为基础的用谓词演算作为关系数据库的语言并提出关系演算的是E.F.Coddo首先定义了关系演算语言但并没有在计算机上实现但关系数据库管理系统所用Codd ALPHA ALPHA INGRES的语言是参考研制的,与十分类似QUEL ALPHAALPHA
六、关系数据库的规范化理论函数依赖定义设是属性集上的关系模式是的子集若对于的任意一个可能的关系中不可能存在1R UU X,Y UR Ur,r两个元组在X上的属性值相等,而在Y上的属性值不等,则称底函数确定Y,或、函数依赖于X、记作X—Y函数依赖和别的数据依赖一样是语义范畴的概念只能根据语义来确定一个函数依赖例如姓名一年龄这个函数依赖只有在没有同名人的条件下成立如果允许有相同名字,则年龄就不再函数依赖于姓名了设计者也可以对现实世界作强制的规定例如规定不允许同名人出现,因而使姓名一年龄函数依赖成立这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存在,则拒绝插入该元组注意,函数依赖不是指关系模式的某个或某些关系满足的约束条件,而是指的一切关系均要满足的约束条件
七、数据库的安全与R R保护安全性L数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、更改或破坏安全性问题不是数据库系统所独有的,计算机系统都有这个问题只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,是十分重要的信息资源从而使安全性问题变得更为突出系统安全保护措施是否有效是数据库系统的主要性能指标之一对于数据库的安全保密方式可以有系统处理的和物理的两个方面所谓物理的是指,对于强力逼迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为对此所采取的措施是将数据编为密码,加强警卫以识别用户身份和保护存储设备等措施在一般计算机系统中,安全措施是一级一级层层设置的用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份系统进行核实,通过鉴定后才提供1机器使用权常用的方法有:用一个用户名或者用户标识号来标明用户身份系统鉴别此用户是否是合法用户若是,则可以进入下一步的核实;若不是,则不能使用计算机用户名的登录只由系统管理员进行,一般用户不能实施用户名登录口令为了进一步核实用户,系统常常要求用户输入口令Password,存取控制对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证用户只能存取他有权存取2的数据所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权限它由两部分组成,一是数据对象,二是操作类型数据对象有二类一类是数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段亦称为数据项另一类是外模式、模式、内模式在关系系统中可以把建立、修改基本表的权力授予DBA用户,用户获得此权力后可以建立基本表、索引、视图这说明关系系统中存取控制的数据对象不仅有数据而且有模式、外模式、内模式等数据字典中的内容对于存取权限的定义称为授权这些定义经过编译Authorization后存储在数据字典中每当用户发出存取数据库的操作请求后,查找数据字典,根据用户权限进行合法权DBMS限检查若用户的操作请求超出了定义的权限,系统拒绝执行此操作授权编译程序和合法Authorization Check权限检查机制一起组成了安全性子系统衡量授权子系统精巧程度的另一个尽度是否提供与数据值有关的授权有的系统还允许存取谓词中引用系统变量,如一天中的时刻,终端设备号这样用户只能在某台终端、某段时间内存取有关数据,这就是与时间和地点有关的存取权限另外,在操作系统中对文件、目标等的存取还有一些安全保护措施其中加密是一种防止数据内容被别人引用或了解的切实可行的办法加密有程序加密和硬件加密卡两种形式.完整性2数据库的完整性是指数据的正确性和相容性必须提供一种功能来保证数据库中数据的完整性这种功能DBMS亦称为完整性检查,即系统用一定的机制来检查数据库中的数据是否满足规定的条件这种条件在数据库中称为完整性约束条件数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分存放数据字典中数据的完整性和安全性是两个不同的概念前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果而后者是保护数据库防止恶Garbage InGarbage Out意的破坏和非法的存取当然,完整性和安全性是密切相关的特别从系统实现的方法来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证完整性约束条件可以分类如下值的约束和结构的约束前者指对1数据的值的限制,后者指对数据之间联系的限制关于对数据值的约束这类约束条件是指对数据取值类型、范围、精度等的规定关于数据之间联系的约束数据库中同一关系的不同属性之间可以有一定的联系,从而也应满足一定的约束条件同时,由于数据库中数据是结构化的,不同的关系之间也可以有联系,因而不同关系的属性之间也可满足一定的约束条件静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件以上所讲的约束都2属静态约束动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件立即执行约束和延迟执行约束立即执行约束是指在执行用户事务时,对事务中某一更新语句执行完后马上对此3数据所应满足的约束条件进行完整性检查延迟执行是指在整个事务执行结束后方对此约束条件进行完整性检查,结果正确方能提交完整性的实现应包括两个方面,一是系统要提供定义完整性约束条件的功能,二是提供检查完整性约束条件的方法对于数据值的那类完整性约束条件通常在模式中定义例如在模式中定义属性名、类型、长度、码属性名并标明其值是唯一的、非空的等等另外的那些约束条件就要用专门的方式加以定义.并发控制3数据库是一个共享资源,可以由多个用户使用这些用户程序可以一个一个地串行执行,也可以并行执行在单计算机上,为了充分利用数据库资源,应该允许多个用户程序并行的存取数据这样就会产生多个用户程度CPU并发地存取同一数据的情况若对并发操作不加控制就会存取和存储不正确的数据,破坏数据库的完整性这里也称为一致性在多计算机或多计算机网络环境下,并发控制尤为重要CPU事务的概念事务是并发控制的基本单位所谓事务是一个操作序列这些操作作为一个序列形成1Transaction一个整体要么都做,要么都不做,是一个不可分割的工作单位事务通常以开始,以BEGIN TRANSACTION或操作结束即提交,提交事务中所有的操作,事务正常结束即COMMIT ROLLBACKCOMMIT ROLLBACK撤消已作的所有操作,滚回到事务开始时的状态这里的操作指对数据库的更新操作滚回即相当于所有操作均未执行事务和程序是两个概念一般地讲,一个程序可包括多个事务,由于事务是并发控制的基本单位,所以下面的讨论均以事务为对象
(2)数据一致性级别的概念所谓并发控制就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰.封锁4封锁()就是事务可以向系统发出请求,对某个数据对象(最常用的是记录)加锁于是事务对这个Locking TT数据对象就有一定的控制例如,其它事务不能更新此数据直到T释放(unlock)它的锁为止确切的控制由封锁的类型决定基本的封锁类型有两种:排它锁(简记为锁)和共享锁(简记为锁)Exclu sivelocks XShare locksS若事务对数据加上锁,则只允许读取和修改其它一切事务对的任何(包括封锁)请求都不成功,直T R X T R;R至释放上的锁为止这就保证了其它事务不能再读取和修改直到释放锁若事务对数据加上T RX R,T XTR S锁,则其它事务对的锁请求不能成功,而对的共享请求可以得到这就保证了其它事务以读取但不能修RXR R改直至释放锁为止R,T S.可串行性5定义当且仅当某组事务的一定交叉调度产生的结果和这些事务的某一串行调度的结果相同,则这个交叉调度是可串行化的可串行性()是并行事务正确性的准则这个准则规定,一给定的交叉调度,当且仅当它Serializability是可串行化的,才认为是正确的.两段锁协议6两段锁协议规定所有的事务应遵守下列规则()在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,而且1
(2)在释放一个封锁之后,事务不再获得任何其它锁所谓“两段”锁的含义是:事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段第二阶段是释放封锁,也称为收缩阶段定理若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的(证明略)为了确保事务并行执行的正确性,许多系统采用两段锁协议同时系统设有死锁检测机制,发现死锁后按一定的算法解除死锁.恢复7尽管系统中采取了各种保护措施来保证数据库的安全性和完整性不被破坏,保证并行事务的正确执行,但是计算机系统中硬件的故障、软件的错误、操作员的失误以及故意的破坏仍是不可避免的这些故障轻则造成运行事务非正常地中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失因此数据库管理系统必须具有把数扰库从错误状态恢复到某一已知的正确状态(亦称为完整状态或一致状态)的功能,这就是数据库的恢复恢复子系统是数据库管理系统的一个重要组成部分,而且还相当庞大,常常占整个系统代码的10%以上(如)故障恢复是否考虑周到和行之有效,是数据库系统性能的一个重要指标大型的数据库应IMS,DB2o用对故障恢复的要求更加强烈有时甚至采用双工制
(1)故障的种类数据库系统中可能发生各种各样的故障,大致可以分以下几类:
①事务内部的故障;
②系统范围内的故障;
③介质故障;
④计算机病毒()转储和恢复转储是数据库恢复中经常采用的基本技术所谓转储即定期地将整个数据库复制到磁带或2DBA另一个磁盘上保存起来的过程这些备用的数据文本为后备副本或后援副本当数据库遭到破坏后就可以利用后备副本把数据库恢复这时,数据库只能恢复到转储时的状态,从那以后的所有更新事务必须重新运行才能恢复到现时的正常状态转储是十分耗费时间和资源的,不能频繁进行应该根据数据库使用情况确定一个适当DBA的转储周期转储可分为静态转储和动态转储静态转储是指转储期间不允许(或不存在)对数据库进行任何存取、修改活动动态转储是指转储期间允许对数据库进行存取或修改即转储和用户事务可以并发执行静态转储简单,但转储必须等待用户事务结束才能进行同样,新的事务必须等待转储结束才能执行显然,这会降低数据库的可用性动态转储可克服静态转储的缺点但是,转储结束时后援副本上的数据并不能保证正确有效例如,在转储期间的某时刻系统把数据转储到了磁带上,而在时刻某一事务对进行了修改使tl A=100t2,AA=200转储结束,后援副本上的已是过时的数据了为此,必须把转储期间事务对数据库的修改活动登记下来,建立A日志文件()这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态转储还可以分为海log fileo量转储和增量转储海量转储是指每次转储全部数据库增量转储则指每次只转储上次转储后更新过的数据如果数据库很大,事务处理又十分频繁,则增量转储方式是很有效的
(3)日志文件日志文件是用来记录对数据库每一次更新活动的文件在动态转储方式中必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据库在静态转储方式中,也可以建立日志文件当数据库毁坏后可重新装放后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤消处理这样不必重新运行那些在转储前已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态
八、数据库应用系统的设计数据库应用系统的设计步骤L按规范设计的方法可将数据库设计分为以下六个阶段需求分析;1概念结构设计;2逻辑结构设计;3数据库物理设计;4数据库实施;5数据库运行和维护
6.需求分析2需求收集和分析是数据库应用系统设计的第一阶段明确地把它作为数据库应用系统设计的第一步是十分重要的这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的Data FlowDia-gramDFD基础概念结构对整个数据库设计具有深刻影响而要设计好概念结构,就必须在需求分析阶段用系统的观点来考虑问题、收集和分析数据及其处理如何分析和表达用户需求呢在众多的分析方法中,结构化分析Structured简称方法是一个简单实用的方法方法用自顶向下、逐层分解的方式分析系统用数据流图,数Analysis,SA SA据字典描述系统然后把一个处理功能的具体内容分解为若干子功能,每个子功能继续分解,直到把系统的工作过程表达清楚为止在处理功能逐步分解的同时,它们所用的数据也逐级分解形成若干层次的数据流图数据流图表达了数据和处理过程的关系处理过程的处理逻辑常常用判定表或判定树来描述数据字典Data Dictionary,简称则是对系统中数据的详尽描述,是各类数据属性的清单对数据库应用系统设计来讲,数据字典是进行DD详细的数据收集和数据分析所获得的主要结果数据字典是各类数据描述的集合,它通常包括以下个部分5数据项,是数据最小单位1数据结构,是若干数据项有意义的集合2数据流,可以是数据项,也可以是数据结构表示某一处理过程的输入输出3数据存储,处理过程中存取的数据常常是手工凭证、手工文档或计算机文件4处理过程
5.概念结构设计3如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析,抽象与概念结构的设计概念结构的设计,是整个数据库设计的关键之一概念结构独立于数据库逻辑结构,独立于支持数据库的也独立于具体计算机软件和硬件系统归纳总结,其主要特点是DBMS,能充分地反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的一个真实1的模型,或接近真实的模型易于理解,从而可以和不熟悉计算机的用户交换意见用户的积极参与是数据库应用系统设计成功与否的关键2易于更动当现实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如此3易于向关系、网状或层次等各种数据模型转换概念结构是各种数据模型的共同基础,它比任意一种数据模型4更独立于机器,更抽象,从而更加稳定描述概念结构的有力工具是模型把用模型定义的概E-R P.PSChen E-R念结构称为组织模式设计概念结构的策略有种3自顶向下首先定义全局概念结构的框架,然后逐步细化1自底向上首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构2混合策略自顶向下和自底向上相结合的方法用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成3由自底向上策略中设计的各局部概念结构现介绍自底向上设计概念结构的策略按照这种策略,概念结构的设计可按下面步骤进行数据抽象与局部视图设计1模型是对现实世界的一种抽象一般地讲,所谓抽象是对实际的人、物、事和概念的人为处理它抽取人们关E-R心的共同特性,忽略非本质的细节,并把这些特性用各种抽象的概念精确地加以描述这些概念组成了现实世界的一种模型表示有种抽象方法形成了抽象机制,来对数据进行组织:
①分类定义某一概念作为现3Classification实世界中一组对象的类型这些对象具有某些共同的特性和行为它抽象了对象值和型之间的“is amemberof,的语义在模型中,实体型就是这种抽象
②聚集定义某一类型的组成成分它抽象了对象内部属E-R Aggregation性类型和整体与部分之间俨的语义在模型中若干属性的聚集组成了实体型,就是这种抽象
③概“is apart E-R括定义类型之间的一种子集联系它抽象了类型之间的的语义概括具有一个很重要Generalization“is asubset3的性质:继承性子类继承超类上定义的所有抽象性质当然,子类可以增加自己的某些特殊属性概念结构设计的第一步就是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行组织,形成实体、实体的属性,标识实体的码,确定实体之间的联系类型11,1n,nm,设计成部分E-R图视图的集成视图集成就是把上一步得到的各个部分图综合成一个总体的图视图集成可以有两种方2E-R E-R式:
①多个部分图一次集成
②逐步集成用累加的方式一次集成两个部分图无论哪种方式,每次集成E-R E-R可分两步走第一步是合并,解决各部分图之间的冲突问题,生成初步图第二步是修改和重构,消除E-R E-R不必要的冗余,生成基本图E-R.逻辑结构设计4逻辑结构设计的任务就是把概念结构转换为选用的所支持的数据模型的过程设计逻辑结构按理应选择对DBMS某个概念结构最好的数据模型,然后对支持这种数据模型的各种进行比较,选出最合适的但实际DBMS DBMS情况常常是已给定了某台机器,设计人员没有选择的余地现行的一般只支持关系、网状或层次三DBMS DBMS种模型中的某一种,对某一种数据模型,各个机器系统又有许多不同的限制,提供不同的环境与工具因而我们把设计过程分三步进行首先把概念结构向一般的关系模型转换,然后向特定的支持下的数据模型转换,DBMS最后进行模型的优化图向关系数据模型的转换下面给出把图转换为关系模型的转换规则1E-R E-R
①一个实体转换为一个关系模式实体的属性就是关系的属性,实体的码就是关系的码
②一个联系转换为一个关系模式,与该联系相连的各实体的码以及联系的属性转换为关系的属性该关系的码则有三种情况:若联系为11,则每个实体的码均是该关系的候选码若联系为1:n,关系的码为n端实体的码若联系为n m,则关系的码为诸实体码的组合具有相同码的关系模式可合并形成了一般的数据模型后,下一步就向特定的规定的模型转换设计人员必须熟知所用的功能及限制这一步转换是依赖于机器的,不能DBMS DBMS给出一个普遍的规则转化后的模型必须进行优化对数据模型进行优化是指调整数据模型的结构,以提高数据库应用系统的性能性能有动态性能和静态性能两种静态性能分析容易实现根据应用要求,选出合适的模型是一项复杂的工作规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,具体地讲可应用在下面几个具体的方面:第一,2在数据分析阶段用数据依赖的概念分析和表示各数据项之间的关系第二,在设计概念结构阶段,用规范化理论为工具消除初步图中冗余的联系E-R第三,由图向数据模型转换过程中用模式分解的概念和算法指导设计现在,不管选用的是支持哪种E-R DBMS数据模型的,均先把概念结构向关系模型转换然后,充分运用规范化理论的成果优化关系数据库模式的设计.数据库的物理设计5物理设计的内容主要包括确定数据的存储结构从所提供的存储结构中选取一种合适的加以实现确定存储结构的主要因素是存1DBMS取时间、存储空间利用率和维护代价三个方面设计者常常要对这些因素进行权衡一般的也总是具有一DBMS定灵活性供你选择例如,若引入某些冗余数据,则可能减少物理次数提高检索效率相反节约存储空间检索I/O代价就会增加当然应该尽量寻找优化方法,使这三方面的性能都较好折衷有时是必须的存取路径的选择和调整数据库必须支持多个用户的多种应用,因而必须提供对数据库的多个存取入口,也就是2对同一数据存储要提供多条存取路径物理设计的任务应确定建立哪些存取路径设计者应该进行定量的分析,根据计算结果确定存取路径确定数据存放位置首先按数据的应用情况划分为不同的组,然后确定存放位置一般的应把数据的易变部分和3稳定部分分开,把经常存取和不常存取的数据分开经常存取或存取时间要求高的记录应存放在高速存储器上,如硬盘存取频率小或存取时间要求低的放在低速存储器上,如软盘磁带对于同一数据文件也可根据情况进行水平划分或垂直划分确定存储分配许多提供了存储分配的参数供设计者物理优化处理用例如溢出空间的大小和分布参数,4DBMS块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,它们都要在物理设计中确定这些参数的大小影响存取时间和存储空间的分配物理设计过程需要对时间、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案在实施数据库前对这些方案进行方案进行细致的评价,以选择一个较优的方案是十分必要的.数据库应用系统的实施和维护6对数据库的物理设计初步评价完成后就可建立数据库了数据库应用系统实施对应于软件工程的编码、调试阶段设计人员运用提供的数据定义语言将逻辑设计和物理设计的结果严格地描述出来,成为可接受的源DBMS DBMS代码经过调试产生目标模式然后组织数据入库组织数据入库是数据库应用系统实施阶段最主要的工作
八、数据库应用系统的设计数据库应用系统的设计步骤L按规范设计的方法可将数据库设计分为以下六个阶段需求分析;1概念结构设计;2逻辑结构设计;3数据库物理设计;4数据库实施;5数据库运行和维护
6.需求分析2需求收集和分析是数据库应用系统设计的第一阶段明确地把它作为数据库应用系统设计的第一步是十分重要的这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的Data FlowDiagramDFD基础概念结构对整个数据库设计具有深刻影响而要设计好概念结构,就必须在需求分析阶段用系统的观点来考虑问题、收集和分析数据及其处理如何分析和表达用户需求呢在众多的分析方法中,结构化分析Structured简称方法是一个简单实用的方法方法用自顶向下、逐层分解的方式分析系统用数据流图,数Analysis,SA SA据字典描述系统然后把一个处理功能的具体内容分解为若干子功能,每个子功能继续分解,直到把系统的工作过程表达清楚为止在处理功能逐步分解的同时,它们所用的数据也逐级分解形成若干层次的数据流图数据流图表达了数据和处理过程的关系处理过程的处理逻辑常常用判定表或判定树来描述数据字典Data Dictionary,简称则是对系统中数据的详尽描述,是各类数据属性的清单对数据库应用系统设计来讲,数据字典是进行DD详细的数据收集和数据分析所获得的主要结果数据字典是各类数据描述的集合,它通常包括以下个部分5数据项,是数据最小单位1数据结构,是若干数据项有意义的集合2数据流,可以是数据项,也可以是数据结构表示某一处理过程的输入输出3数据存储,处理过程中存取的数据常常是手工凭证、手工文档或计算机文件4处理过程
5.概念结构设计3如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析、抽象与概念结构的设计概念结构的设计,是整个数据库设计的关键之一概念结构独立于数据库逻辑结构,独立于支持数据库的也独立于具体计算机软件和硬件系统归纳总结,其主要特点是DBMS,能充分地反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的一个真实1的模型,或接近真实的模型易于理解,从而可以和不熟悉计算机的用户交换意见用户的积极参与是数据库应用系统设计成功与否的关键2
(3)易于更动当现实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如此
(4)易于向关系、网状或层次等各种数据模型转换概念结构是各种数据模型的共同基础,它比任意一种数据模型更独立于机器,更抽象,从而更加稳定描述概念结构的有力工具是模型把用模型定义的概念结E-R E-R构称为组织模式设计概念结构的策略有种3
(1)自顶向下首先定义全局概念结构的框架,然后逐步细化
(2)自底向上首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构()混合策略自顶向下和自底向上相结合的方法用自顶向下策略设计一个全局概念结构的框架,以它为骨架3集成由自底向上策略中设计的各局部概念结构现介绍自底向上设计概念结构的策略按照这种策略,概念结构的设计可按下面步骤进行()数据抽象与局部视图设计1模型是对现实世界的一种抽象一般地讲,所谓抽象是对实际的人、物、事和概念的人为处理它抽取人们关E-R心的共同特性,忽略非本质的细节,并把这些特性用各种抽象的概念精确地加以描述这些概念组成了现实世界的一种模型表示有3种抽象方法形成了抽象机制,来对数据进行组织:
①分类(Classification)定义某一概念作为现实世界中一组对象的类型这些对象具有某些共同的特性和行为它抽象了对象值和型之间的“is amember of,的语义在E-R模型中,实体型就是这种抽象
②聚集(Aggregation)定义某一类型的组成成分它抽象了对象内部属性类型和整体与部分之间产的语义在模型中若干属性的聚集组成了实体型,就是这种抽象“is apart E-R
③概括(Generalization)定义类型之间的一种子集联系它抽象了类型之间的“is asubsetF的语义概括具有一个很重要的性质:继承性子类继承超类上定义的所有抽象性质当然,子类可以增加自己的某些特殊属性概念结构设计的第一步就是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行组织,形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(11,1n,nm),设计成部分E-R图
(2)视图的集成视图集成就是把上一步得到的各个部分E-R图综合成一个总体的E-R图视图集成可以有两种方式
①多个部分图一次集成E-R
②逐步集成用累加的方式一次集成两个部分图无论哪种方式,每次集成可分两步走第一步是合并,解E-R决各部分图之间的冲突问题,生成初步图第二步是修改和重构,消除不必要的冗余,生成基本图E-R E-R E-R.逻辑结构设计4逻辑结构设计的任务就是把概念结构转换为选用的所支持的数据模型的过程设计逻辑结构按理应选择对DBMS某个概念结构最好的数据模型,然后对支持这种数据模型的各种进行比较,选出最合适的但实际DBMS DBMS情况常常是已给定了某台机器,设计人员没有选择的余地现行的一般只支持关系、网状或层次三DBMS DBMS种模型中的某一种,对某一种数据模型,各个机器系统又有许多不同的限制,提供不同的环境与工具因而我们把设计过程分三步进行首先把概念结构向一般的关系模型转换,然后向特定的支持下的数据模型转换,DBMS最后进行模型的优化
(1)E-R图向关系数据模型的转换下面给出把E-R图转换为关系模型的转换规则
①一个实体转换为一个关系模式实体的属性就是关系的属性,实体的码就是关系的码
②一个联系转换为一个关系模式,与该联系相连的各实体的码以及联系的属性转换为关系的属性该关系的码则有三种情况:若联系为11,则每个实体的码均是该关系的候选码若联系为1:n,关系的码为n端实体的码若联系为n m,则关系的码为诸实体码的组合具有相同码的关系模式可合并形成了一般的数据模型后,下一步就向特定的规定的模型转换设计人员必须熟知所用的功能及限制这一步转换是依赖于机器的,不DBMS DBMS能给出一个普遍的规则转化后的模型必须进行优化对数据模型进行优化是指调整数据模型的结构,以提高数据库应用系统的性能性能有动态性能和静态性能两种静态性能分析容易实现根据应用要求,选出合适的模型是一项复杂的工作()规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,具体地讲可应用在下面几个具体的方面:第2一,在数据分析阶段用数据依赖的概念分析和表示各数据项之间的关系第二,在设计概念结构阶段,用规范化理论为工具消除初步图中冗余的联系第三,由图向数据模型转换过程中用模式分解的概念和E-R E-R算法指导设计现在,不管选用的是支持哪种数据模型的,均先把概念结构向关系模型转换然后,充分DBMS运用规范化理论的成果优化关系数据库模式的设计.数据库的物理设计5物理设计的内容主要包括确定数据的存储结构从所提供的存储结构中选取一种合适的加以实现确定存储结构的主要因素是存1DBMS取时间、存储空间利用率和维护代价三个方面设计者常常要对这些因素进行权衡一般的也总是具有一DBMS定灵活性供你选择例如,若引入某些冗余数据,则可能减少物理次数提高检索效率相反节约存储空间检索I/O代价就会增加当然应该尽量寻找优化方法,使这三方面的性能都较好折衷有时是必须的存取路径的选择和调整数据库必须支持多个用户的多种应用,因而必须提供对数据库的多个存取入口,也就2是对同一数据存储要提供多条存取路径物理设计的任务应确定建立哪些存取路径设计者应该进行定量的分析,根据计算结果确定存取路径确定数据存放位置首先按数据的应用情况划分为不同的组,然后确定存放位置一般的应把数据的易变部分3和稳定部分分开,把经常存取和不常存取的数据分开经常存取或存取时间要求高的记录应存放在高速存储器上,如硬盘存取频率小或存取时间要求低的放在低速存储器上,如软盘磁带对于同一数据文件也可根据情况进行水平划分或垂直划分确定存储分配许多提供了存储分配的参数供设计者物理优化处理用例如溢出空间的大小和分布参数,4DBMS块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,它们都要在物理设计中确定这些参数的大小影响存取时间和存储空间的分配物理设计过程需要对时间、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案在实施数据库前对这些方案进行方案进行细致的评价,以选择一个较优的方案是十分必要的.数据库应用系统的实施和维护6对数据库的物理设计初步评价完成后就可建立数据库了数据库应用系统实施对应于软件工程的编码、调试阶段设计人员运用提供的数据定义语言将逻辑设计和物理设计的结果严格地描述出来,成为可接受的源DBMS DBMS代码经过调试产生目标模式然后组织数据入库组织数据入库是数据库应用系统实施阶段最主要的工作数据库数据的载入和应用程序的开发由于数据库数据量一般都非常大,并且这些数据来源于一个组织的各个部1门,分散在各种数据文件或原始凭证中这些数据的结构和格式一般也不符合数据库的要求,还要进行转换因此组织数据入库是一件耗费大量人力物力的工作数据的转换和组织对于小系统可以用人工方法完成但是,人工转换效率低、质量差一般来说,应设计一个数据输入子系统让计算机完成这个工作输入子系统的主要功能是:原始数据的输入、抽取、校验、分类、转换和综合,最终把数据组织成符合数据库结构的形式然后把数据存入数据库中数据的转换、分类和综合常常要经过多次才能完成,因而输入子系统的设计和实施亦是比较复杂的,要编写许多应用程序输入子系统的设计不能等物理设计完成后才动手,应该和数据库设计工作并行开展为了保证数据库数据正确无误,必须高度重视数据的检验工作在输入子系统进行数据转换的过程中应该进行多次检验,每次检验的方法亦不要相同对于重要数据的校验更应该反复多次,确认正确后方可入库数据库应用系统中应用程序的设计应该和数据库模式设计并行数据库应用系统的实施阶段的另一项工作便这是这些应用程序的编码、调试工作有了装载实际数据的数据库和应用程序,就建立了数据库应用系统,可以试运行了数据库应用系统的试运行在完成上述工作之后,便可进入数据库的试运行阶段,或者称联合调试阶段这阶段2的主要工作是
①实际运行应用程序,执行对数据库的各种操作,测试应用程序的功能
②测量系统的性能指标,分析是否符合设计目标虽然已在物理设计过程中进行了性能预测,但是仅仅估价了时间和空间指标,而且在性能估价的过程中作了许多简化和假设,忽略了许多次要因素,因而估价是粗糙的并可能失真必须在试运行阶段进行实际测量和评价有些参数的最佳值往往是经过运行调试后才找到的如果实际结果不符合设计目标,则需返回物理设计阶段,调整物理结构,修改参数有时,也许还需要返回逻辑设计阶段,调整逻辑结构最后还须指出两点第一,上面已看到组织数据入库是十分费事的,如果运行调试后又要修改数据库设计则又要重新组织数据入库因此应分批分期输入数据,逐步完成运行评价第二,数据库的实施和调试不是一朝一夕能完成的,在此期间软硬件的错误随时可能发生加上数据库刚刚建立,工作人员对系统还不熟悉,对其规律更缺乏深入了解,容易发生操作错误因此必须做好数据库的转储和恢复工作,这就要求设计人员了解的这个功能,并根据调试方式和特点首先实施,尽量减少对数据库的破坏并简DBMS化故障恢复()数据库应用系统的运行和维护数据库应用系统投入运行标志着开发任务的基本完成和维护工作的开始,但3并不意味着设计过程结束任何数据库应用系统只要它存在一天,它的设计就得不断地进行评价、调整、修改,甚至完全改革因此数据库应用系统的维护不仅是维护其正常活动而且是设计工作的继续和提高维护阶段的主要工作是
①数据库的安全性、完整性控制及系统的转储和恢复;
②性能的监督、分析和改进;
③数据库的重组织和重构造下面简单介绍数据库的重组织和重构造数据库运行一段时间后,由于记录的不断增、册改,会使数据库的物理存储变坏例如,逻辑上属于同一记录型或同一关系的数据被分散到了不同的文k件或文件的多个碎片上从而降低了数据库存储空间的利用率和数据的存取效率,数据库的性能下降这时,DBA就要进行数据库的重组织,一般都提供重组织用的实用程序在重组过程中,按原设计要求重新安排记录DBMS的存储位置,调整数据区和溢出区,回收“垃圾”,减少指针链等数据库的重组织不改变原设计的数据逻辑结构和物理结构而数据库的重构造则不同部分修改原数据库的模式或内模式称为数据库的重构造由于数据库应用环境的变化,数据库重构的程度是有限的只能作部分的修改和调整若应用变化太大,重构也无济于事了,则表明数据库应用系统生命周期的结束,应该重新设计数据库应用系统新的数据库应用系统新的生命周期开始了
九、数据库管理系统的设计与实现的目标
1.DBMS
(1)用户界面友好对一个实用DBMS来说,用户界面的质量直接影响其生命力DBMS的用户接口应面向应用,采用适合最终用户的交互式、表格式、菜单式、窗口式等界面形式,以方便使用和保持灵活性一般地说,用户界面应具有可靠性、简单性、灵活性和立即反馈等特性()功能完备功能随系统的规模的大小而异大型功能齐全,小型功能弱一些主2DBMS DBMS DBMS DBMS要功能包括数据定义、数据库数据存取、事务控制、数据库组织和存储管理、数据库安全保护等等我们在下面讨论这些功能的内容
(3)效率高系统效率包括三个方面:一是计算机系统内部资源的使用效率能充分利用资源(包括存储空间、设备、等),并注意使各种资源负载均衡以提高整个系统的效率,二是本身的运行效率三是用户的生CPU DBMS产率这是指用户学习、使用和在基础上开发的应用系统的效率DBMS DBMS的基本功能
2.DBMS
(1)数据库定义对数据库的结构进行描述,包括外模式、模式、内模式的定义;数据库完整性的定义;安全保密定义(如用户口令、级别、存取权限);存取路径(如索引)的定义这些定义存储在数据字典(亦称为系统目录)中,是运行的基本依据为此,提供数据定义语言DBMS DDL()数据存取提供用户对数据的操纵功能,实现对数据库数据的检索、插入、修改和删除一个好的应2DBMS该提供功能强易学易用的数据操纵语言(DML)、方便的操作方式和较高的数据存取效率DML有两类:一类是宿主型语言,一类是自含型语言前者的语句不能独立使用而必须嵌入某种主语言,如语言、语言中使C COBOL用而后者可以独立使用,通常以供终端用户交互使用和批处理方式两种形式使用()数据库运行管理这是指运行控制、管理功能包括多用户环境下的并发控制、安全性检查和存取权3DBMS限控制、完整性检查和执行、数据加密、运行日志的组织管理、事务的管理和自动恢复(保证事务的正确性),这些功能保证了数据库系统的正常运行
(4)数据组织、存储和管理DBMS要分门别类地组织、存储各类数据,包括数据字典(亦称系统目录)、用户数据、存取路径等等要确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法确保较高存取(如随机查找、顺序查找、增、册、改)效率U
(5)数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及有性能监测分析等功能()其它功能包括与网络中其它软件系统的通信功能;一个与另一个或文件系统的数据6DBMS DBMS DBMS转换功能等与操作系统
3.DBMS通常是建立在操作系统环境之上的根据具体操作系统的特点,可以用不同的方法利用操作系统的DBMS DBMS基本功能来实现一般有下面类方法DBMS3
(1)共享模块法()分离进程法2
(3)和操作系统融合程序模块的组成
4.DBMS作为一个庞大的系统软件,由众多程序模块组成,它们分别实现复杂而繁多的功能数据库定义方DBMS DBMS面有翻译处理程序(包括外模式、模式、存储模式处理程序)、保密定义处理程序(如授权定义处理程序)、DDL完整性约束定义处理程序等这些程序接收相应的定义,进行语法、语义检查,把它们翻译为内部格式存储在数据字典中翻译程序还根据模式定义负责建立数据库的框架(即形式一个空库),等待装入数据数据库操DDL纵方面有处理程序、终端查询语言解释程序、数据存取程序、数据更新程序等处理程序或终端查询语DML DML言解释程序对用户数据操纵请求进行语法、语义检查、由数据存取或更新程序完成对数据库的存取操作数据库运行管理方面有系统初启程序,负责初始化、建立的系统缓冲区、系统工作区打开数据字典等等DBMS DBMS还有安全性控制、完整性检查、并发控制、事务管理、运行日志管理等程序模块,在数据库运行过程中监视着对数据库的所有操作,控制管理数据库资源,处理多用户的并发操作等它们一方面保证用户事务的正常运行,一方面保证数据库的安全性和完整性数据库组织、存储和管理方面有文件读写与维护程序、存取路径(如索引)管理程序、缓冲区管理程序(包括缓冲区读、写、淘汰等模块),这些程序负责维护数据库的数据和存取路径,提供有效的存取的方法数据库建立、维护和其它有数据库初始数据装入程序、转储程序、恢复程序、数据库重构造程序、数据转换程序、通信程序等的这些组成模块互相联系,互相依赖,共同完成复杂的DBMS DBMS功能这些模块之间的联系有一定的层次关系的层次结构
5.DBMS和操作系统一样,可以也应该将划分成若干层次许多实际上就是分层实现的最上层是应用层,DBMS DBMS位于核心之处它处理的对象包括各种各样的数据库应用,如用宿主语言编写的应用程序、终端用户通过DBMS应用接口(如)发出的事务请求等该层是的最终用户和应用程序的界面层第二层是语言翻译FORMS DBMS处理层它处理的对象是数据库语言,如提供的数据接口是关系、视图,即元组的集合其功能是对数据SQL库语言的各类语句进行语法分析、视图转换、授权检查、完整性检查、查询优化等通过对下层基本模块的调用,生成可执行代码这些代码的运行,即可完成数据库语句的功能要求第三层是数据存取层该层处理的对象是单个元组它把上层的集合操作转化为单记录操作执行扫描、排序、元组的查找、插入、修改、删除、封锁等基本操作完成数据记录的存取、存取路径维护、并发控制、事务管理等工作第四层是数据存储层该层处理的对象是数据页和系统缓冲区,执行文件的逻辑打开、关闭、读页、写页、缓冲区读和写、页面淘汰等操作,完成缓冲区管理、内外存交换、外存管理等功能操作系统是的基础,它处理的对象是数据文件的物理块DBMS执行物理文件的读写操作,保证对数据逻辑上的读写真实地映射到物理文件上操作系统提供的存取原语DBMS和基本的存取方法通常作为和存储层的接口DBMS.语言处理6语言翻译处理层的任务就是把用户在这两种方式下提交给的数据库语句转换成对内层可执行的基本DBMS DBMS存取模块的调用序列数据库语言通常包括三部分语句语句处理相对独立和简单DDL,DML,DCL DDLDML和则较为复杂具体来说,对语句,语言翻译处理层首先把它翻译成内部表示,然后把它存储在系统DCL DDL的数据字典中对语句的定义部分,如安全保密定义、存取权限定义、完整性约束条件定义等处理与DCLDDL相同在中数据字典通常采用和普通数据同样的表示方式数据字典包括关系定义表、属性表、视图表、RDBMS视图属性表、视图表达式表、用户表、存取权限表、()解释方法一些数据库系统(如)对上述方法进行了改进,通过尽量推迟聚束过程来赢得数据独立1dBASElII性具体做法是:直到执行前,数据库语句都以原始字符串的形式保存随着数据库系统的发展,这种方法DML已逐步为预编译技术所取代
(2)预编译方法已经看到,将聚束过程提前,固然可达到系统的高效率,但失去了数据库的一个主要优点------一对多联系类似,不再赘述3多对多m n联系若对于实体集A中的每一个实体,实体集B中有n个实体n0与之联系;反之,对于实体集B中的每一个实体,实体集A中也有m个实体mNO与之对应,则称实体集A与实体集B具有多对多联系,记作m实质上,多对多联系是任意一种联系另外,同一实体集内的各个实体间也可以有各种联系概念模型的表示n方法最常用的是实体一联系方法简称方法该方法是由在年提出的Entity-Relationship Approach,E-R1976E-R方法用图来描述某一组织的概念模型在这里仅介绍图的要点在图中E-R E-R E-R长方形框表示实体集,框内写上实体型的名称1用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来2用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联3系的种类如果联系也具有属性,则把属性框和菱形框也用无向边连接上.三种主要的数据模型3实际所支持的数据模型主要有三种DBMS层次模型Hierarchical Model网状模型Network Model关系模型其中,关系模型是当前所支持的数据模型的主流年代运行的几乎都Relational ModelDBMS90DBMS是基于关系模型的层次模型和网状模型统称为非关系模型非关系模型的结构可以和图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用但是最近,层次模型在研究面向对象的中已DBMS得到重视在关系模型中,数据在用户的观点中或在用户视图中的逻辑结构是一张二维表关系Table Relation,对应于平常讲的一张表元组表中的一行Tuple,属性表中的一列称为一个属性,给每一列起一个名,称为属性名这一列或这个属性所有可能取的值Attribute,的集合称为这个属性的值域值域中的一个元素叫做这个属性的值Domain,主关键字或是指能唯一标识一个元组的一个或一组属性Primary KeyAttribute PrimaryKey,分量是指元组中的一个属性值Attribute value,关系模式RelationalSchema,是对关系的描述,一般用关系名属性名1,属性名2,・・.,属性名n来表示同层次模型和网状模型相比较,关系模型具有下列特点概念单一在关系模型中,无论是实体还是实体之间的联系都用关系来表示在关系模型中,在用户的观点中,1数据的逻辑结构就是表,也只有这唯一的概念在非关系模型中,用户要区分记录型与记录型之间的联系两个概念;当环境复杂时,数据结构异常复杂,难以掌握而关系模型,由于概念单一,可以变复杂为直观、简单,易学易用规范化所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求这些条件被称为规范条件2对于关系,一个最基本的规范条件是,要求关系中的每一个属性或分量均是不可分的数据项;也就是说不允许表中有表,表是不可嵌套的在关系模型中,用户对数据的操作的输入和输出都是表,也就是说,用户通过操作旧表而得到一张新表总之,3关系模型概念简单,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便于的实现DBMS基于关系的简化了应用程序员的工作,便于数据库应用系统的设计和维护故此,关系模型自诞生以后就DBMS得到了迅速的发展,成为应用最为广泛的、唯一的数据模型
二、数据库系统的结构数据库系统的三级模式结构L数据库管理系统的三级模式结构由外模式、模式和内模式组成外模式或子模式或用external schema,subschema户模式是指数据库用户所看到的数据结构,是用户看到的数据视图模式或逻辑模式user schema,schema logic是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和外模式是模式的schema,一部分内模式或存储模式或物理模式是指数据在数据库系统内internal schema,storage schema,physical schema,的存储介质上的表示,即对数据的物理结构和存取方式的描述模式描述的是数据的全局的逻辑结构,决定了的功能外模式涉及的仅是局部的逻辑结构,是模式的子集,是对模式的调用数据库系统的三级模式是DBMS对数据进行三个层次抽象的工具通过三级模式,把对数据的具体组数据独立性;将聚束时间推迟,赢得了数据性,却增加了执行高效率的代价预编译方法就是为了克服它们的缺点,保持两者的优点而提出的其基本思想是,在用户提供了语句后,在运行前对它进行翻译处理,保存产生DML好的执行代码,运行时加以执行但是,使用这种方法会遇到这样的问题:在聚束过程中进行优化所依据的条件可能在运行前已不存在,或者数据结构被修改,因而导致已作出的规划在执行时不再有效例如,假设在聚束过程中决定使用某一索引来加快存取速度,而在程序编译完成之后,运行之前,该索引被删除了那么,运行时就会出现不可预测的现象为了解决这类问题,采用了重编译方法即当数据库中某些成分的改变而使一些程序的编译结果无效时,再对它们执行一次编译重编译可在不同时刻进行为了提高整个系统的效率,不应在数据库某一成分改变后就马上对受影响的那些源程序重编译,较好的方法是将受影响的编译结果置“无效”标志,在其被执行时才进行自动重编译自动重编译技术使得编译方法既拥有了编译时进行束缚所带来的高效率,又具备了执行时束缚所带来的数据独立性实践证明,预编译方法的效率比其它方法高两倍以上,数据存取层7数据存取层介于语言处理层和数据存储之间它向上提供单元组接口,即导航式的一次一个元组的存取操作向下则以系统缓冲区的存储器接口作为实现基础()提供一次一个元组的查找、插入、删除、修改等基本操作1()提供元组查找所循的存取路径以及对存取路径的维护操作如对索引记录的查找、插入、删除、修改2()对记录和存取路径的封锁、解锁操作3()日志文件的登记和读取操作4
(5)辅助操作如扫描、合并/排序,其操作对象有关系、有序表、索引等为了完成上述功能,通常把存取层又划分为若干功能子系统加以实现.缓冲区管理8数据存取层的下面是数据存储层(简称存储层)存储层的主要功能是存储管理包括缓冲区管理、内外存交换、外存管理等其中缓冲管理是最主要的存储层向存取层提供的接口是由定长页面组成的系统缓冲区系统缓冲区的设立是出于两方面的原因:一是它把存储层以上各系统成分和实在的外存设备隔离外存设备的变更不会影响其它系统成分,使具有设备独立性二是提高存取效率利用系统缓冲区滞留数据当存取层需要DBMS DBMS读取数据时存储子系统首先到系统缓冲区中查找只有当缓冲区不存在该数据时才真正从外存读入该数据所在的页面当存取层写回一元组到数据库中时,存储子系统并不把它立即写回外存,仅把该元组所在的缓冲区页面作一标志,表示可以释放只有当该用户事务结束或结束缓冲区已满需要调入新页时才按一定的淘汰策略把缓冲区中已有释放标志的页面写回外存这样可以减少内外存交换的次数,提高存取效率系统缓冲区可由内存或虚存组成由于内存空间紧张,缓冲区的大小、缓冲区内存和虚存部分的比例要精心设计针对不同的应用和环境按一定的模型进行调整既不能让缓冲区占据太大内存空间,也不能因空间太小而频频缺页调页,造成“抖动”,影响效率缓冲区由控制信息和若干定长页面组成缓冲区管理模块向上层提供的操作是缓冲区的读(READBUF)、写(WRITEBUF)缓冲区内部的管理操作有:查找页、申请页、淘汰页缓冲区管理调用OS的操作有:读(READ)、写(WEITE).数据库的物理组织9数据库是大量数据的有结构的综合性的集合,如何将这样一个庞大的数据集合以最优的形式组织起来存放在外存上是一个非常重要的问题所谓“优”应包括两方面:一是存储效率高,节省存储空间;二是读取效率高,速度快、代价小数据库实现的基础是文件,对数据库的任何操作最终要转化为对文件的操作所以在数据库物理组织中,基本的问题是如何设计文件组织或者利用操作系统提供的基本的文件组织方法但是,在数据库中表和文件不必具有一一对应关系这和操作系统中不一样可以建立只能自己读写的文件,在其中存储多个表的数据DBMS数据系统是文件系统的发展文件系统中每个文件存储同质实体的数据,各文件是孤立的,没有体现实体之间的联系数据库系统中数据的物理组织必须体现实体之间的联系,支持数据库的逻辑结构----------------------------------各种数据模型因此数据库中要存储个方面的数据:数据描述即数据外模式、模式、内模式数据本身数据4之间的联系存取路径这个方面的数据内容都要采用一定的文件组织方式组织、存储起来4
(1)数据字典(DD)的组织有关数据的描述存储在数据库的数据字典中数据字典的特点是数据量比较小(与数据本身比)、使用频繁,因为任何数据库操作都要参照数据字典的内容数据字典在网状、层次数据中常常用一个特殊的文件来组织所有关于数据的描述信息存放在一个文件中
(2)数据及数据联系的组织关于数据自身的组织,DBMS可以根据处理的要求自己设计文件结构,也可以从操作系统提供的文件结构中选择合适的加以实现目前,操作系统提供的常用文件结构有:顺序文件、索引文件、索引顺序文件、文件(杂凑文件)和树类文件等等数据库中数据组织与数据之间联系是紧密结合的HASH B在数据的组织和存储中必须直接或间接、显式或隐含地体现数据之间的联系,这是数据库物理组织中主要考虑和设计的内容关系数据库中实现了数据表示的单一性实体及实体之间的联系都用一种数据结构“表”来表示在数据库的物理组织中,每一个表通常可以对应一种文件结构因此数据和数据之间的联系两者组织方式相同
(3)存取路径的组织关系数据库中,存取路径和数据是分离的,对用户是隐蔽的存取路径可以动态建立、删除存取路径的物理组织通常采用树类文件结构和文件结构在一个关系上可以建立若干个索弓有B HASHI的系统支持组合属性索引,即在两个或两个以上的属性上建立索引索引可以由用户用语句建立,CRETR INDEX用语句删除在执行查询时,查询优化模块也会根据优化策略自动地建立索引,以提高查询DROP INDEXDBMS效率由此可见,关系数据库中存取路径的建立是十分灵活的织留给来完成,使得用户能在高层次上处理数据的逻辑结构,而不必关心数据的物理结构为了实现这三DBMS个层次这间的联系,在沟通三级模式中提供了两个映象:外模式-模式映象模式-内模式映象DBMS
(1)模式模式规定了数据库中全部数据的一个逻辑表示或描述形式模式既不同于内模式,也不同于外模式它比内模式抽象,不涉及数据的物理结构和存储介质它与具体的应用程序或高级语言无关
(2)外模式外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示
(3)内模式内模式是全部数据库的内部表示或底层描述,是用来定义数据的物理结构和存取方式的
(4)二级映象对于同一个模式,可以有任意多个外模式外模式-模式的映象定义了某个外模式和模式之间的对应关系这些映象的定义通常包含在各自的外模式中当模式改变时,外模式-模式的映象耍做相应的改变,以保证外模式的不变性这是数据库管理员(DBA)的责任模式-内模式的映象定义了数据逻辑结构和存储结构之间的对应关系例如,字段的内部表示等当数据库的存储结构改变时,模式-内模式的映象也须做相应的修改,以使得模式保持不变性这仍是的责任正是由于上述二级映象的功能及其自动实现,使得数据库系统中的数DBA据具有较高的逻辑独立性和物理独立性,从而大大地方便了用户的使用
(5)概念模式与模式ANSI研究组于1975年2月提出一个临时报告1978年提出一个最终报告,称之为报告,简称为报告报告中指出,数据库管理系统应具有三级模式的结构,即概念AbTSI/SPARC SPARCSPARC模式、外模式和内模式其中外模式和内模多与上面所讲的大致相当但报告中的概念模式是指一个组织SPARC或部门所对应的现实世界的真实模型,即概念模型概念模式仅描述实体及其属性和联系,不涉及机器世界的概念概念模型是信息世界范畴内的信息的结构,而模式是机器世界范畴内的概念模型的逻辑表示概念模型独立于具体的计算机系统,甚至是和计算机无关的,是一个组织或部门的模型常用的描述概念模式的方法是方E-R法模式是依赖于具体的计算机及其的模式通过三种具体模型:层次模型、网状模型和关系模型来加以DBMS实现概念模式必须转换成具体的数据模型,然后才能在相应的上实现概念模型和模式都是描述信息或DBMS数据的整体结构的,然而它们是在不同的抽象层次上加以描述的概念模型离机器更远,形式化程度低从远离机器的观点看,概念模型更抽象些,但更接近现实世界而模式描述使用的是形式化的语言-模式而概念模DDL,型描述使用的是图和一些自然语言E-R.使用数据库的计算机系统结构2广义地讲,实际上使用数据库的计算机系统由下列几个部分组成的
(1)硬件部分包括主机、外部存储设备、网络设备和电源等
(2)软件部分包括操作系统、DBMS、编译系统和应用开发工具软件等
(3)人员包括数据库管理员(DataBaseAdministrator-DBA),系统分析员(System Analyst)、应用程序员(ApplicationProgrammer)和用户(User).数据库管理系统3数据库管理系统是数据库系统的核心是负责数据库的建立、使用和维护的软件建立在操DBMS DBMS DBMS作系统之上,实施对数据库的统一管理和控制用户使用的各种数据库命令以及应用程序的执行,最终都必须通过另外,还承担着数据库的安全保护工作,按照所规定的要求,保证数据库的完整性和安全DBMS DBMSDBA性的主要功能包括以下几个主要方面DBMS
(1)数据库的定义功能DBMS通过提供数据描述语言(也称数据定义语言)(DataDescrip-tiveLanguageDDL)来对外模式、模式和内模式加以描述然后模式翻译程序把用写的各种模式的定DDL义源码翻译成相应的内部表示,形成相应的目标形式,分别叫目标外模式、目标模式、目标内模式,这些目标模式是对数据库的描述,而不是数据本身(目标)模式只刻画了数据库的形式或框架,而不包括数据库的内容这些目标模式被保存在数据字典(或系统目标)之中,作为存取和管理数据的基本依据例如,根DBMS DBMS据这些模式定义,进行物理结构和逻辑结构的映象,进行逻辑结构和用户视图的映象,以导出用户要检索的数据的存取方式
(2)数据操纵功能DBMS提供数据操纵语言(DataManipulationLanguageDML)实现对数据库中数据的一些基本操作,如:检索、插入、修改、删除和排序等等有两类:一类是嵌入主语言的,如嵌入到或DML CCOBOL等高级语言中这类语言本身不能单独使用,故此称为宿主型的或嵌入式另一类是非嵌入式DML DML DML语言(包括交互式命令语言和结构化语言),它的语法简单,可以独立使用,由单独的解释或编译系统来执行,所以一般称为自主型或自含型的命令语言是行结构语言,单条执行结构化语言是命令语言的扩充或发展,DMLo增加了程序结构描述或过程控制功能,如循环、分支等功能命令语言一般逐条解释执行结构化语言可以解释执行,也可以编译执行现在一般均提供命令语言的交互式环境和结构环境两种DBMS运行方式,供用户选择控制和执行语句(或程序),完成对数据库的操作对于自主型的结DBMS DMLDML构化的通常采用解释执行的方法,但也有编译执行的方法,而且编译执行的越来越多另外,很多DML,DBMS系统同时设有解释和编译两种功能,由用户选其一对于嵌入型或缩主型一种提供两种方法DML,DBMS
①预编译方法
②修改和扩充主语言编译程序(亦称增强编译方法)预编译方法是,由提供一个预处理程序,对源程序DBMS进行语法扫描,识别出语句,并把这些语句转换成主语言中的特殊调用语句主语言必须和有调用接DMLDML口这样在连接形成目标时和主语言语句一起形成可执行的目标()数据库运行管理数据库运行期间的动态管理是的核心部分,包括并发控制、存取控制(或安全性检3DBMS查、完整性约束条件的检查)、数据库内部的维护(如索引、数据字典的自动维护等)、缓冲区大小的设置等等所有的数据库操作都是在这个控制部分的统一管理下,协同工作,以确保事务处理的正常运行,保证数据库的正确性、安全性和有效性
(4)数据库的建立和维护功能数据库的建立和维护包括初始数据的装入、数据库的转储或后备功能、数据库恢复功能、数据库的重组织功能和性能分析等功能,这些功能一般都由各自对应的实用功能子程序来完成DBMS随软件产品和版本不同而有所差异通常大型机上的功能最全,小型机上的功能稍弱点,微机上的DBMSDBMS更弱些但是,目前,由于硬件性能和价格的改进,微机上的功能越来越全DBMSDBMS
三、关系数据库的标准语言---------SQL
1.SQL概述SQL的英语名称是结构查询语言(StructuredQueryLanguage)实际上它的功能包括查询(Query)、操纵(Manipulation)定义(Definition)和控制(Control)N四个方面,是一个综合的、通用的、功能极强的关系数据库语言支持数据库的三级模式结构SQL的数据定义功能的数据定义功能包括三部分
2.SQL SQL定义基本表,定义视图和定义索引它们是:CREATE TABLECREATE VIEWCREATE INDEXDROP TABLE DROP的数据定义功能可用于定义和修改模式(如基本表),定义外模式(如视图)和内模式VIEW DROPINDEX SQL(如索引).基本表的定义与删除3定义基本表的语句格式为表名(列名类型[]CREATE TABLE1NOT NULL[,列名类型[]]...)2NOTNULL[其他参数];其中,任选项“其它参数”是与物理存储有关的参数根据具体系统的不同而不同删除基本表的语句为:DROP表名;删除索引的语句为:索引名;删除索引的同时把有关索引的描述也从数据字典中删去TABLEDROPINDEX但表的内涵仍存在且其数据外延内容不变把一个基本表的定义连同表上所有的记录、索引以及由此基本表导出的所有视图全部都删除,并释放相应的存储空间.索引的建立与删除4对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式通常,索引的建立和删除由DBA或表的主人(即建立表的人)负责用户不必也不能在存取数据时选择索引存取路径的选择由系统自动进行索引的描述存放在数据字典中建立索引的语句格式为[]索引名基本表名(列名[次序][,列名[次序]]…)[其他参数];这里的CREATE UNIQUEINDEX ON任选项------------其他参数是与物理存储有关的参数索引可以建在一列或几列上圆括号内是索引列的顺序说明表其中的任选项---------次序,指定了索引值排序的次序可取ASC(升序)或DESC(降序)缺省值为升序表示每一索引值只对应唯一的数据记录UNIQUE的数据操纵功能
5.SQL的数据操纵功能包括和四个语句,即检索和更新(包括增、册、改)SQL SELECT,INSERT,DELETE UPDATEU两部分工能检索就是查询更新语句的更新语句SQL SQL包括修改,删除和插入三类语句
①修改(UPDATE)(亦称为更新)修改语句的一般格式为表名UPDATESET字段=表达式3字段二表达式].・.[谓词];WHERE修改指定表中满足谓词(或条件)的元组,把这些元组按子句中的表达式修改相应属性或字段上的值SET
②删除()DELETE删除语句一般格式为表名DELETE FROM[谓词];WHERE从指定表中删除满足谓词的那些记录没有子句时表示删去此表中的全部记录,但此表的定义仍在数据WHERE字典中,只是一个空表只对表外延操作,不对内涵操作DELETE
③插入()插入语句的一般格式为INSERT表名[(字段名字段名]…)]INSERT INTO3values(常量L,常量]…);或INSERT表名[(字段名[,字段名]…)]INTO子查询;第一种格式把一个新记录插入指定的表中第二种格式把子查询的结果插入表中若表中有些字段在插入语句中没有出现,则这些字段上的值取空值当然在表定义中说明了的字段在插入时不能取若NULLo NOTNULL NULLo插入语句中没有指出字段名,则新记录必须在每个字段上均有值.视图6视图是从一个或几个基本表(或视图)导出的表某一用户可以定义若干视图因此对某一用户而言,按ANSI/SPARC报告的观点,他的外模式是由若干基本表和若干视图组成的视图和基本表不同,视图是一个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)视图一经定义就可以和基本表一样被查询、被删除(DROP),也可以用来定义新的视图,但更新(增、册h改)操作将有一定限制视图可以理解成一个数据库,只有内涵保存在数据库字典中,而无外延存储;其外延是在使用时动态地生成的或计算出来的
(1)视图的定义与删除建立视图的语句格式为SQL视图名字段名字段名]…)]CREATE VIEWC3子查询AS[谓词];WITH CHECKOPTION视图可以删除,语句格式为视图名;DROP VIEW视图的定义就从数据字典中删除由此视图导出的其它视图也将自动被删除若导出此视图的基本表删除了,则此视图也将自动删除()视图的查询语句2视图定义后,用户可以如同基本表那样对视图查询
(3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指INSERT,UPDATE和DELETE三类操作)在关系数据库中,并非所有的视图都是可更新的,也就是说,有些视图的更新不能唯一地有意义地转换成对基本表的更新()视图的优点视图的概念具有很多优点,主要有4
(1)视图对于数据库的重构造提供了一定程度的逻辑独立性;
(2)简化了用户观点;
(3)视图机制使不同的用户能以不同的方式看待同一数据;
(4)视图机制对机密数据提供了自动的安全保护功能的数据控制功能
7.SQL数据控制功能是指控制用户对数据的存取权力某个用户对某类数据具有何种操作权力是由决定的这SQL DBA是个政策问题而不是技术问题数据库管理系统的功能是保证这些决定的执行为此它必须能()把授权的决定告知系统,这是由的和语句来完成的1SQL GRANTREVOKE
(2)把授权的结果存入数据字典
(3)当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之授权语句的一般格式为权力[,权力]…[对象类型对象名]TO用户[,用户]…,GRANT ON[]WITH GRANTOPTION;对不同类型的操作对象可有不同的操作权力
(1)对基本表、视图及其字段的操作权力有查询、插入、更新、册U除以及它们的总和ALLPRIVILEGE
(2)对基本表的操作权力还有修改(ALTER)和建立索引(INDEX)
(3)对数据库的操作权力有建立表(CREATETAB)某用户有了此权力就可以使用Create table建立基本表称他为表的主人,拥有对此表的一切操作权力
(4)对表空间的权力有使用(USE)数据库空间存储基本表的权力
(5)系统权力有建立新数据库(CREATEDBA)的权力GRANT语句中的任选项WITH GRANTOPTION的作用是使获得某种权力的用户可以把权力再授予别的用户.嵌入式8SQL把嵌入主语言使用时必须解决三个问题SQL()区分语句与主语言语句这是通过在所有的语句前加前缀来解决的语句结束1SQL SQLEXEC SQL SQL标志随主语言不同而不同,如用分号(;),用来表示语句首先由预编译程序加PL/1COBOL EMD-EXEC SQL以处理,转换为主语言编译程序能够识别的形式,然后交主语言编译程序进一步处理()数据库工作单元和程序工作单元之间的通信语句中可以使用主语言的程序变量(简称主变量),这些2SQL变量名前加冒号(:)作标志,以区别地字段名,程序中使用的任何表(基本表或视图)都要用EXEC SQLDECLARE语句力□以说明一则使程序更加清晰,二则使预编译程序能作某些语法检查语句执行后,系统要反馈给SQL应用程序若干信息,这些信息送到的通信区用语句加以定义在SQL SQLCAo SQLCA EXEC SQL INCLUDESQL中有一个状态指示字段当为零时,表示语句执行成功,否则返回一个错误代码CA SQLCODE SQLCODE SQL(负值)或警告信息(正值)程序员应该在每个语句之后测试的值,以便处理各种情况SQL SQLCODE()一个语句原则上可产生或处理一组记录,而主语言一次只能处理一个记录,为此必须协调两种处理方3SQL式这是用游标(Cursor)来解决的下面首先讨论不需要游标的DML语句,然后讨论使用游标的DML语句.不用游标的语句9DML不需要游标的语句有:查询结果为单记录的语句(除了形式的)语DML SELECTUPDATE CURRENT UPDATE句(除了形式的)语句语句DELETE CURRENTDELETE INSERT()查询结果为单记录的语句这类语句的一般格式是(主语言为)目标列1SELECT PL/1EXEC SQLSELECT INTO主变量[空值标志]基本表(或视图)[条件表达式];语句从数据库中找到符合条件的FROM WHERESELECT记录,把结果放到主变量中()语句2UPDATE()语句3DELETE()语句4INSERT.使用游标的语句10DML一般情况下语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作SELECT转换为单记录处理与游标有关的语句有四个
(1)定义游标游标是与某一查询结果相联系的符号名用DECLARE语句定义这是一个说明语句与游标相对应的语句这时并不执行SELECT
(2)打开(OPEN)游标打开游标语句使游标处于活动状态与游标相应的查询语句被执行游标指向查询结果集中的第一个记录之前
(3)推进(FETCH)游标把游标向前推进一个记录,并把游标指向的当前记录中的字段值取出,放到INTO子句后相应的主变量中语句常常用于循环,以借助主语言功能逐一处理结果集中的数据FETCH
(4)关闭(CLOSE)游标关闭游标,使它不再和原来的查询结果相联系关闭了的游标可以再次被打开,与新的查询结果集相联系使用形式的和删除语句应注意CURRENTUPDATE()若游标定义中的语句带有或子句,或者这个语句相当于定义了一个1SELECT UNIONORDER BYSELECT不可更新的视图,则不能用这两个更新语句
(2)若使用CURRENT形式的UPDATE语句,则游标定义中要包括FOR UPDATE子句,指出更新的字段(SET子句中使用的字段)因此,游标定义语句的一般格式为:游标名子查询EXECSQLDECLARE CURSOR FOR UNION子查询...[FOR UPDATEOF字段名[,字段名].・.|ORDER-BY-子句];的事务处理功能1LSQL
(1)事务处理的概述所谓事务(Transaction)是指一系列动作的组合,这些动作被当作一个整体来处理这些动作或者相继都被执行,或者什么也不做在数据库中,一个动作是指一个语句事务是一组语句组成的SQL SQL一个逻辑单位要么这些语句全部被按顺序正确执行,要么在某语句执行失败时,按照用户要求,取消SQL SQL已执行的语句对数据库中数据的修改或者要么事务中语句都被正确执行,完成该事务对数据库中数据SQLSQL的所有操作;或者要么相当于一条语句也未执行,数据库数据未做任何改动SQL
(2)SQL语言的事务处理语句SQL语言有3条语句用于事务处理,它们是()语句,对于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化同时还释放事1Commit务和封锁,标志该事务结束()语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点2Savepoint()语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,3rollback要么取消至某个指定回滚点后对数据库的全部修改释放自保留点之后的全部表或行的封锁(没有保留点,相当于回滚到事务开始处,终止该事务)事务的恢复(回滚)是根据事务执行前保存下的当时数据库状态来实现的一遇到语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中已执行了的语句
四、数据rollback SQL库的存储结构数据库的存储结构不同于一般文件系统的存储结构数据库数据的特点是各种记录型之间彼此有联系,数据是结构化的数据的存储结构不仅涉及每种记录型的记录如何存储,而且要使数据的存储反映各种记录型之间的联系在多级模式中引入内模式(存储模式)的主要目的是使模式的数据结构的描述同它的存储表示的描述分开,DB以致为了协调数据库性能而对数据库数据的存储方法进行修改时,可不必修改模式,以提高数据库的物理独DBA立性在各个数据库管理系统中,对内模式的定义功能各不相同在关系数据库管理系统中有些语句可影响DDL数据库的存储结构在中各级模式的存储结构是恒定的或唯一的,而数据库内容(或其记录)的存储方式DBMS是不唯一的数据库存储结构设计的好坏直接影响系统的性能在存储结构中主要是涉及存储记录的设计存储记录与概念记录之间具有对应关系,如果存储记录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论概念记录是指在逻辑结构中的记录但当一个概念记录对应多个不同类型的存储记录时,存在如何设计存储记录的问题对于这样的概念记录,其存储记录可以有以下几种设计.顺序组织1将存储记录设计成与概念记录一一对应,按大小(或按记录到来)的顺序将记录组成一个顺序组织的文件SNO这样组织的优点是结构简单,缺点是会浪费存储空间.顺序带链的组织2顺序带链组织允许记录中带有指针(Pointer),这样可以大大节省存储空间.带次关键字索引的顺序组织3为了适应对多项内容的检索,可以建立索引文件,上述组织可改为带次关键字索引的顺序组织.多表组织4在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数目是可变的这种可变性给管理带来困难,为了解决这个困难,引入了多表组织多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等.完全倒排组织在一个记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织5定址组织对于每一个存储记录值存放在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算
6.Hash得出这种组织为定址组织杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、折叠法、位移Hash法及各位数字分析法等等关键是如何选择一个杂凑函数,尽可能避免发生碰撞对于不同的主关键字值通过计算而得到同一个地址的映象,称之为碰撞.联系的存储7在关系数据库中,通过外来关键字(Foreign Key)来表示概念记录之间的联系例如,为了表达学生和学校的联系,可以在学生记录中增加外来关键字“学校号”来表示联系
五、关系数据库.表格1表格(或简称表)表示了用户的特定类型(Type)的一些实体表头由一些属性名(AttributeName)组成,每个属性名对应于一列在表上属性名必须唯一,不允许重名表体是由一些行或元组(tuple)、或记录(record)组成一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域(field)用以存储属性值(Attribute value)一个元组对应于一个“用户”实体的出现()表体中每一行和某一列的交叉点(相当于记录中的域)o occurrenceo上保存一个属性值这个属性值叫做这一行(或这个实体出现)的相应属性值表体中每一列可以保存的值对应于某种属性类型(TypeofAttribute),也就是说,这一列的属性值只能取这个属性类型的值某个属性所能取的所有值的集合叫做这个属性的值域(DomainofAttribute)o类型和值域的对应关系是一对多的一个类型有一个值域,但一个值域可以作为多个类型,基名称不同,但实质上值域一样实际上,类型是对值域的命名能唯一标识一个元组的属性称之为关键属性(PrimaryKeyAttribute)或简称为主关键字(PrimaryKey)主关键字有时是由o多个属性组成的,此时的主关键字叫做组合关键字(CoiTcatenatedprimaryKey)有的时候,表中必须由一些组合的主关键字才能唯一地标识一个元组,也就是说,不存在能作关键字的一个属性这时为了方便,往往引入一个附加的属性并称之为外来关键字(ForeighKey)来作主关键字外来关键字为以后检索和查询带来了方便,但也增加了信息冗余.表名、表头和表体2表名、表头和表体在关系模型中具有不同的作用或功能,因而也具有完全不同的性质表头是一个属性的集合,它规定了表的结构表体是一个特殊的集体,称作为关系(relation)“关系模型”中的“关系”一词就是指表体中的这个数学关系在关系数据库中,表名对应于数据库名(或关系名),表头对应于数据描述(或结构描述),表体对应于数据库表体是数据库的内容及数据库操作的对象另外,有两个概念必须加以强调:型()和值或type出现()表头定义了实体(或元组)的型,也就是说规定了实体(或元组)的值域而表体则给出了实occurence o体(或元组)的出现出现是型中的一个值.关系的数学定义3关系模型是建立在集合论()的基础之上的现在,开始用集合论的术语来严格地定义数学上的关系,Set Theory即给出关系的数学定义定义1域(Domain)是值(value)的集合.关系模型4关系模型由三部分组成:数据结构(即关系)、关系操作、关系的完整性下面将对这三个部分进行分别的讨论
(1)单一的数据结构--------关系在关系模型中,无论是实体还是实体之间的联系均由单一的类型结构一关系来表示在前面,已给出了关系和域的数学定义,介绍了元关系、元组和属性等概念下面介绍关键字、关系n模式和关系数据库等一些基本概念关键字关系中的某一组属性,若其值可以唯一地标识一个元组,则称该属性组为一个候选关键字(Candidate Key)若一个关系有多个候选关键字,则可以任选其中一个作为主关键字(Primary)主关键字中的诸属性被称为主属性关系模式关系的描述称为关系模式它包括:关系名、组成关系的诸Key属性名、属性到域的映象、属性间的数据依赖关系等等所以,关系模式由关系名、诸属性名和属性到域的映象三个部分组成,关系模式通常简记为R(A1,A2,…,An),其中R是关系名,A1,A2,…,An为诸属性名属性到域的映象一般通过指定属性的类型和长度来说明某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合关系的外延内容有时简称为关系但关系模式和关系的内容有时也统称为关系读者可以从上下文中区别其确切的含义形象地说,关系模式是关于表名和表头的描述,而关系的内容是表体关系数据库在关系数据库中,要分清型和值两个基本概念关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义,以及这些属性上的若干关系关系模式亦称为数据库的内涵数据库的值亦称为数据库的外延在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围而Intension,外延却是随时间变化的这和在一般的形式逻辑中外延和内涵一一对应有所区别此处外延是指任意一个满足内涵的集合,而不一定恒指满足内涵的最大的一个集合关系模式即内涵是稳定的;而关系的内容,即外延,却是随时间动态的变化而变化的数据库的结构即模式是稳定的;而数据库中的数据内容却在不断地更新关系操作关系模型规定了关系操作的功能和特点,但不对语言的语法做出具体的规定关系数据库语2DBMS言的主要特点或优点是其高度的非过程化或者说明性关系数据库语言的语句是透Non-procedureae declarativeo明的用户只须知道语句做什么,而不须知道怎么做的在其早期的文章中,引入了种基本的操作:并Codd8Union交差笛卡尔乘积限制投影连接除这Intersection DifferenceCartesian ProductRestrictions ProjectionJoin Division些操作都是对关系的内容或表体实施操作的,得到的结果仍为关系注意,这些操作只是基本的操作,而不是不再可分的原始操作,例如,和可以由其它五种操作合成但是,把它们三个也作Primitive Join,Intersection Division为基本操作使用起来很方便另外,并没说上述种操作就是关系数据库只能有的种操作实际上,上述Codd88种操作仅仅是作为最小的操作的基础部分,并且也还未考虑到的需求支持的操作多于上述8DML DDLSQL8种操作,而且还支持操作关系操作的特点是集合操作,即操作的对象和结果都是集合这种操DML SQLDDL作方式也称为一次一集合方式而非关系模型的数据库的操作方式则为一次一记录方式关系操作可以用两set-at-a-time record-at-a-time种方式来表示
①代数方式,即关系代数
②逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算已经证明,这些表示方式在功能上是相互等价的一般选其一即可关系模型的三类完整性关系模型的三类完整性是3
①实体完整性Entity Integrity
②参照完整性Referential Integrity
③用户定义的完整性其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约User DefinedIntegrity束条件,应该由关系数据库自动支持而用户定义的完整性的支持是由提供完整性定义设施或机DBMSDBMS制,可以随商品软件不同而有所变化实体完整性是指:若属性是基本关系的主关键字的属性即主DBMS AR属性,则属性不能取空值在关系数据库中有各种关系,如基本关系常称为基本表、查询表、视图A NULL表等等基本表是指实际存在的表,它是实际存储数据的逻辑表示查询表是指和查询结果相对应的表而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据实体完整性是针对基本关系的空值是指“不知道”或者“无意义的”或“不属于定义域”值空值以表示对于实体完整性作如下说明“NULL”一个基本关系通常对应于现实世界中的一个实体集例如学生关系对应于学生实体集基本关系不是由其它1关系生成的关系基本关系是本原是定义复杂关系的出发点Primitive,现实世界中的实体是可区分的,即实体具有某种唯一性的标识2在关系模型中由主关键字作为满足唯一性的标识3主关键字中属性不能取空值因为若主关键字中某属性取空值,则意味着某个实体不可标识;而这和相矛盾42参照完整性是指:若基本关系中含有另一个基本关系的主关键字所对应的属性组称为的外部关键字RSK SF FR则在关系中的每个元组中的上的值必须满足external keys,RF
①或者取空值即中的每个属性的值均为空值;F
②或等于中某个元组的主关键字的值基本关系和不一定是不同的关系外部关键字也称为外来关键字S RS例如,某数据库中有职工关系职工号,姓名,部门号和部门关系部门号,部门名称为两个基本关EMP DEPT系关系的主关键字为“职工号”,的主关键字为“部门号”在中,部门号”是的外部关EMP DEPTEMP EMP键字故此,在中的每个元组中“部门号”的值只有两种可能性EMP
①取空值这说明这个职工尚未分到某个部门;
②或取非空值这时“部门号”的值必须是中某个元组中的“部门号”的值这说明一个职工不可能被分配DEPT。