第1章 数据库系统基本概念
习题参考答案
1.数据库系统由哪几部分组成?其中最关键的是哪一部分?
答:数据库系统由用户、应用程序、数据库管理系统(DBMS)、数据库。硬件组成。
最关键的部分是数据库管理系统(DBMS)。
2.文件系统的主要缺点是什么?数据库系统的主要优点是什么?
答:文件系统的主要缺点:
(1)数据是分离的。
(2)数据是重复的
(3)数据独立性差
(4)数据难以按用户的需要表示
数据库系统的主要优点:
(1)数据是集成的、共享的
(2)数据重复小
(3)数据独立性好
(4)易于表示用户的视图
3.定义下列术语
数据库、数据库管理系统、数据库系统、外模式、概念模式、内模式。
答:
数据库:是一个有结构的、集成的、可共享的、统一管理的数据集合。
数据库管理系统,DBMS是一种用来管理数据库的商品化软件。
数据库系统:实现数据管理的一个系统。有数据库(DB)、数据库管理系统(DBMS)、
应用程序、用户和硬件组成。
外模式:外模式是单个用户用到的数据的逻辑结构描述,通常也称为视图、子模式。
概念模式:概念模式是数据库中数据的逻辑结构描述,也称为模式、概念结构。
内模式:内模式是数据库中数据的存储结构、存储方法、存取策略等描述,也称为物理模式、存储模式。
4.数据库管理系统的功能是什么?举例说明几种目前市场上常用的数据库产品?
答:数据库管理系统的功能是:
(1)定义数据的结构
DBMS提供数据定义语言(Data Definition Language,DDL)。通过DDL,可以方便地定义数据库中的各种对象,如可用DDL来定义图1-6学生选课数据库中的Students表结构。
(2)数据操纵功能
DBMS提供数据操纵语言(Data Manipulation Language,DML)。通过DML,可以实现数据库的基本操作。比如,向表中插入一行数据,删除某些行数据,修改表格中的某些数据,查询表中数据等。
(3)安全控制和并发控制
因为数据库是集成的、共享的。因此,DBMS具有安全控制的功能,它控制在什么情况下谁可以执行什么样的数据操作。另外,也因为允许多个用户同时访问数据库,这可能会引起访问冲突,从而导致数据的不一致。DBMS具有并发控制的功能,以避免并发操作时可能带来的数据不一致性问题。
(4)数据库的备份和恢复功能
DBMS提供了备份数据库和恢复数据库的功能。
目前市场上常用的数据库产品有:ORACLE、SQL SERVER、DB2
5.数据独立性分哪几种,是如何实现的?
答:数据独立性是指应用程序不因物理存储的改变而改变。数据独立性分为:逻辑独立性、物理独立性。物理独立性是指内模式改变时,概念模式保持不变。逻辑独立性是指概念模式改变时,外模式保持不变,从而使应用程序保持不变。
实现:当内模式改变(如数据库的存储设备和存储方法改变)时,DBMS只要通过改变概念模式到内模式映射,从而使概念模式保持不变,实现了数据的物理独立性。当数据库的概念模式改变(如增加一个表格)时,DBMS只要改变外模式到模式映射,就可保持外模式不变。因为应用程序使用外模式,所以只要外模式不变,应用程序也就保持不变。
因此,DBMS提供的三级模式、二级映射机制,实现了数据独立性。
=========================================================================================
第2章 关系模型
习题参考答案
1.解释下列术语:
(1)候选键、主键、外键
答:若表中某一列(或若干列的组合)的值能惟一标识一个行,称该列或列组为候选键。
如果一个表有多个候选键,通常选择其中一个候选键作为区分行的惟一性标识符,称为主键(primary key,简写为PK)。如果一个表只有一个候选键,那么这个候选键就作为主键。
外键(foreign key,简称FK):指—个表R1中的一个列或列组对应另一个表R2的主键,那么该列或列组称为表R1的外键。
(2)关系、关系模式、关系数据库
答:
关系是关系模型的数据结构。
关系模式是关系的形式化描述。最简单的表示为:
关系名(属性名1,属性名2,……,属性名n)
其中的某个属性名i或某些属性名组为主键,要用下划线表明。
关系数据库是表或者说关系的集合
(3)完整性规则、实体完整性规则、参照完整性规则
答:完整性规则是为了保证关系(表)中数据的正确、一致、有效而确定的规则。包括实体完整性(规则)、参照完整性(规则)和用户自定义完整性(规则)三大类。
实体完整性规则是表中任意一行的主键值不能为空值。
参照完整性规则是一个表的外键值可以为空值。若不为空值,则必须等于另一个表中主键的某个值。
2.如何判断一个表是否与一个关系等价?
答:根据关系的性质来判断。关系的性质是:
(1)关系中每一属性都是最小的。
(2)关系中同一属性的所有属性值属于同一数据类型。
(3)关系中的属性名不能重复。
(4)关系的属性位置从左到右出现的顺序无关紧要。
(5)关系中任意两个元组不能完全相同。
(6)关系中的元组从上到下出现的顺序无关紧要。
因此,要使一个表与一个关系等价,则:
(1)表中每一个行与列的交叉点上只能存放一个单值。
(2)表中同一列中的所有列值都必须属于同一数据类型。
(3)表中每一列都有惟一的列名,不允许有两个列有相同的列名。
(4)表中的列从左到右出现的顺序无关紧要。
(5)表中任意两个行不能完全相同,即每一行都是惟一的,没有重复的行。
(6)表中的行从上到下出现的顺序也无关紧要,即行的次序可以任意交换。
满足上述条件的表才能称作关系。
3. 举例说明主键和外键及作用。
答:主键(primary key)是指表中的某一列或几列的组合,该列或列的组合的值惟一地标识一行记录。主键简写为PK。如学生的学号(Sno)必须惟一,它用于惟一标识一个学生。主键通常用于实施实体完整性,一般都要求每个表有而且仅有一个主键,每一个主键值必须惟一,且不能为空值(NULL)。
外键(foreign key)是指—个表中含有与另—个表的主键PK相同的列组,那么该列组称为外键,简写为FK,外键并不要求惟一。和主键一样,外键也是由一个或多个列组成。比如Sno是Students表中的主键,而在Enrollment表中是外键,它代表的是一个选课的学生的学号。外键的作用是实现参照完整性。
4.Students、Courses、Enrollment三个表的结构和内容如图2-1所示。其中Sno列是Students表的主键,Cno列是Courses表的主键,(Sno,Cno)列组是Enrollment表的主键,Sno是Enrollment的外键,与Students表的主键对应,Cno是Enrollment的另一个外键,与Courses表的主键对应。假定要向Enrollment表中插入以下新行。问哪些行能够成功插入?为什么?
(1) (‘20010119’,‘C1’,null)
答:不能。因为外键值‘20010119’对应的主键值不在Students表中。违反实体参照性规则。
(2) (‘20010101’,‘C5’,null)
答:不能。因为外键值‘C5’对应的主键值不在Courses表中。违反实体参照性规则。
(3) (‘20010101’,‘C1’,null)
答:不能。因为主键值(‘20010101’,‘C1’)已存在。违反实体完整性规则。
(4) (null,‘C1’,80)
答:不能。因为外键值null对应的主键值不在Students表中。违反实体参照性规则。(5) (‘20010101’,‘C2’,null)
答:能。因为外键值‘20010101’对应的主键值在Students表中, 外键值‘C5’对应的主键值在Courses表中,满足实体参照性规则。同时,主键值(‘20010101’,‘C2’)惟一。满足实体完整性规则。允许Grade列为null。
5.观测以下两个表的内容,确定T1表的三个候选键,T2表的一个候选键。
T1 T2
A | B | C | D |
|
| A | B | C | D |
A1 | B1 | C1 | D1 |
|
| A1 | B1 | C1 | D1 |
A2 | B3 | C1 | D2 |
|
| A2 | B1 | C1 | D1 |
A3 | B4 | C2 | D2 |
|
| A1 | B2 | C1 | D1 |
A4 | B2 | C2 | D1 |
|
| A2 | B1 | C2 | D1 |
答:
T1表中,A,B都是候选键,因为作为单个属性它们在每一行的值都不相同,能够惟一表示一行。C,D作为单个属性,它们在每一行的值有相同的,因此,不能把所有行区别开,但是把它们放在一起,可以能够惟一表示一行。
所以,三个候选键是A,B,CD
T2表中,A,B,C,D单个属性都有重复值,不能够惟一表示每一行。AB,AC,AD,BC,BD,CD也都不是候选键,因为有重复值。ACD,BCD不是候选键,因为有重复值。ABC是一个候选键,因为可以惟一表示每一行。ABCD虽然能够表示一行,但不是最小组合,所以,只有一个候选键是ABC。
6.举例说明等值连接与自然连接的区别。
答:自然连接与等值连接差别在于:
(1)自然连接要求连接的两个表有相同的列(公共列),等值连接则不要求;
(2)自然连接结果表中去掉了重复的列,等值连接却可能包含重复的列。
7.根据图2-1给出的Students、Courses、Enrollment三个表,试用关系代数完成以下各项查询:
(1)查询计算机系男学生的信息。
答:σSdept= ‘Computer’ ∧Ssex= ‘M’(Students)
(2)查询计算机系及数学系的学生姓名、性别、年龄。
答:∏Sname, Ssex,Sage(σSdept= ‘Computer’ ∨Sdept= ‘Computer’(Students))
(3)查找选修了课程名为’Math’的学生学号、姓名、成绩。
答:∏Students.Sno, Sname,Grade(σCname=‘Math’( Students∞Enrollment∞Courses))
(4)查询没有选修C1课程的学生学号。
答:∏Sno(Students)-∏Sno(σCno=‘C1’(Enrollemnt))
(5)查询既选修了C2课程又选修了C3课程的学生学号。
答:∏Sno(σCno=‘C2’(Enrollemnt))∩∏Sno(σCno=‘C3’(Enrollemnt))
(6)查询选修了C2课程或选修了C3 课程的学生学号。
答:∏Sno(σCno=‘C2’(Enrollemnt))∪∏Sno(σCno=‘C3’(Enrollemnt))
或∏Sno(σCno=‘C1’∨Cno=‘C2’(Enrollemnt))
=========================================================================================
================================================================================
第7章 数据库的安全与保护
习题参考答案
1. 简单叙述SQL Server 2000的安全认证过程。
答:SQL Server 2000中,系统用检查口令、设置角色、许可等手段来检查用户的身份及使用权限。合法的用户才能进入数据库系统,当用户对数据库执行操作时,系统自动检查用户是否有权限执行这些操作。一个用户如果要访问SQL Server数据库中的数据,他必须要经过三个认证过程。
(1)身份验证 这时使用登录账号来标识用户,身份验证只验证用户是否具有连接到SQL Server数据库服务器的资格,即验证该用户是否具有连接到数据库服务器的“连接权”;
(2)访问验证 当用户访问数据库时,必须具有对具体数据库的访问权,即验证用户是否是数据库的合法用户;
(3)操作验证 当用户操作数据库中的数据或对象时,必须具有所要进行的操作的操作权,即验证用户是否具有操作许可。
2. 通常情况下数据库的权限种类如何划分?数据库中的用户按其操作权限可分为哪几类?每一类的权限范围是什么?
答:通常情况下,我们将数据库的中的权限划分为两类:第一类是对数据库管理系统进行维护的权限;第二类是对数据库中的对象和数据进行操作的权限,这类权限又分为两种,一种是对数据库对象的权限,包括创建、删除和修改如表、视图等数据库对象;另一种是对数据库数据的操作权,包括对表、视图数据的增加、删除、修改、查看的权力。
数据库中的用户按其操作权限的大小可分为如下三类:数据库系统管理员,具有一切权限;数据库对象拥有者,对其所拥有的对象具有一切权限;普通用户,只具有对数据库数据的增加、删除、修改、查看的权力。
3. SQL Server 2000提供的安全身份认证有哪几种模式?各自的含义是什么?
答:SQL Server 2000提供了两种确认用户的验证模式:Windows验证模式和混合验证模式。
Windows验证模式利用了Windows本身具备的管理登录、验证用户合法性的能力,允许SQL Server用户登录时使用Windows的用户名和口令。在这种模式下,用户只需要通过Windows的验证,就可以连接到SQL Server。此时,系统从用户登录到Windows时提供的用户名和密码中查找当前用户的登录信息,从而来判断当前用户是否为合法用户。
混合验证模式接受Windows授权用户和SQL授权用户。如果不是Windows操作系统的用户也希望使用SQL Server,那么应该选择混合验证模式。在该认证模式下,用户连接SQL Server时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与操作系统的登录帐号无关。SQL Server自行执行认证处理,如果输入的登录信息与系统表syslogins中的记录相匹配,则登录成功。
4. SQL Server 2000中有哪些默认的用户登录帐号?登录帐号与用户帐号有什么区别与联系?
答:SQL Server有三个默认的用户帐号:sa、administrator/bulltin和guest。其中,sa是系统管理员(System Administrator),是一个特殊的用户,在SQL Server系统和所有数据库中拥有所有的权限。administrator/bulltin是SQL Server为每一个Windows NT系统管理员提供的默认的用户帐号,这个帐号在SQL Server系统和所有的数据库中也拥有所有的权限。而guest帐号是默认访问系统用户的帐号。
在数据库中,用户或者工作组取得合法的登录帐号,只是表明该帐号通过了Windows验证或者SQL Server验证。通过登录帐号,用户只能连接到SQL Server服务器上,但不能对数据库数据和数据库对象进行某种或某些操作,只有当他同时拥有了用户帐号后,才能够访问数据库。用户帐号唯一标识用户,用户对数据库的访问权限以及对数据库对象的所有关系都是通过用户帐号来控制的。用户帐号总是基于数据库的,它只能来自于服务器上已有的登录帐号,两个不同的数据库可以有相同的用户帐号。
5. SQL Server 2000中的权限包括哪几种类型?各自的权限范围是什么?
答:在SQL Server中包括三种类型的权限:对象权限、语句权限和隐含权限。
对象权限是指用户对数据库中的表、视图等对象的操作权,相当于数据库操作语言(DML)的语句权限。表和视图权限用来控制用户在表和视图上执行SELECT、INSERT、UPDATE和DELETE语句的能力。字段权限用来控制用户在单个字段上执行SELECT、UPDATE和REFERENCES操作的能力。存储过程权限用来控制用户执行EXECUTE语句的能力。
语句权限相当于数据定义语言(DDL)的语句权限,表示对数据库的操作许可,通常是一些具有管理性的操作,如创建数据库、表和存储过程等。这种权限专指是否允许执行下列语句:CREATE TABLE、CREATE VIEW等与创建数据库对象有关的操作。
隐含权限是指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。隐含权限相当于内置权限,在系统安装以后有些用户和角色不必授权就有的权限,不需要再明确地授予这些权限。其中的角色包括固定服务器角色和固定数据库角色,用户包括数据库对象所有者。只有固定角色或者数据库对象所有者的成员才可以执行某些操作。执行这些操作的权力就成为隐含权限。
6. 为什么要备份数据库?SQL Server 2000支持哪几种类型的数据库备份?
答:在有些情况下,数据库自身的安全管理机制是无能为力的。在实际应用环境中,计算机系统可能会受到各种各样的干扰和侵袭。最为常见的有病毒破坏、计算机设备硬件故障及误操作等。在这些情况发生时,很可能导致的数据的丢失和破坏。为了能尽快恢复系统的正常工作并把损失降低到最低,必须对系统数据进行备份,以便在需要时能够及时恢复数据。
SQL Server 2000支持四种形式的备份:
(1)数据库备份(完全数据库备份)(Database Backups):数据库备份是指对数据库的完整备份,包括所有的数据库对象、数据和事务日志中的事务。
(2)差异数据库备份(增量备份)(Differential Database Backups):差异备份是指将最近一次数据库备份(完全数据库备份)以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。
(3)事务日志备份(Transaction Log Backup):事务日志是对数据库发生的事务进行备份包括从上次事务日志备份、差异备份和完全数据库备份后,数据库已经执行完成的所有事务。它可以在相应的数据库备份的基础上,将数据库恢复到特定的即时点或恢复到故障点时的状态。
(4)数据库文件和文件组备份(File and File Group Backup):文件或文件组备份是指对数据库文件或文件夹进行备份,但其不像完全数据库备份那样同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。
7. 在什么情况下需要恢复数据库?SQL Server 2000支持哪几种恢复模式?
答:数据库备份以后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。恢复数据库是指将数据库从错误描述状态恢复到正确的描述状态(最近的正确时刻)的过程。
SQL Server 2000支持:
(1)简单恢复(Simple Recovery) 所谓简单恢复就是指在进行数据库恢复时仅使用了完全数据库备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到故障发生时的状态。
(2)完全恢复(Full Recovery) 完全数据库恢复模式是指通过使用完全数据库备份和事务日志备份将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失,这成为对付因存储介质损坏而数据丢失的最佳方法。
(3)批日志恢复(Bulk-logged Recovery) 批日志恢复在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批操作所需要的存储空间。
8. 需要经常备份的系统数据库是哪些?
答:需要经常备份的系统数据库包括master和msdb。如果model数据库被修改过,也需要进行定期备份。