数据库考试复习题.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据库考试复习题.docx》由会员分享,可在线阅读,更多相关《数据库考试复习题.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8、ODBC,OLE DB,JDBC 1 ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS(Database Management System)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。OLE DB(Object Linking and Embedding, Database,对象链接嵌入数据库,有时亦写作
2、OLEDB或OLE-DB)是微软为以统一方式访问不同类型的数据存储设计的一种应用程序接口,是一组用组件对象模型(COM)实现的接口,而与对象连接与嵌入(OLE)无关。它被设计成为ODBC的一种高级替代者和继承者,把它的功能扩展到支持更多种类的非关系型数据库,例如可能不支持SQL的对象数据库和电子表格(如Excel)。OLE DB用一组抽象概念(包括数据源、会话、命令和行集)将数据的存储从需要访问数据的应用中分离出来。 这是因为不同的应用需要访问不同数据类型和数据源,但是并不需要了解具体如何使用特定技术的方法访问这些数据。 OLE DB在概念上分为了消费者和提供者。消费者是那些需要访问数据的应用
3、程序,提供者是实现了那些接口并将数据提供给消费者的软件组件。OLE DB是微软数据访问组件(MDAC)的一部分。MDAC是一组微软技术,以框架的方式相互作用,为程序员开发访问几乎任何数据存储提供了一个统一并全面的方法。OLE DB的提供者可以用于提供像文本文件和电子表格一样简单的数据存储的访问,也可以提供像Oracle、SQL Server和Sybase ASE一样复杂的数据库的访问。OLE DB同样可以提供对层次类型的数据存储(如电子邮件系统)的访问。另一方面,由于不同的数据存储技术可能具有不同的能力,OLE DB提供者不需要实现OLE DB中每一个接口。通过使用COM对象实现可用的能力 -
4、 OLE DB提供者 将把数据存储技术的功能映射到特定的COM接口上。 当某种接口提供的能力在所使用的数据库技术中不适用时,微软称该接口的可用性为provider-specific。同时,提供者也可以扩大数据存储的能力 - 这些能力在微软的用语中被称为services。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,二. 叙述题 1、文件系统与
5、数据库系统有什么区别?使用数据库系统有什么优点? 文件系统和数据库系统之间的区别。(1) 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;(2) 文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;(3) 文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;(4) 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。 文件系统和数据库系统之间的联系:(1) 均为数据组织的管理技术;(2) 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;(3) 数据库系统是在文件系统的基础上发展而来的。
6、 现代的数据库管理系统应该具备的7个功能:使用数据库系统的好处是: 查询迅速、准确,而且可以节约大量纸面文件; 数据结构化,并由DBMS统一管理;数据冗余度小; 具有较高的数据独立性; 数据的共享性好;DBMS还提供了数据的控制功能。 2、何谓视图?举例说明在数据库设计时引入视图有何益处。从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作
7、等。 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。 视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。 视图:
8、查看图形或文档的方式。 视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。 当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。视图的优点视图有很多优点,主要表现在: 1. 视点集中 视图集中即是使用户只关心它感兴趣的某些特定数据和他们所负责的特定任务。这样通过只允许用户看到视图中所定义的数据而不是视图引用表中的数据而提高了数据的安全性。 2. 简化操作 视图大大
9、简化了用户对数据的操作。因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户隐藏了表与表之间的复杂的连接操作。 3. 定制数据 视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要。 4. 合并分割数据 在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载
10、数据。 5. 安全性 视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它数据库或表既不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。 视图的安全性视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下: 1 在表中增加一个标志用户名的列; 2 建立视图,是用户只能看到标有自己用户名的行; 3 把视图授权给其他用户。 逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表
11、被视图分割开来。视图可以在以下几个方面使程序与数据独立: 1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。 2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。 3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。 4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。3、使用触发器有何优点?举例说明如何使用触发器保证数据的一致性。触发器可通过数据库中的相
12、关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 我们以BBS论坛数据库中多个关联表的操作为例,阐述触发器在保持数据完整性、一致性中的应用。在BBS的程序设计中,
13、我们经常会碰到对一个数据表操作的同时,还要自动对另外几个相关联的数据表进行操作,以保证各数据表之间数据的完整性与一致性。BBS论坛中常用的数据表有:BBS_User表(存储用户信息):用于存储用户信息。字段有用户名、密码、积分、发帖数、等级ID、最后一次发帖、qq、Email、头像、注册时间等;BBS_Type表:用于存储大版块信息。字段有版块ID、版块名称等;BBS_LanMu表:存储分论坛信息。字段有分论坛ID、名称、所属大版块ID、主题总数、回复总数、版主等;BBS_Topic表:存储帖子信息。字段有帖子ID、标题、内容、发帖人、所属分论坛ID、回复总数、点击总数、最后一次回贴时间、回帖
14、人等;BBS_Reply表:存储回复信息。字段有回复内容、回复人、回复的帖子ID、回复时间等。在BBS论坛中,触发器主要应用于以下几种情况:当用户在分论坛里发表帖子时,对BBS_Topic表进行操作,但同时要自动对分论坛表BBS_LanMu里面的论坛主题总数增1,还要更新BBS_User表给该用户增加相应的积分,当用户积分达到一定分数时,自动更新该用户的等级ID,表示该用户已经升了一个等级。当用户回复帖子时,对BBS_Reply表操作的同时,也需要对分论坛表BBS_LanMu里的回复总数增1、对BBS_Topic表的回复总数增1并更新该表里的最后回帖标题和时间,还要将BBS_User表里的该用
15、户的发帖数增1、自动增加相应积分、更新最后发帖标题和时间等;在论坛的后台管理中,管理员有时需要添加或者删除一个大版块。当我们要删除BBS_Type表一个大版块时,为了保证数据库各表中数据的完整性与一致性,要同时对BBS_LanMu表、BBS_Topic表、BBS_Reply表中相关联的数据记录一并删除。下面将以后台管理中对论坛大版块进行删除操作时应用触发器为例来进行具体介绍。(1) 需求分析在一个BBS中常见的论坛结构如图Pic-1:在一个论坛中有许多个大版块,每个版块又对应多个分论坛。每个论坛又对应多个帖子,每个帖子又对应多个回复信息。因此需要4个相关联的表来存储相应的信息:BBS_Type
16、表(存储大版块信息)、BBS_LanMu表(存储分论坛信息)、BBS_Topic表(存储帖子信息)、BBS_Reply表(存储回复信息)。BBS_Type与BBS_LanMu、BBS_LanMu与BBS_Topic、BBS_Topic与BBS_Reply之间都是一对多的关系。当我们要删除BBS_Type表一个大版块时,为了保证数据库各表中数据的完整性与一致性,需要同时对BBS_LanMu表、BBS_Topic表、BBS_Reply表中相关联的数据记录一并删除。因为这里面存在3对一对多的关系,如果在程序中或者存储过程实现,显然是很困难也是不合理的。根据触发器的作用以及这4个表之间的关系,采用嵌套
17、触发器来实现这个删除功能。为BBS_Type表、BBS_LanMu表、BBS_Topic表分别建立一个AFTER触发器,该触发器由DELETE事件触发。采用嵌套触发器可以在数据库里自动完成这多个表中相关记录的删除,大大简化了业务逻辑。这样即保证了数据的完整性与一致性,又保证程序设计的合理性与方便性。(2)创建触发器根据需求分析,为BBS_Type表、BBS_LanMu表、BBS_Topic表分别建立AFTER触发器,该触发器由DELETE事件触发。建立在这3个表之上的触发器之间是嵌套触发的关系,即BBS_Type表上的触发器触发BBS_LanMu表上的触发器,BBS_LanMu表上的触发器再触
18、发BBS_Topic表上的触发器。本文中使用的数据库为Microsoft SQL Server 2005。要让触发器能嵌套触发必须在数据库“属性”中,将“递归触发器已启用”设置为TRUE。1.为BBS_Type表(存储大版块信息)建立触发器DelType。该触发器功能是删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。CREATE trigger DelType on dbo.BBS_Typeafter deleteasbegindeclare typeid intselect typeid=TypeID from deleted -获得要被删除的版块IDdelete from d
19、bo.BBS_LanMu where Typeid=typeidend2.为BBS_LanMu表(存储分论坛信息)建立触发器DelLanmu。该触发器功能是删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。CREATE trigger DelLanmu on dbo.BBS_LanMuAFTER DELETEasBEGINdeclare lmid intselect lmid=LMID from deleted -获得要被删除的分论坛IDdelete from dbo.BBS_Topic where LMID=lmidEND3.为BBS_Topic表(存储帖子信息)建立触发器DelTo
20、pic。该触发器功能是删除BBS_Reply表中属于刚删除帖子的所有回复信息。CREATE trigger DelTopic on dbo.BBS_Topicafter deleteasBEGINdeclare tid intselect tid=TID from deleted -获得要被删除的帖子IDdelete from dbo.BBS_Reply where TID=tidEND执行过程触发器执行过程如图Pic-2。当数据操作层对数据表BBS_Type发出DELETE一条记录的时候,触发器DelType被触发,此触发器将删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。当D
21、elType触发器对数据表BBS_LanMu删除一条记录时,又触发BBS_LanMu表上的触发器DelLanmu,此触发器将删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。当DelLanmu触发器对数据表BBS_Topic删除一条记录时,又触发触发器DelTopic,此触发器将删除BBS_Reply表中属于刚删除帖子的所有回复信息。至此数据库中与BBS_Type中删除记录相关联的所有记录全部删除,保证了数据库各表数据的完整性与一致性。这个过程是在数据库中自动进行的,因此速度非常快,用户只需要对BBS_Type表发出删除一条记录的命令,其他表中相关的记录会自动删除。4、在设计数据库系统
22、时,应该采取那些措施来防止介质故障?如果出现介质故障,如何恢复数据库? 对于Oracle DBA们来说,Oracle数据库恢复提供的选项种类数目实在是太多了,数据库恢复方法可以说都取决于故障类型,但对于某一个特定的故障也可能有许多不同的恢复方法。总的来说,数据库恢复可以分为实例恢复与介质恢复两大类。数据库出现实例故障,例如,意外掉电、后台进程故障,或预料发出使用ABORT命令终止数据库实例时,在启动数据库时就会发现实例故障,此时就需要实例恢复,实例恢复是数据库自动进行的,可以将数据库恢复到故障之前的事务一致性状态。如果在联机备份时发现实例故障,则需介质恢复。如恢复数据文件时没执行检验点就脱机,
23、这时所丢失的改动就需要进行介质恢复。介质恢复可以使用归档日志文件,也可以使用联机日志文件。介质恢复主要用于由于介质故障引起数据库文件的破坏时使用。介质故障是当一个文件、一个文件的一部分或磁盘不能读写时出现的故障。Oracle启动时会检测数据文件头中的检验点计数器和控制文件中对应的检验点计数器,当两者的值不相等时就说明需要做介质恢复。如果数据库可以运行,在线日志仅可重用但不能归档,此时介质恢复可以使用最新的完全备份的简单恢复。如果数据库可以运行,其日志已经被归档,则只能恢复数据库到介质故障前的一个指定事务一致性状态。所以,介质故障的恢复是将整个数据库恢复到故障之前的一个事务一致状态。如果数据库是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 考试 复习题
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内