还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
全国计算机四级数据库考试复习数据模型
1.数据模型的三要素
(1)数据构造数据构造是所研究的对象类型(Object Type)的集合这些对象和对象类型是数据库的构成成分一般可分为两类:一类是与数据类型、内容和其他性质有关的对象;一类是与数据之间的联络有关的对象前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等后者如网状模型中的关系模型(set type)o在数据库领域中,一般按照数据构造的类型来命名数据模型,进而对数据库管理系统进行分类如层次构造、网状构造和关系构造的数据模型分别称作为层次模型、网状模型和关系模型对应地,数据库分别称作为层次数据库、网状数据库和关系数据库
(2)数据操作数据操作是指对多种对象类型的实例(或值)所容许执行的操作的集合,包括操作及有关的操作规则在数据库中,重要的操作有检索和更新(包括插入、删除、修改)两大类数据模型定义了这些操作的定义、语法(虽然用这些操作时所用的语言)数据构造是对系统静态特性的描述,而数据操作是对系统动态特性的描述两者既有联络,又有区别
(3)数据的约束条件数据的约束条件是完整性规则的集合完整性规则是指在给定的数据模型中,数据及其联络所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,保证数据的对的性、有效性和一致性
2.概念模型数据模型是数据库系统的关键和基础每个DBMS软件都是基于某种数据模型的为了把现实世界中的详细事物或事物之间的联络表到达DBMS所支持的数据模型,人们首先必须将现实世界的事物及其之间的联络进行抽象,转换为信息世界的概念模型;然后将信息世界的概念模型转换为机器世界的数据模型也就是说,首先把现实世界中的客观对象抽象成一种信息构造这种信息构造并不依赖于详细的计算机系统和DBMS然后,再把概念模型转换为某一计算机系统上某一DBMS所支持的数据模型因此,概念模型是从现实世界到机器世界的一种中间层次现实世界的事物反应到人的大脑之中,然后人们开始认识这些事物,通过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到信息世界•顾客(user)关怀的是现实世界中的事物、事物的属性及其互相关系例如,顾客也许关怀他的顾客及其属性,如顾客地址、银行帐号等等顾客也关怀自己的定货帐目,如谁订的货、订的什么和订多少等等•系统分析员(analyst)同样也关怀现实世界,不过系统分析员需要分析顾客的信息需求作为需求分析的成果,分析员必须以文档的形式对需求进行构造化的描述;这个文档就是信息模型•实体(Entity)实体是构成数据库的基本元素实体是指一种存在的东西以区别这个东西所具有的属性和这个东西与其他东西的联络实体可以是人,也可以是物;可以是实际对象,也可以是概念;可以是事物自身,也可以是指事物之间的联络•属性(Attribute)一种实体可以由若干个属性来刻画属性是相对实体而言的,是实体所具有的特性•关键字(Key)能唯一地标识实体的属性的集合称为关键字(或码)•域(Domain)属性的取值范围称作域•实体型(Entity Type)一类实体所具有的共同特性或属性的集合称为实体型一般用实体名及其属性来抽象地刻画一类实体的实体型•实体集(Entity Set)同型实体的集合叫实体集例如,学生就是一种实体集实体集的名即是实体型对于学生和(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系,年级)所起的名称,两者是指同一客观对象但本科生和硕士可认为相似实体型,而实体集不一样•联络(Relationship)现实世界的事物之间是有联络的一般存在两类联络:一是实体内部的构成实体的属性之间的联络,二是实体之间的联络在考虑实体内部的联络时,是把属性看作为实体一般来说,两个实体之间的联络可分为三种
(1)一对一
(11)联络若对于实体集A中的每一种实体,实体集B中至多有唯一的一种实体与之联络,反之亦然,则称实体集A与实体集B具有一对一联络,记作11
(2)一对多(l n)联络若对于实体集A中的每个实体,实体集B中有n个实体(n20)与之联络;反之,对于实体集B中的每一种实体,实体集A中至多只有一种实体与之联络,则称实体集A与实体集B有一对多联络,记为1n对应地有多对一(n1)联络多对一联络,从本质上说,是一对多联络的逆转其定义同一对多联络类似,不再赘述
(3)多对多(mn)联络若对于实体集A中的每一种实体,实体集B中有n个实体(n^O)与之联络;反之,对于实体集B中的每一种实体,实体集A中也有m个实体(m20)与之对应,则称实体集A与实体集B具有多对多联络,记作m n实质上,多对多联络是任意一种联络此外,同一实体集内的各个实体间也可以有多种刻,终端设备号这样顾客只能在某台终端、某段时间内存取有关数据,这就是与时间和地点有关的存取权限止匕外,在操作系统中对文献、目的等的存取尚有某些安全保护措施其中加密是一种防止数据内容被他人引用或理解的切实可行的措施加密有程序加密和硬件加密卡两种形式
2.完整性数据库的完整性是指数据的对的性和相容性DBMS必须提供一种功能来保证数据库中数据的完整性这种功能亦称为完整性检查,即系统用一定的机制来检查数据库中的数据与否满足规定的条件这种条件在数据库中称为完整性约束条件数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分寄存数据字典中数据的完整性和安全性是两个不一样的概念前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage InGarbage Out)所导致的无效操作和错误成果而后者是保护数据库防止恶意的破坏和非法的存取当然,完整性和安全性是亲密有关的尤其从系统实现的措施来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证完整性约束条件可以分类如下
(1)值的约束和构造的约束前者指对数据的值的限制,后者指对数据之间联络的限制有关对数据值的约束此类约束条件是指对数据取值类型、范围、精度等的规定有关数据之间联络的约束数据库中同一关系的不一样属性之间可以有一定的联络,从而也应满足一定的约束条件同步,由于数据库中数据是构造化的,不一样的关系之间也可以有联络,因而不一样关系的属性之间也可满足一定的约束条件
(2)静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件以上所讲的约束都属静态约束动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件
(3)立即执行约束和延迟执行约束立即执行约束是指在执行顾客事务时,对事务中某一更新语句执行完后立即对此数据所应满足的约束条件进行完整性检查延迟执行是指在整个事务执行结束后方对此约束条件进行完整性检查,成果对的方能提交完整性的实现应包括两个方面,一是系统要提供定义完整性约束条件的功能,二是提供检查完整性约束条件的措施对于数据值的那类完整性约束条件一般在模式中定义例如在模式中定义属性名、类型、长度、码属性名并标明其值是唯一的、非空的等等此外的那些约束条件就要用专门的方式加以定义
3.并发控制数据库是一种共享资源,可以由多种顾客使用这些顾客程序可以一种一种地串行执行,也可以并行执行在单CPU计算机上,为了充足运用数据库资源,应当容许多种顾客程序并行的存取数据这样就会产生多种顾客程度并发地存取同一数据的状况若对并发操作不加控制就会存取和存储不对的的数据,破坏数据库的完整性(这里也称为一致性)在多CPU计算机或多计算机网络环境下,并发控制尤为重要
(1)事务的概念事务(Transaction)是并发控制的基本单位所谓事务是一种操作序列这些操作作为一种序列形成一种整体要么都做,要么都不做,是一种不可分割的工作单位事务一般以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK操作结束COMMIT即提交,提交事务中所有的操作,事务正常结束ROLLBACK即撤销已作的所有操作,滚回到事务开始时的状态这里的操作指对数据库的更新操作滚回即相称于所有操作均未执行事务和程序是两个概念一般地讲,一种程序可包括多种事务,由于事务是并发控制的基本单位,所如下面的讨论均以事务为对象
(2)数据一致性级别的概念所谓并发控制就是要用对的的方式调度并发操作,防止导致数据的不一致性,使一种顾客事务的执行不受其他事务的干扰封锁(Locking)就是事务T可以向系统发出祈求,对某个数据对象(最常用的是记录)加锁于是事务T对这个数据对象就有一定的控制例如,其他事务不能更新此数据直到T释放(unlock)它的锁为止确切的控制由封锁的类型决定基本的封锁类型有两种排它锁(Exclu sivelocks简记为X锁)和共享锁(Share locks简记为S锁)若事务T对数据R加上X锁,则只容许T读取和修改R;其他一切事务对R的任何(包括封锁)祈求都不成功,直至T释放R上的X锁为止这就保证了其他事务不能再读取和修改R,直到T释放X锁若事务T对数据R加上S锁,则其他事务对R的X锁祈求不能成功,而对R的共享祈求可以得到这就保证了其他事务以读取R但不能修改R,直至T释放S锁为止
5.可串行性定义当且仅当某组事务的一定交叉调度产生的成果和这些事务的某一串行调度的成果相似,则这个交叉调度是可串行化的可串行性(Serializability)是并行事务对的性的准则这个准则规定,一给定的交叉调度,当且仅当它是可串行化的,才认为是对的的
6.两段锁协议两段锁协议规定所有的事务应遵守下列规则
(1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,并且
(2)在释放一种封锁之后,事务不再获得任何其他锁所谓“两段”锁的含义是:事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段第二阶段是释放封锁,也称为收缩阶段定理若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的(证明略)为了保证事务并行执行的对的性,许多系统采用两段锁协议同步系统设有死锁检测机制,发现死锁后按一定的算法解除死锁7恢复.尽管系统中采用了多种保护措施来保证数据库的安全性和完整性不被破坏,保证并行事务的对的执行,不过计算机系统中硬件的故障、软件的错误、操作员的失误以及故意的破坏仍是不可防止的这些故障轻则导致运行事务非正常地中断,影响数据库中数据的对的性,重则破坏数据库,使数据库中所有或部分数据丢失因此数据库管理系统必须具有把数扰库从错误状态恢复到某一已知的对的状态(亦称为完整状态或一致状态)的功能,这就是数据库的恢复恢复子系统是数据库管理系统的一种重要构成部分,并且还相称庞大,常常占整个系统代码的10%以上(如IMS,DB2)o故障恢复与否考虑周到和行之有效,是数据库系统性能的一种重要指标大型的数据库应用对故障恢复的规定愈加强烈有时甚至采用双工制
(1)故障的种类数据库系统中也许发生多种各样的故障,大体可以分如下几类:
①事务内部的故障;
②系统范围内的故障;
③介质故障;
④计算机病毒
(2)转储和恢复转储是数据库恢复中常常采用的基本技术所谓转储即DBA定期地将整个数据库复制到磁带或另一种磁盘上保留起来的过程这些备用的数据文本为后备副本或后援副本当数据库遭到破坏后就可以运用后备副本把数据库恢复这时,数据库只能恢复到转储时的状态,从那后来的所有更新事务必须重新运行才能恢复到现时的正常状态转储是十分花费时间和资源的,不能频繁进行DBA应当根据数据库使用状况确定一种合适的转储周期转储可分为静态转储和动态转储静态转储是指转储期间不容许(或不存在)对数据库进行任何存取、修改活动动态转储是指转储期间容许对数据库进行存取或修改即转储和顾客事务可以并发执行静态转储简朴,但转储必须等待顾客事务结束才能进行同样,新的事务必须等待转储结束才能执行显然,这会减少数据库的可用性动态转储可克服静态转储的缺陷不过,转储结束时后援副本上的数据并不能保证对的有效例如,在转储期间的某时刻t1系统把数据A=100转储到了磁带上,而在时刻t2,某一事务对A进行了修改使A=200转储结束,后援副本上的A已是过时的数据了为此,必须把转储期间事务对数据库的修改活动登记下来,建立日志文献(log file)o这样,后援副本加上日志文献就能把数据库恢复到某一时刻的对的状态转储还可以分为海量转储和增量转储海量转储是指每次转储所有数据库增量转储则指每次只转储上次转储后更新过的数据假如数据库很大,事务处理又十分频繁,则增量转储方式是很有效的
(3)日志文献日志文献是用来记录对数据库每一次更新活动的文献在动态转储方式中必须建立日志文献,后援副本和日志文献综合起来才能有效地恢复数据库在静态转储方式中,也可以建立日志文献当数据库毁坏后可重新装放后援副本把数据库恢复到转储结束时刻的对的状态,然后运用日志文献,把已完毕的事务进行重做处理,对故障发生时尚未完毕的事务进行撤销处理这样不必重新运行那些在转储前已完毕的事务程序就可把数据库恢复到故障前某一时刻的对的状态
八、数据库应用系统的设计L数据库应用系统的设计环节按规范设计的措施可将数据库设计分为如下六个阶段
(1)需求分析;
(2)概念构造设计;
(3)逻辑构造设计;
(4)数据库物理设计;
(5)数据库实行;
(6)数据库运行和维护
8.需求分析需求搜集和分析是数据库应用系统设计的第一阶段明确地把它作为数据库应用系统设计的第一步是十分重要的这一阶段搜集到的基础数据和一组数据流图(Data FlowDia-gram-----------------DFD)是下一步设计概念构造的基础概念构造对整个数据库设计具有深刻影响而要设计好概念构造,就必须在需求分析阶段用系统的观点来考虑问题、搜集和分析数据及其处理怎样分析和体现顾客需求呢在众多的分析措施中,构造化分析(Structured Analysis,简称SA措施)是一种简朴实用的措施SA措施用自顶向下、逐层分解的方式分析系统用数据流图,数据字典描述系统然后把一种处理功能的详细内容分解为若干子功能,每个子功能继续分解,直到把系统的工作过程体现清晰为止在处理功能逐渐分解的同步,它们所用的数据也逐层分解形成若干层次的数据流图数据流图体现了数据和处理过程的关系处理过程的处理逻辑常常用鉴定表或鉴定树来描述数据字典(DataDictionary,简称DD)则是对系统中数据的详尽描述,是各类数据属性的清单对数据库应用系统设计来讲,数据字典是进行详细的数据搜集和数据分析所获得的重要成果数据字典是各类数据描述的集合,它一般包括如下5个部分
(1)数据项,是数据最小单位
(2)数据构造,是若干数据项故意义的集合
(3)数据流,可以是数据项,也可以是数据构造表达某一处理过程的输入输出
(4)数据存储,处理过程中存取的数据常常是手工凭证、手工文档或计算机文献
(5)处理过程
9.概念构造设计如同软件工程中重视需求分析与规范阐明的思想同样,数据库设计中同样十分重视数据分析、抽象与概念构造的设计概念构造的设计,是整个数据库设计的关键之一概念构造独立于数据库逻辑构造,独立于支持数据库的DBMS,也独立于详细计算机软件和硬件系统归纳总结,其重要特点是1能充足地反应现实世界,包括实体和实体之间的联络,能满足顾客对数据处理的规定,是现实世界的一种真实的模型,或靠近真实的模型2易于理解,从而可以和不熟悉计算机的顾客互换意见顾客的积极参与是数据库应用系统设计成功与否的关键3易于更动当现实世界变化时轻易修改和扩充,尤其是软件、硬件环境变化时更应如此4易于向关系、网状或层次等多种数据模型转换概念构造是多种数据模型的共同基础,它比任意一种数据模型更独立于机器,更抽象,从而愈加稳定描述概念构造的有力工具是E-R模型P.P.S.Chen把用E-R模型定义的概念构造称为组织模式设计概念构造的方略有3种1自顶向下首先定义全局概念构造的框架,然后逐渐细化2自底向上首先定义各局部应用的概念构造,然后将它们集成,得到全局概念构造3混合方略自顶向下和自底向上相结合的措施用自顶向下方略设计一种全局概念构造的框架,以它为骨架集成由自底向上方略中设计的各局部概念构造现简介自底向上设计概念构造的方略按照这种方略,概念构造的设计可按下面环节进行1数据抽象与局部视图设计E-R模型是对现实世界的一种抽象一般地讲,所谓抽象是对实际的人、物、事和概念的人为处理它抽取人们关怀的共同特性,忽视非本质的细节,并把这些特性用多种抽象的概念精确地加以描述这些概念构成了现实世界的一种模型表达有3种抽象措施形成了抽象机制,来对数据进行组织:
①分类Classification定义某一概念作为现实世界中一组对象的类型这些对象具有某些共同的特性和行为它抽象了对象值和型之间的“is amember of”的语义在E-R模型中,实体型就是这种抽象
②汇集Aggregation定义某一类型的构成成分它抽象了对象内部属性类型和整体与部分之间“is apart of”的语义在E-R模型中若干属性的汇集构成了实体型,就是这种抽象
③概括Generalization定义类型之间的一种子集联络它抽象了类型之间的“is asubset of的语义概括具有一种很重要的性质继承性子类继承超类上定义的所有抽象性质当然,子类可以增长自己的某些特殊属性概念构造设计的第一步就是运用上面简介的抽象机制对需求分析阶段搜集到的数据进行组织,形成实体、实体的属性,标识实体的码,确定实体之间的联络类型11,1n,n口,设计成部分E-R图2视图的集成视图集成就是把上一步得到的各个部分E-R图综合成一种总体的E-R图视图集成可以有两种方式
①多种部分E-R图一次集成
②逐渐集成用累加的方式一次集成两个部分E-R图无论哪种方式,每次集成可分两步走第一步是合并,处理各部分E-R图之间的冲突问题,生成初步E-R图第二步是修改和重构,消除不必要的冗余,生成基本E-R图10逻辑构造设计逻辑构造设计的任务就是把概念构造转换为选用的DBMS所支持的数据模型的过程设计逻辑构造按理应选择对某个概念构造最佳的数据模型,然后对支持这种数据模型的多种DBMS进行比较,选出最合适的DBMS但实际状况常常是已给定了某台机器,设计人员没有选择DEMS的余地现行的DBMS一般只支持关系、网状或层次三种模型中的某一种,对某一种数据模型,各个机器系统又有许多不一样的限制,提供不一样的环境与工具因而我们把设计过程分三步进行首先把概念构造向一般的关系模型转换,然后向特定的DBMS支持下的数据模型转换,最终进行模型的优化1E-R图向关系数据模型的转换下面给出把E-R图转换为关系模型的转换规则
①一种实体转换为一种关系模式实体的属性就是关系的属性,实体的码就是关系的码
②一种联络转换为一种关系模式,与该联络相连的各实体的码以及联络的属性转换为关系的属性该关系的码则有三种状况:若联络为11,则每个实体的码均是该关系的候选码若联络为l n,关系的码为n端实体的码若联络为n m,则关系的码为诸实体码的组合具有相似码的关系模式可合并形成了一般的数据模型后,下一步就向特定的DBMS规定的模型转换设计人员必须熟知所用DBMS的功能及限制这一步转换是依赖于机器的,不能给出一种普遍的规则转化后的模型必须进行优化对数据模型进行优化是指调整数据模型的构造,以提高数据库应用系统的性能性能有动态性能和静态性能两种静态性能分析轻易实现根据应用规定,选出合适的模型是一项复杂的工作2规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,详细地讲可应用在下面几种详细的方面第一,在数据分析阶段用数据依赖的概念分析和表达各数据项之间的关系第二,在设计概念构造阶段,用规范化理论为工具消除初步E-R图中冗余的联络第三,由E-R图向数据模型转换过程中用模式分解的概念和算法指导设计目前,不管选用的DBMS是支持哪种数据模型的,均先把概念构造向关系模型转换然后,充足运用规范化理论的成果优化关系数据库模式的设计11数据库的物理设计物理设计的内容重要包括
(1)确定数据的存储构造从DBMS所提供的存储构造中选用一种合适的加以实现确定存储构造的重要原因是存取时间、存储空间运用率和维护代价三个方面设计者常常要对这些原因进行权衡一般的DBMS也总是具有一定灵活性供你选择例如,若引入某些冗余数据,则也许减少物理I/O次数提高检索效率相反节省存储空间检索代价就会增长当然应当尽量寻找优化措施,使这三方面的性能都很好折衷有时是必须的
(2)存取途径的选择和调整数据库必须支持多种顾客的多种应用,因而必须提供对数据库的多种存取入口,也就是对同一数据存储要提供多条存取途径物理设计的任务应确定建立哪些存取途径设计者应当进行定量的分析,根据计算成果确定存取途径
(3)确定数据寄存位置首先按数据的应用状况划分为不一样的组,然后确定寄存位置一般的应把数据的易变部分和稳定部分分开,把常常存取和不常存取的数据分开常常存取或存取时间规定高的记录应寄存在高速存储器上,如硬盘存取频率小或存取时间规定低的放在低速存储器上,如软盘磁带对于同一数据文献也可根据状况进行水平划分或垂直划分
(4)确定存储分派许多DBMS提供了存储分派的参数供设计者物理优化处理用例如溢出空间的大小和分布参数,块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,它们都要在物理设计中确定这些参数的大小影响存取时间和存储空间的分派物理设计过程需要对时间、空间效率、维护代价和多种顾客规定进行权衡,其成果可以产生多种方案在实行数据库前对这些方案进行方案进行细致的评价,以选择一种较优的方案是十分必要的12数据库应用系统的实行和维护对数据库的物理设计初步评价完毕后就可建立数据库了数据库应用系统实行对应于软件工程的编码、调试阶段设计人员运用DBMS提供的数据定义语言将逻辑设计和物理设计的成果严格地描述出来,成为DBMS可接受的源代码通过调试产生目的模式然后组织数据入库组织数据入库是数据库应用系统实行阶段最重要的工作
(1)数据库数据的载入和应用程序的开发由于数据库数据量一般都非常大,并且这些数据来源于一种组织的各个部门,分散在多种数据文献或原始凭证中这些数据的构造和格式一般也不符合数据库的规定,还要进行转换因此组织数据入库是一件花费大量人力物力的工作数据的转换和组织对于小系统可以用人工措施完毕不过,人工转换效率低、质量差一般来说,应设计一种数据输入子系统让计算机完毕这个工作输入子系统的重要功能是:原始数据的输入、抽取、校验、分类、转换和综合,最终把数据组织成符合数据库构造的形式然后把数据存入数据库中数据的转换、分类和综合常常要通过多次才能完毕,因而输入子系统的设计和实行亦是比较复杂的,要编写许多应用程序输入子系统的设计不能等物理设计完毕后才动手,应当和数据库设计工作并行开展为了保证数据库数据对的无误,必须高度重视数据的检查工作在输入子系统进行数据转换的过程中应当进行多次检查,每次检查的措施亦不要相似对于重要数据的校验更应当反复多次,确认对的后方可入库数据库应用系统中应用程序的设计应当和数据库模式设计并行数据库应用系统的实行阶段的另一项工作便这是这些应用程序的编码、调试工作有了装载实际数据的数据库和应用程序,就建立了数据库应用系统,可以试运行了
(2)数据库应用系统的试运行在完毕上述工作之后,便可进入数据库的试运行阶段,或者称联合调试阶段这阶段的重要工作是
①实际运行应用程序,执行对数据库的多种操作,测试应用程序的功能
②测量系统的性能指标,分析与否符合设计目的虽然已在物理设计过程中进行了性能预测,不过仅仅估价了时间和空间指标,并且在性能估价的过程中作了许多简化和假设,忽视了许多次要原因,因而估价是粗糙的并也许失真必须在试运行阶段进行实际测量和评价有些参数的最佳值往往是通过运行调试后才找到的假如实际成果不符合设计目的,则需返回物理设计阶段,调整物理构造,修改参数有时,也许还需要返回逻辑设计阶段,调整逻辑构造最终还须指出两点第一,上面已看到组织数据入库是十分费事的,假如运行调试后又要修改数据库设计则又要重新组织数据入库因此应分批分期输入数据,逐渐完毕运行评价第二,数据库的实行和调试不是一朝一夕能完毕的,在此期间软硬件的错误随时也许发生加上数据库刚刚建立,工作人员对系统还不熟悉,对其规律更缺乏深入理解,轻易发生操作错误因此必须做好数据库的转储和恢复工作,这就规定设计人员理解DBMS的这个功能,并根据调试方式和特点首先实行,尽量减少对数据库的破坏并简化故障恢复
(3)数据库应用系统的运行和维护数据库应用系统投入运行标志着开发任务的基本完毕和维护工作的开始,但并不意味着设计过程结束任何数据库应用系统只要它存在一天,它的设计就得不停地进行评价、调整、修改,甚至完全改革因此数据库应用系统的维护不仅是维护其正常活动并且是设计工作的继续和提高维护阶段的重要工作是
①数据库的安全性、完整性控制及系统的转储和恢复;
②性能的监督、分析和改善;
③数据库的重组织和重构造下面简朴简介数据库的重组织和重构造数据库运行一段时间后,由于记录的不停增、册h改,会使数据库的物理存储变坏例如,逻辑上属于同一记录型或同一关系的数据被分散到了不一样的文献或文献的多种碎片上从而减少了数据库存储空间的运用率和数据的存取效率,数据库的性能下降这时,DBA就要进行数据库的重组织,DBMS一般都提供重组织用的实用程序在重组过程中,按原设计规定重新安排记录的存储位置,调整数据区和溢出区,回收“垃圾”,减少指针链等数据库的重组织不变化原设计的数据逻辑构造和物理构造而数据库的重构造则不一样部分修改原数据库的模式或内模式称为数据库的重构造由于数据库应用环境的变化,数据库重构的程度是有限的只能作部分的修改和调整若应用变化太大,重构也无济于事了,则表明数据库应用系统生命周期的结束,应当重新设计数据库应用系统新的数据库应用系统新的生命周期开始了
九、数据库管理系统的设计与实现L DBMS的目的
(1)顾客界面友好对一种实用DBMS来说,顾客界面的质量直接影响其生命力DBMS的顾客接口应面向应用,采用适合最终顾客的交互式、表格式、菜单式、窗口式等界面形式,以以便使用和保持灵活性一般地说,顾客界面应具有可靠性、简朴性、灵活性和立即反馈等特性
(2)功能完备DBMS功能随系统的规模的大小而异大型DBMS功能齐全,小型DBMS功能弱某些DBMS重要功能包括数据定义、数据库数据存取、事务控制、数据库组织和存储管理、数据库安全保护等等我们在下面讨论这些功能的内容
(3)效率高系统效率包括三个方面:一是计算机系统内部资源的使用效率能充足运用资源(包括存储空间、设备、CPU等),并注意使多种资源负载均衡以提高整个系统的效率,二是DBMS自身的运行效率三是顾客的生产率这是指顾客学习、使用DBMS和在DBMS基础上开发的应用系统的效率
2.DBMS的基本功能
(1)数据库定义对数据库的构造进行描述,包括外模式、模式、内模式的定义;数据库完整性的定义;安全保密定义(如顾客口令、级别、存取权限);存取途径(如索引)的定义这些定义存储在数据字典(亦称为系统目录)中,是DBMS运行的基本根据为此,提供数据定义语言DDL
(2)数据存取提供顾客对数据的操纵功能,实现对数据库数据的检索、插入、修改和删除一种好的DBMS应当提供功能强易学易用的数据操纵语言(DML)、以便的操作方式和较高的数据存取效率DML有两类:一类是宿主型语言,一类是自含型语言前者的语句不能独立使用而必须嵌入某种主语言,如C语言、COBOL语言中使用而后者可以独立使用,一般以供终端顾客交互使用和批处理方式两种形式使用
(3)数据库运行管理这是指DBMS运行控制、管理功能包括多顾客环境下的并发控制、安全性检查和存取权限控制、完整性检查和执行、数据加密、运行日志的组织管理、事务的管理和自动恢复(保证事务的对的性),这些功能保证了数据库系统的正常运行
(4)数据组织、存储和管理DBMS要分门别类地组织、存储各类数据,包括数据字典(亦称系统目录)、顾客数据、存取途径等等要确定以何种文献构造和存取方式在存储级上组织这些数据,怎样实现数据之间的联络数据组织和存储的基本目的是提高存储空间运用率,选择合适的存取措施保证较高存取(如随机查找、次序杳找、增、册ij、改)效率
(5)数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及有性能监测分析等功能
(6)其他功能包括DBMS与网络中其他软件系统的通信功能;一种DBMS与另一种DBMS或文献系统的数据转换功能等
3.DBMS与操作獭一般DBMS是建立在操作系统环境之上的根据详细操作系统的特点,DBMS可以用不一样的措施运用操作系统的基本功能来实现DBMS一般有下面3类措施
(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三部分语句DDL语句处理相对独立和简朴DML和DCL则较为复杂详细来说,对DDL语句,语言翻译处理层首先把它翻译成内部表达,然后把它存储在系统的数据字典中对DCL语句的定义部分,如安全保密定义、存取权限定义、完整性约束条件定义等处理与DDL相似在RDBMS中数据字典一般采用和一般数据同样的表达方式数据字典包括关系定义表、属性表、视图表、视图属性表、视图体现式表、顾客表、存取权限表、……1解释措施某些数据库系统如dBASEHI对上述措施进行了改善,通过尽量推迟聚束过程来赢得数据独立性详细做法是:直到执行前,数据库DML语句都以原始字符串的形式保留伴随数据库系统的发展,这种措施已逐渐为预编译技术所取代2预编译措施已经看到,将聚束过程提前,当然可到达系统的高效率,但失去了数据库的一种重要长处一一一数据独立性;将聚束时间推迟,赢得了数据性,却增长了执行高效率的代价预编译措施就是为了克服它们的缺陷,保持两者的长处而提出的其基本思想是,在顾客提供了DML语句后,在运行前对它进行翻译处理,保留产生好的执行代码,运行时加以执行不过,使用这种措施会碰到这样的问题:在聚束过程中进行优化所根据的条件也许在运行前已不存在,或者数据构造被修改,因而导致已作出的规划在执行时不再有效例如,假设在聚束过程中决定使用某一索引来加紧存取速度,而在程序编译完毕之后,运行之前,该索引被删除了那么,运行时就会出现不可预测的现象为了处理此类问题,采用了重编译措施即当数据库中某些成分的变化而使某些程序的编译成果无效时,再对它们执行一次编译重编译可在不一样步刻进行为了提高整个系统的效率,不应在数据库某一成分变化后就立即对受影响的那些源程序重编译,很好的措施是将受影响的编译成果置“无效”标志,在其被执行时才进行自动重编译自动重编译技术使得编译措施既拥有了编译时进行束缚所带来的高效率,又具有了执行时束缚所带来的数据独立性实践证明,预编译措施的效率比其他措施高两倍以上
7.数据存取层数据存取层介于语言处理层和数据存储之间它向上提供单元组接口,即导航式的一次一种元组的存取操作向下则以系统缓冲区的存储器接口作为实现基础1提供一次一种元组的查找、插入、删除、修改等基本操作2提供元组查找所循的存取途径以及对存取途径的维护操作如对索引记录的查找、插入、删除、修改3对记录和存取途径的封锁、解锁操作4日志文献的登记和读取操作5辅助操作如扫描、合并/排序,其操作对象有关系、有序表、索引等为了完毕上述功能,一般把存取层又划分为若,功能子系统加以实现
8.缓冲区管理数据存取层的下面是数据存储层简称存储层存储层的重要功能是存储管理包括缓冲区管理、内外存互换、外存管理等其中缓冲管理是最重要的存储层向存取层提供的接口是由定长页面构成的系统缓冲区系统缓冲区的设置是出于两方面的原因一是它把存储层以上各系统成分和实在的外存设备隔离外存设备的变更不会影响其他系统成分,使DBMS具有设备独立性二是提高存取效率DBMS运用系统缓冲区滞留数据当存取层需要读取数据时存储子系统首先到系统缓冲区中查找只有当缓冲区不存在该数据时才真正从外存读入该数据所在的页面当存取层写回一元组到数据库中时,存储子系统并不把它立即写回外存,仅把该元组所在的缓冲区页面作一标志,表达可以释放只有当该顾客事务结束或结束缓冲区已满需要调入新页时才按一定的淘汰方略把缓冲区中已经有释放标志的页面写回外存这样可以减少内外存互换的次数,提高存取效率系统缓冲区可由内存或虚存构成由于内存空间紧张,缓冲区的大小、缓冲区内存和虚存部分的比例要精心设计针对不一样的应用和环境按一定的模型进行调整既不能让缓冲区占据太大内存空间,也不能因空间太小而频频缺页调页,导致“抖动”,影响效率缓冲区由控制信息和若干定长页面构成缓冲区管理模块向上层提供的操作是缓冲区的读(READBUF)、写(WRITEBUF)o缓冲区内部的管理操作有一查找页、申请页、淘汰页缓冲区管理调用OS的操作有读(READ)、写(WEITE)
9.数据库的物理函函数据库是大量数据的有构造的综合性的集合,怎样将这样一种庞大的数据集合以最优的形式组织起来寄存在外存上是一种非常重要的问题所谓“优”应包括两方面:一是存储效率高,节省存储空间;二是读取效率高,速度快、代价小数据库实现的基础是文献,对数据库的任何操作最终要转化为对文献的操作因此在数据库物理组织中,基本的问题是怎样设计文献组织或者运用操作系统提供的基本的文献组织措施不过,在数据库中表和文献不必具有一一对应关系这和操作系统中不一样样DBMS可以建立只能自己读写的文献,在其中存储多种表的数据数据系统是文献系统的发展文献系统中每个文献存储同质实体的数据,各文献是孤立的,没有体现实体之间的联络数据库系统中数据的物理组织必须体现实体之间的联络,支持数据库的逻辑构造一一一多种数据模型因此数据库中要存储4个方面的数据:数据描述即数据外模式、模式、内模式数据自身数据之间的联络存取途径这4个方面的数据内容都耍采用一定的文献组织方式组织、存储起来
(1)数据字典(DD)的组织有关数据的描述存储在数据库的数据字典中数据字典的特点是数据量比较小(与数据自身比)、使用频繁,由于任何数据库操作都要参照数据字典的内容数据字典在网状、层次数据中常常用一种特殊的文献来组织所有有关数据的描述信息寄存在一种文献中
(2)数据及数据联络的组织有关数据自身的组织,DBMS可以根据处理的规定自己设计文献构造,也可以从操作系统提供的文献构造中选择合适的加以实现目前,操作系统提供的常用文献构造有:次序文献、索引文献、索引次序文献、HASH文献(杂凑文献)和B树类文献等等数据库中数据组织与数据之间联络是紧密结合的在数据的组织和存储中必须直接或间接、显式或隐含地体现数据之间的联络,这是数据库物理组织中重要考虑和设计的内容关系数据库中实现了数据表达的单一性实体及实体之间的联络都用一种数据构造-----------------------------------“表”来表达在数据库的物理组织中,每一种表一般可以对应一种文献构造因此数据和数据之间的联络两者组织方式相似
(3)存取途径的组织关系数据库中,存取途径和数据是分离的,对顾客是隐蔽的存取途径可以动态建立、删除存取途径的物理组织一般采用B树类文献构造和HASH文献构造在一种关系上可以建立若干个索引有的系统支持组合属性索引,即在两个或两个以上的属性上建立索引索引可以由顾客用CRETR INDEX语句建立,用DROP INDEX语句删除在执行查询时,DBMS查询优化模块也会根据优化方略自动地建立索引,以提高查询效率由此可见,关系数据库中存取途径的建立是十分灵活的
十、FoxPro弊据库管理系统简介L FoxPro简介FoxPro
2.5是Microsoft企业1993年推出的产品1993年1月公布了FoxPro
2.5for DOS和FoxPro
2.5for windows两个版本,成为目前微机上最快、使用最广泛的数据库管理系统FoxPro
2.5的新特点:增强32位产品的特性;跨平台的开发;新增或增强的命令与函数;新的生成器命令;新的系统内存变量由于FoxPro for DOS与FoxPro for windows互相兼容下面就只简朴地简介一下FoxPro-forwindows的某些功能FoxPro forwindows的常用工具集(菜单生成器,屏幕生成器,报表生成器)充足发挥亚「一dows的图形能力这些能力包括图象显示、字模使用以及忻ndows元素与控制的应用,还可以用Bitmaps作为屏幕的背景FoxPro的附属工具传递器(Transporter)支持FoxPro
2.5forDOS和它的DOS环境下的姐妹产品之间的交叉平台上的开发FoxPro forDOS程序在大多数状况下可以不必修改而直接在FoxPro forwindows环境下运行独特的Rushmore查询优化技术支持复杂的检索并大幅度提高了运行速度,图形环境并不影响FoxPro底层的速度FoxPro加入了Windows的某些动态功能,如OLE(对象连接与嵌入)、DDE(动态数据互换)、DLL(动态链接库)和Windows打印驱动程序等FoxPro forwindows包括字型字体控制、拖放式编辑和块功能Windows的全范围的多种字模(Font)在FoxPro
2.5中都是有效的,包括True Type字模,这些字模对所有的FoxPro的工具和程序语言都是支持的FoxPro提供联机协助文献发行工具箱(Distribution kit)提供流水过程,提供安装和启动例程FoxPro合用于多顾客及网络环境
2.FoxPro的基本原理FoxPro数据库是表的集合,这些表协同工作,一起来完毕某项任务这里的表是一种列表,在该表中的每项叫做一种记录,而每个记录又由许多字段构成,字段是数据库的最小数据单位在FoxPro中支持八种数据类型的字段1FoxPro的数据类型
①字符型字段
②数字型字段
③日期型字段
④逻辑型字段
⑤备注字段
⑥通用字段
⑦图形类型字段
⑧浮点数值字段2工作区在FoxPro中,构成某个数据库的多种表可以打开在多达255个工作区中,可以用编号1到255引用工作区,也可按A J和11255引用工作区在某一时刻每个工作区只能容纳一张表在工作区中打开表后,工作区和〜〜表实际上成了同义语,可以通过表的别名有时就是该表的名,来引用或选择工作区别名可在打开表时指定一般选择一种工作区为目前工作区,该工作区中打开的表,即为FoxPro操作的缺省表FoxPro的缺省操作都是针对该表的3View窗口该窗口是用来查看数据库,并且可以显示在各个工作区打开的表的别名,也可通过Browse按钮查看这个表的内容此外,View窗口也容许顾客输入数据,仔细观测表内容,创立和修改单个的表;在主菜单中选Windows/View后即可进入View窗口Setup按钮可修改表的构造Browse按钮可浏览目前工作区Workareas中以亮条标出中的表内容Open按钮可在目前工作区中打开一己存在的表或创立一新表Close按钮则关闭目前工作区中的表Relation按钮可使目前工作区的表与其他表有关联顾客常常需要同步打开两个或更多的表,按照某种特殊的次序来显示表的内容运用View文献可以保留顾客在各工作区打开的表的信息顾客想打开所有这些表时只须打开顾客存的View文献,再进入View窗口即可措施如下保持View窗口活动,在各工作区内打开所需的表,然后选择as…菜单项选择项,Save as菜单即会出现,在Save Viewas栏中添入文献名,之后确认Save,即可产生顾客的View文献4表的互斥和共享打开的表要么互斥Exclusive使用,要么共享Shared使用假如互斥使用,那么在关闭该表之前任何其他人都不得再重新打开该表缺省状态下FoxPro打开的表是互斥使用的要命名打开的表能共享使用,必须加载DOS SHARE程序工作在不需SHARE的网络上则不用加载同步要在Command窗口中敲入SET EXCLUSIVEOFF,那么后续打开的所有表都能共享使用,已经打开的表仍然互斥使用在USE命令后加入SHARED,使顾客可以替代对指定文献的EXCLUSIVE设置也可从View窗口中打开表用于共享使用,这可以取消对话框中Exclusive复选框的标识而实现某些FoxPro命令需要互斥使用表,如DELETE TAG,INDEX ON…TAG,INSERT[BLANK],MODIFY STRUCTURE,PACK,REINDEX,ZAP等在表被打开用于共享之后,必须处理记录争用的问题但目前读者还只需要懂得在交互地增长和修改的据时,FoxPro为顾客处理大多数这种问题注意:假如顾客保证EXCLUSIVE已关闭SET OFF,但状态栏仍旧显示表是EXCLU一SIVE的话,那么或许SHARE程序没有加载,或许表是在EXCLUSIVE打开SET ON状态时打开的,也也许所使用的表刚刚创立顾客创立表打开时是互斥使用的,直到关闭该表;但下一次打开该表时,可使表用于共享5Browse窗口Browse窗口是FoxPro功能最强、最富生机的特性之一在Browse窗口中不仅可以浏览表的内容,还可以向表中增长记录、删除记录、修改字段等进入Browse窗口有多种措施,既可从主菜单中Database/Browse进入,也可从View窗口中的Browse按钮进入,还可以在查询时进入View窗口在FoxPro中是最有用的窗口之一顾客应在进入FoxPro后,就打开View窗口,这样会给顾客带来许多以便实际上,FoxPro的所有表,都是以单独的文献寄存在磁盘中的,数据库实质上只是一种目录名而已FoxPro对文献的保护比较弱,有时拷贝表时,会丢失某些信息,以至于到此外一台机器上不能打开,这时就应重新拷贝,把所有有关的文献,如FPT、IDX等文献一并拷走这样数据库才能在此外一台机器上安全地运行
3.使用FoxPro数据库1建立数据库建立数据库要决定需存储在数据库中的信息的构造,即数据库的构造2RQBE窗口尽管使用Browse可以浏览表,但毕竟只能做某些简朴的检索,为此FoxPro提供了RQBE RelationalQueryBy ExampleRQBE是一种交互式工具,防止了写复杂检索程序的麻烦,可以很以便地检索数据RQBE的功o能很强,RQBE是顾客和SQL SELECT命令间的接口,Fox-Pro支持SQL此夕卜,RQBE可以把语句保留在.QPR文献中3报表的设计与制作使用RQBE可制作出报表,还可以运用FoxPro功能强大的Report Writer来制作一张符合需要的报表
4.创立应用程序1建立数据库编写数据库应用程序的第一步是确定该系统必须使用的数据库文献和索引2菜单生成器FoxPro为顾客提供了很简洁的丰富的菜单编程命令,但这些繁杂的命令很轻易令人厌烦假如使用菜单生成器,将会使构造菜单系统变得轻易许多菜单生成器的启动有两种方式1通过在Command窗口键入Create menu[〈文献名〉],键入回车即可2通过系统菜单启动3屏幕生成器大多的应用程序都是围绕着顾客界面屏幕来建立的有些屏幕用来录入或编辑数据,有些屏幕用以显示信息,有些屏幕用于表的维护等等FoxPro的屏幕生成器就是用来创立大多数上述屏幕的工具在各类界面设计中,输入屏幕算是比较繁并且又很常用的界面屏幕了4项目管理器项目管理器重要有如下两个作用
①维护项目使用的所有文献
②建立应用程序项目管理器具有优秀编程工具的特点,它为顾客做了许多工作,并且易于使用可以通过选择Project、New或在命令窗口键入Great project命令来创立一种新的项目然后使用Add按钮开始创立该项目中的新文献或将已经有的文献添加到该项目中首先,将主文献添加到项目中由此,项目管理器就可以沿着程序的执行环节即嵌入在文献中的函数和过程调用来一步步跟踪,直到找到目前项目所需的所有文献为止生成项目文献非常轻易,在项目管理器窗口中按下Build按钮,选择Re-build project,Build Application或Build Executable选项此外,项目管理器能以便的发现和修改编译错误应当指出,一种项目并不一定要生成应用程序;而一种完整的“应用程序”可以包括若干个项目和若干个生成类因此,逻辑上的处理措施是将应用程序拆成许多的项目,这就是应用程序的分级设计措施
十一、ORACLE数据库管理系统简介L ORACLE的可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性从大型机到微机上都可运行ORACLE的产品可在UNIX、DOS、Windows等操作系统上运行可兼容性由于采用了国际原则的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容并提供读取其他数据库文献的间接措施可联结性对于不一样通信协议,不一样机型及不一样操作系统构成的网络也可以运行ORA-CLE数据库产品
2.ORACLE的总体构造1ORACLE的文献构造一种ORACLE数据库系统包括如下5类文献:ORACLE RDBMS的代码文献数据文献一种数据库可有一种或多种数据文献,每个数据文献可以存有一种或多种表、视图、索引等信息日志文献须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复控制文献可以有备份,采用多种备份控制文献的是为了防止控制文献的损坏参数文献具有数据库例程起时所需的配置参数2ORACLE的内存构造一种ORACLE例程拥有一种系统全程区SGA和一组程序全程区PGASGA SystemGlobalArea包括数据库缓冲区,日志缓冲区及共享区域PGA ProgramGlobal Area是每一种Server进程有一种一种Server进程起动时,就为其分派一种PGA区,以寄存数据及控制信息3ORACLE的进程构造ORACLE包括三类进程
①顾客进程用来执行顾客应用程序的
②服务进程处理与之相连的一组顾客进程的祈求
③后台进程ORACLE为每一种数据库例程创立一组后台进程,它为所有的顾客进程服务,其中包括:DBWR DatabaseWriter进程,负责把已修改的数据块从数据库缓冲区写到数据库中LGWR LogWriter进程,负责把日志从SGA中的缓冲区中写到日志文献中SMON SystemMoniter进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间PMON ProcessMoniter进程,当一顾客进程异常结束时,该进程负责恢复未完毕的事务,注销失败的顾客进程,释放顾客进程占用的资源ARCHARCHIVER进程每当联机日志文献写满时,该进程将其拷贝到归档存储设备上此外还包括分布式DB中事务恢复进程RECO和对服务进程与顾客进程进行匹配的Dnnn进程等
3.ORACLE的逻辑构造构成ORACLE的数据库的逻辑构造包括1表空间25种类型的段segment
①数据段;
②索引段;
③滚回rollbock段;
④临时段;
⑤自举bootstrap段段的分派单位叫范围Extent表空间Tablespace一种数据库划提成的若干逻辑部分称为表空间一种数据库可以有一种或多种表空间,初始的表空间命名为SYSTEM,每一种逻辑表空间对应于一种或多种物理文献DBA使用表空间做如下工作:控制数据库对象,如表、索引和临时段的空间分派为数据库顾客设置空间配额运用个别表空间的在线或离线,控制数据的可用性后备或恢复数据通过度派空间,以改善性能在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立在该表空间中,包括数据库的数据字典,其中存储所有数据库对象的名字和位置SYSTEM表空间总是在线的,像其他表空间同样,可以通过增长新的数据库文献来扩大一种表空间可包括许多表和索引但一种表和索引不能跨越表空间,可跨越构成表空间的文献在DB的打开的状况下,DBA运用ALTER TABLESPACE语句,可以实行表空间的在线或离线SYSTEM表空间必须在线表空间离线有下列原因一般为了使部分数据库不能使用,而容许正常存取数据库其他部分执行表空间离线备份一种离线的表空间,不能被应用顾客读或编辑可以增长数据文献扩大已经有的表空间,也可增长新的表空间使数据库容量增大,或分派空间给某个应用使用ALFER TABLESPACEADD FILE语句将另一种数据文献加入到已存在表空间中使用CREATETABLESPACE语句可建立一种新的表空间段segment表空间中的所有数据存储在以段划分的数据库空间中一种段是分派给数据库用于数据存储的范围的集合数据可以是表、索引或RDBMS所需要的临时数据段是表空间的下一种逻辑存储的级别一种段不能跨越一种表空间,但可跨越表空间内的文献一种数据库最多需要五种段类型:数据段一种包括一种表或汇集的所有数据,一种表或汇集总有一种单个数据段索引段一种索引段包括对一种表或汇集建立的一种索引的所有索引数据一种表可以有一种、多种或者没有索引段,取决于它所拥有的索引个数一种汇集必须至少有一种索引段,即在汇集码上建立汇集索引回滚段每个DB有一种或多种回滚段一种回滚段是DB的一部分,它记录在某一状况下被撤销的动作回滚段用于事务控制和恢复临时段在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间成果,这个区称为临时段自举段自举段在SYSTEM表空间中,在数据库建立时建立它包括数据字典定义,在数据库打开时装入
4.顾客数据库对象由顾客建立的对象驻留在表空间中,具有真正的数据数据库对象有表、视图、汇集、索引、伪列和序号生成器1汇集Cluster汇集是存储数据的一种可选择的措施汇集包括存储在一起的一组表,它们共享公共列并常常一起使用由于内容有关并且物理地存储在一起,存取时间得到改善,存储空间可以减少汇集是一种优化措施汇集对性能的改善,依赖于数据的分布和SQL操作的内容尤其是使用汇集对连接非常有利可以明显地提高连接的速度建立汇集命令的基本格式:SQLCREATE CLUSTER〈汇集名〉列定义;运用汇集建立表命令基本格式:SQL〉CREATETABLE〈新表名〉列定义CLUSTER〈汇集名〉汇集列;在汇集码上必须建立一种汇集索引,对于每一数据块上每个汇集码值有一索引项这个索引必须在DML语句对汇集表操作前建立建立索引的语句是:CREATE INDEX索引名ON CLUSTER汇集名2序号生成器序号SEQUENCE生成器为表中的单列或多列生成次序号运用序号可自动地生成唯一主码使用SQL语句定义序号,给出某些信息如序号名、是升序或降序、每个序号间的间隔和其他信息所有序号存储在数据字典表中所有序号定义存储在数据字典的SEQUENCE表中顾客可以通过字典视图USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查询和存取建立序号生成器的语句是:CREATE SEQUENCE序号生成器名其他选项一旦序号生成器S被定义可用S.Currval来引用S序号生成器的目前值用S.nextval产生下一种新的序号并加以引用3伪列伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改
5.数据字典数据字典ORACLE RDBMS最重要的部分之一数据字典具有一组系统定义的表,只能读,是有关数据库的引用指南它可提供如下信息ORACLE顾客的顾客名;每个顾客被授予的权限和角色;实体的名字和定义;完整性约束为数据库实体分派的空间;通用的数据库构造;审计信息;触发子等的存储数据字典是以表和视图构成的,像其他数据库数据同样,可用SQL语言查询数据字典数据字典在DB建立时建立每当DB进入操作,数据字典就由ORACLE RDBMS负责修改数据库建立时有两个默认DBA顾客:SYS、SYSTEMo SYS持有基本表中的数据下面列出的是某些常用的表或视图的名称1DTAB描述了组或数据字典的所有表2TAB顾客建的所有基本表、视图和同义词3COL顾客创立基本表的所有列的信息4SYNONYMS顾客可存取的同义名词、专用名和公用名5CATALOG顾客可存取的表、视图、同义词、序列6CONSTRAINTS顾客可存取的约束7INDEXES顾客可存取的表和汇集的序列8OBJECTS顾客可存取的对象9TANLERS顾客可存取的表10USERS查看目前所有顾客11VIEWS查看顾客可存取的视图12SYSTABAUTH顾客对数据对象的使用权限可以用SQLSELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息可以用SQLWESCRIBE〈表名〉来查看表的构造定义不过数据库字典的构造不可改用DESCRIBE命令还可以查看视图及过程的定义
6.ORACLE的SQL、PL/SQL与SQL*PLUS作为ORACLE数据库关键的SQL语言是ANSI和ISO的原则SQL的扩充用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的这就使得单条的SQL语句使用以便,功能强大顾客只需阐明操作目的,不必关怀详细操作的实现措施但在实际数据库应用开发中,往往要根据前一步对数据库操作的成果或上一种事务提交的状况来确定下一步的操作故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能PL/SQL可支持变量和常量的使用
十二、分布式数据库L分布式数据库的分类联络概念模型的表达措施最常用的是实体一联络措施Entity-Relationship Approach,简称E-R措施该措施是由P.P.S.Chen在1976年提出的E-R措施用E-R图来描述某一组织的概念模型在这里仅简介E-R图的要点在E-R图中a长方形框表达实体集,框内写上实体型的名称b用椭圆框表达实体的属性,并用有向边把实体框及其属性框连接起来c用菱形框表达实体间的联络,框内写上联络名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联络的种类假如联络也具有属性,则把属性框和菱形框也用无向边连接上
3.三种重要的数据画实际DBMS所支持的数据模型重要有三种•层次模型Hierarchical Model•网状模型Network Model•关系模型Relational Model其中,关系模型是目前DBMS所支持的数据模型的主流90年代运行的DBMS几乎都是基于关系模型的层次模型和网状模型统称为非关系模型非关系模型的构造可以和图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用不过近来,层次模型在研究面向对象的DBMS中已得到重视在关系模型中,数据在顾客的观点中或在顾客视图中的逻辑构造是一张二维表Table•关系Relation,对应于平常讲的一张表•元组Tuple,表中的一行•属性Attribute,表中的一列称为一种属性,给每一列起一种名,称为属性名这一列或这个属性所有也许取的值的集合称为这个属性的值域Domain,值域中的一种元素叫做这个属性的值•主关键字Primary KeyAttribute或Primary Key,是指能唯一标识一种元组的一种或一组属性•分量Attribute value,是指元组中的一种属性值•关系模式Relational Schema,是对关系的描述,一般用关系名属性名1,属性名2,…,属性名n来表达同层次模型和网状模型相比较,关系模型具有下列特点1概念单一在关系模型中,无论是实体还是实体之间的联络都用关系来表达在关系模型中,在顾客的观点中,数据的逻辑构造就是表,也只有这唯一的概念在非关系模型中,顾客要辨别记录型与记录型之间的联络两个概念;当环境复杂时,数据构造异常复杂,难以掌握而关系模型,由于概念单一,可以变复杂为直观、简朴,易学易用2规范化所谓关系规范化是指在关系模型中,每一种关系都要满足一定的条件规定这些条件被称为规范条件对于关系,一种最基本的规范条件是,规定关系中的每一种属性或分量均是不可分的数据项;也就是说不容许表中有表,表是不可嵌套的3在关系模型中,顾客对数据的操作的输入和输出都是表,也就是说,顾客通过操作旧表而得到一张新表总之,关系模型概念简朴,构造清晰,顾客易学易用,有严格的以数学为基础的关系理论作指导,便于DBMS的实现基于关系的DBMS简化了应用程序员的工作,便于数据库应用系统的设计和维护故此,关系模型自诞生后来就得到了迅速的发展,成为应用最为广泛的、唯一的数据模型
二、数据库系统的构造L数据库系统的三级模式构造数据库管理系统的三级模式构造由外模式、模式和内模式构成外模式external schema,或子模式subschema或顾客模式user schema,是指数据库顾客所看到的数据构造,是顾客看到的数据视图模式schema或逻辑模式logic schema,是数据库中对全体数据的逻辑构造和特性的描述,是所有顾客所见到的数据视图的总和外模式是模式的一部分内模式internal schema,或存储模式storage schema,或物理模式physical schema,是指数据在数据库系统内的存储介质上的表达,即对数据的物理构造和存取方式的描述模式描述的是数据的全局的逻辑构造,决定了DBMS的功能外模式波及的仅是局部的逻辑构造,是模式的子集,是对模式的调用数据库系统的三级模式是对数据进行三个层次抽象的工具通过三级模式,把对数据的详细组织留给DBMS来完毕,使得顾客能在高层次上处理数据的逻辑构造,而不必关怀数据的物理构造为了实现这三个层次这间的联络,DBMS在沟通三级模式中提供了两个映象:外模式-模式映象模式-内模式映象1模式模式规定了数据库中所有数据的一种逻辑表达或描述形式模式既不一样于内模式,也不一样于外模式它比内模式抽象,不波及数据的物理构造和存储介质它与详细的应用程序或高级语言无关2外模式外模式是个别顾客的数据视图,即与某一应用有关的数据的逻辑表达3内模式内模式是所有数据库的内部表达或底层描述,是用来定义数据的物理构造和存取方式的4二级映象对于同一种模式,可以有任意多种外模式外模式-模式的映象定义了某个外模式和模式之间的对应关系这些映象的定义一般包括在各自的外模式中当模式变化时,外模式-模式的映象要做对应的变化,以保证外模式的不变性这是数据库管理员DBA的责任模式-内模式的映象定义了数据逻辑构造和存储构分布式数据库,是根据它的管理系统(Distributed DBMS-DDBMS)进行分类的对DDBMS可以从四个不一样角度来分类
(1)从构成的方式,可分为同构型和异构型两类所谓同构型,是指所有节点的局部DBMS都支持同一数据模式和数据语言为使每个节点都掌握彼此的数据状况,需要增长网络数据库管理系统(NDBMS),各节点之间通过通信网络形成统一的整体同构型的DDBMS对于并发控制、冗余数据的一致性等问题轻易处理,但建库的代价比较大所谓异构型系统,是指在分布环境中各节点上的数据模型和数据语言都也许不一样异构比同构型系统实现起来要困难某些,为了在两个节点上的局部DBMS之间进行信息互换,就要对数据模式和数据语言进行转换和映射工作
(2)按控制方式,可以分为集中式与分布式所谓集中控制的DDBM指所有事务都由一台叫做中心计算机的节点进行管理分布控制的DDBMS,是指每个节点都保持DDBMS的一种副本来监督和管理各节点及系统事务,它将网络目录作为顾客数据库寄存于局部DB之中
(3)从数据分布的角度,DDBMS又可分为分割式、部分反复式和完全反复式所谓分割式,是指每个节点只存储DDB数据实体的部分子集,各节点的副本互不重叠部分反复式,是指每个节点都存储DDB数据实体的任意子集完全反复式,是指每个节点都存储整个DDB数据实体的副本也有文献把完全反复式称为复制式
(4)从顾客的角度,DDBM可分为总体型和多重型
2.分布式数据库与单一数据库的面
(1)集中控制在一种企业或单位范围内的信息资源上,对信息提供集中式控制的也许性,被认为是采用数据库技术的最大动力之一,由于集中式数据库是根据信息系统的演变和集中处理信息的需求开发出来的
(2)数据独立性数据独立性也曾经被认为是采用数据库措施的重要动力之一实际上,数据独立性意味着数据的实际构造对应用程序来讲是透明的,应用程序员只需要运用数据逻辑构造,即所谓概念模式来编写程序数据独立性的重要长处是应用不受数据存储的物理构造变化的影响在分布式数据库中,数据的独立性具有与老式的集中式数据同等的重要性,然而,一种崭新概念加进了数据独立性的一般概念之中,这就是分布式透明性所谓分布式透明性,指的是在编写程序时就好象数据没有被分布同样这样,无论把数据存储到甲地或乙地,或者把数据从一种节点移到另一种节点,都不会影响程序执行的对的性和有效性,不过,必须指出,执行速度或者效率却受到了影响众所周知I,通过具有不一样形式的数据描述和它们之间的映射的多层体系构造,曾为老式的数据库提供了独立性,为此目的,开发出了概念模式、存储模式和外部模式等概念运用类似的措施,我们可以通过采用新层次和新模式,在分布式数据库中可获得分布式透明性分布式透明性是分布式数据库系统的重要目的之一
(3)减少冗余在老式数据库系统中,尽量地减少冗余度是它的重要目的之一这有两个原因首先,通过只用一种正本,可以自动地防止同一逻辑数据中几种副本之间的不一致性另一方面,用减少冗余度来节省存储空间通过共享数据的方式,即通过容许几种应用访问同一文献和记录可以到达减少冗余度的目的不过,在分布式数据库中,把数据的冗余当作是所需要的特性这有几种原因首先,假如在需要冗余的所有节点都复制数据,则可以增长应用的局部性另一方面,可以增长分布式数据库系统的有效性和可靠性由于,假如复制数据,则一种节点上的故障不会停止其他节点上应用的执行在一般状况下,为老式集中式环境所规定的克服冗余的原因,在分布式环境中仍是有效的因此,在分布式数据库中,对冗余度的评价要选择一种折衷方案,不能一概而论一般地说,复制数据项的以便程度是伴随应用所执行的检索访问与更新访问的比率提高而增长数据复制便利程度的提高,是由于具有一种项目多种副本,检索可以在任一副本上进行,而更新却必须在所有副本上一致地进行
(4)有效访问复杂的访问构造,如辅助索引,文献间的链接等,都是老式数据库所采用的重要技术,对这些构造的支持是数据库管理系统DBMS极为重要的构成部分提供复杂访问构造的原因,是为了提高存取数据的效率
(5)完整性、恢复和并发控制在数据库理论中,尽管完整性、恢复和并发控制等所波及的问题是不一样的,但它们之间互相联络还是诸多的,一般来说,完整性、恢复和并发控制等问题的处理,在很大程度上取决于所提供的事务的构造形式
(6)保密性和安全性在老式数据库中,具有集中式控制的数据库管理员能保证只执行那些授权的数据访问但应当指出,集中式数据库自身比过去处理单独文献的旧措施更难于实现数据的保密性和安全性在分布式数据库中,局部数据库管理员面临的某些重要问题,与老式数据库管理员面临的问题同样不过,分布式数据库的两个独特方面值得一提:首先,在具有极高度节点自主权的分布式数据库中,局部数据的拥有者认为比较安全,由于他们能自主地实行自己的安全措施,以履行集中式数据库管理员的职责另一方面,安全性问题,一般是分布式系统的固有问题,因分布式系统是通过通信网络来实现分布式控制的,而通信网络自身就在保护数据的安全性和保密性方面存在着弱点通过网络偷看、乱改他人的数据难以完全防止
3.分布式数据库管理系统(DDBMS)在目前分析DDBMS的性能时,应当把商品化系统和先进的研究样机辨别开来,不过可以预料,某些先进的研究样机中试验的特性,也许会应用到未来的商品化系统中去的本节简要论述分布式数据库管理系统的基本性能,并就用什么样的措施使得分布式数据库这个新技术商品化的问题谈一点见解从目前看,世界上几各已经商品化的分布式系统是由集中式数据库管理系统的销售厂商开发出来的这些分布式数据库管理系统,包括扩充集中式DBMS时所附加的部件分布式功能的扩充是通过装配在计算机网络中不一样节点上的DBMS之间所提供的通信和合作来实现的在这种状况下建立分布式数据库一般所必须的软件部分是1数据库管理部分DB;2数据通信部分DC;3数据字典DD,它能用来表达有关网络中数据分布的信息;4分布式数据库部分DDB
十三、分布式ORACLE系统简介L分布式体系构造的ORACLE1986年,ORACLE企业推出了它的分布式体系构造的ORACLE数据库系统该系统是由分布式数据库管理系统ORACLERDBMS、支持多种操作系统和通信协议的分布式处理环境软件SQL*NET、以及与非ORACLE RDBMS联接的软件SQL*CONNECT这三部分构成的一种软件群分布式ORACLE采用了经典的开放式体系构造,对环境的适应范围非常广泛,可适应多种通信协议、多种操作系统、多种硬件环境及多种DBMS和数据源
4.网络ORACLE的连接过程网络ORACLE的连接过程大体包括如下几步1确认网络结点与否安装了SQL*NET,如未安装,则需执行:*$SYS@ORACLE:NCONFIG.COMW进行安装,并且使用SGAPAD.COM重新链接2确认安装中选用的网络驱动器与操作系统环境下所配置的通信协议与否相符3待
1、2两项均确认后,则可在服务器Server结点上建立一种命令文献这个命令文献重要完毕如下工作:指定ORACLE系统标识码SID,从而确定将哪一种ORACLE RDBMS作为服务器这是由于同机上可运行多种ORACLE RDBMS,指定方式为*ASSIGN〈SID标识码〉ORACLE$SID指定ORACLE系统所在目录$ASSIGN〈目录名〉SYS$ORACLE指定SQL*NET执行代码的逻辑名$ORASRV=SYS$ORACLE:ORASRV.EXE启动SQL*NET的执行代码$ORASRV DECNET-NSP:4待完毕后来,顾客即可进行远程访问注意两个结点上的ORACLE系统应处在启动状态5为了加强网络通信管理和防止冲突等原因,可以通过VAX/VMS网络控制程序NCP建立一和于ORACLE网络通信的缺省帐号
5.网络ORACLE的使用除了如下实用程序以外,其他ORACLE实用程序和软件工具均可以通过SQI^NET访问远程结点的ORACLE系统I0R AJI仅供当地使用此外,顾客通过多种语言编写的应用程序也可以进行远程存取顾客远程存取的方式非常简朴,仅需要在“顾客名/口令”ORACLE的合法顾客背面附上结点信息
6.分布式查询分布式查询和数据传播,重要指顾客在前端机上执行当地的进程通过SQL语句或SQLplus命令查询或传播远程结点上的数据由于网络ORACLE系统的分布式查询功能很强,顾客可以同步查询多种结点上的数据库数据传播数据功能用于两个结点之间数据及定义的复制,下面将分别简介ORACLE系统分布式查询的功能使得一种结点上的顾客可以通过SQL查询语句访问其他结点数据库的数据并且顾客还可以同步存取访问多种结点包括当地结点的数据,从而使数据库的查询功能大大增强1数据库链路DATABASE LINK为了使分布式查询操作愈加简朴以便,ORACLE RDBMS为顾客提供了一种新的数据定义方式:数据库链路顾客可以通过数据库链路定义,在当地结点和远程之间进行查询和连接进行远程访问的顾客需要明确:远程数据库所在的结点;远程结点上的哪个数据库;远程数据库的哪个顾客数据库链路即用于标识以上内容顾客通过SQL的CREATE DATABASE LINK语句定义数据库链路其格式为:CREATE[PUBLIC]DATABASE LINK链路名CONNECT TO顾客名INENTIFIED BY口令USING驱动器前缀:结点名““操作系统顾客名口令:““TASK=ORDN后缀.COM;假如顾客事先定义一种逻辑名$客事GN结点名,““操作系统顾客名口令””““TASK=ORDN后缀.COM,逻辑名那么CREATE DATABASELINK就变得十分简洁:CREATE[PUBLIC]DATABASELINK链路名CONNECT TO顾客名IDENTIFIED BY口令USING驱动器前缀:逻辑名;这里PUBLIC代表公用数据库链路,只有DBA才能使用PUBLIC限定词2远程查询操作在数据库链路定义后来,远程查询就变得非常简朴和以便顾客访问查询数据库的表或视图时,只要在表名或视图名背面附上数据库链路名即可通过SELECT语句进行查询其形式为:SELECT列体现式[,列体现式,…]FROM表名@数据库链路名[,表名@数据库链路名,…][WHERE逻辑体现式];3定义同义名顾客可以用同义名来简化某些繁琐的表名或视图名对于远程查询操作,顾客也可认为远程数据库的表名或视图名定义对应的同义名4连接操作在远程查询中,顾客可以连接相似或不一样结点上数据库中的表连接JOIN操作可以针对如下状况:同一数据库中的两个表或多种表;同一结点不一样数据库中的两个表或多种表;不一样结点上数据库中的两个表或多种表;5查询远程数据库中其他顾客的数据顾客在通过数据库链路进行远程查询时,可以访问其他顾客的数据数据库链路的定义中指定一种远程顾客名及口令,这个顾客名被称为链路顾客名上面所述的“其他顾客”即指非链路顾客假如链路顾客具有访问其他某一顾客,记为顾客A的权限,那么,Client顾客就可以通过数据库链路查询服务器顾客A中的数据6远程子查询前面简介的是基于主查询的远程访问实际上,SQL语句中的子查询Sub-quer也可以访问远程结点的数据库数据这种子查询称为远程子查询可嵌入查询的语句有:SELECT INSERTUPDATE CREATE TABLE CREATE VIEW
7.远程数据传播目前网络ORACLE系统尚不能通过INSERT,UPDATE语句更新远程结点的数据库数据不过ORACLE提供结点之间传播数据库数据的能力SQL/plus的COPY命令将用于实现这一功能顾客使用COPY命令可以进行从一种结点称为源结点到另一结点称为目的结点之间的数据传播或复制使用COPY命令与数据库链路的定义类似,需要反应定结点名、数据库即命令文献和“顾客名/口令”其中源描述和目的描述分别用于指示源结点目的结点上的结点名、数据库即命令文献和“顾客名/口令”,下面是COPY命令的基本形式:COPY[FROM源名][TO目的名】{APPEND|CREATE|INSERT|REPLACE表名[列名[,列名…]]USING SELECT语句其中源名和目的名分别用于指定源结点和目的结点上的结点名、数据库和“顾客名/口令”,如:顾客名/口令@驱动器前缀:结点名““”顾客名口令””““TASKORDN后缀.COM”;假如事先分派了逻辑名,则源描述和目的描述会变得更简洁某些假如源结点为当地,则COPY命令可略去FROM子句假如目的结点为当地,则可除去TO子句COPY命令将传送数据到目的数据库指定表详细传播的数据是子查询的成果其中APPEND、CREATE、INSERT和REPLACE限定词用于指定传播的方式:APPEND将传播的数据加在指定表中假如该表不存在,则先建表,再加入;INSERT将传播的数据加在指定的表中假如该表不存在,则先建表,再加入数据;CREATE建立指定的表,并加入数据,假如该表存在,则出错;REPLACE将传播数据替代原表中已经有的数据
十四、面向对象措施与面向对象数据库L面向对象技术的形成与发展80年代以来,面向对象语言如雨后春笋搬出现,形成了面向对象语言的两大类:一类是纯面向对象的语言,如Smalltalk和Eiffel等;另一类是混合型面向对象语言,即在过程语言中增长面向对象的机制,如C++、Objective-C等等目前,作为80年代最流行的C语言的扩充的面向对象C++,是目前应用最广泛的语言C++编译产生的代码性能几乎与老式的C编译产生的代码性能相似面向对象的Pascal和BASIC也已在DOS、Windows上OS/2中实现目前,面向对象技术已成为一种广泛使用的成熟的技术和措施,有一系列成熟的商品软件工具支持00N00N中波及到下列某些基本概念:信息Information是指对事物的一种表达或描述对象Object是一种由信息及其有关信息处理的描述构成的包消息Message是对某种信息的处理的描述类Class是对一种或几种相似对象的描述实例Instance是被某一种特定的类所描述的一种对象因此,每一种对象都是某个类的一种实例,而类是某些实例的所有相似特性的描述措施Method是描述对象对消息的响应对象是一种普遍合用的基本的逻辑概念,是一种有组织形式的、具有信息的实体或构造它既可以表达一种抽象的概念,也可以表达一种详细的程序模块;既可以表达软件,也可以表达硬件于是,00M提供了同步在现实世界和机器世界进行系统分析、设计和实现的统一的措施
2.程序设计措施学伴随软件系统规模的扩大和复杂性的增长,软件的开销也惊人地增长了,而软件的可靠性和可维护性却明显地下降了为此,人们惊呼软件危机产生软件危机的主线原因在于老式的冯•诺依曼机Von NeumannMachine的构造和人们求解问题的措施的不一致性这种不一致性重要表目前如下几种方面1语言的鸿沟;2程序设计的鸿沟;3Von Neumann机的鸿沟语言的鸿沟是形成软件危机的重要原因之一从目前看,面向对象的语言在缓和软件危机方面起到了很大的作用,获得了前所未有的积极效果3,面向对象的程序设计措施经验告诉我们:在软件系统中,“过程”或“操作”是不稳定的、多变的,而“数据构造”或“对象”却是相对稳定多了因此,老式的以过程为中心而设计的软件的可重用性差;而以数据构造或对象为中心而设计的软件的可重用性很好面向对象的程序设计措施以数据构造或对象为中心,力争问题在现实世界和机器世界中的一致性在使用00M进行程序设计时,首先进行的是面向对象的分析Object OrientedAnalysis其任务是理解问题所波及的对象、o对象间的关系,然后在现实世界中构造该问题的对象模型,以反应所要处理的“实责问题”然后,进行面向对象的设计Object OrientedDesign,即设计软件的对象模型根据软件开发环境的功能,把问题的对象模型从现实世界过渡到机器世界在软件系统内设计出各个对象、对象间的关系如继承关系,对象间的通信方式如消息模式等等总之,在该阶段应明确各个对象应做些什么及其关系面向对象的实现Object OrientedImplementation是指软件功能的详细实现,即怎么做的实现其中包括对象内部功能的实现、确定系统的顾客接口在实际开发一种系统时,上述三个阶段必须有机地结合在一起目前倡导面向对象的软件开发措施,并深入规范化,还开发了一系列00M的软件工具和软件环境,以支持软件自动生成
4.面向对象的措施的基本概念与艇实质上,软件是问题及其求解措施的一种体现形式显然,假如软件能直接自然地体现求解措施,则软件不仅易于理解,并且也具有较高可靠性与可维护性假如能按照人们一般的思维方式,在机器世界里建立问题的模型,则可以提高软件的模块化和重用的也许性面向对象措施的基本原则是:按照人们在现实世界中的一般的思维方式建立问题在机器世界的模型,设计尽量自然地体现求解措施的软件在00M中,对象object和消息传递Message passing分别作为体现事物及事物间互相联络的概念类class和继承inheritance作为适合人们一般思维方式的描述机制措施method容许多种操作作用于某类对象上这种集对象、类、消息、继承和措施于一体的00M的基本点在于对象的封装encapsulation和继承通过封装能将对象的定义和其实现分开;通过继承能体现类与类间的关系,并由此带来了动态连接dynamic binding和实体的多态性polymorphisim从而构成了00M的基本特性1对象为了使用计算机求解问题,现实世界的对象必须表到达计算机内部的概念,即机器世界的对象简称机器对象,或对象为此,“对象”有在两个不一样世界的不一样含义,可以从下文中辨别开来从存储角度来看,机器对象占有一块存储空间,其中有数据也有措施从机器实现机制来看,机器对象中私有数据表达了对象的状态,该对象的状态只能由私有的措施来变化它每当需要对象来完毕一定处理工作时,只能由其他对象向该对象发送消息,本对象响应消息后按照消息模式找出匹配的措施,并执行该措施,措施定义了该对象上的操作2消息和措施程序的执行是靠在对象间传递消息来完毕的7发送消息的对象称为发送者,接受消息的对象称为接受者消息中仅包括发送者的规定,它只告诉接受者需要完毕哪些处理,但并不指示接受者应怎样完毕这些处理消息完全由接受者解释,并决定完毕所需的处理的方式一种对象可以接受不一样形式、不一样内容的多种消息;相似形式的消息可以发往不一样的对象不一样的对象对形式相似的消息可以有不一样的解释,因而可以作出不一样的反应这里,反应并不是必需的这与子程序的调用/返回有明显的不一样把所有对象提成多种对象表,每个类都定义一组所谓“措施”措施实际上是容许作用于该类对象上的多种操作当一种面向对象的程序在运行期间,一般要做三件事1根据需要创立对象;2从一种对象或顾客向另一种对象传递消息;3若不再需要该对象时,应删除它,并回收它所占用的存储单元3类和类的层次在面向对象的程序设计中,对象是程序的基本单位相似的对象,可以像老式程序设计语言中的变量与类型关系同样,归并到一类class中去程序员只需定义一种类对象,就可以得到若干实例instance,作为可以使用的对象详细地说,类由措施和数据构成,是有关一类对象的性质的描述它包括外部特性和内部特性两个方面通过描述消息模式及其对应的处理能力来定义对象的外部特性通过描述内部状态的体现形式及固有的处理能力的实现来定义对象的内部实现特性对象是在执行过程中,根据对象所属的类,动态地生成的一种类可以生成多种不一样的对象同一类对象具有相似的特性一种对象的内部状态只能由其自身来修改,任何别的地象都不也许修改它因此,同一种类的对象,虽然在内部状态的体现形式上相似,但它们可以有不一样的内部状态,故此这些对象并不完全一模同样一种类的上层可以有超类superclass,下层可以有子类subclass,这样形成了一种类的层次构造层次构造的一种重要特点是继承性,一种类可以直接或间接地继承其超类的所有描述继承性具有传递性一种类可以有多种子类,也可以有多种超类抽象类abstract class是一种不能建立实例的类抽象类将有关的类组合在一起,提供了一种公共的根,其他某些子类从这个根派生出来一般一种抽象类只描述了这个类的有关的操作接口或者操作的部分实现;完整的实现则被留给一种或几种子类,抽象类一般用于定义一种协议或概念4继承性继承性inherintance是自动地共享子类、超类和对象中的措施和数据的一种机制假如没有继承性,不一样类中的对象中的数据和措施就也许出现大量的反复继承性比较自然地体现了对象间的联络5封装性封装是一种信息隐蔽技术,顾客只能看到对象封装界面上的信息,对象内部的信息对顾客是隐蔽的封装的目的是使对象的使用者和对象的设计者分开,使用者不必懂得实现的详细细节,只须按设计者的规定来访问对象,这样以便于系统的集成封装是一种强有力的系统集成手段封装和类阐明有关一种类的每一种实例都是一种单独的封装或组件显式地把对象的规格阐明specification和对象的实现分开是面向对象的一大特色封装自身即是一种模块,把对象的定义模块和实现模块分开,从而使得维护和修变化得以便6多态性所谓多态polymorphic,即一种名字可以具有多种语义多态与动态类型和静态类型有关动态类型是指在执行期间可以变化的类型静态类型是在程序文本中申明时确定下来的类型在面向对象的系统中,运用重名这样多义性不会带来混乱,并且为需求分析和设计带来了好处
5.动态聚束聚束binding其实并不是一种新概念一种程序经编译到连接成为可运行的目的代码,就是将可执行代码聚束在一起用老式语言写的程序在运行之前即可聚束,故此称之为静态聚束static binding而面向对象语言则在程序o运行时可发生聚束,故称之为动态聚束dynamic binding动态聚束增长了程序的简朴性和可扩充性,使程序增删o自如,不易出错,但效率略低应当指出,静态聚束运行效率高,但修改维护时工作量大
6.面向对象的系统分析措施系统分析过程就是提取一种系统的需求过程,即是指为了满足顾客的需求,系统必须做什么,而不是指系统怎样实现系统分析一般是一种需求文档开始点,同顾客进行一系列的讨论为开端一般来说,参与制定文档的人应包括系统的最终顾客、问题域专家、系统的开发者以及其他感爱好的人在过去的中,已经在系统分析中使用了功能分解法、数据流法、信息模拟法近来研究了面向对象分析00A措施下面将综述这4种重要的需求分析措施1功能分解法它可表达为功能二子功能+子功能接口2数据流法数据流法,即一般所说的构造分析法,它可表达为数据流二数据存储+数据变换+过程阐明+数据字典3信息模拟法信息模拟的重要建模工具是实体-关系图,现已发展成为语义数据模型信息模拟法可以表达为信息模拟法二对象+属性+关系+超类+子类+对象4面向对象法面向对象的含义很广,由于“对象”一词可以在不一样领域有不一样的解释,面向对象的可以表达为面向对象法二对象+类+继承+消息通信面向对象分析是建立在信息模拟和面向对象程序设计语言的概念基础之上的作为一种比较全面的措施,面向对象分析由5个环节构成:
①确定类和对象;
②识别构造;
③识别主题;
④定义属性;
⑤定义措施目前已经有了某些面向对象分析的CASE工具支持00A,以加速00A的自动化和原则化
7.面向对象设计和面向对象实现从面向对象分析到面向对象设计是一种逐渐扩充的细分过程,同老式的实体关系模型为基础的系统分析和设计类似,面向对象的设计使用的是面向对象的概念模型在面向对象的概念模型中以面向对象措施中的基本概念为基础最终,使用面向对象的语言,对设计的概念模型加以实现限于篇幅不再详细讨论造之间的对应关系例如,字段的内部表达等当数据库的存储构造变化时,模式-内模式的映象也须做对应的修改,以使得模式保持不变性这仍是DBA的责任正是由于上述二级映象的功能及其自动实现,使得数据库系统中的数据具有较高的逻辑独立性和物理独立性,从而大大地以便了顾客的使用5概念模式与模式ANSI研究组于1975年2月提出一种临时汇报1978年提出一种最终汇报,称之为AN一SI/SPARC汇报,简称为SPARC汇报SPARC汇报中指出,数据库管理系统应具有三级模式的构造,即概念模式、外模式和内模式其中外模式和内模多与上面所讲的大体相称但SPARC汇报中的概念模式是指一种组织或部门所对应的现实世界的真实模型,即概念模型概念模式仅描述实体及其属性和联络,不波及机器世界的概念概念模型是信息世界范围内的信息的构造,而模式是机器世界范围内的概念模型的逻辑表达概念模型独立于详细的计算机系统,甚至是和计算机无关的,是一种组织或部门的模型常用的描述概念模式的措施是E-R措施模式是依赖于详细的计算机及其DBMS的模式通过三种详细模型:层次模型、网状模型和关系模型来加以实现概念模式必须转换成详细的数据模型,然后才能在对应的DBMS上实现概念模型和模式都是描述信息或数据的整体构造的,然而它们是在不一样的抽象层次上加以描述的概念模型离机器更远,形式化程度低从远离机器的观点看,概念模型更抽象些,但更靠近现实世界而模式描述使用的是形式化的语言-模式DDL,而概念模型描述使用的是E-R图和某些自然语言2,使用数据库的计算机系统构造广义地讲,实际上使用数据库的计算机系统由下列几种部分构成的1硬件部分包括主机、外部存储设备、网络设备和电源等2软件部分包括操作系统、DBMS、编译系统和应用开发工具软件等3人员包括数据库管理员Data BaseAdministrator-DBA,系统分析员System Ana-lyst、应用程序员Application Programmer和顾客User
3.数据库管理系统数据库管理系统DBMS是数据库系统的关键DBMS是负责数据库的建立、使用和维护的软件DBMS建立在操作系统之上,实行对数据库的统一管理和控制顾客使用的多种数据库命令以及应用程序的执行,最终都必须通过DBMS此外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的规定,保证数据库的完整性和安全性DBMS的重要功能包括如下几种重要方面1数据库的定义功能DBMS通过提供数据描述语言也称数据定义语言Data Descrip-tive LanguageDDL来对外模式、模式和内模式加以描述然后模式翻译程序把用DDL写的多种模式的定义源码翻译成对应的内部表达,形成对应的目的形式,分别叫目的外模式、目的模式、目的内模式,这些目的模式是对数据库的描述,而不是数据自身目的模式只刻画了数据库的形式或框架,而不包括数据库的内容这些目的模式被保留在数据字典或系统目的之中,作为DBMS存取和管理数据的基本根据例如,DBMS根据这些模式定义,进行物理构造和逻辑构造的映象,进行逻辑构造和顾客视图的映象,以导出顾客要检索的数据的存取方式2数据操纵功能DBMS提供数据操纵语言Data ManipulationLanguage----------------DML实现对数据库中数据的某些基本操作,如:检索、插入、修改、删除和排序等等DML有两类:一类是嵌入主语言的,如嵌入到C或COBOL等高级语言中此类DML语言自身不能单独使用,故此称为宿主型的DML或嵌入式DML另一类是非嵌入式语言包括交互式命令语言和构造化语言,它的语法简朴,可以独立使用,由单独的解释或编译系统来执行,因此一般称为自主型或自含型的DML命令语言是行构造语言,单条执行构造化语言是命令语言的扩充或发展,增长了程序构造描述或过程控制功能,如循环、分支等功能命令语言一般逐条解释执行构造化语言可以解释执行,也可以编译执行目前DBMS一般均提供命令语言的交互式环境和构造环境两种运行方式,供顾客选择DBMS控制和执行DML语句或DML程序,完毕对数据库的操作对于自主型的构造化的DML,DBMS一般采用解释执行的措施,但也有编译执行的措施,并且编译执行的越来越多此外,诸多系统同步设有解释和编译两种功能,由顾客选其一对于嵌入型或缩主型DML,DBMS一种提供两种措施
①预编译措施
②修改和扩充主语言编译程序亦称增强编译措施预编译措施是,由DBMS提供一种预处理程序,对源程序进行语法扫描,识别出DML语句,并把这些语句转换成主语言中的特殊调用语句主语言必须和DML有调用接口o这样在连接形成目的时和主语言语句一起形成可执行的目的3数据库运行管理数据库运行期间的动态管理是DBMS的关键部分,包括并发控制、存取控制或安全性检查、完整性约束条件的检查、数据库内部的维护如索引、数据字典的自动维护等、缓冲区大小的设置等等所有的数据库操作都是在这个控制部分的统一管理下,协同工作,以保证事务处理的正常运行,保证数据库的对的性、安全性和有效性4数据库的建立和维护功能数据库的建立和维护包括初始数据的装入、数据库的转储或后备功能、数据库恢复功能、数据库的重组织功能和性能分析等功能,这些功能一般都由各自对应的实用功能子程序来完毕DBMS随软件产品和版本不一样而有所差异一般大型机上的DBMS功能最全,小型机上的DBMS功能稍弱点,微机上的DBMS更弱些不过,目前,由于硬件性能和价格的改善,微机上的DBMS功能越来越全
三、关系数据库的原则语言---------SQLL SQL概述SQL的英语名称是构造查询语言(Structured QueryLanguage)实际上它的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control)四个方面,是一种综合的、通用的、功能极强的关系数据库语言SQL支持数据库的三级模式构造
2.SQL的数据定义功能SQL的数据定义功能包括三部分:定义基本表,定义视图和定义索引它们是CREATE TABLECREATE VIEWCREATE INDEXDROP TABLEDROP VIEWDROPINDEX SQL的数据定义功能可用于定义和修改模式(如基本表),定义外模式(如视图)和内模式(如索引)
3.基本表的定义与删除定义基本表的语句格式为CREATETABLE表名(列名1类型[NOT NULL][,列名2类型[NOT NULL]]…)[其他参数];其中,任选项“其他参数”是与物理存储有关的参数根据详细系统的不一样而不一样删除基本表的语句为:DROPTABLE表名;删除索引的语句为:DROP INDEX索引名;删除索引的同步把有关索引的描述也从数据字典中删去但表的内涵仍存在且其数据外延内容不变把一种基本表的定义连同表上所有的记录、索引以及由此基本表导出的所有视图所有都删除,并释放对应的存储空间
4.索引的建立与1!滁对一种基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式一般,索引的建立和删除由DBA或表的主人(即建立表的人)负责顾客不必也不能在存取数据时选择索引存取途径的选择由系统自动进行索引的描述寄存在数据字典中建立索引的语句格式为CREATE[UNIQUE]INDEX索引名ON基本表名(列名[次序][,列名[次序]]…)[其他参数];这里的任选项--------------其他参数是与物理存储有关的参数索引可以建在一列或几列上圆括号内是索引列的次序阐明表其中的任选项----------次序,指定了索引值排序的次序可取ASC(升序)或DESC(降序)缺省值为升序UNIQUE表达每一索引值只对应唯一的数据记录
5.SQL的数据操纵功能SQL的数据操纵功能包括SELECT,INSERT,DELETE和UPDATE四个语句,即检索和更新(包括增、册h改)两部分工能检索就是查询SQL更新语句SQL的更新语句包括修改,删除和插入三类语句
①修改(UPDATE)(亦称为更新)修改语句的一般格式为UPDATE表名SET字段二体现式[,字段二体现式][WHERE谓词];修改指定表中满足谓词(或条件)的元组,把这些元组按SET子句中的体现式修改对应属性或字段上的值
②删除(DELETE)删除语句一般格式为DELETE FROM表名[WHERE谓词];从指定表中删除满足谓词的那些记录没有WHERE子句时表达删去此表中的所有记录,但此表的定义仍在数据字典中,只是一种空表DELETE只对表外延操作,不对内涵操作
③插入(INSERT)插入语句的一般格式为INSERT INTO表名[(字段名[,字段名]…)]valueS(常量[,常量]…);或INSERTINTO表名[(字段名[,字段名]…)]子查询;第一种格式把一种新记录插入指定的表中第二种格式把子查询的成果插入表中若表中有些字段在插入语句中没有出现,则这些字段上的值取空值NULL当然在表定义中阐明了NOT NULL的字段在插入时不能取NULL若插入语句中没有指出字段名,则新记录必须在每个字段上均有值
6.视图视图是从一种或儿种基本表(或视图)导出的表某一顾客可以定义若干视图因此对某一顾客而言,按ANSI/SPARC汇报的观点,他的外模式是由若干基本表和若干视图构成的视图和基本表不一样,视图是一种虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)视图一经定义就可以和基本表同样被查询、被删除(DROP),也可以用来定义新的视图,但更新(增、册人改)操作将有一定限制视图可以理解成一种数据库,只有内涵保留在数据库字典中,而无外延存储;其外延是在使用时动态地生成的或计算出来的
(1)视图的定义与删除SQL建立视图的语句格式为CREATEVIEW视图名[(字段名[,字段名]…)]AS子查询[WITH CHECKOPTION谓词];视图可以删除,语句格式为DROP VIEW视图名;视图的定义就从数据字典中删除由此视图导出的其他视图也将自动被删除若导出此视图的基本表删除了,则此视图也将自动删除
(2)视图的查询语句视图定义后,顾客可以如同基本表那样对视图查询
(3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指INSERT,UPDATE和DELETE三类操作)在关系数据库中,并非所有的视图都是可更新的,也就是说,有些视图的更新不能唯一地故意义地转换成对基本表的更新
(4)视图的长处视图的概念具有诸多长处,重要有a)视图对于数据库的重构造提供了一定程度的逻辑独立性;b)简化了顾客观点;c)视图机制使不一样的顾客能以不一样的方式看待同一数据;d)视图机制对机密数据提供了自动的安全保护功能
7.SQL的数据控丽能SQL数据控制功能是指控制顾客对数据的存取权力某个顾客对某类数据具有何种操作权力是由DBA决定的这是个政策问题而不是技术问题数据库管理系统的功能是保证这些决定的执行为此它必须能
(1)把授权的决定告知系统,这是由SQL的GRANT和REVOKE语句来完毕的
(2)把授权的成果存入数据字典
(3)当顾客提出操作祈求时,根据授权状况进行检查,以决定是执行操作祈求还是拒绝之授权语句的一般格式为GRANT权力[,权力]…[ON对象类型对象名]TO顾客[,顾客]…,[WITH GRANTOPTION];对不一样类型的操作对象可有不一样的操作权力
(1)对基本表、视图及其字段的操作权力有查询、插入、更新、删除以及它们的总和ALL PRIVILEGEo
(2)对基本表的操作权力尚有修改(ALTER)和建立索引(INDEX)
(3)对数据库的操作权力有建立表(CREATETAB)某顾客有了此权力就可以使用Create table建立基本表称他为表的主人,拥有对此表的一切操作权力
(4)对表空间的权力有使用(USE)数据库空间存储基本表的权力
(5)系统权力有建立新数据库(CREATEDBA)的权力GRANT语句中的任选项WITH GRANTOPTION的作用是使获得某种权力的顾客可以把权力再授予别的顾客
8.嵌入式SQL把SQL嵌入主语言使用时必须处理三个问题
(1)辨别SQL语句与主语言语句这是通过在所有的SQL语句前加前缀EXEC SQL来处理的SQL语句结束标志随主语言不一样而不一样,如PL/1用分号(;),COBOL用EMD-EXEC来表达SQL语句首先由预编译程序加以处理,转换为主语言编译程序可以识别的形式,然后交主语言编译程序深入处理
(2)数据库工作单元和程序工作单元之间的通信SQL语句中可以使用主语言的程序变量(简称主变量),这些变量名前加冒号作标志,以区别地字段名,程序中使用的任何表(基本表或视图)都要用EXEC SQLDECLARE语句加以阐明一则使程序愈加清晰,二则使预编译程序能作某些语法检查SQL语句执行后,系统要反馈给应用程序若干信息,这些信息送到SQL的通信区SQL CAoSQL CA用语句EXEC SQLINCLUDE加以定义在SQL CA中有一种状态指示字段SQL CODEo当SQL CODE为零时,表达SQL语句执行成功,否则返回一种错误代码(负值)或警告信息(正值)程序员应当在每个SQL语句之后测试SQL CODE的值,以便处理多种状况
(3)一种SQL语句原则上可产生或处理一组记录,而主语言一次只能处理一种记录,为此必须协调两种处理方式这是用游标(Cursor)来处理的下面首先讨论不需要游标的DML语句,然后讨论使用游标的DML语句
9.不用游标的DML语句不需要游标的DML语句有查询成果为单记录的SELECT语句UPDATE(除了CURRENT形式的UPDATE)语句DELETE(除了CURRENT形式的DELETE)语句INSERT语句1查询成果为单记录的SELECT语句此类语句的一般格式是主语言为PL/1EXEC SQLSELECT目的列INTO主变量[空值标志]FROM基本表或视图[WHERE条件体现式];SELECT语句从数据库中找到符合条件的记录,把成果放到主变量中2UPDATE语句3DELETE语句4INSERT语句
10.使用游标的DML语句一般状况下SELECT语句的查询成果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作转换为单记录处理与游标有关的语句有四个1定义游标游标是与某一查询成果相联络的符号名用DECLARE语句定义这是一种阐明语句与游标相对应的SELECT语句这时并不执行2打开OPEN游标打开游口号句使游标处在活动状态与游标对应的查询语句被执行游标指向查询成果集中的第一种记录之前3推进FETCH游标把游标向前推进一种记录,并把游标指向的目前记录中的字段值取出,放到INTO子句后对应的主变量中FETCH语句常常用于循环,以借助主语言功能逐一处理成果集中的数据4关闭CLOSE游标关闭游标,使它不再和本来的查询成果相联络关闭了的游标可以再次被打开,与新的查询成果集相联络使用CURRENT形式的UPDATE和删除语句应注意1若游标定义中的SELECT语句带有UNION或ORDER BY子句,或者这个SELECT语句相称于定义了一种不可更新的视图,则不能用这两个更新语句2若使用CURRENT形式的UPDATE语句,则游标定义中要包括FOR UPDATE子句,指出更新的字段SET子句中使用的字段因此,游标定义语句的一般格式为:EXEC SQLDECLARE游标名CURSOR FOR子查询UNION子查询…[FOR UPDATEOF字段名[,字段名]…|ORDER-BY-子句];
11.SQL的事务处理功能1事务处理的概述所谓事务Transaction是指一系列动作的组合,这些动作被当作一种整体来处理这些动作或者相继都被执行,或者什么也不做在数据库中,一种动作是指一种SQL语句事务是一组SQL语句构成的一种逻辑单位要么这些SQL语句所有被按次序对的执行,要么在某SQL语句执行失败时,按照顾客规定,取消已执行的SQL语句对数据库中数据的修改或者要么事务中SQL语句都被对的执行,完毕该事务对数据库中数据的所有操作;或者要么相称于一条SQL语句也未执行,数据库数据未做任何改动2SQL语言的事务处理语句SQL语言有3条语句用于事务处理,它们是1Commit语句,对于对的执行了的事务进行提交,进行提交即对数据库中数据的修改永久化同步还释放事务和封锁,标志该事务结束2Save point语句,定义事务中的一种回滚保留点,它是事务恢复时的一种标识点3rollback语句,无论事务执行的目前位置在哪里,该语句的执行要么取消事务执行以来对数据库的所有修改,要么取消至某个指定回滚点后对数据库的所有修改释放自保留点之后的所有表或行的封锁没有保留点,相称于回滚到事务开始处,终止该事务事务的恢复回滚是根据事务执行前保留下的当时数据库状态来实现的一碰到rollback语句,就将数据库中数据恢复到本来的状态,相称于撤销事务中已执行了的SQL语句
四、数据库的存储构造数据库的存储构造不一样于一般文献系统的存储构造数据库数据的特点是多种记录型之间彼此有联络,数据是构造化的数据的存储构造不仅波及每种记录型的记录怎样存储,并且要使数据的存储反应多种记录型之间的联络在DB多级模式中引入内模式存储模式的重要目的是使模式的数据构造的描述同它的存储表达的描述分开,以致DBA为了协调数据库性能而对数据库数据的存储措施进行修改时,可不必修改模式,以提高数据库的物理独立性在各个数据库管理系统中,对内模式的定义功能各不相似在关系数据库管理系统中有些DDL语句可影响数据库的存储构造在DBMS中各级模式的存储构造是恒定的或唯一的,而数据库内容或其记录的存储方式是不唯一的数据库存储构造设计的好坏直接影响系统的性能在存储构造中重要是波及存储记录的设计存储记录与概念记录之间具有对应关系,假如存储记录与概念记录之间具有一一对应关系,在这种状况下存储记录的设计就比较简朴,不需要深入讨论概念记录是指在逻辑构造中的记录但当一种概念记录对应多种不一样类型的存储记录时,存在怎样设计存储记录的问题对于这样的概念记录,其存储记录可以有如下几种设计L次序组织将存储记录设计成与概念记录一一对应,按SNO大小或按记录到来的次序将记录构成一种次序组织的文献这样组织的长处是构造简朴,缺陷是会挥霍存储空间
2.次序带链的组织次序带链组织容许记录中带有指针Pointer,这样可以大大节省存储空间3・带次关键字索引的次序组织为了适应对多项内容的检索,可以建立索引文献,上述组织可改为带次关键字索引的次序组织
4.多表组织在次关键字索引中,由于一种次关键字值对应于多种记录值,它们的个数是不固定的,因此对应的指针数目是可变的这种可变性给管理带来困难,为了处理这个困难,引入了多表组织多表组织的实现思想比较简朴,在索引中多种指针分散寄存在每个记录值中,索引项中的指针指向第一种记录,在第一种记录中的指针指向第二个记录等等
5.完全倒排组纲在一种记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织
6.Hash定址组却对于每一种存储记录值寄存在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算得出这种组织为Hash定址组织杂凑函数种类诸多,如质数除余法、基数转换法、平方取中法、折叠法、位移法及各位数字分析法等等关键是怎样选择一种杂凑函数,尽量防止发生碰撞对于不一样的主关键字值通过计算而得到同一种地址的映象,称之为碰撞
7.联络的存储在关系数据库中,通过外来关键字Foreign Key来表达概念记录之间的联络例如,为了体现学生和学校的联络,可以在学生记录中增长外来关键字“学校号”来表达联络
五、关系数据库
1.表格表格或简称表表达了顾客的特定类型Type的某些实体表头由某些属性名Attribute Name构成,每个属性名对应于一列在表上属性名必须唯一,不容许重名表体是由某些行或元组tuple、或记录record构成一种元组对应于老式的文献构造中的一种记录,一种记录具有若干个域field用以存储属性值Attribute value一种元组对应于一种“顾客”实体的出现occurrence表体中每一行和某一列的交叉点相称于记录中的域上保留一种属性值这个属性值叫做这一行或这个实体出现的对应属性值表体中每一列可以保留的值对应于某种属性类型Type ofAttribute,也就是说,这一列的属性值只能取这个属性类型的值某个属性所能取的所有值的集合叫做这个属性的值域Domain ofAttribute类型和值域的对应关系是一对多的一种类型o有一种值域,但一种值域可以作为多种类型,基名称不一样,但实质上值域同样实际上,类型是对值域的命名能唯一标识一种元组的属性称之为关键属性Primary KeyAttribute或简称为主关键字Primary Key主关键字有o时是由多种属性构成的,此时的主关键字叫做组合关键字Con-catenated primaryKey有的时候,表中必须由某些组合的主关键字才能唯一地标识一种元组,也就是说,不存在能作关键字的一种属性这时为了以便,往往引入一种附加的属性并称之为外来关键字Foreigh Key来作主关键字外来关键字为后来检索和查询带来了以便,但也增长了信息冗余
2.表名、表头和表体表名、表头和表体在关系模型中具有不一样的作用或功能,因而也具有完全不一样的性质表头是一种属性的集合,它规定了表的构造表体是一种特殊的集体,称作为关系relation“关系模型”中的“关系”一词就是指表o体中的这个数学关系在关系数据库中,表名对应于数据库名或关系名,表头对应于数据描述或构造描述,表体对应于数据库表体是数据库的内容及数据库操作的对象此外,有两个概念必须加以强调型type和值或出现occurence表头定义了实体或元组的型,也就是说规定了实体或元组的值域而表体则给出了实体或元组的出现出现是型中的一种值
3.关系的数学定义关系模型是建立在集合论Set Theory的基础之上的目前,开始用集合论的术语来严格地定义数学上的关系,即给出关系的数学定义定义1域Domain是值value的集合
4.关系模型关系模型由三部分构成:数据构造即关系、关系操作、关系的完整性下面将对这三个部分进行分别的讨论1单一的数据构造-----------------------关系在关系模型中,无论是实体还是实体之间的联络均由单一的类型构造一关系来表达在前面,已给出了关系和域的数学定义,简介了n元关系、元组和属性等概念下面简介关键字、关系模式和关系数据库等某些基本概念关键字关系中的某一组属性,若其值可以唯一地标识一种元组,则称该属性组为一种候选关键字Candidate Key若一种关系有多种候选关键字,则可以任选其中一种作为主关键字PrimaryKey主关键字中的诸属性被称为主属性关系模式关系的描述称为关系模式它包括:关系名、构成关系的诸属性o名、属性到域的映象、属性间的数据依赖关系等等因此,关系模式由关系名、诸属性名和属性到域的映象三个部分构成,关系模式一般简记为R A1,A2,An,其中R是关系名,A1,A2,A n为诸属性名属性到域的映象一般通过指定属性的类型和长度来阐明某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合关系的外延内容有时简称为关系但关系模式和关系的内容有时也统称为关系读者可以从上下文中区别其确切的含义形象地说,关系模式是有关表名和表头的描述,而关系的内容是表体关系数据库在关系数据库中,要分清型和值两个基本概念关系数据库的型是指数据库的构造描述,它包括关系数据库名、若干属性的定义,以及这些属性上的若干关系关系模式亦称为数据库的内涵Intension,数据库的值亦称为数据库的外延在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围而外延却是随时间变化的这和在一般的形式逻辑中外延和内涵一一对应有所区别此处外延是指任意一种满足内涵的集合,而不一定恒指满足内涵的最大的一种集合关系模式即内涵是稳定的;而关系的内容,即外延,却是随时间动态的变化而变化的数据库的构造即模式是稳定的;而数据库中的数据内容却在不停地更新2关系操作关系模型规定了关系操作的功能和特点,但不对DBMS语言的语法做出详细的规定关系数据库语言的重要特点或长处是其高度的非过程化Non-procedureae或者阐明性declarative关系数据库语言的语句是透明的顾客只须懂得语句做什么,而不须懂得怎么做的Codd在其初期的文章中,引入了8种基本的操作并Union交Intersection差Difference笛卡尔乘积Cartesian Product限制Restrictions投影Projection连接Join除Division这些操作都是对关系的内容或表体实行操作的,得到的成果仍为关系注意,这些操作只是基本的操作,而不是不再可分的原始Primitive操作,例如,Join,Intersection和Division可以由其他五种操作合成不过,把它们三个也作为基本操作使用起来很以便此外,Codd并没说上述8种操作就是关系数据库只能有的8种操作实际上,上述8种操作仅仅是作为最小的DML操作的基础部分,并且也尚未考虑到DDL的需求SQL支持的操作多于上述8种DML操作,并且SQL还支持DDL操作关系操作的特点是集合操作,即操作的对象和成果都是集合这种操作方式也称为一次一集合set-at-a-time方式而非关系模型的数据库的操作方式则为一次一记录record-at-a-tinie方式关系操作可以用两种方式来表达
①代数方式,即关系代数
②逻辑方式,即关系演算而关系演算又深入分为元组关系演算和域关系演算已经证明,这些表达方式在功能上是互相等价的一般选其一即可3关系模型的三类完整性关系模型的三类完整性是
①实体完整性Entity Integrity
②参照完整性Referential Integrity
③顾客定义的完整性User DefinedIntegrity其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约束条件,应当由关系数据库DBMS自动支持而顾客定义的完整性的支持是由DBMS提供完整性定义设施或机制,可以随DBMS商品软件不一样而有所变化实体完整性是指:若属性A是基本关系R的主关键字的属性即主属性,则属性A不能取空值NULL o在关系数据库中有多种关系,如基本关系常称为基本表、查询表、视图表等等基本表是指实际存在的表,它是实际存储数据的逻辑表达查询表是指和查询成果相对应的表而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据实体完整性是针对基本关系的空值是指“不懂得”或者“无意义的”或“不属于定义域”值空值以“NULL”表达对于实体完整性作如下阐明1一种基本关系一般对应于现实世界中的一种实体集例如学生关系对应于学生实体集基本关系不是由其他关系生成的关系基本关系是本原Primitive,是定义复杂关系的出发点2现实世界中的实体是可辨别的,即实体具有某种唯一性的标识3在关系模型中由主关键字作为满足唯一性的标识4主关键字中属性不能取空值由于若主关键字中某属性取空值,则意味着某个实体不可标识;而这和2相矛盾参照完整性是指:若基本关系R中具有另一种基本关系S的主关键字K S所对应的属性组F F称为R的外部关键字external keys,则在关系R中的每个元组中的F上的值必须满足
①或者取空值即F中的每个属性的值均为空值;
②或等于S中某个元组的主关键字的值基本关系R和S不一定是不一样的关系外部关键字也称为外来关键字例如,某数据库中有职工关系EMP职工号,姓名,部门号和部门关系DEPT部门号,部门名称为两个基本关系关系EMP的主关键字为“职工号”,DEPT的主关键字为“部门号”在EMP中,“部门号”是EMP的外部关键字故此,在EMP中的每个元组中“部门号”的值只有两种也许性
①取空值这阐明这个职工尚未分到某个部门;
②或取非空值这时“部门号”的值必须是DEPT中某个元组中的“部门号的值这阐明一种职工不也许被分派到一种不存在的部门也就是说,被参照的关系DEPT中一定存在一种元组,该元组的关键字的值等于EMP中某元组的外部关键字的值实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则顾客定义的完整性针对某一详细的数据库的约束条件条件是由现实世界中的应用环境决定的它波及到某一详细的应用中的数据所必须满足的语义规定关型模型的DBMS应提供定义和检查此类完整性条件的机制,以使用统一的措施来自动地处理它们而不规定应用程序员来承担这一功能
5.关系数据库语言概述关系数据库语言分三类:数据描述语言DDL,数据操纵语言DML和数据控制语言DCL其中,DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特性或数据的逻辑构造DML负责数据库的操作,提供一种处理数据库操作的机制DCL负责控制数据库的完整性和安全性,提供一种检查完整性和保证安全的机制DML是顾客常常使用的语言,包括了DBMS的重要功能DML包括数据查询和数据的增、册h改等功能其中查询的体现方式是DML的重要部分关系数据库的DML按照查询方式可以分为两大类1用对关系的集合代数运算来表达查询的方式,称为关系代数Relational Algebrao2用谓词演算来体现查询的方式,称为关系演算Relational Calculus关系演算又可按谓词变元的基本对象是o元组变量tuple variable还是域变量domain variable分为元组关系演算和域关系演算两种关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的DBMS软件产品中实现的详细的查询语言并不完全同样但它们是DBMS中查询语言的理论基础关系代数、元组关系演算和域关系演算这三种语言在体现能力上是彼此互相等价的,它们均可以作为评价实际DBMS软件产品中查询语言能力的原则实际DBMS软件产品的查询语言,除了提供关系代数或一种关系演算之外,还提供了许多附加的功能,如库函数、算术运算等功能SQL是介于关系代数,和关系演算之间的一种语言SQL不仅具有丰富的查询功能,并且还具有数据库定义和数据库控制功能SQL是集DDL、DML、DCL为一体的原则的关系数据库语言SQL充足体现了关系数据库语言的长处
6.关系代数关系代数中的运算可以分为两类1老式的集合运算,如并、交、差、笛卡尔乘积等此类运算是从关系的“水平方向即按行”来进行的2专门的关系运算,如选择、投影、连接、除此类运算不仅波及到行并且也波及到列
7.关系演算关系演算是以数理逻辑中的谓词演算为基础的用谓词演算作为关系数据库的语言并提出关系演算的是E.F.Coddo Codd首先定义了关系演算语言ALPHA但ALPHA并没有在计算机上实现但关系数据库管理系统INGRES所用的QUEL语言是参照ALPHA研制的,与ALPHA十分类似
六、关系数据库的规范化理论函数依赖定义1设R U是属性集U上的关系模式X,Y是U的子集若对于R U的任意一种也许的关系r,r中不也许存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称‘X函数确定『或Y函数依赖于X,记作X-Y函数依赖和别的数据依赖同样是语义范围的概念只能根据语义来确定一种函数依赖例如姓名一年龄这个函数依赖只有在没有同名人的条件下成立假如容许有相似名字,则年龄就不再函数依赖于姓名了设计者也可以对现实世界作强制的规定例如规定不容许同名人出现,因而使姓名一年龄函数依赖成立这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发既有同名人存在,则拒绝插入该元组注意,函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件
七、数据库的安全与保护
1.安全性数据库的安全性是指保护数据库以防止不合法的或非正常的使用所导致的数据泄露、更改或破坏安全性问题不是数据库系统所独有的,计算机系统均有这个问题只是在数据库系统中大量数据集中寄存,并且为许多顾客直接共享,是十分重要的信息资源从而使安全性问题变得更为突出系统安全保护措施与否有效是数据库系统的重要性能指标之一对于数据库的安全保密方式可以有系统处理的和物理的两个方面所谓物理的是指,对于强力强迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为对此所采用的措施是将数据编为密码,加强警卫以识别顾客身份和保护存储设备等措施在一般计算机系统中,安全措施是一级一级层层设置的1顾客标识和鉴定首先,系统提供一定的方式让顾客标识自己的名字或身份系统进行核算,通过鉴定后才提供机器使用权常用的措施有:用一种顾客名或者顾客标识号来标明顾客身份系统鉴别此顾客与否是合法顾客若是,则可以进入下一步的核算;若不是,则不能使用计算机顾客名的登录只由系统管理员进行,一般顾客不能实行顾客名登录口令Password,为了深入核算顾客,系统常常规定顾客输入口令2存取控制对于获得上机权的顾客还要根据预先定义好的顾客权限进行存取控制,保证顾客只能存取他有权存取的数据所谓顾客权限是指不一样的顾客对于不一样的数据对象容许执行的操作权限它由两部分构成,一是数据对象,二是操作类型数据对象有二类一类是数据自身,如关系数据库中的表、字段,非关系数据库中的记录、字段亦称为数据项另一类是外模式、模式、内模式在关系系统中DBA可以把建立、修改基本表的权力授予顾客,顾客获得此权力后可以建立基本表、索引、视图这阐明关系系统中存取控制的数据对象不仅有数据并且有模式、外模式、内模式等数据字典中的内容对于存取权限的定义称为授权Authorization这些定义通过编译后存储在数据字典中每当顾客发出存取数据库的操作祈求后,DBMS查找数o据字典,根据顾客权限进行合法权限检查Authorization Check若顾客的操作祈求超过了定义的权限,系统拒绝o执行此操作授权编译程序和合法权限检查机制一起构成了安全性子系统衡量授权子系统精致程度的另一种尽度与否提供与数据值有关的授权有的系统还容许存取谓词中引用系统变量,如一天中的时。
个人认证
优秀文档
获得点赞 0