数据库考试复习题.docx
- 文档编号:15238040
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:24
- 大小:33.25KB
数据库考试复习题.docx
《数据库考试复习题.docx》由会员分享,可在线阅读,更多相关《数据库考试复习题.docx(24页珍藏版)》请在冰点文库上搜索。
数据库考试复习题
8、ODBC,OLEDB,JDBC
1ODBC(OpenDatabaseConnectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS(DatabaseManagementSystem)。
这些API利用SQL来完成其大部分任务。
ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
ODBC的设计者们努力使它具有最大的独立性和开放性:
与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。
OLEDB(ObjectLinkingandEmbedding,Database,对象链接嵌入数据库,有时亦写作OLEDB或OLE-DB)是微软为以统一方式访问不同类型的数据存储设计的一种应用程序接口,是一组用组件对象模型(COM)实现的接口,而与对象连接与嵌入(OLE)无关。
它被设计成为ODBC的一种高级替代者和继承者,把它的功能扩展到支持更多种类的非关系型数据库,例如可能不支持SQL的对象数据库和电子表格(如Excel)。
OLEDB用一组抽象概念(包括数据源、会话、命令和行集)将数据的存储从需要访问数据的应用中分离出来。
这是因为不同的应用需要访问不同数据类型和数据源,但是并不需要了解具体如何使用特定技术的方法访问这些数据。
OLEDB在概念上分为了消费者和提供者。
消费者是那些需要访问数据的应用程序,提供者是实现了那些接口并将数据提供给消费者的软件组件。
OLEDB是微软数据访问组件(MDAC)的一部分。
MDAC是一组微软技术,以框架的方式相互作用,为程序员开发访问几乎任何数据存储提供了一个统一并全面的方法。
OLEDB的提供者可以用于提供像文本文件和电子表格一样简单的数据存储的访问,也可以提供像Oracle、SQLServer和SybaseASE一样复杂的数据库的访问。
OLEDB同样可以提供对层次类型的数据存储(如电子邮件系统)的访问。
另一方面,由于不同的数据存储技术可能具有不同的能力,OLEDB提供者不需要实现OLEDB中每一个接口。
通过使用COM对象实现可用的能力-OLEDB提供者将把数据存储技术的功能映射到特定的COM接口上。
当某种接口提供的能力在所使用的数据库技术中不适用时,微软称该接口的可用性为"provider-specific"。
同时,提供者也可以扩大数据存储的能力-这些能力在微软的用语中被称为services。
JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,
二.叙述题
1、文件系统与数据库系统有什么区别使用数据库系统有什么优点
文件系统和数据库系统之间的区别。
(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;
(2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;
(3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;
(4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
文件系统和数据库系统之间的联系:
(1)均为数据组织的管理技术;
(2)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;
(3)数据库系统是在文件系统的基础上发展而来的。
现代的数据库管理系统应该具备的7个功能:
使用数据库系统的好处是:
·查询迅速、准确,而且可以节约大量纸面文件;
·数据结构化,并由DBMS统一管理;
·数据冗余度小;
·具有较高的数据独立性;
·数据的共享性好;
·DBMS还提供了数据的控制功能。
2、何谓视图举例说明在数据库设计时引入视图有何益处。
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。
从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。
从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。
视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。
分布式查询也可用于定义使用多个异类源数据的视图。
视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:
安全原因,视图可以隐藏一些数据,如:
社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
视图:
查看图形或文档的方式。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。
对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
视图的优点
视图有很多优点,主要表现在:
1.视点集中
视图集中即是使用户只关心它感兴趣的某些特定数据和他们所负责的特定任务。
这样通过只允许用户看到视图中所定义的数据而不是视图引用表中的数据而提高了数据的安全性。
2.简化操作
视图大大简化了用户对数据的操作。
因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。
可见视图向用户隐藏了表与表之间的复杂的连接操作。
3.定制数据
视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。
因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要。
4.合并分割数据
在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。
如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。
5.安全性
视图可以作为一种安全机制。
通过视图用户只能查看和修改他们所能看到的数据。
其它数据库或表既不可见也不可以访问。
如果某一用户想要访问视图的结果集,必须授予其访问权限。
视图所引用表的访问权限与视图权限的设置互不影响。
视图的安全性
视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:
1在表中增加一个标志用户名的列;
2建立视图,是用户只能看到标有自己用户名的行;
3把视图授权给其他用户。
逻辑数据独立性
视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
视图可以在以下几个方面使程序与数据独立:
1如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
2如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
3如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
4如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
3、使用触发器有何优点举例说明如何使用触发器保证数据的一致性。
触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。
触发器可以强制比用CHECK约束定义的约束更为复杂的约束。
与CHECK约束不同,触发器可以引用其它表中的列。
例如,触发器可以使用另一个表中的SELECT比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。
触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。
我们以BBS论坛数据库中多个关联表的操作为例,阐述触发器在保持数据完整性、一致性中的应用。
在BBS的程序设计中,我们经常会碰到对一个数据表操作的同时,还要自动对另外几个相关联的数据表进行操作,以保证各数据表之间数据的完整性与一致性。
BBS论坛中常用的数据表有:
BBS_User表(存储用户信息):
用于存储用户信息。
字段有用户名、密码、积分、发帖数、等级ID、最后一次发帖、qq、Email、头像、注册时间等;
BBS_Type表:
用于存储大版块信息。
字段有版块ID、版块名称等;
BBS_LanMu表:
存储分论坛信息。
字段有分论坛ID、名称、所属大版块ID、主题总数、回复总数、版主等;
BBS_Topic表:
存储帖子信息。
字段有帖子ID、标题、内容、发帖人、所属分论坛ID、回复总数、点击总数、最后一次回贴时间、回帖人等;
BBS_Reply表:
存储回复信息。
字段有回复内容、回复人、回复的帖子ID、回复时间等。
在BBS论坛中,触发器主要应用于以下几种情况:
当用户在分论坛里发表帖子时,对BBS_Topic表进行操作,但同时要自动对分论坛表BBS_LanMu里面的论坛主题总数增1,还要更新BBS_User表给该用户增加相应的积分,当用户积分达到一定分数时,自动更新该用户的等级ID,表示该用户已经升了一个等级。
当用户回复帖子时,对BBS_Reply表操作的同时,也需要对分论坛表BBS_LanMu里的回复总数增1、对BBS_Topic表的回复总数增1并更新该表里的最后回帖标题和时间,还要将BBS_User表里的该用户的发帖数增1、自动增加相应积分、更新最后发帖标题和时间等;
在论坛的后台管理中,管理员有时需要添加或者删除一个大版块。
当我们要删除BBS_Type表一个大版块时,为了保证数据库各表中数据的完整性与一致性,要同时对BBS_LanMu表、BBS_Topic表、BBS_Reply表中相关联的数据记录一并删除。
下面将以后台管理中对论坛大版块进行删除操作时应用触发器为例来进行具体介绍。
(1)需求分析
在一个BBS中常见的论坛结构如图Pic-1:
在一个论坛中有许多个大版块,每个版块又对应多个分论坛。
每个论坛又对应多个帖子,每个帖子又对应多个回复信息。
因此需要4个相关联的表来存储相应的信息:
BBS_Type表(存储大版块信息)、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个表之间的关系,采用嵌套触发器来实现这个删除功能。
为BBS_Type表、BBS_LanMu表、BBS_Topic表分别建立一个AFTER触发器,该触发器由DELETE事件触发。
采用嵌套触发器可以在数据库里自动完成这多个表中相关记录的删除,大大简化了业务逻辑。
这样即保证了数据的完整性与一致性,又保证程序设计的合理性与方便性。
(2)创建触发器
根据需求分析,为BBS_Type表、BBS_LanMu表、BBS_Topic表分别建立AFTER触发器,该触发器由DELETE事件触发。
建立在这3个表之上的触发器之间是嵌套触发的关系,即BBS_Type表上的触发器触发BBS_LanMu表上的触发器,BBS_LanMu表上的触发器再触发BBS_Topic表上的触发器。
本文中使用的数据库为MicrosoftSQLServer2005。
要让触发器能嵌套触发必须在数据库“属性”中,将“递归触发器已启用”设置为TRUE。
1.为BBS_Type表(存储大版块信息)建立触发器DelType。
该触发器功能是删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。
CREATEtrigger[DelType]on[dbo].[BBS_Type]
afterdelete
as
begin
declare@typeidint
select@typeid=TypeIDfromdeleted--获得要被删除的版块ID
deletefromwhereTypeid=@typeid
end
2.为BBS_LanMu表(存储分论坛信息)建立触发器DelLanmu。
该触发器功能是删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。
CREATEtrigger[DelLanmu]on[dbo].[BBS_LanMu]
AFTERDELETE
as
BEGIN
declare@lmidint
select@lmid=LMIDfromdeleted--获得要被删除的分论坛ID
deletefromwhereLMID=@lmid
END
3.为BBS_Topic表(存储帖子信息)建立触发器DelTopic。
该触发器功能是删除BBS_Reply表中属于刚删除帖子的所有回复信息。
CREATEtrigger[DelTopic]on[dbo].[BBS_Topic]
afterdelete
as
BEGIN
declare@tidint
select@tid=TIDfromdeleted--获得要被删除的帖子ID
deletefromwhereTID=@tid
END
执行过程
触发器执行过程如图Pic-2。
当数据操作层对数据表BBS_Type发出DELETE一条记录的时候,触发器DelType被触发,此触发器将删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。
当DelType触发器对数据表BBS_LanMu删除一条记录时,又触发BBS_LanMu表上的触发器DelLanmu,此触发器将删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。
当DelLanmu触发器对数据表BBS_Topic删除一条记录时,又触发触发器DelTopic,此触发器将删除BBS_Reply表中属于刚删除帖子的所有回复信息。
至此数据库中与BBS_Type中删除记录相关联的所有记录全部删除,保证了数据库各表数据的完整性与一致性。
这个过程是在数据库中自动进行的,因此速度非常快,用户只需要对BBS_Type表发出删除一条记录的命令,其他表中相关的记录会自动删除。
4、在设计数据库系统时,应该采取那些措施来防止介质故障如果出现介质故障,如何恢复数据库
对于OracleDBA们来说,Oracle数据库恢复提供的选项种类数目实在是太多了,数据库恢复方法可以说都取决于故障类型,但对于某一个特定的故障也可能有许多不同的恢复方法。
总的来说,数据库恢复可以分为实例恢复与介质恢复两大类。
数据库出现实例故障,例如,意外掉电、后台进程故障,或预料发出使用ABORT命令终止数据库实例时,在启动数据库时就会发现实例故障,此时就需要实例恢复,实例恢复是数据库自动进行的,可以将数据库恢复到故障之前的事务一致性状态。
如果在联机备份时发现实例故障,则需介质恢复。
如恢复数据文件时没执行检验点就脱机,这时所丢失的改动就需要进行介质恢复。
介质恢复可以使用归档日志文件,也可以使用联机日志文件。
介质恢复主要用于由于介质故障引起数据库文件的破坏时使用。
介质故障是当一个文件、一个文件的一部分或磁盘不能读写时出现的故障。
Oracle启动时会检测数据文件头中的检验点计数器和控制文件中对应的检验点计数器,当两者的值不相等时就说明需要做介质恢复。
如果数据库可以运行,在线日志仅可重用但不能归档,此时介质恢复可以使用最新的完全备份的简单恢复。
如果数据库可以运行,其日志已经被归档,则只能恢复数据库到介质故障前的一个指定事务一致性状态。
所以,介质故障的恢复是将整个数据库恢复到故障之前的一个事务一致状态。
如果数据库是在归档方式下运行,则可以实施完全介质恢复和不完全介质恢复。
1Oracle数据库恢复之完全介质恢复
完全介质恢复可恢复全部丢失的数据,使数据库恢复到最新状态。
在所有需要的重做日志文件、备份数据文件(对于所有丢失或损坏的数据文件的备份)和一个当前有效控制文件都可以正常使用的情况下应当使用完全介质恢复以使数据的损失减到最小。
在实施完全数据库恢复时,可以根据数据库文件的破坏情况,使用不同的恢复方法。
例如,当数据文件被物理破坏,这时数据库不能正常启动,但是可以安装,此时可进行全部的或单个被破坏的数据文件的完全介质恢复。
如果数据文件被物理破坏但这时数据库还处于打开状态,可以进行离线的表空间的恢复。
因为数据库是打开的,这时未破坏的数据文件的表空间是在线的,可以正常使用,而被破坏的数据文件的表空间是离线的,不可正常使用,可以只对被破坏的数据文件实施完全介质恢复。
但是注意,系统表空间是不能让其离线的,所以当系统表空间损坏的时候,只能使用不完全介质恢复。
2Oracle数据库恢复之不完全介质恢复
不完全介质恢复是在完全介质恢复不可能进行或有特殊要求时进行的介质恢复。
例如,系统表空间数据文件损坏、在线日志损坏或认为误删除不应该删除的基表和表空间等,这时可以实施不完全介质恢复,使数据库恢复到故障前或用户出错之前的一个事务一致性状态。
不完全介质恢复包括基于撤消的不完全恢复、基于时间点的不完全恢复以及基于数据库改变号的不完全恢复。
基于撤消的不完全恢复(recoverdatabaseuntilcancel)是在进行不完全恢复时由数据库管理员进行控制,在某一个恢复点可撤消指定的操作。
例如,在一个或多个在线日志文件由于介质故障被破坏,不能实施完全数据库恢复,这时可以进行基于撤消的恢复,在恢复到最近的、未被破坏的日志文件后终止恢复过程,数据库从这一点重新开始运行。
在这种方式下,Oracle允许每次前滚一个日志文件。
基于时间点以及基于数据库改变号的不完全恢复主要用于将数据库恢复到过去的某个指定点。
基于时间点的恢复(recoverdatabaseuntiltime)可以把恢复进行到重做日志文件内的某个特定时间点,例如,当用户上午9点钟意外的删除一个表,现在想恢复它,那么可以从备份中恢复相应的数据文件,并进行基于时间点的不完全恢复,恢复到上午9点以前的某个时刻。
再如,由于系统故障,在线日志文件部分被破坏,所有活动的日志文件突然不可使用,实例被终止,此时需要进行介质恢复。
在恢复中可使用当前在线日志文件的未损坏部分,利用基于时间点的恢复,一旦将有效的在线日志应用于数据文件后就可以立即停止恢复过程。
基于数据库改变号(recoverdatabaseuntilchange)的不完全恢复可以使数据库恢复到事务一致的状态。
用这个选项指定的SCN被Oracle标注为参考值,凡是SCN号小于这个参考值的重做记录都将被运用,而SCN大于参考值的重做记录将被禁止使用。
这样,正好在此SCN处提交的事务将被回滚。
当不完全介质恢复完成时,数据库必须用alterdatabaseopenresetlogs打开,这个命令将会使数据库做一个标记,使得已经被跳过的那些重做记录不会被意外的又重新运用。
3Oracle数据库恢复之设计Oracle数据库备份恢复策略时应遵循的原则
数据库备份恢复是为了保证数据库中数据的正确性和完整性,不同的应用环境要应用不同的解决方案,有不同的侧重点,要考虑的问题也相当的多,对于一个有经验的DBA来说,可能解决方法有很多种。
但一般来说,一个完整的备份恢复系统需要遵循以下原则:
(1).正确性
备份就是为了恢复。
如果备份的东西是错误的那还有什么意义正确性永远是第一位的。
(2).稳定性
备份恢复策略的实施必须要有充分的前期测试工作,测试结果取得比较稳定的成功之后才能实施到生产数据库上。
(3).全面性
在复杂的计算机网络环境中,必须考虑到备份与恢复操作的简捷性,同时又要保证在需要恢复时能及时获取备份数据,保证备份内容、存储地点不会因为网络故障和环境故障而失效。
因此,对网络环境的复杂性、硬件环境的差异性要有充分的考虑。
(4).自动化
备份方案应能提供定时的自动备份,在自动备份过程中,还要具有日志记录和错误处理功能。
(5).高性能
在设计时,应尽量考虑到提高数据备份恢复的速度,同时考虑如何压缩备份文件以节省存储空间。
(6).操作简单
因为备份恢复是一个相当繁琐的工作,几乎每天都要做,只有事先做好充分的准备工作,才能减少日常实施过程中的工作量。
(7).实时性
一些关键数据库业务需要24小时不停机,因此,备份时很多文件仍将处于运行状态中,所以很多情况下要采用联机备份,联机备份时服务器应尽量少进行批量事务处理,以免产生许多重做操作。
以上就是对Oracle数据库恢复几种方法的详细介绍,希望能给大家带来帮助。
5、为什么要建立数据仓库数据仓库有那些不同于事务数据库的特征
1. 数据仓库的概念
数据仓库领域的权威W.H.Inmon给出了数据仓库的一个简短而全面的定义:
数据仓库是一个面向主题、集成、时变、非易失的数据集合,是支持管理部门的决策过程。
根据该定义,数据仓库具备以下四个关键特征:
面向主题(SubjectOriented)的数据集合
数据仓库通常围绕一些主题,如“产品”、“销售商”、“消费者”等来进行组织。
数据仓库关注的是决策者的数据建模与分析,而不针对日常操作和事务的处理。
因此,数据仓库提供了特定主题的简明视图,排除了对于决策无用的数据。
集成(Integrated)的数据集合
数据仓库通常是结合多个异种数据源构成的,异种数据源可能包括关系数据库、面向对象数据库、文本数据库、Web数据库、一般文件等。
时变(TimeVariant)的数据集合
数据存储从历史的角度提供信息,数据仓库中包含时间元素,它所提供的信息总是与时间相关联的。
数掘仓库中存储的是一个时间段的数据,而不仅仅是某一个时刻的数据。
非易失(Nonvolatile)的数据集合
数据仓库总是与操作环境下的实时应用数据物理地分离存放,因此不需要事务处理、恢复和并发控制机制。
数据仓库里的数据通常只需要两种操作:
初始化载入和数据访问,因此其数据相对稳定,极少或根本不更新。
综上所述,数据仓库是一种语义上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 考试 复习题