还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
我国计算机四级数据库考试复习资料数据模型L数据模型的三要素
(1)数据结构数据结构是所研究的对象类型(ObjectType)的集合这些对象与对象类型是数据库的构成成分通常可分为两类:一类是与数据类型、内容与其它性质有关的对象;一类是与数据之间的联系有关的对象前者如网状模型中的数据项与记录,关系模型中的域、属性与关系等后者如网状模型中的关系模型(settype)在数据库领域中,通常按照数据结构的类型来命名数据模型,继而对数据库管理系统进行分类如层次结构、网状结构与关系结构的数据模型分别称作为层次模型、网状模型与关系模型相应地,数据库分别称作为层次数据库、网状数据库与关系数据库
(2)数据操作数据操作是指对各类对象类型的实例(或者值)所同意执行的操作的集合,包含操作及有关的操作规则在数据库中,要紧的操作有检索与更新(包含插入、删除、修改)两大类数据模型定义了这些操作的定义、语法(即使用这些操作时所用的语言)数据结构是对系统静态特性的描述,而数据操作是对系统动态特性的描述两者既有联系,又有区别
(3)数据的约束条件数据的约束条件是完整性规则的集合完整性规则是指在给定的数据模型中,数据及其联系所具有的制约条件与依存条件,用以限制符合数据模型的数据库的状态与状态的变化,确保数据的正确性、有效性与一致性心¥念模型|数据模型是数据库系统的核心与基础每个DBMS软件都是基于某种数据模型的为了把现实世界中的具体事物或者事物之间的联系表示成DBMS所支持的数据模型,人们首先务必将现实世界的事物及其之间的联系进行抽象转换为信息世界的概念模型;然后将信息世界的概念模型转换为机器世界的数据模型也就是说,首先把现实世界中的客观对象抽象成一种信息结构这种信息结构并不依靠于具体的计算机系统与DBMS.然后,再把概念模型转换为某一计算机系统上某一DBMS所支持的数据模型因此,概念模型是从现实世界到机器世界的一个中间层次现实世界的事物反映到人的大脑之中,然后人们开始认识这些事物,通过选择、命名、分类与组织等抽象工作之后形成概念模型,并进入到信息世界•用户(user)关心的是现实世界中的事物、事物的属性及其相互关系比如,用户可能关心他的顾客及其属性如顾客地址、银行帐号等等用户也关心自己的定货帐目,如谁订的货、订的什么与订多少等等•系统分析员(analyst)同样也关心现实世界,但是系统分析员需要分析用户的信息需求作为需求分析的结果,分析员务必以文档的形式对需求进行结构化的描述;这个文档就是信息模型•实体(Entity)实体是构成数据库的基本元素实体是指一个存在的东西以区别这个东西所具有的属性与这个东西与其它东西的联系实体能够是人,也能够是物;能够是实际对.象,也能够是概念;能够是事物本身,也能够是指事物之间的联系•属性(Allribule)一个实体能够由若干个属性来刻画属性是相对实体而言的,是实体所具有的特性•关键字(Key)能唯一地标识实体的属性的集合称之关键字(或者码)•域(Domain)属性的取值范围称作域•实体型(EntityType)一类实体所具有的共同特征或者属性的集合称之实体型通常用实体名及其属性来抽象地刻画一类实体的实体型・实体集(EnlilySel)同型实体的集合叫实体集比如,学生就是一个实体集实体集的名即是实体型关于学生与(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系,年级)所起的名称,两者是指同一客观对象但本科生与研究生能够为相同实体型,而实体集不一致•联系(Relationship)现实世界的事物之间是有联系的通常存在两类联系:一是实体内部的构成实体的属性之间的联系,二是实体之间的联系在考虑实体内部的联系时,是把属性看作为实体通常来说,两个实体之间的联系可分为三种
(1)一对一
(11)联系若关于实体集A中的每一个实体,实体集B中至多有唯一的一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记作11一对多(1n)联系若关于实体集A中的每个实体,实体集B中有n个实体(n0)与之联系;反之,关于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n相应地有多对一(n1)联系多对一联系,从本质上说,是一对多联系的逆转其定义同一对多联系类似,不再赘述
(3)多对多(m n)联系若关于实体集A中的每-一个实体,实体集B中有n个实体(n0)与之联系;反之,关于实体集B中的每一个实体,实体集A中也有m个实体(m2)与之对•应,则称实体集A与实体集B具有多对多联系,记作m n实质上,多对多联系是任意一种联系.另外,同一实体集内的各个实体间也能够有各类联系概念模型的表示方法最常用的是实体一联系方法(Entity-RelationshipApproach)简称E-R方法该方法是由P.P.S.Chen在1976年提出的E-R方法用E-R图来描述某一组织的概念模型在这里仅介绍E-R图的要
(2)静态约束与动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件以上所讲的约束都属静态约束动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件
(3)立即执行约束与延迟执行约束立即执行约束是指在执行用户事务时,对事务中某•更新语句执行完后马上对此数据所应满足的约束条件进行完整性检查延迟执行是指在整个事务执行结束后方对此约束条件进行完整性检查,结果正确方能提交完整性的实现应包含两个方面,一是系统要提供定义完整性约束条件的功能,二是提供检查完整性约束条件的方法关于数据值的那类完整性约束条件通常在模式中定义比如在模式中定义属性名、类型、氏度、码属性名并标明其值是唯一的、非空的等等另外的那些约束条件就要用专门的方式加以定义吸发操纵数据库是一个共享资源,能够由多个用户使用这些用户程序能够一个一个地串行执行,也能够并行执行在单CPU计算机上,为了充分利用数据库资源,应该同意多个用户程序并行的存取数据这样就会产生多个用户程度并发地存取同一数据的情况若对并发操作不加操纵就会存取与存储不止确的数据,破坏数据库的完整性(这里也称之一致性)在多CPU计算机或者多计算机网络环境下,并发操纵尤为重要
(1)事务的概念事务(Transaction)是并发操纵的基本单位所谓事务是一个操作序列这些操作作为一个序列形成一个整体要么都做,要么都不做,是一个不可分割的工作单位事务通常以BEGINTRANSACTION开始,以COMMIT或者ROLLBACK操作结束COMMIT即提交,提交事务中所有的操作,事务正常结束ROLLBACK即撤消己作的所有操作,滚回到事务开始时的状态这里的操作指府数据库的更新操作滚回即相当于所有操作均未执行事务与程序是两个概念通常地讲,一个程序可包含多个事务,由于事务是并发操纵的基本单位,所下列面的讨论均以事务为对象
(2)数据一致性级别的概念所谓并发操纵就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰rw封锁(Locking)就是事务T能够向系统发出请求,对某个数据对象(最常用的是记录)加锁因此事务T对这个数据对象就有一定的操纵比如,其它事务不能更新此数据直到T释放(unlock)它的锁为止确切的操纵由封锁的类型决定基本的封锁类型有两种:排它锁(Exclusivelocks简记为X锁)与共享锁(Sharelocks简记为S锁)若事务T对数据R加上X锁,则只同意T读取与修改R;其它一切事务对R的任何(包含封锁)请求都不成功,直至T释放R上的X锁为止这就保证了其它事务不能再读取与修改R直到T释放X锁若事务T对数据R加上S锁,则其它事务对R的X锁请求不能成功,而对R的共享请求能够得到这就保证了其它事务以读取R但不能修改R直至T释放S锁为止.可串行性定义当且仅当某组事务的一定交叉调度产生的结果与这些事务的某一串行调度的结果相同,则这个交叉调度是可串行化的可串行性(Serializability)是并行事务正确性的准则这个准则规定,一给定的交叉调度,当且仅当它是可串行化的才认为是正确的.两段锁协议两段锁协议规定所有的事务应遵守下列规则
(1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,而且
(2)在释放一个封锁之后,事务不再获得任何其它锁所谓“两段”锁的含义是事务分为两个阶段第一阶段是获得封锁,也称之扩展阶段第二阶段是释放封锁,也称之收缩阶段定理若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的(证明略)为了确保事务并行执行的正确性,许多系统使用两段锁协议同时系统设有死锁检测机制发现死锁后按一定的算法解除死锁卜恢复尽管系统中采取了各类保护措施来保证数据库的安全性与完整性不被破坏,保证并行事务的正确执行,但是计算机系统中硬件的故障、软件的错误、操作员的失误与有意的破坏仍是不可避免的这些故障轻则造成运行事务非正常地中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或者部分数据丢失因此数据库管理系统务必具有把数扰库从错误状态恢复到某一已知的正确状态(亦称之完整状态或者一致状态)的功能,这就是数据库的恢复恢复子系统是数据库管理系统的一个重要构成部分,而且还相当庞大,常常占整个系统代码的10%以上(如IMSDB2)故障恢复是否考虑周到与行之有效,是数据库系统性能的一个重要指标大型的数据库应用对故障恢复的要求更加强烈有的时候甚至使用双工制
(1)故障的种类数据库系统中可能发生各类各样的故障,大致能够分下列几类:
①事务内部的故障;
②系统范围内的故障;
③介质故障;
④计算机病毒
(2)转储与恢复转储是数据库恢复中经常使用的基本技术所谓转储即DBA定期地将整个数据库复制到磁带或者另一个磁盘上储存起来的过程这些备用的数据文本为后备副本或者后援副本当数据库遭到破坏后就能够利用后备副本把数据库恢复这时,数据库只能恢复到转储时的状态,从那以后的所有更新事务务必重新运行才能恢复到现时的正常状态转储是十分耗费时间与资源的,不能频繁进行DBA应该根据数据库使用情况确定•个适当的转储周期转储可分为静态转储与动态转储静态转储是指转储期间不同意(或者不存在)对数据库进行任何存取、修改活动动态转储是指转储期间同意对数据库进行存取或者修改即转储与用户事务能够并发执行静态转储简单,但转储务必等待用户事务结束才能进行同样,新的事务务必等待转储结束才能执行显然,这会降低数据库的可用性动态转储可克服静态转储的缺点但是,转储结束时后援副本上的数据并不能保证正确有效比如,在转储期间的某时刻t1系统把数据A=100转储到了磁带上,而在时刻t2某一事务对A进行了修改使A=200转储结束,后援副本上的A已是过时的数据了为此,务必把转储期间事务对数据库的修改活动登记下来,建立日志文件(logfilo)这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态转储还能够分为海量转储与增量转储海量转储是指每次转储全部数据库增量转储则指每次只转储上次转储后更新过的数据假如数据库很大,事务处理又十分频繁,则增量转储方式是很有效的
(3)R志文件FI志文件是用来记录对数据库每•次更新活动的文件在动态转储方式中务必建立日志文件,后援副本与日志文件综合起来才能有效地恢复数据库在静态转储方式中,也能够建立日志文件当数据库毁坏后可重新装放后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤消处理这样不必重新运行那些在转储前已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态
八、数据库应用系统的设计
1.数据库应用系统的设计步骤按规范设计的方法可将数据库设计分为下列六个阶段
(1)需求分析;
(2)概念结构设计;
(3)逻辑结构设计;
(4)数据库物理设计;
(5)数据库实施;
(6)数据隼运行与保护2需求分析需求收集与分析是数据库应用系统设计的第一阶段明确地把它作为数据库应用系统设计的第一步是十分重要的这一阶段收集到的基础数据与一组数据流图(DataFlowDia-gramDPD)是下一步设计概念结构的基础概念结构对整个数据库设计具有深刻影响而要设计好概念结构,就务必在需求分析阶段用系统的观点来考虑问题、收集与分析数据及其处理如何分析与表达用户需求呢在众多的分析方法中,结构化分析(StructuredAnalysis简称SA方法)是一个简单有用的方法SA方法用自顶向下、逐层分解的方式分析系统用数据流图,数据字典描述系统然后把一个处理功能的具体内容分解为若干子功能,每个子功能继续分解,直到把系统的工作过程表达清晰为止在处理功能逐步分解的同时,它们所用的数据也逐级分解形成若干层次的数据流图数据流图表达了数据与处理过程的关系处理过程的处理逻辑常常用判定表或者判定树来描述数据字典(DataDictionary简称DD)则是对系统中数据的详尽描述,是各类数据属性的清单对数据库应用系统设计来讲,数据字典是进行全面的数据收集与数据分析所获得的要紧结果数据字典是各类数据描述的集合,它通常包含下列5个部分
(1)数据项,是数据最小单位
(2)数据结构,是若干数据项有意义的集合
(3)数据流,能够是数据项,也能够是数据结构表示某一处理过程的输入输出
(4)数据存储,处理过程中存取的数据常常是手工凭证、手工文档或者计算机文件
(5)处理过程.概念结构设计如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析、抽象与概念结构的设计概念结构的设计,是整个数据库设计的关键之一概念结构独立于数据库逻辑结构,独立于支持数据库的DBMS也独立于具体计算机软件与硬件系统归纳总结,其要紧特点是
(1)能充分地反映现实世界,包含实体与实体之间的联系,能满足用户对数据处理的要求,是现实世界的一个真实的模型,或者接近真实的模型
(2)易于懂得,从而能够与不熟悉计算机的用户交换意见用户的积极参与是数据库应用系统设计成功与否的关键
(3)易于更动当现实世界改变时容易修改与扩充,特别是软件、硬件环境变化时更应如此
(4)易于向关系、网状或者层次等各类数据模型转换概念结构是各类数据模型的共同基础,它比任意一种数据模型更独立于机器,更抽象,从而更加稔固描述概念结构的有力工具是E-R模型P.P.S.Chen把用E-R模型定义的概念结构称之组织模式设计概念结构的策略有3种
(1)自顶向下首先定义全局概念结构的框架,然后逐步细化
(2)自底向上首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构
(3)混合策略自顶向下与自底向上相结合的方法用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向.上策略中设计的各局部概念结构现介绍自底向上设计概念结构的策略按照这种策略,概念结构的设计可按卜面步骤进行
(1)数据抽象与局部视图设计E-R模型是对现实世界的一种抽象通常地讲,所谓抽象是对实际的人、物、事与概念的人为处理它抽取人们关心的共同特:性,忽略非本质的细节,并把这些特性用各类抽象的概念精确地加以描述这些概念构成了现实世界的一种模型表示有3种抽象方法形成了抽象机制,来对数据进行组织:
①分类(Classification)定义某一概念作为现实世界中一组对象的类型这些对象具有某些共同的特性与行为它抽象了对象值与型之间的“isamemberof”的语义在E-R模型中,实体型就是这种抽象
②聚集(Aggregation)定义某一类型的构成成分它抽象了对象内部属性类型与整体与部分之间“isapartof”的语义在E-R模型中若干属性的聚集构成了实体型,就是这种抽象
③概括(Generalization)定义类型之间的一种子集联系它抽象了类型之间的“isasubsetof”的语义概括具有一个很重要的性质继承性子类继承超类上定义的所有抽象性质当然,子类能够增加自己的某些特殊属性概念结构设计的第一步就是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行组织,形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(111nn m)设计成部分E-R图
(2)视图的集成视图集成就是把上一步得到的各个部分E-R图综合成一个总体的E-R图视图集成能够有两种方式
①多个部分E-R图一次集成
②逐步集成用累加的方式一次集成两个部分E-R图不管哪种方式,每次集成可分两步走第一步是合并,解决各部分E-R图之间的冲突问题,生成初步E-R图第二步是修改与重构,消除不必要的冗余,生成基本E-R图.逻辑结构设计逻辑结构设计的任务就是把概念结构转换为选用的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是支持哪种数据模型的,均先把概念结构向关系模型转换然后,充分运用规范化理论的成果优化关系数据库模式的设计显数据库的物理设计物理设计的内容要紧包含
(1)确定数据的存储结构从DBMS所提供的存储结构中选取一种合适的加以实现确定存储结构的要紧因素是存取时间、存储空间利用率与保护代价三个方面设计者常常要对这些因素进行权衡通常的DBMS也总是具有一定灵活性供你选择比如,若引入某些冗余数据,则可能减少物理I/O次数提高检索效率相反节约存储空间检索代价就会增加当然应该尽量寻找优化方法,使这三方面的性能都较好折史有的时候是务必的
(2)存取路径的选择与调整数据库务必支持多个用户的多种应用,因而务必提供对数据库的多个存取入口,也就是对同一数据存储要提供多条存取路径物理设计的任务应确定建立什么存取路径设计者应该进行定量的分析,根据计算结果确定存取路径
(3)确定数据存放位置首先按数据的应用情况划分为不一致的组,然后确定存放位置通常的应把数据的易变部分与稳固部分分开,把经常存取与不常存取的数据分开经常存取或者存取时间要求高的记录应存放在高速存储器上,如硬盘存取频率小或者存取时间要求低的放在低速存储器上,如软盘磁带关于同一数据文件也可根据情况进行水平划分或者垂直划分
(4)确定存储分配许多DBMS提供了存储分配的参数供设计者物理优化处理用比如溢出空间的大小与分布参数,块的长度,块因子的大小,装填因子,缓冲区的大小与个数等等,它们都要在物理设计中确定这些参数的大小影响存取时间与存储空间的分配物理设计过程需要对时间、空间效率.、保护代价与各类用户要求进行权衡,其结果能够产生多种方案在实施数据库前对这些方案进行方案进行细致的评价,以选择一个较优的方案是十分必要的h数据库应用系统的实施写保护对数据库的物理设计初步评价完成后就可建立数据库了数据库应用系统实施对应于软件工程的编码、调试阶段设计人员运用DBMS提供的数据定义语言将逻辑设计与物理设计的结果严格地描述出来,成为DBMS可同意的源代码通过调试产生目标模式然后组织数据入库组织数据入库是数据库应用系统实施阶段最要紧的工作
(1)数据库数据的载入与应用程序的开发由于数据库数据量通常都非常大,同时这些数据来源于一个组织的各个部门,分散在各类数据文件或者原始凭证中这些数据的结构与格式通常也不符合数据库的要求,还要进行转换因此组织数据入库是一件耗费大量人力物力的工作数据的转换与组织关于小系统能够用人工方法完成但是,人工转换效率低、质量差通常来说,应设计一个数据输入子系统让计算机完成这个工作输入子系统的要紧功能是:原始数据的输入、抽取、校验、分类、转换与综合,最终把数据组织成符合数据库结构的形式然后把数据存入数据库中数据的转换、分类与综合常常要通过多次才能完成,因而输入子系统的设计与实施亦是比较复杂的,要编写许多应用程序输入子系统的设计不能等物理设计完成后才动手,应该与数据库设计工作并行开展为了保证数据库数据正确无误,务必高度重视数据的检验工作在输入子系统进行数据转换的过程中应该进行多次检验,每次检验的方法亦不要相同关于重要数据的校验更应该反复多次,确认正确后方可入库数据库应用系统中应用程序的设计应该与数据库模式设计并行数据库应用系统的实施阶段的另•项工作便这是这些应用程序的编码、调试工作有了装载实际数据的数据库与应用程序,就建立了数据库应用系统,能够试运行了
(2)数据库应用系统的试运行在完成上述工作之后,便可进入数据库的试运行阶段,或者者称联合调试阶段这阶段的要紧工作是
①实际运行应用程序,执行对数据库的各类操作,测试应用程序的功能
②测量系统的性能指标,分析是否符合设计目标尽管已在物理设计过程中进行了性能预测,但是仅仅估价了时间与空间指标,而且在性能估价的过程中作了许多简化与假设,忽略了许多次要因素,因而估价是粗糙的并可能失真务必在试运行阶段进行实际测量与评价有些参数的最佳值往往是通过运行调试后才找到的假如实际结果不符合设计目标,则需返回物理设计阶段,调整物理结构,修改参数有的时候,也许还需要返回逻辑设计阶段,调整逻辑结构最后还须指出两点第一,上面已看到组织数据入库是十分费事的,假如运行调试后又要修改数据库设计则又要重新组织数据入库因此应分批分期输入数据,逐步完成运行评价第二,数据库的实施与调试不是一朝一夕能完成的,在此期间软硬件的错误随时可能发生加上数据库刚刚建立工作人员对系统还不熟悉,对其规律更缺乏深入熟悉,容易发生操作错误因此务必做好数据库的转储与恢复工作,这就要求设计人员熟悉DBMS的这个功能,并根据调试方式与特点首先实施,尽量减少对数据库的破坏并简化故障恢复:
(3)数据库应用系统的运行与保护数据库应用系统投入运行标志着开发任务的基本完成与保护工作的开始,但并不意味着设计过程结束任何数据库应用系统只要它存在一天,它的设计就得不断地进行评价、调整、修改,甚至完全改革因此数据库应用系统的保护不仅是保护其正常活动而且是设计工作的继续与提高保护阶段的要紧工作是(6数据库的安全性、完整性操纵及系统的转储与恢复;
②性能的监督、分析与改进;
③数据库的重组织与重构造下面简单介绍数据库的重组织与重构造数据库运行一段时间后,由于记录的不断增、删、改,会使数据库的物理存储变坏比如,逻辑上属于同一记录型或者同一关系的数据被分散到了不一致的文件或者文件的多个碎片上从而降低了数据库存储空间的利用率与数据的存取效率,数据库的性能下降这时,DBA就要进行数据库的重组织,DBMS通常都提供重组织用的有用程序在重组过程中,按原设计要求重新安排记录的存储位置,调整数据区与溢出区,回收“垃圾”,减少指针链等数据库的重组织不改变原设计的数据逻辑结构与物理结构而数据库的重构造则不一致部分修改原数据库的模式或者内模式称之数据库的重构造由于数据库应用环境的变化,数据库重构的程度是有限的只能作部分的修改与调整若应用变化太大,重构也无济于事了,则说明数据库应用系统生命周期的结束,应该重新设计数据库应用系统新的数据库应用系统新的生命周期开始了
九、数据库管理系统的设计与实现
1.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要分门别类地组织、存储各类数据,包含数据字典(亦称系统目录)、用户数据、存取路径等等要确定以何种文件结构与存取方式在存储级上组织这些数据,如何实现数据之间的联系数据组织与存储的基本目标是提高存储空间利用率,选择合适的存取方法确保较高存取(如随机查找、顺序查找、增、删、改)效率
(5)数据库的建立与保护包含数据库的初始建立、数据的转换、数据库的转储与恢复、数据库的重组织与重构造与有性能监测分析等功能
(6)其它功能包含DBMS与网络中其它软件系统的通信功能;•个DBMS与另•个DBMS或者文件系统的数据转换功能等DBMS与操作系统通常DBMS是建立.在操作系统环境之上的根据具体操作系统的特点,DBMS能够用不一致的方法利用操作系统的基本功能来实现DBMS通常有下面3类方法
(1)共享模块法
(2)分离进程法
(3)与操作系统融合DBMS程序模块的构成作为一个庞大的系统软件,DBMS由众多程序模块构成,它们分别实现DBMS复杂而繁多的功能数据库定义方面有DDL翻译处理程序(包含外模式、模式、存储模式处理程序)、保密定义处理程序(如授权定义处理程序)、完整性约束定义处理程序等这些程序接收相应的定义,进行语法、语义检查,把它们翻译为内部格式存储在数据字典中DDL翻译程序还根据模式定义负责建立数据库的框架(即形式一个空库),等待装入数据数据库操纵方面有DML处理程序、终端查询语言解释程序、数据存取程序、数据更新程序等DML处理程序或者终端查询语言解释程序对用户数据操纵请求进行语法、语义检查、由数据存取或者更新程序完成对数据库的存取操作数据库运行管理方面有系统初启程序,负责初始化DBMS、建立.DBMS的系统缓冲区、系统工作区打开数据字典等等还有安全性操纵、完整性检杳、并发操纵、事务管理、运行日志管理等程序模块,在数据库运行过程中监视着对数据库的所有操作,操纵管理数据库资源,处理多用户的并发操作等它们一方面保证用户事务的正常运行:,一方面保证数据库的安全性与完整性数据库组织、存储与管理方面有文件读写与保护程序、存取路径(如索引)管理程序、缓冲区管理程序(包含缓冲区读、写、淘汰等模块),这些程序负责保护数据库的数据与存取路径,提供有效的存取的方法数据库建立、保护与其它有数据库初始数据装入程序、转储程序、恢复程序、数据库重构造程序、数据转换程序、通信程序等DBMS的这些构成模块互相联系,互相依靠,共同完成DBMS复杂的功能这些模步之间的联系有一定的层次关系DBMS的层次结构与操作系统一样,能够也应该将DBMS划分成若干层次许多DBMS实际上就是分层实现的最上层是应用层,位于DBMS核心之处它处理的对象包含各类各样的数据库应用,如用宿主语言编写的应用程序、终端用户通过应用接口(如FORMS)发出的事务请求等该层是DBMS的最终用户与应用程序的界面层第二层是语言翻译处理层它处理的对象是数据库语言,如SQL提供的数据接口是关系、视图,即元组的集合其功能是对数据库语言的各类语句进行语法分析、视图转换、授权检查、完整性检查、查询优化等通过对下层基本模块的调用,生成可执行代码这些代码的运行,即可完成数据库语句的功能要求第三层是数据存取层该层处理的对象是单个元组它把上层的集合操作转化为单记录操作执行扫描、排序、元组的查找、插入、修改、删除、封锁等基本操作完成数据记录的存取、存取路径保护、并发操纵、事务管理等工作第四层是数据存储层该层处理的对象是数据页与系统缓冲区,执行文件的逻辑打开、关闭、读页、写页、缓冲区读与写、页面淘汰等操作,完成缓冲区管理、内外存交换、外存管理等功能操作系统是DBMS的基础,它处理的对象是数据文件的物理块执行物理文件的读写操作,保证DBMS对数据逻辑上的读写真实地映射到物理文件上操作系统提供的存取原语与基本的存取方法通常作为与DBMS存储层的接口语言处理语言翻译处理层的任务就是把用户在这两种方式下提交给DBMS的数据库语句转换成对DBMS内层可执行的基本存取模块的调用序列数据库语言通常包含DDLDMLDCL三部分语句DDL语句处理相对独立与简单DML与DCL则较为复杂具体来说,对DDL语句,语言翻译处理层首先把它翻译成内部表示,然后把它存储在系统的数据字典中对DCL语句的定义部分,如安全保密定义、存取权限定义、完整性约束条件定义等处理与DDL相同在RDBMS中数据字典通常使用与普通数据同样的表示方式数据字典包含关系定义表、属性表、视图表、视图属性表、视图表达式表、用户表、存取权限表、……
(1)解释方法一些数据库系统(如dBASEHI)对上述方法进行了改进,通过尽量推迟聚束过程来隔得数据独立性具体做法是:直到执行前,数据库DML语句都以原始字符串的形式储存随着数据库系统的进展,这种方法己逐步为预编译技术所取代
(2)预编译方法己经看到,将聚束过程提早,固然可达到系统的高效率,但失去了数据库的一个要紧优点--数据独立性;将聚束时间推迟,赢得了数据性,却增加了执行高效率的代价预编译方法就是为了克服它们的缺点,保持两者的优点而提出的其基本思想是,在用户提供了DML语句后,在运行前对它进行翻译处理,储存产生好的执行代码,运行时加以执行但是,使用这种方法会遇到这样的问题:在聚束过程中进行优化所根据的条件可能在运行前已不存在,或者者数据结构被修改,因而导致已作出的规划在执行时不再有效比如,假设在聚束过程中决定使用某一索引来加快存取速度,而在程序编译完成之后,运行之前,该索引被删除了那么,运行时就会出现不可预测的现象为熟悉决这类问题,使用了重编译方法即当数据库中某些成分的改变而使一些程序的编译结果无效时,再对它们执行一次编译重编译可在不一致时刻进行为了提高整个系统的效率,不应在数据库某一成分改变后就马上对受影响的那些源程序重编译,较好的方法是将受影响的编译结果置“无效”标志,在其被执行时才进行自动重编译自动重编译技术使得编译方法既拥有了编译时进行束缚所带来的高效率,又具备了执行时束缚所带来的数据独立性实践证明,预编译方法的效率比其它方法高两倍以上数据存取层数据存取层介于语言处理层与数据存储之间它向上提供单元组接口,即导航式的一次一个元组的存取操作向下则以系统缓冲区的存储器接口作为实现基础
(1)提供一次一个元组的查找、插入、删除、修改等基本操作
(2)提供元组查找所循的存取路径与对存取路径的保护操作如对索引记录的查找、插入、删除、修改
(3)对记录与存取路径的封锁、解锁操作
(4)日志文件的登记与读取操作
(5)辅助操作如扫描、合并/排序,其操作对象有关系、有序表、索引等为了完成上述功能,通常把存取层又划分为若干功能子系统加以实现国缓冲区管理数据存取层的下面是数据存储层(简称存储层)存储层的要紧功能是存储管理包含缓冲区管理、内外存交换、外存管理等其中缓冲管理是最要紧的存储层向存取层提供的接口是由定长页面构成的系统缓冲区系统缓冲区的设立是出于两方面的原因一是它把存储层以上各系统成分与实在的外存设备隔离外存设备的变更不可能影响其它系统成分,使DBMS具有设备独立性二是提高存取效率DBMS利用系统缓冲区滞留数据当存取层需要读取数据时存储子系统首先到系统缓冲区中查找只有当缓冲区不存在该数据时才真正从外存读入该数据所在的页面;当存取层写回一元组到数据库中时,存储子系统并不把它立即写回外存,仅把该元组所在的缓冲区页面作•标志,表示能够释放只有当该用户事务结束或者结束缓冲区已满需要调入新页时才按•定的淘汰策略把缓冲区中已有释放标志的页面写回外存这样能够减少内外存交换的次数,提高存取效率系统缓冲区可由内存或者虚存构成由于内存空间紧张,缓冲区的大小、缓冲区内存与虚存部分的比例要精心设计针对不一致的应用与环境按一定的模型进行调整既不能让缓冲区占据太大内存空间,也不能因空间太小而频频缺页调页,造成“抖动”,影响效率缓冲区由操纵信息与若干定长页面构成缓冲区管理模块向上层提供的操作是缓冲区的读(READBUF)、写(WRITEBUF)缓冲区内部的管理操作有:查找页、申请页、淘汰页缓冲区管理调用OS的操作有:读(READ)、亨(WEITE)数据库是大量数据的有结构的综合性的集合,如何将这样一个庞大的数据集合以最优的形式组织起来存放在外存上是一个非常重要的问题所谓“优”应包含两方面:一是存储效率高,节约存储空间;二是读取效率高,速度快、代价小数据库实现的基础是文件,对数据库的任何操作最终要转化为对文件的操作因此在数据库物理组织中,基本的问题是如何设计文件组织或者者利用操作系统提供的基本的文件组织方法但是,在数据库中表与文件不必具有一一对应关系这与操作系统中不一样DBMS能够建立只能自己读写的文件,在其中存储多个表的数据数据系统是文件系统的进展文件系统中每个文件存储同质实体的数据,各文件是孤立的,没有表达实体之间的联系数据库系统中数据的物理组织务必表达实体之间的联系,支持数据库的逻辑结构各类数据模型因此数据库中要存储4个方面的数据:数据描述即数据外模式、模式、内模式数据本身数据之间的联系存取路径这4个方面的数据内容都要使用一定的文件组织方式组织、存储起来
(1)数据字典(DD)的组织有关数据的描述存储在数据库的数据字典中数据字典的特点是数据量比较小(与数据本身比)、使用频繁,由于任何数据库操作都要参照数据字典的内容数据字典在网状、层次数据中常常用一个特殊的文件来组织所有关于数据的描述信息存放在一个文件中
(2)数据及数据联系的组织关于数据自身的组织,DBMS能够根据处理的要求自己设计文件结构,也能够从操作系统提供的文件结构中选择合适的加以实现目前,操作系统提供的常用文件结构有:顺序文件、索引文件、索引顺序文件、HASH文件(杂凑文件)与B树类文件等等数据库中数据组织与数据之间联系是紧密结合的在数据的组织与存储中务必直接或者间接、显式或者隐含地表达数据之间的联系,这是数据库物理组织中要紧考虑与设计的内容关系数据库中实现了数据表示的单一性实体及实体之间的联系都用一种数据结构“表”来表示在数据库的物理组织中,每•个表通常能够对应••种文件结构因此数据与数据之间的联系两者组织方式相同
(3)存取路径的组织关系数据库中,存取路径与数据是分离的,对用户是隐蔽的存取路径能够动态建立、删除存取路径的物理组织通常使用B树类文件结构与HASH文件结构在一个关系上能够建立若干个索引有的系统支持组合属性索引,即在两个或者两个以上的属性上建立索引索引能够由用户用CRETRINDEX语句建立,用DROPINDEX语句删除在执行查询时,DBMS查询优化模块也会根据优化策略自动地建立索引,以提高查询效率由此可见,关系数据库中存取路径的建立是十分灵活的
十、FoxPro数据库管理系统介绍FoxPro简介FoxPro
2.5是Microsoft公司1993年推出的产品1993年1月公布了FoxPro
2.5forDOS与FoxPro
2.5forwindows两个版本,成为目前微机上最快、使用最广泛的数据库管理系统.FoxPro
2.5的新特点:增强32位产品的特性;跨平台的开发;新增或者增强的命令与函数;新的生成器命令;新的系统内存变量由于FoxProforDOS与FoxProforwindows相互兼容下面就只简单地介绍一下FoxPro-forwindows的一些功能FoxProforwindows的常用工具集(菜单生成器,屏幕生成器,报表生成器)充分发挥Win-do*s的图形能力这些能力包含图象显示、字模使用与Windows元素与操纵的应用,还能够用Bitmaps作为屏幕的背景FoxPro的附属工具传递器(Transporter)支持FoxPro
2.5forDOS与它的DOS环境下的姐妹产品之间的交叉平台上的开发FoxProforDOS程序在大多数情况下能够不必修改而直接在FoxProforwindows环境下运行特殊的Rushmore查询优化技术支持复杂的检索并大幅度提高了运行速度,图形环境并不影响FoxPro底层的速度FoxPro加入了Windows的一些动态功能,如OLE(对象连接与嵌入)、DDE(动态数据交换)、DLL(动态链接库)与Windows打印驱动程序等FoxProforwindows包含字型字体操纵、拖放式编辑与块功能Windows的全范围的各类字模(Font)在FoxPro
2.5中都是有效的,包含TrueType字模,这些字模对所有的FoxPro的工具与程序语言都是支持的FoxPro提供联机帮助文件发行工具箱(Distributionkit)提供流水过程,提供安装与启动例程FoxPro适用于多用户及网络环境FoxPro的基本原理FoxPro数据库是表的集合,这些表协同工作,一起来完成某项任务这里的表是一种列表,在该表中的每项叫做一个记录,而每个记录又由许多字段构成,字段是数据库的最小数据单位在FoxPro中支持八种数据类型的字段
(1)FoxPro的数据类型
①字符型字段
②数字型字段
③日期型字段
④逻辑型字段
⑤备注字段
⑥通用字段
⑦图形类型字段
⑧浮点数值字段
(2)工作区在FoxPro中,构成某个数据库的各类表能够打开在多达255个工作区中,能够用编号1到255引用工作区,也可按A〜J与11〜255引用工作区在某一时刻每个工作区只能容纳一张表在工作区中打开表后,工作区与表实际上成了同义语,能够通过表的别名(有的时候就是该表的名),来引用或者选择工作区别名可在打开表时指定通常选择一个工作区为当前工作区,该工作区中打开的表,即为FoxPro操作的缺省表FoxPro的缺省操作都是针对该表的
(3)View窗口该窗口是用来查看数据库,而且能够显示在各个工作区打开的表的别名,也可通过Browse按钮查看这个表的内容此外,View窗U也同意用户输入数据,认真观察表内容,创建与修改单个的表;在主菜单中选Windows/View后即可进入View窗口Setup按钮可修改表的结构Browse按钮可浏览当前工作区(Workareas中以亮条标出)中的表内容Open按钮可在当前工作区中打开一已存在的表或者创建一新表Close按钮则关闭当前工作区中的表Relation按钮可使当前工作区的表与其它表有关联用户常常需要同时打开两个或者更多的表,按照某种特殊的顺序来显示表的内容利用View文件能够储存用户在各工作区打开的表的信息用户想打开所有这些表时只须打开用户存的View文件,再进入View窗口即可方法如下保持View窗口活动,在各工作区内打开所需的表,然后选择File/Savcas…菜单选项,Saveas菜单即会出现,在SaveViewas栏中添入文件名,之后确认Save即可产生用户的View文件
(4)表的互斥与共享打开的表要么互斥(Exclusive)使用,要么共享(Shared)使用假如互斥使用,那么在关闭该表之前任何其他人都不得再重新打开该表缺省状态下FoxPro打开的表是互斥使用的要命名打开的表能共享使用,务必加载DOSSHARE程序工作在不需SHARE的网络上则不用加载同时要在Command窗口中敲入SETEXCLUSIVEOFF那么后续打开的所有表都能共享使用,己经打开的表依然互斥使用在USE命令后加入SHARED使用户能够替换对指定文件的EXCLUSIVE设置也可从Yie*窗口中打开表用于共享使用,这能够取消File/open对话框中Exclusive复选框的标记而实现某些FoxPro命令需要互斥使用表,如DELETETAGINDEXON…TAGINSERT[BLANK]MODIFYSTRUCTUREPACKREINDEXZAP等在表被打开用于共享之后,务必处理记录争用的问题但目前读者还只需要明白在交互地增加与修改的据时,FoxPro为用户处理大多数这种问题注意:假如用户保证EXCLUSIVE已关闭(SETOFF)但状态栏仍旧显示表是EXCLU-SIVE的话,那么或者许SHARE程序没有加载,或者许表是在EXCLUSIVE打开(SETON)状态时打开的,也可能所使用的表刚刚创建用户创建表打开时是互斥使用的,直到关闭该表;但下一次打开该表时,可使表用于共享
(5)Browse窗口Browse窗口是FoxPro功能最强、最富生机的特征之一在Browse窗口中不仅能够浏览表的内容,还能够向表中增加记录、删除记录、修改字段等进入Browse窗口有多种方法,既可从主菜单中Database/Browsc进入,也可从View窗口中的Browse按钮进入,还能够在查询时进入View窗口在FoxPro中是最有用的窗口之一用户应在进入FoxPro后,就打开View窗口,这样会给用户带来许多方便事实上,FoxPro的所有表,都是以单独的文件存放在磁盘中的,数据库实质上只是一个目录名而已FoxPro对文件的保护比较弱,有的时候拷贝表时,会丢失某些信息,以至于到另外一台机器上不能打开,这时就应重新拷贝,把所有有关的文件,如FPT、IDX等文件一并拷走这样数据库才能在另外一台机器上安全地运行.使用FoxPro数据库
(1)建立数据库建立数据库要决定需存储在数据库中的信息的结构,即数据库的结构
(2)RQBE窗口尽管使用Browse能够浏览表但毕竟只能做•些简单的检索,为此FoxPro提供了RQBE(RelationalQueryByExample)RQBE是一种交互式工具,避免了写复杂检索程序的烦恼,能够很方便地检索数据RQBE的功能很强,RQBE是用户与SQLSELECT命令间的接口,FoxTro支持SQL另外,RQBE能够把语句储存在.QPR文件中
(3)报表的设计与制作使用RQBE可制作出报表,还能够利用FoxPro功能强大的ReportWriter来制作一张符合需要的报表.创建应用程序
(1)建立数据库编写数据库应用程序的第一步是确定该系统务必使用的数据库文件与索引
(2)菜单生成器FoxPro为用户提供了很简洁的丰富的菜单编程命令,但这些繁杂的命令很容易令人厌烦假如使用菜单生成器,将会使构造菜单系统变得容易许多菜单生成器的启动有两种方式
(1)通过在Command窗口键入Crealemenu[〈文件名〉]键入回车即可
(2)通过系统菜单启动
(3)屏幕生成器大多的应用程序都是围绕着用户界面屏幕来建立的有些屏幕用来录入或者编辑数据,有些屏幕用以显示信息,有些屏幕用于表的保护等等FoxPro的屏幕生成器就是用来创建大多数上述屏幕的工具在各类界面设计中,输入屏幕算是比较繁而且乂很常用的界面屏幕了
(4)项目管理器项目管理器要紧有下列两个作用
①保护项目使用的所有文件
②建立应用程序项目管理器具有优秀编程工具的特点,它为用户做了许多工作,同时易于使用能够通过选择FileNowProject、New或者在命令窗口键入Croatproject命令来创建一个新的项目然后使用Add按钮开始创建该项目中的新文件或者将已有的文件添加到该项目中首先,将主文件添加到项目中由此,项目管理器就能够沿着程序的执行步骤(即嵌入在文件中的函数与过程调用)来一步步跟踪,直到找到当前项目所需的所有文件为止生成项目文件非常容易,在项目管理器窗口中按下Build按钮,选择Re-buildprojectBuildApplication或者BuildExecutable选项另外,项目管理器能方便的发现与修改编译错误应该指出,一个项目并不一定要生成应用程序;而一个完整的“应用程序”能够包含若干个项目与若干个生成类因此,逻辑上的解决办法是将应用程序拆成许多的项目,这就是应用程序的分级设计方法
十一、ORACLE数据库管理系统介绍L0RACLEWO7]可移植性ORACLE使用C语言开发而成,故产品与硬件与操作系统具有很强的独立性从大型机到微机上都可运行ORACLE的产品可在UNIX、DOS、Windows等操作系统上运行可兼容性由于使用了国际标准的数据查询语言SQL与IBM的SQL/DS、DB2等均兼容并提供读取其它数据库文件的间接方法可联结性关于不一致通信协议,不一致机型及不一致操作系统构成的网络也能够运行ORA-CLE数据库产品ORACLE的总体结构ORACLE的文件结构一个ORACLE数据库系统包含下列5类文件:ORACLERDBMS的代码文件数据文件一个数据库可有一个或者多个数据文件,每个数据文件能够存有一个或者多个表、视图、索引等信息日志文件须有两个或者两个以上,用来记录所有数据库的变化,用于数据库的恢复操纵文件能够有备份,使用多个备份操纵文件的是为了防止操纵文件的损坏参数文件含有数据库例程起时所需的配置参数ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)与一组程序全程区(PGA)SGA(SystemGlobalArea)包含数据库缓冲区,日志缓冲区及共享区域PGA(ProgramGlobalArea)是每一个Server进程有一个一个Server进程起动时,就为其分配一个PGA区,以存放数据及操纵信息ORACLE的进程结构ORACLE包含三类进程
①用户进程用来执行用户应用程序的
②服务进程处理与之相连的一组用户进程的请求
③后台进程ORACLE为每一个数据库例程创建•组后台进程,它为所有的用户进程服务,其中包含:DBWRDatabaseWriter进程负责把己修改的数据块从数据库缓冲区写到数据库中LGWRLogWriter进程,负责把日志从SGA中的缓冲区中写到日志文件中SMONSystemMoniter进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间PMONProcessMoniter进程,当一用户进程特殊结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源ARCHARCHIVER进程每当联机口志文件写满时,该进程将其拷贝到归档存储设备上另外还包含分布式DB中事务恢复进程RECO与对服务进程与用户牲程进行匹配的Dnnn进程等ORACLE的逻辑结构构成ORACLE的数据库的逻辑结构包含1表空间25种类型的段segment
①数据段;
②索引段;
③滚回rollbock段;
④临时段;
⑤自举bootstrap段段的分配单位叫范围Extent表空间Tablespace一个数据库划分成的若干逻辑部分称之表空间一个数据库能够有一个或者多个表空间,初始的表空间命名为SYSTEM每一个逻辑表空间对应于一个或者多个物理文件DBA使用表空间做下列工作:操纵数据库对象,如表、索引与临时段的空间分配为数据库用户设置空间配额利用个别表空间的在线或者离线,操纵数据的可用性后备或者恢夏数据通过分配空间,以改进性能在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字与位置SYSTEM表空间总是在线的,像其它表空间一样,能够通过增加新的数据库文件来扩大一个表空间可包含许多表与索引但一个表与索引不能跨越表空间,可跨越构成表空间的文件在DB的打开的情况下,DBA利用ALTERTABLESPACE语句,能够实施表空间的在线或者离线SYSTEM表空间务必在线表空间离线有下列原因:通常为了使部分数据库不能使用,而同意正常存取数据库其余部分执行表空间离线备份一个离线的表空间,不能被应用用户读或者编辑能够增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大或者分配空间给某个应用使用ALFERTABLESPACEADDFILE语句将另一个数据文件加入到已存在表空间中使用CREATETABLESPACE语句可建立一个新的表空间段segment表空间中的全部数据存储在以段划分的数据库空间中一个段是分配给数据库用于数据存储的范围的集合数据能够是表、索引或者RDBMS所需要的临时数据段是表空间的下一个逻辑存储的级别一个段不能跨越一个表空间,但可跨越表空间内的文件一个数据库最多需要五种段类型数据段一个包含一个表或者聚集的全部数据,一个表或者聚集总有一个单个数据段索引段一个索引段包含对一个表或者聚集建立的一个索引的全部索引数据一个表能够有一个、多个或者者没有索引段,取决于它所拥有的索引个数一个聚集务必至少有一个索引段,即在聚集码上建立聚集索引回滚段每个DB有一个或者多个回滚段一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作回滚段用于事务操纵与恢复临时段在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称之临时段自举段自举段在SYSTEM表空间中,在数据库建立时建立:它包含数据字典定义,在数据库打开时装入.用户数据库对象由用户建立的对象驻留在表空间中,含有真正的数据%数据库对象有表、视图、聚集、索引、伪列与序号生成器1聚集Cluster聚集是存储数据的一种可选择的方法聚集包含存储在一起的一组表,它们共享公共列并经常一起使用由于内容有关同时物理地存储在一起,存取时间得到改进,存储空间能够减少聚集是一种优化措施聚集对性能的改进,依靠于数据的分布与SQL操作的内容特别是使用聚集对连接非常有利能够明显地提高连接的速度建立聚集命令的基本格式:SQLCREATECLUSTER聚集名〉列定义;利用聚集建立表命令基本格式:SQLCREATETABLE〈新表名〉列定义[,…]CLUSTER〈聚集名聚集列;在聚集码上务必建立一个聚集索引,关于每一数据块上每个聚集码值有一索引项这个索引务必在DML语句对聚集表操作前建立建立索引的语句是:CREATEINDEX索引名ONCLUSTER聚集名2序号生成器序号SEQUENCE生成器为表中的单列或者多列生成顺序号利用序号可自动地生成唯一主码使用SQL语句定义序号,给出一些信息如序号名、是升序或者降序、每个序号间的间隔与其它信息所有序号存储在数据字典表中所有序号定义存储在数据字典的SEQUENCE表中用户能够通过字典视图USER-SE-QUENCES、ALL-SEQUENCES与DBA-SEQUENCES查询与存取建立序号生成器的语句是:CREATESEQUENCE序号生成器名其它选项一旦序号生成器S被定义可用S.Currval来引用S序号生成器的当前值用S.nextval产生下一个新的序号并加以引用3伪列伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或者修改.数据字典数据字典ORACLERDBMS最重要的部分之一数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南它可提供下列信息()RACLE用户的用户名;每个用户被授予的权限与角色;实体的名字与定义;完整性约束为数据库实体分配的空间;通用的数据库结构;审计信息;触发子等的存储数据字典是以表与视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典数据字典在DB建立时建立每当DB进入操作,数据字典就由ORACLERDBMS负责修改数据库建立时有两个默认DBA用户SYS、SYSTEMSYS持有基本表中的数据下面列出的是一些常用的表或者视图的名称
(1)DTAB描述了组或者数据字典的所有表TAB用户建的所有基本表、视图与同义词COL用户创建基本表的所有列的信息SYNONYMS用户可存取的同义名词、专用名与公用名CATALOG用户可存取的表、视图、同义词、序列,CONSTRAINTS用户可存取的约束INDEXES用户可存取的表与聚集的序列OBJECTS用户可存取的对象TANLERS用户可存取的表USERS查看当前全部用户VIEWS查看用户可存取的视图SYSTABAUTH用户对数据对象的使用权限能够用SQLSELECT*FROM〈字典表名或者视图名〉WHERE〈条件〉来读取有关信息能够用SQLDESCRIBE〈表名)来查看表的结构定义但是数据库字典的结构不可改用DESCRIBE命令还能够查看视图及过程的定义
6.ORACLE的SQL、PL/SQL与SQL*PLUS作为ORACLE数据库核心的SQL语言是ANSI与ISO的标准SQL的扩充用来存储、检索与保护数据库中的信息并操纵对数据库的存取事务由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的这就使得单条的SQL语句使用方便,功能强大用户只需说明操作目的,不必关心具体操作的实现方法但在实际数据库应用开发中,往往要根据前一步对数据库操作的结果或者上一个事务提交的情况来确定下一步的操作故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能PL/SQL可支持变量与常量的使用
十二、分布式数据库^数据库的九类分布式数据库,是根据它的管理系统(DistributedDBMS-DDBMS)进行分类的对DDBMS能够从四个不一致角度来分类
(1)从构成的方式,可分为同构型与异构型两类所谓同构型,是指所有节点的局部DBMS都支持同一数据模式与数据语言为使每个节点都掌握彼此的数据情况,需要增加网络数据库管理系统(NDBMS),各节点之间通过通信网络形成统一的整体同构型的DDBMS关于并发操纵、冗余数据的一致性等问题容易处理,但建库的代价比较大所谓异构型系统,是指在分布环境中各节点上的数据模型与数据语言都可能不一致异构比同构型系统实现起来要困难一些,为了在两个节点上的局部DBMS之间进行信息交换,就要对数据模式与数据语言进行转换与映射工作
(2)按操纵方式,能够分为集中式与分布式所谓集中操纵的DDBM指所有事务都由一台叫做中心计算机的节点进行管理分布操纵的DDBMS是指每个节点都保持DDBMS的一个副本来监督与管理各节点及系统事务,它将网络目录作为用户数据库存放于局部DB之中
(3)从数据分布的角度,DDBMS又可分为分割式、部分重复式与完全重匆:式所谓分割式,是指每个节点只存储DDB数据实体的部分子集,各节点的副本互不重叠部分重复式,是指每个节点都存储DDB数据实体的任意子集完全重复式,是指每个节点都存储整个DDB数据实体的副本也有文献把完全重复式称之复制式
(4)从用户的角度,DDBM可分为总体型与多重型
2.分布式数据库与单一数据库的比较
(1)集中操纵在一个企业或者单位范围内的信息资源上,对信息提供集中式操纵的可能性,被认为是使用数据库技术的最大动力之一,由于集中式数据库是根据信息系统的演变与集中处理信息的需求开发出来的
(2)数据独立性数据独立性也曾经被认为是使用数据库方法的要紧动力之一实际匕数据独立性意味着数据的实际结构对应用程序来讲是透明的,应用程序员只需要利用数据逻辑结构,即所谓概念模式来编写程序数据独立性的要紧优点是应用不受数据存储的物理结构变化的影响在分布式数据库中,数据的独立性具有与传统的集中式数据同等的重要性,然而,一种崭新概念加进了数据独立性的通常概念之中,这就是分布式透明性所谓分布式透明性,指的是在编写程序时就好象数据没有被分布一样这样,不管把数据存储到甲地或者乙地,或者者把数据从一个节点移到另一个节点,都不可能影响程序执行的正确性与有效性,但是,务必指出,执行速度或者者效率却受到了影响众所周知,通过具有不一致形式的数据描述与它们之间的映射的多层体系结构,曾为传点在E-R图中a长方形框表示实体集,框内写上实体型的名称b用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来c用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联系的种类假如联系也具有属性则把属性框与菱形框也用无向边连接上
3.三种要紧的数据模型实际DBMS所支持的数据模型要紧有三种层次模型HierarchicalMode1网状模型NetworkMode1关系模型RelationalModel其中,关系模型是当前DBMS所支持的数据模型的主流90年代运行的DBMS几乎都是基于关系模型的层次模型与网状模型统称之非关系模型非关系模型的结构能够与图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用但是最近,层次模型在研究面向对象的DBMS中已得到重视在关系模型中,数据在用户的观点中或者在用户视图中的逻辑结构是一张二维表Table•关系Relation对应于平常讲的一张表•元组Tuple表中的一行属性Attribute表中的一列称之一个属性,给每一列起一个名,称之属性名这一列或者这个属性所有可能取的值的集合称之这个属性的值域Domain值域中的一个元素叫做这个属性的值主关键字PrimaryKeyAttribute或者PrimaryKey是指能唯一标识一个元组的一个或者一组属性分量Attributevalue是指元组中的一个属性值关系模式RelationalSchema是对关系的描述,通常用关系名属性名1属性名2…,属性名n来表示同层次模型与网状模型相比较,关系模型具有下列特点1概念单一在关系模型中,不管是实体还是实体之间的联系都用关系来表示在关系模型中,在用户的观点中,数据的逻辑结构就是表,也只有这唯一的概念在非关系模型中,用户要区分记录型与记录型之间的联系两个概念;当环境复杂时,数据结构特殊复杂,难以掌握而关系模型,由于概念单一,能够变复杂为直观、简单易学易用2规范化所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求这些条件被称之规范条件关于关系,一个最基本的规范条件是,要求关系中的每一个属性或者分量均是不可分的数据项;也就是说不同意表中有表,表是不可嵌套的3在关系模型中,用户对数据的操作的输入与输出都是表,也就是说,用户通过操作旧表而得到一张新表总之,关系模型概念简单,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便于DBMS的实现基于关系的DBMS简化了应用程序员的工作,便于数据库应用系统的设计与保护故此,关系模型自诞生以后就得到了迅速的进展,成为应用最为广泛的、唯一的数据模型
二、数据库系统的结构
1.数据库系统的三级模式结构数据库管理系统的三级模式结构由外模式、模式与内模式构成外模式externalschema或者子模式subschema或者用户模式userschema是指数据库用户所看到的数据结构,是用户看到的数据视图模式schema或者逻辑模式logicschema是数据库中对全体数据的逻辑结构与特性的描述,是所有用户所见到的数据视图的总与外模式是模式的一部分内模式internalschema或者存储模式storageschema或者物理模式physicalschema是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构与存取方式的描述模式描述的是数据的全局的逻辑结构,决定了DBMS的功能外模式涉及的仅是局部的逻辑结构是模式的子集,是对模式的调用数据库系统的三级模式是对数据进行三个层次抽象的工具通过三级模式,把对数据的具体组织留给DBMS来完成,使得用户能在高层次1处理数据的逻辑结构,而不必关心数据的物理结构为了实现这三个层次这间的联系,DBMS在沟通三级模式中提供了两个映象:外模式-模式映象模式-内模式映象1模式模式规定了数据库中全部数据的一个逻辑表示或者描述形式模式既不一致于内模式,也不一致于外模式它比内模式抽象,不涉及数据的物理结构与存储介质它与具体的应用程序或者高级语言无关.2外模式外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示3内模式内模式是全部数据库的内部表示或者底层描述,是用来定义数据的物理结构与存取方式的4二级映象关于同一个模式,能够有任意多个外模式外模式-模式的映象定义了某个外模式与模式之间的对应关系这些映象的定义通常包含在各自的外模式中当模式改变时,外模式-模式的映象要做相应的改变,以保证外模式的不变性这是数据库管理员DBA的责任模式-内模式的映象定义了数据逻辑结构与存储结构之间的对应关系比如,字段的内部表示等当数据库的存储结构改变时,模式-内模式的映象也须做相应的修改,以使得模式保持不变性这仍是DBA的责任正是由于上述二级映象的功能及其自动实现,使得数据库系统中的数据具有较高的逻辑独立性与物理独立性,从而大大地方■便了用户的使用5概念模式与模式ANSI研究组于1975年2月提出一个临时报告1978年提出一个最终报告,称之为AN一S1/SPARC报告,简称之SPARC报告SPARC报告中指出,数据库管理系统应具有三级模式的结构,即概念模式、统的数据库提供了独立性,为此目的,开发出了概念模式、存储模式与外部模式等概念利用类似的方法,我们能够通过使用新层次与新模式,在分布式数据库中可获得分布式透明性分布式透明性是分布式数据库系统的要紧目标之一
(3)降低冗余在传统数据库系统中,尽可能地降低冗余度是它的要紧目标之一这有两个原因首先,通过只用一个正本,能够自动地避免同一逻辑数据中几个副本之间的不一致性其次,用降低冗余度来节约存储空间通过共享数据的方式,即通过同意几个应用访问同一文件与记录能够达到降低冗余度的目的但是,在分布式数据库中,把数据的冗余看成是所需要的特性这有几个原因首先,假如在需要冗余的所有节点都复制数据,则能够增加应用的局部性其次,能够增加分布式数据库系统的有效性与可靠性由于,假如复制数据,则一个节点上的故障不可能停止其它节点上应用的执行在通常情况下,为传统集中式环境所规定的克服冗余的原因,在分布式环境中仍是有效的因此,在分布式数据库中,对冗余度的评价要选择一种折史方案,不能一概而论通常地说,复制数据项的方便程度是随着应用所执行的检索访问与更新访问的比率提高而增加数据复制便利程度的提高,是由于具有一个项目多个副本,检索能够在任一副本上进行,而更新却务必在所有副本上一致地进行
(4)有效访问更杂的访问结构,如辅助索引,文件间的链接等,都是传统数据库所使用的重要技术,对这些结构的支持是数据库管理系统DBMS极为重要的构成部分提供复杂访问结构的原因,是为了提高存取数据的效率
(5)完整性、恢复与并发操纵在数据库理论中,尽管完整性、恢复与并发操纵等所涉及的问题是不一致的,但它们之间相互联系还是很多的,通常来说,完整性、恢复与并发操纵等问题的解决,在很大程度上取决于所提供的事务的结构形式
(6)保密性与安全性在传统数据库中,具有集中式操纵的数据库管理员能保证只执行那些授权的数据访问但应当指出,集中式数据库本身比过去处理单独文件的旧方法更难于实现数据的保密性与安全性在分布式数据库中,局部数据库管理员面临的一些要紧问题,与传统数据库管理员面临的问题一样但是,分布式数据库的两个特殊方面值得一提:首先,在具有极高度节点自主权的分布式数据库中,局部数据的拥有者认为比较安全,由于他们能自主地实施自己的安全措施,以履行集中式数据库管理员的职责其次,安全性问题,通常是分布式系统的固有问题,因分布式系统是通过通信网络来实现分布式操纵的,而通信网络本身就在保护数据的安全性与保密性方面存在着弱点通过网络偷看、乱改别人的数据难以完全避免
3.分布式数据库管理系统(DDB菽-在目前分析DDBUS的性能时,应该把商品化系统与先进的研究样机区分开来,但是能够预料,某些先进的研究样机中试验的特性,可能会应用到将来的商品化系统中去的本节简要叙述分布式数据库管理系统的基本性能,并就用什么样的方法使得分布式数据库这个新技术商品化的问题谈一点看法从目前看,世界上几各已经商品化的分布式系统是由集中式数据库管理系统的销售厂商开发出来的这些分布式数据库管理系统,包含扩充集中式DBMS时所附加的部件分布式功能的扩充是通过装配在计算机网络中不一致节点上的DBMS之间所提供的通信与合作来实现的在这种情况下建立分布式数据库通常所务必的软件部分是
(1)数据库管理部分(DB);
(2)数据通信部分(DC);
(3)数据字典(DD)它能用来表示有关网络中数据分布的信息;
(4)分布式数据库部分(DDB)|工网络ORACLE的使用除了卜.列有用程序以外,其它ORACLE有用程序与软件工具均能够通过SQL*NET访问远程结点的ORACLE系统I0RAJI仅供本地使用另外,用户通过各类语言编写的应用程序也能够进行远程存取用户远程存取的方式非常简单,仅需要在“用户名/口令”(ORACLE的合法用户)后面附上结点信息
十四、面向对象方法与面向对象数据库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提供了同时在现实世界与机器世界进行系统分析、设计与实现的统一的方法N程序设计方法学随着软件系统规模的扩大与复杂性的增加,软件的开销也惊人地增加「,而软件的可靠性与可保护性却明显地下降了为此,人们惊呼软件危机产生软件危机的根本原因在于传统的冯•诺依曼机VonNeumannMachine的结构与人们求解问题的方法的不一致性这种不一致性要紧表现在下列几个方面1语言的鸿沟;2程序设计的鸿沟;3VonNeumann机的鸿沟语言的鸿沟是形成软件危机的要紧原因之一从目前看,面向对象的语言在缓解软件危机方面起到了很大的作用取得了前所未有的积极效果.面向对象的程序设计方法|经验告诉我们:在软件系统中,“过程”或者“操作”是不稳固的、多变的,而“数据结构”或者“对象”却是相对稳固多了因此,传统的以过程为中心而设计的软件的可重用性差;而以数据结构或者对象为中心而设计的软件的可重用性较好面向对象的程序设计方法以数据结构或者对象为中心,力求问题在现实世界与机器世界中的一致性在使用00M进行程序设计时,首先进行的是面向对象的分析ObjectOrientedAnalysis其任务是熟悉问题所涉及的对象、对象间的关系,然后在现实世界中构造该问题的对象模型,以反映所要解决的“实质问题”然后进行面向对象的设计ObjectOrientedDesign即设计软件的对象模型根据软件开发环境的功能,把问题的对象模型从现实世界过渡到机器世界在软件系统内设计出各个对象、对象间的关系如继承关系,对象间的通信方式如消息模式等等总之,在该阶段应明确各个对象应做些什么及其关系面向对象的实现ObjectOrientedImplementation是指软件功能的具体实现,即怎么做的实现其中包含对象内部功能的实现、确定系统的用户接口在实际开发一个系统时,上述三个阶段务必有机地结合在一起现在提倡面向对象的软件开发方法,并进一步规范作还开发了一系列00M的软件工具与软件环境,以支持软件自动生成.面向对象的方法的基本概念与特征|实质上,软件是问题及其求解方法的一种表达形式显然,假如软件能直接自然地表达求解方法,则软件不仅易于懂得,而且也具有较高可靠性与可保护性假如能按照人们通常的思维方式,在机器世界里建立问题的模型,则能够提高软件的模块化与重用的可能性面向对象方法的基本原则是:按照人们在现实世界中的通常的思维方式建立问题在机器世界的模型,设计尽可能自然地表现求解方法的软件在00中,对象object与消息传递Messagepassing分别作为表达事物及事物间相互联系的概念类class与继承inheritance作为适合人们通常思维方式的描述机制方法method同意各类操作作川于某类对象上这种集对象、类、消息、继承与方法于一体的00M的基本点在于对象的封装encapsulation与继承通过封装能将对象的定义与事实上现分开;通过继承能表达类与类间的关系,并由此带来了动态连接dynamicbinding与实体的多态性polymorphisim从而构成了00M的基本特征1对象为了使用计算机求解问题,现实世界的对象务必表示成计算机内部的概念,即机器世界的对象简称机器对象,或者对象为此,“对象”有在两个不一致世界的不一致含义,能够从下文中区分开来从存储角度来看,机器对象占有一块存储空间,其中有数据也有方法从机器实现机制来看,机器对象中私有数据表示了对象的状态,该对象的状态只能由私有的方法来改变它每当需要对象来完成一定处理工作时,只能由其它对象向该对•象发送消息,本对象响应消息后按照消息模式找出匹配的方法,并执行该方法,方法定义了该对象上的操作2消息与方法程序的执行是靠在对象间传递消息来完成的7发送消息的对象称之发送者,接收消息的对象称之接收者消息中仅包含发送者的要求,它只告诉接收者需要完成什么处理,但并不指示接收者应如何完成这些处理消息完全由接收者解释,并决定完成所需的处理的方式一个对象能够接收不一致形式、不一致内容的多个消息;相同形式的消息能够发往不一致的对象不一致的对•象对形式相同的消息能够有不一致的解释,因而能够作出不一致的反应这里,反应并不是必需的这与子程序的调用/返回有明显的不一致把全部对象分成各类对象表,每个类都定义一组所谓“方法”方法实际上是同意作用于该类对象上的各类操作当一个面向对象的程序在运行期间,通常要做三件事1根据需要创建对象;2从一个对象或者用户向另一个对象传递消息;3若不再需要该对象时,应删除它,并回收它所占用的存储单元3类与类的层次在面向对象的程序设计中,对象是程序的基本单位相似的对象,能够像传统程序设计语言中的变量与类型关系一样,归并到一类class中去程序员只需定义一个类对象,就能够得到若干实例instance作为能够使用的对象具体地说,类由方法与数据构成,是关于一类对象的性质的描述它包含外部特性与内部特性两个方面通过描述消息模式及其相应的处理能力来定义对象的外部特性通过描述内部状态的表现形式及固有的处理能力的实现来定义对象的内部实现特性对象是在执行过程中,根据对象所属的类,动态地生成的一个类能够生成多个不一致的对象同一类对象具有相同的特性一个对象的内部状态只能由其自身来修改,任何别的地象都不可能修改它因此,同一个类的对象,尽管在内部状态的表现形式上相同,但它们能够有不一致的内部状态,故此这些对象并不完全一模一样一个类的上层能够有超类superclass下层能够有子类subclass这样形成了一种类的层次结构层次结构的一个重要特点是继承性,一个类能够直接或者间接地继承其超类的全部描述继承性具有传递性一个类能够有多个子类,也能够有多个超类抽象类abstractclass是一种不能建立实例的类抽象类将有关的类组合在一起,提供了一个公共的根,其它一些子类从这个根派生出来通常一个抽象类只描述了这个类的有关的操作接口或者者操作的部分实现;完整的实现则被留给一个或者几个子类,抽象类通常用于定义一种协议或者概念
(4)继承性继承性(inherintance)是自动地共享子类、超类与对象中的方法与数据的•种机制假如没有继承性,不一致类中的对象中的数据与方法就可能出现大量的重夏继承性比较自然地表达了对象间的联系
(5)封装性封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,对象内部的信息对用户是隐蔽的.封装的目的是使对象的使用者与对象的设计者分开,使用者不必明白实现的具体细节,只须按设计者的要求来访问对象,这样方便于系统的集成封装是一种强有力的系统集成手段封装与类说明有关一个类的每一个实例都是一个单独的封装(或者组件)显式地把对象的规格说明(specification)与对象的实现分开是面向对象的一大特色封装本身即是一个模块,把对象的定义模块与实现模块分开,从而使得保护与修改变得方便
(6)多态性所谓多态(polymorphic)即一个名字能够具有多种语义多态与动态类型与静态类型有关动态类型是指在执行期间能够改变的类型静态类型是在程序文本中声明时确定下来的类型在面向对象的系统中,利用重名这样多义性不可能带来混乱同时为需求分析与设计带来了好处国动态聚束|聚束(binding)事实上并不是一个新概念一个程序经编译到连接成为可运行的目标代码,就是将可执行代码聚束在•起用传统语言写的程序在运行之前即可聚束,故此称之为静态聚束(staticbinding)而面向对象语言则在程序运行时可发生聚束,故称之为动态聚束(dynamicbinding)o动态聚束增加了程序的简单性与可扩充性,使程序增删自如,不易出错但效率略低应该指出,静态聚束运行效率高,但修改保护时工作量大
6.面向对象的系统分析方法系统分析过程就是提取一个系统的需求过程,即是指为了满足用户的需求,系统务必做什么,而不是指系统如何实现系统分析通常是一个需求文档开始点,同用户进行一系列的讨论为开端通常来说,参加制定文档的人应包含系统的最终用户、问题域专家、系统的开发者与其它感兴趣的人在过去的10年中,已经在系统分析中使用了功能分解法、数据流法、信息模拟法最近研究了面向对象分析(00A)方法F面将综述这4种要紧的需求分析方法
(1)功能分解法它可表示为功能=子功能+子功能接口
(2)数据流法数据流法,即通常所说的结构分析法,它可表示为数据流:数据存储+数据变换+过程说明+数据字典
(3)信息模拟法信息模拟的要紧建模工具是实体-关系图,现已进展成为语义数据模型信息模拟法能够表示为信息模拟法=对象+属性+关系+超类+子类+对象
(4)面向对象法面向对象的含义很广,由于“对象”一词能够在不一致领域有不一致的解释,面向对象的能够表示为面向对象法:对象+类+继承+消息通信面向对象分析是建立在信息模拟与面向对象程序设计语言的概念基础之上的作为一个比较全面的方法,面向对象分析由5个步骤构成:
①确定类与对象;
②识别结构;
③识别主题;
④定义属性;
⑤定义方法现在彳有了一些面向对象分析的CASE工具支持00A以加速OOA的自动化与标准化
7.面向对象设计与面向对象实观从面向对象分析到面向对象设计是一个逐步扩充的细分过程,同传统的实体关系模型为基础的系统分析与设计类似,面向对象的设计使用的是面向对象的概念模型在面向对象的概念模型中以面向对象方法中的基本概念为基础最后,使用面向对象的语言,对设计的概念模型加以实现限于篇幅不再全面讨论外模式与内模式其中外模式与内模多与上面所讲的大致相当但SPARC报告中的概念模式是指一个组织或者部门所对应的现实世界的真实模型,即概念模型概念模式仅描述实体及其属性与联系,不涉及机器世界的概念概念模型是信息世界范畴内的信息的结构,而模式是机器世界范畴内的概念模型的逻辑表示概念模型独立于具体的计算机系统,甚至是与计算机无关的,是一个组织或者部门的模型常用的描述概念模式的方法是E-R方法模式是依靠于具体的计算机及其DBMS的模式通过三种具体模型:层次模型、网状模型与关系模型来加以实现概念模式务必转换成具体的数据模型,然后才能在相应的DBMS上实现概念模型与模式都是描述信息或者数据的整体结构的,然而它们是在不一致的抽象层次上加以描述的概念模型离机器更远,形式化程度低从远离机器的观点看,概念模型更抽象些,但更接近现实世界而模式描述使用的是形式化的语言-模式DDL而概念模型描述使用的是E-R图与一些自然语言.使用数据库的计算机系统结构广义地讲,实际上使用数据库的计算机系统由下列几个部分构成的
(1)硬件部分包含主机、外部存储设备、网络设备与电源等
(2)软件部分包含操作系统、DBMS、编译系统与应用开发工具软件等
(3)人员包含数据库管理员(DataBaseAdministrator-DBA)系统分析员(SystemAna~lyst)>应用程序员(ApplicationProgrammer)与用户(User).数据库管理系统数据库管理系统DBMS是数据库系统的核心DBMS是负责数据库的建立、使用与保护的软件DBMS建立在操作系统之上,实施对数据库的统一管理与操纵用户使用的各类数据库命令与应用程序的执行,最终都务必通过DBMSO另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性与安全性DBMS的要紧功能包含下列几个要紧方面
(1)数据库的定义功能DBMS通过提供数据描述语言(也称数据定义语言)(DataDescrip-tiveLanguage一-DDL)来对外模式、模式与内模式加以描述然后模式翻译程序把用DDL写的各类模式的定义源码翻译成相应的内部表示,形成相应的目标形式,分别叫目标外模式、目标模式、目标内模式,这些目标模式是对数据库的描述,而不是数据本身(目标)模式只刻画了数据库的形式或者框架,而不包含数据库的内容这些目标模式被储存在数据字典(或者系统目标)之中,作为DBMS存取与管理数据的基本根据比如,DBMS根据这些模式定义,进行物理结构与逻辑结构的映象,进行逻辑结构与用户视图的映象,以导出用户要检索的数据的存取方式
(2)数据操纵功能DBMS提供数据操纵语言(DataManipulationLanguageDML)实现对数据库中数据的一些基本操作,如:检索、插入、修改、删除与排序等等DML有两类:一类是嵌入主语言的,如嵌入到C或者COBOL等高级语言中这类DML语言本身不能单独使用,故此称之宿主型的DML或者嵌入式DML另一类是非嵌入式语言(包含交互式命令语言与结构化语言),它的语法简单,能够独立使用,由单独的解释或者编译系统来执行,因此通常称之自主型或者自含型的DUL命令语言是行结构语言,单条执行结构化语言是命令语言的扩充或者进展,增加了程序结构描述或者过程操纵功能,如循环、分支等功能命令语言通常逐条解释执行结构化语言能够解释执行,也能够编译执行现在DBMS通常均提供命令语言的交互式环境与结构环境两种运行方式,供用户选择DBMS操纵与执行DML语句(或者DML程序),完成对数据库的操作关于自主型的结构化的DULDBMS通常使用解释执行的方法,但也有编译执行的方法,而且编译执行的越来越多另外,很多系统同时设有解释与编译两种功能,由用户选其一关于嵌入型或者缩主型DMLDBMS一种提供两种方法
①预编译方法
②修改与扩充主语言编译程序(亦称增强编译方法)预编译方法是,由DBMS提供一个预处理程序,对源程序进行语法扫描,识别出DML语句,并把这些语句转换成主语言中的特殊调用语句主语言务必与DML有调用接口这样在连接形成目标时与主语言语句一起形成可执行的目标
(3)数据库运行管理数据库运行期间的动态管理是DBMS的核心部分,包含并发操纵、存取操纵(或者安全性检查、完整性约束条件的检查)、数据库内部的保护(如索引、数据字典的自动保护等)、缓冲区大小的设置等等所有的数据库操作都是在这个操纵部分的统一管理下,协同工作,以确保事务处理的正常运行,保证数据库的正确性、安全性与有效性
(4)数据库的建立与保护功能数据库的建立与保护包含初始数据的装入、数据库的转储或者后备功能、数据库恢复功能、数据库的重组织功能与性能分析等功能,这些功能通常都由各自对应的有用功能子程序来完成DBMS随软件产品与版本不•致而有所差异通常大型机上的DBMS功能最全,小型机上的DBMS功能稍弱点,微机上的DBMS更弱些但是,目前,由于硬件性能与价格的改进,微机上的DBMS功能越来越全
三、关系数据库的标准语言SQLLSQL概述SQL的英语名称是结构查询语言(StructuredQueryLanguage)实际上它的功能包含查询(Query)、操纵(Manipulation)、定义(Definition)与操纵(Control)四个方面,是一个综合的、通用的、功能极强的关系数据库语言SQL支持数据库的三级模式结构反SQL的数据定义功能观奥数据定义功能包含三部对定义基本表定义视图与定义索引它们是:CREATETABLECREATEVIEWCREATEINDEXDROPTABLEDROPVIEWDROPINDEXSQL的数据定义功能可用于定义与修改模式(如基本表),定义外模式(如视图)与内模式(如索引)
3.基本表的定义与删除|定义基本表的语句格式为CREATETABLE表名(列名1类型[NOTNULL][列名2类型[NOTNULL]]…)[其他参数];其中,任选项“其它参数”是与物理存储有关的参数根据具体系统的不一致而不一致删除基本表的语句为:DROPTABLE表名;删除索引的语句为:DROPINDEX索引名;删除索引的同时把有关索引的描述也从数据字典中删去但表的内涵仍存在且其数据外延内容不变把一个基本表的定义连同表上所有的记录、索引与由此基本表导出的所有视图全部都删除,并释放相应的存储空间£索弘的建立与删除对一个基本表,能够根据应用环境的需要建立若干索引,以提供多种存取方式通常,索引的建立与删除由DBA或者表的主人(即建立表的人)负责用户不必也不能在存取数据时选择索引存取路径的选择由系统自动进行索引的描述存放在数据字典中建立索引的语句格式为CREATE[UNIQUE]INDEX索引名ON基本表名(列名[次序][列名[次序]]…)[其他参数];这里的任选项其他参数是与物理存储有关的参数索引能够建在一列或者几列上圆括号内是索引列的顺序说明表其中的任选项次序,指定了索引值排序的次序可取ASC(升序)或者DESC(降序)缺省值为升序UNIQUE表示每一索引值只对应唯一的数据记录SQL的数据操纵功能SQL的数据操纵功能包含SELECTINSERTDELETE与UPDATE四个语句,即检索与更新(包含增、删、改)两部分工能检索就是杳询SQL更新语句SQL的更新语句包含修改,删除与插入三类语句
①修改(UPDATE)(亦称之更新)修改语句的通常格式为UPDATE表名SET字段=表达式[字段=表达式]…[WHERE谓词];修改指定表中满足谓词(或者条件)的元组,把这些元组按SET子句中的表达式修改相应属性或者字段上的值
②删除(DELETE)删除语句通常格式为DELETEFROM表名[WHERE谓词];从指定表中删除满足谓词的那些记录没有WHERE了•句时表示删去此表中的全部记录,但此表的定义仍在数据字典中,只是一个空表DELETE只对表外延操作,不对内涵操作
③插入(INSERT)插入语句的通常格式为INSERTINTO表名[(字段名[字段名]…)]valueS(常量[常量]);或者INSERTINTO表名[(字段名[字段名]•••)]子查询;第一种格式把一个新记录插入指定的表中第二种格式把子查询的结果插入表中若表中有些字段在插入语句中没有出现,则这些字段上的值取空值NULL当然在表定义中说明了NOTNULL的字段在插入时不能取NULL若插入语句中没有指出字段名则新记录务必在每个字段上均有值目视图视图是从一个或者几个基本表(或者视图)导出的表某一用户能够定义若干视图因此对某一用户而言,按ANSI/SPARC报告的观点,他的外模式是由若干基本表与若干视图构成的视图与基本表不一致,视图是一个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)视图一经定义就能够与基本表一样被查询、被删除(DROP)也能够用来定义新的视图,但更新(增、删、改)操作将有一定限制视图能够懂得成一个数据库,只有内涵储存在数据库字典中,而无外延存储;其外延是在使用时动态地生成的或者计算出来的
(1)视图的定义与删除SQL建立视图的语句格式为CREATEVIEW视图名[(字段名[字段名]-)]AS子查询[WITHCHECKOPTION谓词];视图能够删除,语句格式为DROPVIEW视图名;视图的定义就从数据字典中删除由此视图导出的其它视图也将自动被删除若导出此视图的基本表删除了,则此视图也将自动删除
(2)视图的查询语句视图定义后,用户能够如同基本表那样对视图查询
(3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指INSERTUPDATE与DELETE三类操作)在关系数据库中,并非所有的视图都是可更新的,也就是说,有些视图的更新不能唯•地有意义地转换成对•基本表的更新
(4)视图的优点视图的概念具有很多优点,要紧有a)视图关于数据库的重构造提供了一定程度的逻辑独立性;b)简化了用户观点;c)视图机制使不•致的用户能以不•致的方式看待同••数据;d)视图机制对机密数据提供了自动的安全保护功能SQL的数据操纵功能SQL数据操纵功能是指操纵用户对数据的存取权力某个用户对某类数据具有何种操作权力是由DBA决定的这是个政策问题而不是技术问题数据库管理系统的功能是保证这些决定的执行为此它务必能
(1)把授权的决定告知系统,这是由SQL的GRANT与REVOKE语句来完成的
(2)把授权的结果存入数据字典
(3)当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之授权语句的通常格式为GRANT权力[权力]…[ON对象类型对象名]TO用户[用户]…,[WITHGRANTOPTION];对不一致类型的操作对象可有不一致的操作权力
(1)对基本表、视图及其字段的操作权力有杳询、插入、更新、删除与它们的总与ALLPRIVILEGEo
(2)对基本表的操作权力还有修改(ALTER)与建立索引(INDEX).
(3)对数据库的操作权力有建立表(CREATETAB)某用户有了此权力就能够使用Createtable建立基本表称他为表的主人,拥有对此表的一切操作权力
(4)对表空间的权力有使用(USE)数据库空间存储基本表的权力
(5)系统权力有建立新数据库(CREATEDBA)的权力GRANT语句中的任选项WITHGRANTOPTION的作用是使获得某种权力的用户能够把权力再授予别的用户嵌入式SQL把SQL嵌入主语言使用时务必解决三个问题
(1)区分SQL语句与主语言语句这是通过在所有的SQL语句前加前缀EXECSQL来解决的SQL语句结束标志随主语言不一致而不一致,如PL/1用分号(;),COBOL用EMD-EXEC来表示SQL语句首先由预编译程序加以处理,转换为主语言编译程序能够识别的形式,然后交主语言编译程序进一步处理
(2)数据库工作单元与程序工作单元之间的通信SQL语句中能够使用主语言的程序变量(简称主变量),这些变品名前加冒号作标志,以区别地字段名,程序中使用的任何表(基本表或者视图)都要用EXECSQLDECLARE语句加以说明一则使程序更加清晰,二则使预编译程序能作某些语法检查SQL语句执行后,系统要反馈给应用程序若干信息这些信息送到SQL的通信区SQLCAoSQLCA用语句EXECSQLINCLUDE加以定义在SQLCA中有一个状态指示字段SQLCODE当SQLCODE为零时,表示SQL语句执行成功,否则返回一个错误代码(负值)或者警告信息(正值)程序员应该在每个SQL语句之后测试SQLCODE的值,以便处理各类情况一个SQL语句原则上可产生或者处理一组记录,而主语言一次只能处理一个记录,为此务必协调两种处理方式这是用游标(Cursor)来解决的下面首先讨论不需要游标的DML语句,然后讨论使用游标的DML语句
9.不用游标的DML语句不需要游标的DML语句有:查询结果为单记录的SELECT语句UPDATE(除了CURRENT形式的UPDATE)语句DELETE(除了CURRENT形式的DELETE)语句INSERT语句
(1)查询结果为单记录的SELECT语句这类语句的通常格式是(主语言为PL/1)EXECSQLSELECT目标列INTO主变量[空值标志]FROM基本表(或者视图)[WHERE条件表达式];SELECT语句从数据库中找到符合条件的记录,把结果放到主变量中UPDATE语句DELETE语句INSERT语句.使用游标的DML语句通常情况下SELECT语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作转换为单记录处理与游标有关的语句有四个
(1)定义游标游标是与某一查询结果相联系的符号名用DECLARE语句定义这是一个说明语句与游标相对应的SELECT语句这时并不执行
(2)打开(OPEN)游标打开游标语句使游标处于活动状态与游标相应的查询语句被执行游标指向查询结果集中的第一个记录之前
(3)推进(FETCH)游标把游标向前推进一个记录,并把游标指向的当前记录中的字段值取出放到INTO子句后相应的主变量中FETCH语句常常用于循环,以借助主语言功能逐一处理结果集中的数据
(4)关闭(CLOSE)游标关闭游标,使它不再与原先的查询结果相联系关闭了的游标能够再次被打开,与新的查询结果集相联系使用CURRENT形式的UPDATE与删除语句应注意
(1)若游标定义中的SELECT语句带有L-NION或者ORDERBY子句,或者者这个SELECT语句相当于定义了一个不可更新的视图,则不能用这两个更新语句
(2)若使用CURRENT形式的UPDATE语句则游标定义中要包含FORUPDATE子句指出更新的字段(SET子句中使用的字段)因此,游标定义语句的通常格式为:EXECSQLDECLARE游标名CURSORFOR子查询UNION子查询…[FORUPDATEOF孑段名[字段名]…|ORDER-BY-子句];.SQL的事务处理功能
(1)事务处理的概述所谓事务(Transaction)是指一系列动作的组合,这些动作被当作一个整体来处理这些动作或者者相继都被执行,或者者什么也不做在数据库中,一个动作是指一个SQL语句事务是一组SQL语句构成的一个逻辑单位要么这些SQL语句全部被按顺序正确执行,要么在某SQL语句执行失败时,按照用户要求取消已执行的SQL语句对数据库中数据的修改或者者要么事务中SQL语句都被正确执行,完成该事务对数据库中数据的所有操作;或者者要么相当于一条SQL语句也未执行,数据库数据未做任何改动
(2)SQL语言的事务处理语句SQL语言有3条语句用于事务处理,它们是Commit语句,关于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化同时还释放事务与封锁,标志该事务结束Savepoint语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点rollback语句,不管事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,要么取消至某个指定回滚点后府数据库的全部修改释放自保留点之后的全部表或者行的封锁(没有保留点相当于回滚到事务开始处,终止该事务)事务的恢复(回滚)是根据事务执行前储存下的当时数据库状态来实现的一遇到rollback语句,就将数据库中数据恢复到原先的状态,相当于撤消事务中已执行了的SQL语句
四、数据库的存储结构数据库的存储结构不一致于通常文件系统的存储结构数据库数据的特点是各类记录型之间彼此有联系,数据是结构化的数据的存储结构不仅涉及每种记录型的记录如何存储,而且要使数据的存储反映各类记录型之间的联系在DB多级模式中引入内模式(存储模式)的要紧目的是使模式的数据结构的描述同它的存储表示的描述分开,以致DBA为了协调数据库性能而对数据库数据的存储方法进行修改时,可不必修改模式,以提高数据库的物理独立性在各个数据库管理系统中,对内模式的定义功能各不相同在关系数据库管理系统中有些DDL语句可影响数据库的存储结构在DBMS中各级模式的存储结构是恒定的或者唯•的,而数据库内容(或者其记录)的存储方式是不唯一的数据库存储结构设计的好坏直接影响系统的性能在存储结构中要紧是涉及存储记录的设计存储记录与概念记录之间具有对应关系,假如存储记录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论概念记录是指在逻辑结构中的记录但当一个概念记录对应多个不一致类型的存储记录时,存在如何设计存储记录的问题关于这样的概念记录,其存储记录能够有下列几种设计L顺序组织将存储记录设计成与概念记录一一对应,按SNO大小(或者按记录到来)的顺序将记录构成一个顺序组织的文件这样组织的优点是结构简单缺点是会浪费存储空间.顺序带链的组织顺序带链组织同意记录中带有指针(Pointer)这样能够大大节约存储空间.带次关键字索引的顺序组织为了习惯对多项内容的检索能够建立索引文件,上述组织可改为带次关键字索引的顺序组织.多表组织在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,因此对应的指针数目是可变的这种可变性给管理带来困难,为熟悉决这个困难,引入了多表组织多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等.完全倒排组纲在一个记录型中对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织.也电定址组织快于每一个存储记录值存放在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算得出这种组织为Hash定址组织杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、折叠法、位移法及各位数字分析法等等关键是如何选择一个杂凑函数,尽可能避免发生碰撞关于不一致的主关键字值通过计算而得到同一个地址的映象称之为碰撞[联系的存储在关系数据库中,通过外来关键字ForeignKey来表示概念记录之间的联系比如,为了表达学生与学校的联系,能够在学生记录中增加外来关键字“学校号”来表示联系
五、关系数据库卜.表格表格或者简称表表示了用户的特定类型Type的一些实体表头由一些属性名AttributeName构成,每个属性名对应于一列在表上属性名务必唯一,不同意重名表体是由一些行或者元组tuple、或者记录record构成一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域field用以存储属性值Attributevalueo一个元组对应于一个用户”实体的出现occurrenceo表体中每一行与某一列的交叉点相当于记录中的域上储存一个属性值这个属性值叫做这一行或者这个实体出现的相应属性值表体中每一列能够储存的值对应于某种属性类型TypeofAttribute也就是说,这一列的属性值只能取这个属性类型的值某个属性所能取的所有值的集合叫做这个属性的值域DomainofAttribute类型与值域的对应关系是一对多的一个类型有一个值域,但一个值域能够作为多个类型,基名称不一致,但实质上值域一样实际上,类型是对值域的命名能唯一标识一个元组的属性称之为关键属性PrimaryKeyAttribute或者简称之主关键字PrimaryKeyo主关键字有的时候是由多个属性构成的,如今的主关键字叫做组合关键字Con-catenatedprimaryKey有的时候,表中务必由一些组合的主关犍字才能唯一地标识一个元组,也就是说,不存在能作关键字的一个属性这时为了方便,往往引入一个附加的属性并称之为外来关键字ForeighKey来作主关键字外来关键字为以后检索与查询带来了方便,但也增加了信息冗余.表名、表头与表体表名、表头与表体在关系模型中具有不一致的作用或者功能,因而也具有完全不一致的性质表头是一个属性的集合,它规定了表的结构表体是一个特殊的集体,称作为关系relation“关系模型”中的“关系”一词就是指表体中的这个数学关系在关系数据库中,表名对应于数据库名或者关系名,表头对应于数据描述或者结构描述,表体对应于数据库表体是数据库的内容及数据库操作的对象另外,有两个概念务必加以强调:型type与值或者出现occurence表头定义了实体或者元组的型,也就是说规定了实体或者元组的值域而表体则别出了实体或者元组的出现出现是型中的一个值.关系的数学定义关系模型是建立在集合论SetTheory的基础之上的现在,开始用集合论的术语来严格地定义数学上的关系,即给出关系的数学定义定义1域Domain是值value的集合.关系模型关系模型由三部分构成:数据结构即关系、关系操作、关系的完整性下面将对这三个部分进行分别的讨论1单一的数据结构关系在关系模型中,不管是实体还是实体之间的联系均由单一的类型结构一关系来表示在前面,已给出了关系与域的数学定义,介绍了n元关系、元组与属性等概念下面介绍关键字、关系模式与关系数据库等一些基本概念关键字关系中的某一组属性,若其值能够唯一地标识一个元组,则称该属性组为一个候选关键字CandidateKey若一个关系有多个候选关键字,则能够任选其中一个作为主关键字PrimaryKeyo主关键字中的诸属性被称之主属性关系模式关系的描述称之关系模式它包含:关系名、构成关系的诸属性名、属性到域的映象、属性间的数据依靠关系等等因此,关系模式由关系名、诸属性名与属性到域的映象三个部分构成,关系模式通常简记为RA1A2…,An其中R是关系名,AlA2An为诸属性名属性到域的映象通常通过指定属性的类型与长度来说明某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合关系的外延内容有的时候简称之关系但关系模式与关系的内容有的时候也统称之关系读者能够从上下文中区别其确切的含义形象地说,关系模式是关于表名与表头的描述,而关系的内容是表体关系数据库在关系数据库中,要分清型与值两个基本概念关系数据库的型是指数据库的结构描述,它包含关系数据库名、若干属性的定义,与这些属性上的若干关系关系模式亦称之数据库的内涵Intension数据库的值亦称之数据库的外延在关系数据库中,内涵是比较稳固的,它规定了外延的取值范围而外延却是随时间变化的这与在通常的形式逻辑中外延与内涵一一对应有所区别此处外延是指任意一个满足内涵的集合,而不一定恒指满足内涵的最大的一个集合关系模式即内涵是稳固的;而关系的内容,即外延,却是随时间动态的变化而变化的数据库的结构即模式是稳固的;而数据库中的数据内容却在不断地更新2关系操作关系模型规定了关系操作的功能与特点,但不对DBMS语言的语法做出具体的规定关系数据库语言的要紧特点或者优点是其高度的非过程化Non-procedureae或者者说明性declarative关系数据库语言的语句是透明的用户只须明白语句做什么,而不须明白怎么做的Codd在其早期的文章中,引入了8种基本的操作:并Union交Intersection差Difference笛卡尔乘积CartesianProduct限制Restrictions投影Projection连接Join除Division这些操作都是对关系的内容或者表体实施操作的,得到的结果仍为关系注意,这些操作只是基本的操作,而不是不再可分的原始Primitive操作,比如,JoinIntersection与Division能够由其它五种操作合成但是,把它们三个也作为基本操作使用起来很方便另外,Codd并没说上述8种操作就是关系数据库只能有的8种操作实际上,上述8种操作仅仅是作为最小的DML操作的基础部分,同时也还未考虑到DDL的需求SQL支持的操作多于上述8种DML操作,而且SQL还支持DDL操作关系操作的特点是集合操作,即操作的对象与结果都是集合这种操作方式也称之一次一集合(set-at-a-timo)方式而非关系模型的数据库的操作方式则为一次一记录(record-at-a-tini)方式关系操作能够用两种方式来表示
①代数方式,即关系代数
②逻辑方式,即关系演算而关系演算又进•步分为元组关系演算与域关系演算已经证明,这些表示方式在功能上是相互等价的通常选其一即可
(3)关系模型的三类完整性关系模型的三类完整性是
①实体完整性(EntityIntegrity)
②参照完整性(ReferentialIntegrity)
③用户定义的完整性(UserDefinedIntegrity)其中,实体完整性与参照完整性是任何关系模型都务必满足的完整性约束条件,应该由关系数据库DBMS自动支持而用户定义的完整性的支持是由DBMS提供完整性定义设施(或者机制),能够随DBMS商品软件不一致而有所变化实体完整性是指:若属性A是基本关系R的主关键字的属性(即主属性),则属性A不能取空值(NULL)o在关系数据库中有各类关系,如基本关系(常称之基本表)、查询表、视图表等等基本表是指实际存在的表,它是实际存储数据的逻辑表示查询表是指与查询结果相对应的表而视图表是由基本表或者视图表导出的表,是虚表,不对应实际存储的数据实体完整性是针对基本关系的空值是指“不明白”或者者“无意义的”或者“不属于定义域”值空值以“NULL”表示关于实体完整性作如下说明
(1)一个基本关系通常对应于现实世界中的一个实体集比如学生关系对应于学生实体集基本关系不是由其它关系生成的关系基本关系是本原(Primitive)是定义复杂关系的出发点
(2)现实世界中的实体是可区分的,即实体具有某种唯一性的标识
(3)在关系模型中由主关键字作为满足唯一性的标识
(4)主关键字中属性不能取空值由于若主关键字中某属性取空值,则意味着某个实体不可标识;而这与
(2)相矛盾参照完整性是指:若基本关系R中含有另一个基本关系S的主关键字KS所对应的属性组F(F称之R的外部关键字(externalkeys))则在关系R中的每个元组中的F上的值务必满足
①或者者取空值(即F中的每个属性的值均为空值);
②或者等于S中某个元组的主关键字的值基本关系R与S不一定是不一致的关系外部关键字也称之外来关键字比如,某数据库中有职工关系EMP(职工号,姓名,部门号)与部门关系DEPT(部门号,部门名称)为两个基本关系关系EMP的主关键字为“职工号”,DEPT的主关键字为“部门号”在EMP中“部门号”是EMP的外部关键字故此,在EMP中的每个元组中“部门号”的值只有两种可能性
①取空值这说明这个职工尚未分到某个部门;
②或者取非空值这时“部门号”的值务必是DEPT中某个元组中的“部门号”的值这说明一个职工不可能被分配到一个不存在的部门也就是说,被参照的关系DEPT中一定存在一个元组,该元组的关键字的值等于EMP中某元组的外部关键字的值实体完整性与参照完整性是针对任何关系数据库系统的所有数据库的通常性原则用户定义的完整性针对某一具体的数据库的约束条件条件是由现实世界中的应用环境决定的它涉及到某一具体的应用中的数据所务必满足的语义要求关型模型的DBMS应提供定义与检验这类完整性条件的机制,以使用统一的方法来自动地处拱它们而不要求应用程序员来承担这一功能.关系数据库语言概述关系数据库语言分三类:数据描述语言DDL数据操纵语言DML与数据操纵语言DCL其中,DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或者数据的逻辑结构DML负责数据库的操作,提供一种处理数据库操作的机制DCL负责操纵数据库的完整性与安全性,提供一种检验完整性与保证安全的机制DML是用户经常使用的语言,包含了DBMS的要紧功能DUL包含数据查询与数据的增、删、改等功能其中查询的表达方式是DML的要紧部分关系数据库的DML按照查询方式能够分为两大类
(1)用对关系的集合代数运算来表示查询的方式,称之关系代数(RelationalAlgebra)6
(2)用谓词演算来表达查询的方式,称之关系演算(RelationalCalculus)关系演算又可按谓词变元的基本对象是元组变量(tuplevariable)还是域变量(domainvariable)分为元组关系演算与域关系演算两种关系代数与两种关系演算均是抽象的查询语言,这些抽象的查询语言与实际的DBMS软件产品中实现的具体的查询语言并不完全一样但它们是DBMS中查询语言的理论基础关系代数、元组关系演算与域关系演算这三种语言在表达能力上是彼此相互等价的,它们均能够作为评价实际DBMS软件产品中查询语言能力的标准实际DBMS软件产品的查询语言,除了提供关系代数(或者一种关系演算)之外,还提供了许多附加的功能,如库函数、算术运算等功能SQL是介于关系代数,与关系演算之间的一种语言SQL不仅具有丰富的杳询功能,而且还具有数据库定义与数据库操纵功能SQL是集DDL、DML、DCL为一体的标准的关系数据库语言SQL充分表达了关系数据库语言的优点.关系代数;关系代数中的运算能够分为两类1传统的集合运算,如并、交、差、笛卡尔乘积等这类运算是从关系的“水平方向即按行”来进行的2专门的关系运算如选择、投影、连接、除这类运算不仅涉及到行而且也涉及到列关系演算|关系演算是以数理逻辑中的谓词演算为基础的用谓词演算作为关系数据库的语言并提出关系演算的是E.F.CoddoCodd首先定义了关系演算语言ALPHA但ALPHA并没有在计算机上实现但关系数据库管理系统INGRES所用的QUEL语言是参考ALPHA研制的,与ALPHA十分类似
六、关系数据库的规范化理论函数依靠定义1设RU是属性集U上的关系模式X丫是U的子集若关于RU的任意一个可能的关系rr中不可能存在两个元组在X上的属性值相等,而在丫上的属性值不等,则称X函数确定Y或者’Y函数依靠于X记作X-*Yo函数依靠与别的数据依靠一样是语义范畴的概念只能根据语义来确定一个函数依靠比如姓名一年龄这个函数依靠只有在没有同名人的条件下成立假如同意有相同名字,则年龄就不再函数依靠于姓名了设计者也能够对现实世界作强制的规定比如规定不同意同名人出现,因而使姓名一年龄函数依靠成立这样当插入某个元组时这个元组上的属性值务必满足规定的函数依靠,若发现有同名人存在,则拒绝插入该元组注意,函数依靠不是指关系模式R的某个或者某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件
七、数据库的安全与保护L安全性数据库的安全性是指保护数据库以防止不合法的或者非正常的使用所造成的数据泄露、更换或者破坏安全性问题不是数据库系统所独有的,计算机系统都有这个问题只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,是十分重要的信息资源从而使安全性问题变得更为突出系统安全保护措施是否有效是数据库系统的要紧性能指标之一关于数据库的安全保密方式能够有系统处理的与物理的两个方面所谓物理的是指,关于强力逼迫透露I1令、在通信线路上窃听、以至盗窃物理存储设备等行为对此所采取的措施是将数据编为密码加强警卫以识别用户身份与保护存储设备等措施在通常计算机系统中,安全措施是一级一级层层设置的1用户标识与鉴定首先,系统提供一定的方式让用户标识自己的名字或者身份系统进行核实,通过鉴定后才提供机器使用权常用的方法有:用一个用户名或者者用户标识号来标明用户身份系统鉴别此用户是否是合法用户若是,则能够进入下一步的核实;若不是,则不能使用计算机用户名的登录只由系统管理员进行,通常用户不能实施用户名登录口令Password为了进一步核有用户,系统常常要求用户输入口令2存取操纵关于获得上机权的用户还要根据预先定义好的用户权限进行存取操纵,保证用户只能存取他有权存取的数据所谓用户权限是指不一致的用户关于不一致的数据对象同意执行的操作权限它由两部分构成,一是数据对象,二是操作类型数据对象有二类一类是数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段亦称之数据项另一类是外模式、模式、内模式在关系系统中DBA能够把建立、修改基本表的权力授予用户,用户获得此权力后能够建立基本表、索引、视图这说明关系系统中存取操纵的数据对象不仅有数据而且有模式、外模式、内模式等数据字典中的内容关于存取权限的定义称之授权Authorization这些定义通过编译后存储在数据字典中每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据用户权限进行合法权限检查AuthorizationChecko若用户的操作请求超出了定义的权限,系统拒绝执行此操作授权编译程序与合法权限检查机制•起构成了安全性子系统衡量授权子系统精巧程度的另•个尽度是否提供与数据值有关的授权有的系统还同意存取谓词中引用系统变量,如一天中的时刻,终端设备号这样用户只能在某台终端、某段时间内存取有关数据,这就是与时间与地点有关的存取权限另外,在操作系统中对文件、目标等的存取还有一些安全保护措施其中加密是一种防止数据内容被别人引用或者熟悉的切实可行的办法加密有程序加密与硬件加密卡两种形式
2.完整性数据库的完整性是指数据的正确性与相容性DBMS务必提供一种功能来保证数据库中数据的完整性这种功能亦称之完整性检查,即系统用•定的机制来检查数据库中的数据是否满足规定的条件这种条件在数据库中称之完整性约束条件数据的约束条件是语义的表达,这些完整性约束条件将作为模式的一部分存放数据字典中数据的完整性与安全性是两个不一致的概念.前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入与输出,即所谓垃圾进垃圾出GarbageInGarbageOut所造成的无效操作与错误结果而后者是保护数据库防止恶意的破坏与非法的存取当然,完整性与安全性是密切有关的特别从系统实现的方法来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证完整性约束条件能够分类如下1值的约束与结构的约束前者指对数据的值的限制,后者指对数据之间联系的限制关于对数据值的约束这类约束条件是指对数据取值类型、范围、精度等的规定关于数据之间联系的约束数据库中同一关系的不一致属性之间能够有一定的联系,从而也应满足一定的约束条件同时,由于数据库中数据是结构化的,不一致的关系之间也能够有联系,因而不一致关系的属性之间也可满足一定的约束条件。
个人认证
优秀文档
获得点赞 0