(完整版)数据库课后部分习题答案2015 下载本文

习题1

5.实体之间联系有哪几种?分别举例说明?

答:1:1联系:如果实体集El中每个实体至多和实体集E2中的一个实体有联习,反之亦然,那么El和E2的联系称为“l:1联系”。例如:电影院的座位和观众实体之间的联系。

1:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和El中一个实体有联系,那么El和E2的联系是“1:N联系”。 例如:部门和职工两个实体集之间的联系。

M:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么El和E2的联系称为“M:N联系”。例如:工程项目和职工两个实体集之间的联系。

7.简述数据库系统的两级映像和数据独立性之间的关系。

答:为了能够在系统内部实现外部级、概念级和内部级3个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:

外模式/模式映像定义通常包含在各自外模式的描述中,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性,应用程序是依据外模式编写的;

模式/内模式映像包含在模式描述中,此映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系,它保证了数据与程序的物理独立性,所以称为数据的物理独立性。

习题2

1.名词解释:

超键:能惟一标识元组的属性或属性集,称为关系的超键。 候选键:不含有多余属性的超键,称为候选键。 实体完整性规则:实体的主键值不允许是空值。 参照完整性规则:依赖关系中的外键值或者为空值,或者是相应参照关系中某个主键值。 函数依赖:设有关系模式R(U),X和Y是属性集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作X→Y。

无损分解:当对关系模式R进行分解时,R的元组将分别在相应属性集进行投影而产生新的关系。如果对新的关系进行自然连接得到的元组集合与原关系完全一致,则称该分解为无损分解。

2NF:如果关系模式R属于1NF,且它的每一个非主属性都完全函数依赖于R的候选键,则称R属于第二范式,简记为R∈2NF。

3NF:如果关系模式R属于1NF,且每个非主属性都不传递依赖于R的候选键,那么称R属于第三范式,简记为R∈3NF。

3.笛卡尔积、等值连接和自然连接三者之间有什么区别?

答:笛卡儿积是一个基本操作,而等值连接和自然连接是组合操作。 设关系R的元数为r,元组个数为m;关系S的元数为s。,元组个数为n。 那么,R×S的元数为r+s,元组个数为m×n;

R S的元数也是r+s,但元组个数小于等于m×n;

iθj 1

R S的元数小于等于r+s,元组个数也小于等于m×n: 4.设有关系R和S,如图2.17所示。

R

A 3 2 7 4 B 6 5 2 4 C 7 7 3 3 S

A 3 7 B 4 2 C 5 3 图2.17 关系R和S

计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<'5'(R),R S,R S。

2<2 答: B C B C R∪S A R×S R.A R.B R.C S.A S.B S.C R-S A

3 6 7 3 6 7 3 4 5 3 6 7

2 5 7 3 6 7 7 2 3 2 5 7

7 2 3 2 5 7 3 4 5 4 4 3

4 4 3 2 5 7 7 2 3 A B C R∩S 3 4 5 7 2 3 3 4 5 7 2 3 7 2 3 7 2 3 π3,2(S) C B 4 4 3 3 4 5 σB<’5’(R) A B C 5 4 4 4 3 7 2 3 7 2 3 3 2 4 4 3 B C R S A S R.A R.B R.C S.A S.B S.C R 7 2 3 2<2 7 2 3 3 4 5

5.设教学管理数据库中有三个关系 S(SNO,SNAME,AGE,SEX,SDEPT) SC(SNO,CNO,GRADE)

C(CNO,CNAME,CDEPT,TNAME) 试用关系代数表达式表示下列查询语句:

(1) 检索LIU老师所授课程的课程号、课程名。 (2) 检索年龄大于23岁的男学生的学号与姓名。

(3) 检索学号为S3学生所学课程的课程名与任课教师名。 (4) 检索至少选修LIU老师所授课程中一门课的女学生姓名。 (5) 检索WANG同学不学的课程的课程号。 (6) 检索至少选修两门课程的学生学号。 解:

⑴ πCNO,CNAME(σTEACHER=’LIU’(C)) ⑵ πSNO,SNAME(σAGE>’23’∧SEX=’M’(SC)) ⑶ πCNAME,TEACHER(σSNO=’S3’(SC C))

2

⑷ πSNAME(σSEX=’F’∧TEACHER=’LIU’(S SC C)) ⑸ πCNO(C)-πCNO(σSNAME=’WANG’(S SC)) ⑹ π1(σ1=4∧2≠5(SC×SC))

6.设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,试写出关系模式R的候选键。并说明理由。

解:R的关键码为ACD。因为从已知的F,A→B,只能推出ACD→ABCD。 7.设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。 (1) 试说明R不是2NF模式的理由。

(2) 试把R分解成2NF模式集。

答:设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。 ⑴ 试说明R不是2NF模式的理由。

⑵ 试把R分解成2NF模式集。

答:⑴ 从已知的函数依赖集F,可知R的候选键是AB。另外,由AB→CD可推出AB→D,再由A→D可知AB→D是部分(局部)函数依赖,因此R不是2NF模式。

⑵ 如果将R分解成{AD,ABC},则是2NF模式集。

8.设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。试回答下列问题: (1) 根据上述规定,写出模式R的基本FD和候选键。

(2) 说明R不是2NF的理由,并把R分解成2NF模式集。 (3) 进而分解成3NF模式集。 解:

⑴ 基本的FD有三个:

(职工编号,日期)→ 日营业额 职工编号 → 部门名 部门名 → 部门经理 R的关键码为:(职工编号,日期)。 ⑵ R中有两个这样的FD:

(职工编号,日期)→(部门名,部门经理) 职工编号 →(部门名,部门经理)

可见前一个FD是局部依赖,所以R不是2NF模式。 R应分解Rl(职工编号,部门名,部门经理) R2(职工编号,日期,日营业额) 此处,Rl和R2都是2NF模式。 ⑶ R2已是3NF模式。

在R1中,存在两个FD:职工编号 → 部门名 部门名 → 部门经理

因此,“职工编号 → 部门经理”是一个传递依赖,Rl不是3NF模式。 R1应分解成R11(职工编号,部门名) R12(部门名,部门经理)

这样,ρ={R11,Rl2,R2}是一个3NF模式集。

3

习题3

1.名词解释

数据库设计:是指对于给定的软、硬件环境,针对现实问题,设计一个较优的数据模型,建立相应的数据库结构和数据库应用系统。

数据流图:是从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法。具有直观、易于被用户和软件人员双方都能理解的一种表达系统功能的描述方式。

数据字典:数据字典提供了对数据库数据描述的集中管理,它的功能是存储和检索各种数据描述,如叙述性的数据定义等,并且为DBA提供有关的报告。对数据库设计来说,数据字典是进行详细的数据收集和数据分析所获得的主要成果。数据字典中通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。

弱实体:一个实体对于另一些实体(父实体)具有很强的依赖联系,而且该实体主键的部分或全部从其父实体中获得,则称该实体为弱实体。

概念结构设计:概念结构设计就是将需求分析得到的用户需求抽象为信息结构即概念模型的过程,是对信息世界进行建模,常用的概念模型是E-R模型。

逻辑结构设计:是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。

物理结构设计:数据库最终是要存储在物理设备上的。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。

2.什么是数据库设计目标?数据库设计的基本步骤有哪些?

答:数据库设计的主要目标有:最大限度地满足用户的应用功能需求、获得良好的数据库性能、对现实世界模拟的精确度要高、数据库设计应充分利用和发挥现有DBMS的功能和性能、符合软件工程设计要求。

数据库设计的基本步骤是:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施阶段、数据库运行和维护阶段。

5.简述采用E-R方法的数据库概念设计过程。

答:利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局ER模式,最后对全局ER模式进行优化,得到最终的ER模式,即概念模式。

15.假设某超市公司要设计一个数据库系统来管理该公司的业务信息。该超市公司的业务管理规则如下:

(1) 该超市公司有若干仓库,若干连锁商店,供应若干商品。

(2) 每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。 (3) 每个商店销售多种商品,每种商品可在不同的商店销售。

(4) 每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。每种商品可以有多种销售价格。

(5) 超市公司的业务员负责商品的进货业务。 试按上述规则设计E-R模型。 解:

4

仓库 N M M M P 业务员进货 库存 商店 发货 N 1 1 N P N 销售 商品 M 拥有 主管 1 具有 1 N N 收银员 经理 销售价格

16.假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。一个系有若干专业,每个专业每年只招一个班,每个班有若干学生;一个系的学生住在同一宿舍区;每个学生可以参加多个学会,每个学会有若干学生,学生参加某学会有入会年份。试为该大学的系、学生、班级、学会等信息设计一个E-R模型。

解:下图所示的是一种设计方案。

专业 N 1

设置 招收

1 N

系 班级

N 1

住宿 有

1 N 宿舍区 学生

M

参加

5

N 学会 习题4

4.给出下列T-SQL语句的运行结果。 DECLARE @d DATETIME SET @d='2013-8-26' SELECT @d+10,@d-10 解:

5.给出下列各T-SQL语句的运行结果。

(1) SELECT CHARINDEX('科学','计算机科学与技术专业')

(2) SELECT ROUND(26.213+124.1869,2)

(3) SELECT STR(234.5678,6,2)

(4) SELECT '25+12='+cast(37 as nvarchar) 解:

(1) 4 (2) 150.4000 (3) 234.57 (4) 25+12=37

习题五

4.SQL Server 2008支持的数据完整性约束有哪几类?各有什么作用? 答:

SQL Server 2008支持的数据完整性约束包括5种类型:主键(PRIMARY KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、默认值(DEFAULT)约束和外键(FOREIGN KEY)约束。

PRIMARY KEY约束能唯一地标识表中数据的每一行。

UNIQUE约束用来限制不受主键约束的列上的数据的唯一性。

CHECK约束用于限制输入一列或多列值的范围,从逻辑表达式判断数据的有效性。 DEFAULT约束是在用户在插入新的数据行时,如果没有为该列指定数据,那么系统就将默认值赋给该列。

FOREIGN KEY约束用于建立和加强两个表(主表和从表)的一列或多列数据之间的链接。

5.在图书销售数据库中有表结构BOOK(BOOK_ID,BOOK_NAME,PRICR)和

AUTHOR(AUTHOR_NAME,BOOK_ID,ADDRESS),写出完成下列操作的T-SQL语句。

(1) 设置BOOK中BOOK_ID为主键; (2) 设置AUTHOR中BOOK_ID为外键;

(3) 在表BOOK中插入数据(’1203’,’数据库系统与应用教程’,32.8)

(4) 修改表BOOK中BOOK_ID为“1013”的PRICR,使之为原PRICR的0.75倍。

6

(5) 删除表AUTHOR中的AUTHOR_NAME为“王昌辉”的记录。

解:

(1) USE EDUC

GO

ALTER TABLE BOOK

ADD CONSTRAINT PK_BOOK_ID PRIMARY KEY CLUSTERED(BOOK_ID) GO

(2) USE EDUC

GO

ALTER TABLE AUTHOR

ADD CONSTRAINT FK_AUTHOR_BOOK FOREIGN KEY(BOOK_ID) REFERENCES

BOOK(BOOK_ID)

GO

(3) USE EDUC

GO

INSERT into BOOK VALUES(’1203’,’数据库系统与应用教程’,32.8) GO

(4) USE EDUC

GO

UPDATE BOOK

SET PRICR=PRICR*0.75 WHERE BOOK_ID=’1013’

(5) USE EDUC

GO

DELETE AUTHOR

WHERE AUTHOR_NAME=’王昌辉’ GO

习 题 6

1.名词解释:

连接查询 子查询 无关子查询 相关子查询 游标

答:连接查询:是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。

子查询:当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。

无关子查询:不依赖于父查询的字查询。它执行的过程是:首先执行子查询语句,得到的子查询结果集传递给父查询语句使用。

相关子查询:SELECT语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。这种子查询称为相关子查询。

游标:是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。它从包括多个元组的集合中每次读取一个元组的机制。

5. 假设某“仓库管理”关系模型有下列五个关系模式:

7

零件PART(PNO,PNAME,COLOR,WEIGHT) 项目PROJECT(JNO,JNAME,JDATE)

供应商SUPPLIER(SNO,SNAME,SADDR) 供应P_P(JNO,PNO,TOTAL)

采购P_S(PNO,SNO,QUANTITY)

试用T-SQL DDL语句定义上述五个基本表,并说明主键和外键。 解:

CREATE TABLE PART

(PNO CHAR(6),PNAME CHAR(10) NOT NULL,COLOR CHAR(6),WEIGHT FLOAT(6),PRIMARY KEY(PNO));

CREATE TABLE PROJECT

(JNO CHAR(6),JNAME CHAR(12)NOT NULL,DATE DATE,PRIMARY KEY(JNO)); CREATE TABLE SUPPLIER

(SNO CHAR(8),SNAME CHAR(12)NOT NULL,SADDR VARCHAR(30),PRIMARY KEY(SNO));

CREATE TABLE P_P

(JNO CHAR(6),PNO CHAR(6),TOTAL INTEGER,PRIMARY KEY(JNO,PNO); FOREIGN KEY(JNO) REFERENCES PROJECT(JNO), FOREIGN KEY(PNO) REFERENCES PART(PNO)); CREATE TABLE P_S

(PNO CHAR(6),SNO CHAR(8),QUANTITY INTEGER,PRIMARY KEY(PNO,SNO) FOREIGN KEY(PNO) REFERENCES PART(PNO),

FOREIGN KEY(SNO) REFERENCES SUPPLIER(SNO));

习 题 7

2.简述数据库视图和基本表的联系与区别。 答:

联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系

区别:

(1) 视图是已经编译好的sql语句,而表不是。 (2) 视图没有实际的物理记录。而表有。 (3) 表是内容,视图是窗口。

(4) 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四

对它进行修改,但视图只能有创建的语句来修改。 (5) 表是内模式,试图是外模式

(6) 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些

SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

(7) 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

8

(8) 视图的建立和删除只影响视图本身,不影响对应的基本表。 3.可更新视图必须满足哪些条件? 答:最重要的一个条件就是一个可更新视图只能包含一个表。其他的限制包括不允许使用GROUP BY子句和ORDER BY子句、不支持DISTINCT关键字、不能使用聚合函数或子查询以及不能包含计算列等。诸如此类的限制还有很多。某些SQL语句还要求一些额外的具体条件。例如,要对一个视图执行INSERT语句,则必须将所有定义为NOT NULL的列都包含在创建该视图的SELECT语句中。

6.简述创建索引的必要性和作用。

答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的内容,可以通过目录中章节的页号找到其对应的内容。类似地,索引通过记录表中的关键值指向表中的记录,这样数据库引擎就不用扫描整个表而定位到相关的记录。相反,如果没有索引,则会导致SQL Server搜索表中的所有记录,以获取匹配结果,这样就会大大降低查询的效率。

第8章

1.名词解释:

存储过程 触发器 用户定义函数 答:

存储过程:是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

触发器:是一种对表进行插入、更新、删除的时候会自动执行的特殊存储过程。

用户定义函数:像系统内置函数一样,可以接受参数,执行复杂的操作并将操作结果以值的形式返回,也可以将结果用表格变量返回。

3.简述存储过程与触发器的区别。

答:触发器与存储过程可以说是非常相似,可以说是一种变种的存储过程,触发器和存储过程一样都是SQL语句集。存储过程执行后驻留在计算机的高速缓冲区中,利用存储过程可以提高程序的效率,但存储过程只能通过调用来运行,可以有返回的状态值,存储过程可以在程序端调用执行。触发器是不可以在程序端调用的,它是SQL服务器端自动运行。触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。

4.AFTER触发器和INSTEAD OF触发器有什么不同?

答:AFTER触发器要求只有执行某一操作INSERT、UPDATE、DELETE之后触发器才被触发,且只能定义在表上,也可以针对表的同一操作定义多个触发器以及它们触发的顺序。而INSTEAD OF触发器表示并不执行其定义的操作(INSERT、UPDATE、DELETE)而仅是执行触发器本身。既可以在表上定义INSTEAD OF触发器,也可以在视图上定义,但对同一操作只能定义一个INSTEAD OF触发器。

习 题 9

9

1.名词解释:

事务 封锁 保存点 死锁 答:

事务:就是用户对数据库进行的一系列操作的集合,对于事务中的系列操作要么全部完成,要么全部不完成。

封锁:是使事务对它要操作的数据有一定的控制能力。封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性。

保存点:是事务在某一点处设置一个标记,这样当使用回滚语句时,可以不用回滚到事务的起始位置,而是回滚到标记所在的位置。

死锁:它是指系统中有两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事务都无法继续执行。

习 题 10

2.SQL Server有几种身份验证方式,它们的区别是什么?

答:SQL Server提供了两种对用户进行身份验证的模式:Windows验证模式、SQL Server 和Windows 混合验证模式,默认模式是Windows身份验证模式。其中Windows验证模式只适用于能够提供有效身份验证的Windows操作系统。混合验证模式允许基于Windows的和基于SQL Server的身份验证,系统直接采用Windows的身份验证机制,否则SQL Server将通过账户的存在性和密码的匹配性自行进行验证,即采用SQL Server身份验证模式。

7. 给习题10-6中的数据库用户User_x1设置SELECT权限和User_x2设置INSERT、UPDATE和DELETE权限。

解:

USE JXGL

GRANT SELECT ON S TO User_x1 GO

类似地,可以对其它表授予权限。

USE JXGL

GRANT INSERT,UPDATE,DELETE ON S TO User_x2 GO

类似地,可以对其它表授予权限。

习 题 11

2.SQL Server有几种常用的数据库备份方式?它们各有什么特点?

答: SQL Server常用的数据库备份方式有完全备份、差异备份、事务日志备份以及文件和文件组备份。

完整数据库备份就是备份数据库文件、这些文件的地址以及事务日志的某些部分(从备份开始时所记录的日志顺序号到备份结束时的日志顺序号)。这是任何备份策略中都要求

10

完成的一种备份类型。

差异数据库备份是指将从最近一次完全数据库备份以后发生改变的数据进行备份。如果在完整备份后将某个文件添加至数据库,则下一个差异备份将会包括该新文件。这样可以方便地备份数据库,而无须了解各个文件。

尽管事务日志备份就是备份自从上一个事务以来已经发生了变化的部分。事务日志备份比完整数据库备份节省时间和空间,而且利用事务日志备份进行恢复时,可以指定恢复到某一个事务。

文件组备份允许控制数据库对象(比如表或视图)存储到这些文件当中的某些文件上。数据库不会受到只存储在单个硬盘上的限制,而是可以分散到许多硬盘上。

11