《数据库原理与应用教程》(第4版)习题参考答案_第1页
《数据库原理与应用教程》(第4版)习题参考答案_第2页
《数据库原理与应用教程》(第4版)习题参考答案_第3页
《数据库原理与应用教程》(第4版)习题参考答案_第4页
《数据库原理与应用教程》(第4版)习题参考答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章数据库概述

1.试说明数据、数据库、数据库管理系统和数据库系统的概念。

答:数据是数据库中存储的基本对象。

数据库:是存放数据的场所。

数据库管理系统:管理数据库数据及其功能的系统软件。

数据库系统:由数据库、数据库管理系统、数据库管理员和数据库应用程序共同构

成的系统。

2.数据管理技术的发展主要经历了哪几个阶段?

答:文件管理和数据库管理。

3.文件管理方式在管理数据方面有哪些缺陷?

答:(1)编写应用程序不方便。(2)数据冗余不可避免。(3)应用程序依赖性。(4)不

支持对文件的并发访问。(5)数据间联系弱。(6)难以满足不同用户对数据的需求。

4.与文件管理相比,数据库管理有哪些优点?

答:(1)相互关联的数据集合;(2)较少的数据冗余;(3)程序与数据相互独立;

(4)保证数据的安全可靠;(5)最大限度地保证数据的正确性;(6)数据可以共享并能

保证数据的一致性。

5.比较用文件管理和用数据库管理数据的主要区别。

答:文件系统不能提供数据的独立性,也不能提供数据共享、安全性等功能,这些

需要客户端编程实现。而数据库管理系统可以很方便地提供这些功能。

6.在数据库管理方式中,应用程序是否需要关心数据的存储位置和存储结构?为什

么?

答;不需要。因为这些都由数据库管理系统来维护。

7.在数据库系统中,数据库的作用是什么?

答:数据库是存储数据的仓库,其作用是存储数据。

8.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据文件吗?

答:不可以。

9.数据独立性指的是什么?它能带来哪些好处?

答:数据独立性包括逻辑独立性和物理独立性两部分。物理独立性是指当数据的存

储结构发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内

容发生变化时,不影响应用程序的特性。这两个独立性使用户只需关心逻辑层即可,同

时增强了应用程序的可维护性。

10.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?

答:数据库系统一般包括3个主要部分:数据库、数据库管理系统和应用程序。数

据库是数据的汇集,它以一定的组织形式保存在存储介质上;数据库管理系统是管理数

据库的系统软件,它可以实现数据库系统的各种功能;应用程序专指以数据库数据为基

础的程序。

第2章数据库系统结构

1.解释数据模型的概念,为什么要将数据模型分成两个层次?

答:数据模型实际上是模型化数据和信息的工具,在数据库中,数据模型要满足三个要

求:第一,要能够比较真实地模拟现实世界;第二,要容易被人们理解;第三,要能够

很方便地在计算机上实现。用一种模型来同时满足这三方面的要求比较困难,因此在在

数据库系统中针对不同的使用对象和应用目的,采用了两种不同的数据模型来实现,一

个是概念层数据模型,用来满足第一和第二个要求;另一个是组织层数据模型,用来满

足第三个要求。

2.概念层数据模型和组织层数据模型分别是针对什么进行的抽象?

答:概念层数据模型主要针对用户的业务进行抽象,组织层数据库模型主要针对具体的

数据库管理系统采用的数据组织方式进行抽象。

3.实体之间的联系有几种?分别是哪些?请为每一种联系举出一个例子。

答:有三种:1:1;1:n;m:no1:1示例:系和系主任。l:n示例:班和学生;m:n示例:

教师和学生。

4.说明实体-联系模型中的实体、属性和联系的概念。

答:实体是具有公共性质的并可相互区分的现实世界对象的集合。属性是实体所具有的

特征或性质。联系是实体之间的关联关系。

5.指明下列实体间联系的种类:

(1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)。

答:一对多。

(2)商店和顾客。

答:多对多。

(3)国家和首都。

答:一对一。

6.解释关系模型中的主码、外码、主属性、非主属性的概念,并说明主码、外码的作用。

答:主码是用于唯一确定表中一个元组的一个属性或最小的属性组。用于实现实体完整

性。

外码用于实现数据之间的关联关系(参照完整性)。

主属性:候选键所包含的属性。

非属性:主属性之外的其他属性。

7.指出下列关系模式的主码:

(1)考试情况(课程号,考试性质,考试日期,考试地点)。假设一门课程在不同的日期可

以有多次考试,但在同一天只能考一次。多门不同的课程可以同时进行考试。

答:(课程号,考试日期)

(2)教师授课(教师号,课程号,授课时数,学年,学期)。假设一名教师在同一个学年和

学期可以讲授多门课程,也可以在不同学年和学期多次讲授同一门课程,对每门课程的讲授

都有一个授课时数。

答:(教师号,课程号,学年)

(3)图书借阅(书号,读者号,借书日期,还书日期)。假设一个读者可以在不同的日期多

次借阅同一本书,一个读者可以同时借阅多本不同的图书,一本书可以在不同的时间借给不

同的读者。但一个读者不能在同一天对同一本书借阅多次。

答:(书号,读者号,借书日期)

8.设有如下两个关系模式,试指出每个关系模式的主码、外码,并说明外码的引用关系。

产品表(产品号,产品名称,产品价格,生产日期),其中产品名称有重复。

销售表(产品号,销售时间,销售数量),假设可同时销售多种产品,但同一产品在

同一时间只销售一次。

答:产品的主码:产品号,无外玛。

销售的主码:(产品号,销售时间),其中产品号为引用产品表的外码。

9.关系模型的数据完整性包含哪些内容?分别说明每一种完整性的作用。

答:包含:实体完整性、参照完整性和用户定义的完整性。

实体完整性:作用是保证表中的不存储相同的数据,也不存储无意义的数据。

参照完整性:用于描述实体之间的联系。

用户定义的完整性:用于限定属性的取值范围,目的是保证数据库中存储的值与现

实世界相符。

10.数据库系统包含哪三级模式?试分别说明每一级模式的作用?

答:外模式、模式和内模式。

外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户

对数据的需求。

模式:是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需

求。

内模式:是对整个数据库的底层表示,它描述了数据的存储位置和存储方式。

11.数据库系统的两级映像的功能是什么?它带来了哪些好处?

答:两级映像是外模式/模式映像和模式/内模式映像。外模式/模式映像保证了当模式发

生变化时可以保证外模式不变,从而是用户的应用程序不需要修改。模式/内模式映像保

证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,从而使

用户不需要知道这些变化。

12.数据库三级模式划分的优点是什么?它能带来哪些数据独立性?

答:数据库三级模式的划分使用户可以在逻辑层处理数据,而不需要关心具体的物理细

节,同时当内模式或模式发生变化时,可以通过模式之间的映像关系,保持外模式不变,

从而避免了修改应用程序。三级模式以及三级模式之间的两级映像带来了数据的逻辑独

立性和物理独立性。

13.简单说明数据库管理系统包含的功能。

答:数据定义、数据操纵、优化和执行、数据安全性和完整性、数据恢复和并发、尽可能高

效的完成各种操作。

第3章SQL语言基础及数据定义功能

1.Tinyint数据类型定义的数据的取值范围是多少?

答:0、255。

2.日期时间类型中的日期和时间的输入格式是什么?

答:在输入日期部分时可采用英文数字格式、数字加分隔符格式和纯数字格式。采

用英文数字格式时,月份可用英文全名或缩写形式。

在输入时间部分时可以采用12小时格式或24小时格式。使用12小时制时要加

上AM或PY说明是上午还是下午。在时与分之间可以使用冒号(:)作为分隔符

3.SmallDatatime类型精确到哪个时间单位?

答:分钟。

4.定点小数类型numeric中的p和q的含义分别是什么?

答:P代表数字位长度,即整数部分和小数部分的数字位之和。q代表小数位数。

5.Char(10)>nchar(10)的区别是什么?它们各能存放多少个字符?占用多少空间?

答:char(10)是普通编码,固定占10个字节,最多能存放10个字母或数字字符,5个

汉字。Nchar(10)是统一字符编码,固定占20个字节,最多能存放10个字符(包括字母

和汉字)。

6.Char(n)和varchar(n)的区别是什么?其中n的含义是什么?各占用多少空间?

答:Char(n)是定长字符类型,varchar(n)是可变长字符类型。Char(n)中的n代表固定

占n个字节的空间;varchar(n)中的n代表最多占n个字节的空间。

7.数据完整性的作用是什么?

答:数据的完整性作用是防止数据库中存在不符合语义的数据。

8.在对数据进行什么操作时,系统检查DEFAULT约束?在进行什么操作时,检查CHECK

约束?

答:插入操作且省略了某些列的值时检查DEFAULT约束。插入和修改操作检查CHECK约

束。

9.UNIQUE约束的作用是什么?

答:限制列的取值不重复。

10.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束:。

答:

Createtable图书表(

书号nchar⑹primarykey,

书名nvarchar(30)notnull,

第一作者char(10)notnull,

出版日期smalldatetime,

价格:numeric(4,1)

Createtable书店表(

书店编号nchar(6)primarykey,

店名nvarchar(30)notnull,

电话char(8)check(电话like

'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9:,),

地址varchar(40),

邮政编码char(6)

>

Createtable图书销售表(

书号nchar(6)notnull,

书店编号nchar(6)notnull,

销售日期smalldatetimenotnull;

销售数量smalldatetimecheck(销售数量>=1);

>

11.为“图书表”添加“印刷数量”歹u,类型为整数,同时添加约束,要求此列的取值

要大于等于1000c

答:altertable图书表Add印刷数量intcheck(印刷数量>=1000)

12.删除“书店表”中的“邮政编码”列。

答:altertable书店表Dropcolumn邮政编码

13.将“图书销售表”中的“销售数量”列的数据类型改为整型。

答:altertable图书销售表Altercolumn销售数量int

第4章数据操作

1.查询sc表中的全部数据。

Select*fromsc

2.查询计算机系学生的姓名和年龄。

Selectsname,sagefromstudentwheresdept='计算机系'

3.查询成绩在70〜80分的学生的学号、课程号和成绩。

Selectsno,eno,gradefromscwheregradebetween70and80

4.查询计算机系年龄在18〜20岁的男学生的姓名和年龄。

Selectsname,sagefromstudent

wheresdept='计算机系'andsagebetween18and20

5.查询课程号为“cOOl”的课程的最高的分数。。

Selectmax(grade)fromscwhereeno='C001z

6.查询计算机系学生的最大年龄和最小年龄。

Selectmax(sage)最大年龄,min(sage)最小年龄fromstudent

Wheresdept='计算机系,

7.统计每个系的学生人数。

Selectsdept,count(*)人数fromstudent

Groupbysdept

8.统计每门课程的选课人数和考试最高分。

Selectcn。,count(*)选课人数,max(grade)最高分fromsc

Groupbyeno

9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

Selectsno,count(*)选课门数,sum(grade)fromsc

Groupbysnoorderbycount(*)asc

10.查询总成绩超过200分的学生,要求列出学号、总成绩。

Selectsno,sum(grade)总成绩fromsc

Groupbysnohavingsum(grade)>200

11.查询选修“C002”号课程的学生的姓名和所在系。

Selectsname,sdeptfromstudentsjoinscons.sno=sc.sno

Whereeno='C002z

12.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。

Selectsname,eno,grade

Fromstudentsjoinscons.sno=sc.sno

Wheregrade>80

Orderbygradedesc

13.查询哪些课程没有学生选修,要求列出课程号和课程名。

Selectc.cnozcnamefromcoursecleftjoinsconc.eno=sc.eno

Wheresc.enoisnull

14.查询与Java在同一学期开设的课程的课程名和开课学期。

Selectame,cl.semesterfromcoursecl

joincoursec2oncl.semester=c2.semester

Whereame='Javazandame!='Java'

15.查询与李勇年龄相同的学生的姓名、所在系和年龄。

Selectsi.sname,si.sdept,si.sagefromstudentsi

joinstudents2onsi.sage=s2.sage

Wheres2.sname='李勇,andsi.sname!='李勇,

16.用子查询实现如下查询:

(1)查询选修了“C001”号课程的学生的姓名和所在系。

Selectsname,sdeptfromstudent

Wheresnoin(selectsnofromscwhereeno='C001')

(2)查询数学系成绩80分以上的学生的学号、姓名、课程号和成绩。

Selectsnofsname,eno,gradefromstudents

Joinscons.sno=sc.sno

Wheresdept='数学系'andsnoin(

Selectsnofromscwheregrade>80)

(3)查询计算机系考试成绩最高的学生的姓名。

Selectsnamefromstudentsjoinscons.sno=sc.sno

Wheresdept='计算机系,andgrade=(

Selectmax(grade)fromscjoinstudentsons.sno=sc.sno

Wheresdept'计算机系,)

(4)查询年龄最大的男学生的姓名和年龄。

Selectsname,sagefromstudent

Wheresage=(selectmax(sage)fromstudent

wheressex='男')

andssex='男'

(5)查询数据结构考试成绩最高的学生的姓名、所在系、性别和成绩。

Selectsname,sdept,ssex,gradefromstudents

Joinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

Wherecname='数据结构'

Andgradein(

Selectmax(grade)fromscjoincourseconc.cno=sc.eno

Wherecname='数据结构,)

17.查询没有选修Java课程的学生的姓名和所在系。

Selectsname,sdeptfromstudent

Wheresnonotin(

Selectsnofromscjoincourseconc.eno=sc.eno

Wherecname='Java')

18.查询计算机系没有选课的学生的姓名和性别。

Selectsname,ssexfromstudent

Wheresdept='计算机系,

Andsnonotin(

Selectsnofromsc)

19.创建一个新表,表名为其结构为(COL1,COL2,COL3),其中,

COL1:整型,允许空值。

COL2:字符型,长度为10,不允许空值。

COL3:字符型,长度为10,允许空值。

试写出按行插入如下数据的语句(空白处表示空值)。

C0L1C0L2C0L3

B1

1B2C2

2B3

Createtabletest_t(

C0L1int,

COL2char(10)notnull>

COL3char(10))

Insertintotest_t(COL2)values('Bl')

Insertintotest_t(COL1,COL2)values(1,zB2f)

Insertintotest_tvalues(2,'B3',NULL)

20.删除考试成绩低于50分的学生的选课记录。

Deletefromscwheregrade<50

21.删除没人选的课程的基本信息。

Deletefromcoursewhereenonotin(

Selectenofromcourse)

22.删除计算机系Java成绩不及格学生的Java选课记录。

Deletefromsc

Fromscjoinstudentsons.sno=sc.sno

Joincourseconc.eno=sc.eno

wherecname='Java7andgrade<60

andsdept='计算机系,

23.将第2学期开设的所有课程的学分增加2分。。

UpdateCoursesetcredit=credit+2

Wheresemester=2

24.将Java课程的学分改为3分。

Updatecoursesetcredit=3

wherecname='Java7

25.将计算机系学生的年龄增加1岁。

UpdateStudentsetsage=sage+1

wheresdept='计算机系'

26.将信息系学生的“计算机文化学”课程的考试成绩加5分。

UpdateSCsetgrade=grade+5

Fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

Wheresdept='信息系,andcname='计算机文化学,

27.查询每个系年龄大于等于20的学生人数,并将结果保存到一个新永久表Dept_Age中。

Selectsdept,count(*)人数intoDept_Agefromstudent

Wheresage>=20

Groupbysdept

28.查询计算机系每个学生的JAVA考试情况,列出学号、姓名、成绩和成绩情况,其中成绩

情况的显示规则为:

如果成绩大于等于90,则成绩情况为“好”;

如果成绩在80〜89,则成绩情况为“较好”;

如果成绩在70〜79,则成绩情况为“一般”;

如果成绩在60〜69,则成绩情况为“较差”;

如果成绩小于60,则成绩情况为“差二

Selects.sno,snam㊀,grade,成绩情况=

Case

Whengrade>=90then'好'

Whengradebetween80and89then、较好,

Whengradebetween70and79then'一般,

Whengradebetween60and69then、较差,

Else'差,

end

fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

Wheresdept>=20

29.统计每个学生的选课门数(包括没有选课的学生),列出学号、选课门数和选课情况,其

中选课情况显示规则为:

如果选课门数大于等于6门,则选课情况为“多”;

如果选课门数超过在3〜5门,则选课情况为“一般”;

如果选课门数在「2H,则选课情况为“偏少

如果没有选课,则选课情况为“未选课”。

30.修改全部课程的学分,修改规则如下:

如果是第1〜2学期开设的课程,则学分增加5分;

如果是第3〜4学期开设的课程,则学分增加3分;

如果是第5〜6学期开设的课程,则学分增加1分;

对其他学期开设的课程,学分不变。

Selects.sno,count(sc.sno)选课门数,选课情况=

Case

Whencount(sc.sno)>=6then'多,

Whencount(sc.sno)between3and5then'一般'

Whencount(sc.sno)between1and2then'偏少'

Whencount(sc.sno)=0then'未选课,

end

fromstudentsleftjoinscons.sno=sc.sno

Groupbys.sno

31.查询“李勇”和“王大力”所选的全部课程,列出课程名、开课学期和学分,不包括重

复的结果。

Selectcname,semester,creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='李勇'

union

Selectcname,semester^creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='王大力'

32.查询在第3学期开设的课程中,“李勇”选了但“王大力”没选的课程,列出课程名和学

分。

Selectcname,semester,creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='李勇'andsemester=3

except

Selectcname,semester,creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='王大力'andsemester=3

33.查询在学分大于3分的课程中,“李勇”和“王大力”所选的相同课程,列出课程名和学

分。

Selectcname,semester,creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='李勇'andcredit>3

INTERSECT

Selectcname,semester,creditfromcoursec

joinsconc.eno=sc.eno

Joinstudentsons.sno=sc.sno

Wheresname='王大力'andcredit>3

第5章索引和视图

1.试说明使用视图的好处。

答:利用视图可以简化客户端的数据查询语句,使用户能从多角度看待同一数据,可以

提高数据的安全性,视图对应数据库三级模式中的外模式,因此提供了一定程度的逻辑

独立性。

2.使用视图可以加快数据的查询速度,这句话对吗?为什么?

答:不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,

即从外模式到模式的转换。

3.使用第3章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL

语句。

(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。

CreateviewvlAs

Selects.sno,sname,sdept,c.cnofcnamezcredit

Fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

(2)查询学生的学号、姓名、选修的课程名和考试成绩。

Createviewv2As

Selects.sno,sname,cname,grade

Fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

(3)统计每个学生的选课门数,要求列出学生学号和选课门数。

Createviewv3As

Selectsnozcount(*)astotal

Fromscgroupbysno

(4)统计每个学生的修课总学分,要求列出学生学号和总学分(说明:考试成绩大于

等于60才可获得此门课程的学分)。

Createviewv4As

Selectsno,sum(credit)astotal_credit

Fromsnojoincourseconc.eno=sc.eno

Wheregrade>=60

Groupbysno

(5)查询计算机系JAVA考试成绩最高的学生的学号、姓名和JAVA考试成绩。

Createviewv5As

Selecttop1withtiess.sno,snamezgrade

Fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

Wheresdept='计算机系,andcname='java,

Orderbygradedesc

4.利用第3题建立的视图,完成如下查询:

(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

Selectsname,cname,gradeFromv2wheregrade>=90

(2)查询选课门数超过3门的学生的学号和选课门数。

Select*fromv3wheretotal>=3

(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。

Selectsname,totalfromv3joinstudentsons.sno=v3.sno

Wheresdept='计算机系'andtotal>=3

(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。

Selectv4.sno,sname,sdept,total_credit

Fromv4joinstudentsons.sno=v4.sno

Wheretotal_credit>=10

(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、

所在系和修课总学分。

Selectsname,sage,sdept,total_credit

Fromv4joinstudentsons.sno=v4.sno

Wheresage>=20andtotal_credit>=10

5.修改第3题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。

Alterviewv4As

Selectsno,sum(credit)astotal_creditzcount(*)astotal_cno

Fromscjoincourseconc.eno=sc.eno

Groupbysno

6.修改第3题(5)定义的视图,使其统计全体学生中JAVA考试成绩最高的学生的学号、姓

名、所在系和JAVA考试成绩。

Alterviewv5As

Selecttop1withtiess.snozsname,sdept,grade

Fromstudentsjoinscons.sno=sc.sno

Joincourseconc.eno=sc.eno

Wherecname='java,

Orderbygradedesc

第6章关系数据库规范化理论

L.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么?

答:主要有插入异常、删除异常和修改异常,这些都是由数据冗余引起的,解决的办法

是进行模式分解,消除数据冗余,

2.第一范式、第二范式和第三范式的关系的定义分别是什么?

答:第一范式:不包含重复组的关系(即不包含非原子项的属性)是第一范式的关系。

第二范式:如果R(U,F)W1NF,并且R中的每个非主属性都完全函数依赖于主码,

MR(U,F)E2NFo

第三范式:如果R(U,F)W2NF,并且所有的非主属性都不传递依赖于主码,则

R(U,F)S3NF。

3.什么是部分函数依赖?什么是传递函数依赖?请举例说明。

答:部分函数依赖:如果X-Y,并且对于X的一个任意真子集X,有X,一Y成立,则称

Y部分函数依赖于X。

传递函数依赖:如果X-Y、Y-Z,则称Z传递函数依赖于X。

例1.对于关系模式:选课(学号,姓名,课程号,成绩)

该关系模式的主码是(学号,课程号),而有:学号分姓名

因此姓名对主码是部分函数依赖关系。

例2.对于关系模式:学生(学号,姓名,所在系,系主任)

该关系模式的主码是:学号,由于有:学号令所在系,所在系9系主任

因此系主任对学号是传递函数依赖关系。

4.第三范式的关系模式是否一定不包含部分依赖关系?

答:是。

5.对于主码只由一个属性组成的关系模式,如果它是第一范式关系模式,则它是否一

定也是第二范式关系模式?

答:是。

6.设有关系模式:学生修课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。

设一个学生可以选多门课程,一门课程可以被多名学生选。每个学生对每门课程有唯一

的考试成绩。一个学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关

系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为

第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

答:候选码:(学号,课程号)

第一范式。因为有:学号分姓名,因此存在部分函数依赖(学号,课程号)P-姓名

第三范式关系模式:

学生(箜号,姓名,所在系,性别)

课程(课程号,课程名,学分)

考试(学号,课程号,成绩),学号为引用学生的外码,课程号为引用课程的外码。

7.设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:一

个学生只在一个系的一个班学习,一个系只有一个系主任,一个人只担任一个系的系主

任;一个班只有一名班主任,但一名教师可以担任多个班的班主任;一个系可以有多个

班。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,

请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

答:候选码:学号

属于第二范式。

但有:学号分班号,班号分班主任,因此存在传递函数依赖:学号传递分班主任。

第三范式关系模式:

学生(学号,姓名,所在系,班号),班号为引用班的外码,所在系为引用系的外码。

班(班号,班主任)

系(系名,系主任)

8.设有关系模式:教师授课(课程号,课程名,学分,教师号,教师名,职称,授课时数,

授课学年),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师

(由教师号决定)有确定的教师名和职称,每门课程可以由多名教师讲授,每名教师也

可以讲授多门课程,在同一学年每个教师对每门课程只讲授一次,且有确定的授课时数。

指出此关系模式的候选码,判断此关系模式属于第几范式,若不属于第三范式,请将其

规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。。

答:候选码:(课程号,授课教师号)

属于第一范式。因为有:课程号分课程名,因此存在部分函数依赖关系:(课程号,

授课教师号)pl课程名

第三范式关系模式:

课程(课程号,课程名,学分)

教师(教师号,教师名,职称)

授课(课程号,教师号,授课时数,授课学年),课程号为引用课程的外码,教师号

为引用教师的外码。

第7章数据库保护

1.试说明事务的概念及四个特征。

答:事务的概念及四个特征为原子性、一致性、隔离性和持久性。原子性指事务的原子

性是指事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做。一致

性指定事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔

离性指数据库中一个事务的执行不能被其他事务干扰。持久性指事务一旦提交,则其

对数据库中数据的改变就是永久的。

2.事务处理模型有哪两种?

答:一种是ISO制定的事务处理模型,即明尾暗头;另一种是T-SQL事务处理模型,即

事务有明确的开始和结束标记。

3.并发控制的措施是什么?

答:加锁。

4.设有如下三个事务:

TLB二A+1:T2:B=B*2:T3:A=B+1

(1)设A的初值为2,B的初值为1,如果这三个事务并发的执行,则可能的正确的执行

结果有哪些?

答:Ti-T23T3:A=7B=6

ITT39T2:A=4B=6

T2^TI^T3:A=3B=3

A=3B=4

T;^TI^T2:A=2B=6

T^L^Ti:A=2B=3

(2)给出一种遵守两段锁协议的并发调度策略。

5.当某个事务对某段数据加了S锁之后,在此事务释放锁之前,其他事务可以对此段数据

加什么锁?

答:S锁(共享锁)。

6.什么是死锁?如何预防死锁?

答:事务为得到某个资源而处于无限等待状态,就是死锁。预防死锁的方法有多种,常用

的方法有一次封锁法和顺序封锁法。

7.三级封锁协议分别是什么?各级封锁协议的主要区别是什么?每一级封锁协议能保证

什么?

答:一级封锁协议:对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正

常结束)时才释放。

二级封锁协议:一级封锁协议加上事务T对要读取的数据加S镇,读完后即释放S锁。

三级封锁协议:一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释

放。

三个封锁协议的区别是在对读数据的加锁上。

一级封锁协议可以防止丢失修改;二级封锁协议除了可以防止丢失修改外,还可以防止

读“脏”数据;三级封锁协议除了可以防止丢失修改和不读“脏”数据之外,还进一步防止

了不可重复读。

8.什么是可串行化调度?如何判断一个并行执行的结果是否是正确的?

答:多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,

称这种调度为可串行化的调度。

如果并发调度的执行结果和某个串行调度结果一样,这个并发调度就是正确的调度。

9.两段锁的含义是什么?

答:两段锁是指所有的事务必须分为两个阶段对数据进行加锁和解锁,具体内容如下:

•在对任何数据进行读、写操作之前,首先要获得对该数据的封锁。

•在释放一个封锁之后,事务不再申请和获得任何其他锁。。

10.数据库故障大致分为几类?

答:主要有三类:事务内部的故障;系统故障;其他故障。

11.数据库备份的作用是什么?

答:主要有三类:事务内部的故障;系统故障;其他故障。

第8章数据库设计

1.简述数据库的设计过程。

答;数据库设计一般包含如下过程;

•需求分析。

•结构设计,包括概念结构设计、逻辑结构设计和物理结构设计。

•行为设计,包括功能设计、事务设计和程序设计。

•数据库实施,包括加载数据库数据和调试运行应用程序。

•数据库运行和维护阶段。

2.数据库结构设计包含哪几个过程?

答:概念结构设计、逻辑结构设计和物理结构设计。

3.需求分析中发现事实的方法有哪些?

答:常用的有检查文档、面谈、观察操作中的业务、研究和问卷调查等。

4.数据库概念结构设计有哪些特点?

答:

•有丰富的语义表达能力。

•易于交流和理解。

•易于更改°

•易于向各种数据模型转换,易于导出与DBMS有关的逻辑模型。

5.什么是数据库的逻辑结构设计?简述其设计步骤。

答:逻辑结构设计的任务是把在概念结构设计中设计的基本E-R模型转换为具体的数据

库管理系统支持的组织层数据模型。

逻辑结构设计一般包含两个步骤:

(1)将概念结构转换为某种组织层数据模型。

(2)对组织层数据模型进行优化。

6.把E-R模型转换为关系模式的转换规则有哪些?

答:转换的一般规则如下:

一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的

主码。

对于实体间的联系有以下不同的情况:

(1)1:1联系一般是将联系与任意一端实体所对应的关系模式合并,即在一个实体

的关系模式的属性中加入另一个实体的码和联系本身的属性。

(2)1:n联系一般与n端所对应的关系模式合并,即在n端对应的关系模式中加入

1端实体的码以及联系本身的属性。

(3)m:n联系必须转换为一个独立的关系模式。与该联系相连的各实体的码以及联

系本身的属性均转换为此关系模式的属性,且关系模式的主码包含各实体的码。

(4)有相同主码的关系模式可以合并。

7.数据模型的优化包含哪些方法?

答:数据模型的优化通常以关系规范化理论为指导,并考虑系统的性能。具体为:

(1)确定各属性间的函数依赖关系。根据需求分析阶段得出的语义,分别写出每个关系

模式的各属性之间的函数依赖以及不同关系模式中各属性之间的数据依赖关系。

(2)对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。

(3)判断每个关系模式的范式,根据实际需要确定最合适的范式。

(4)根据需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,

确定是否要对某些模式进行分解或合并。

(5)对关系模式进行必要的分解,以提高数据的操作效率和存储空间的利用率。常用的

分解方法是水平分解和垂直分解。

8.图7-28(a)~(d)所示为某企业信息管理系统中的局部E-R图,请将这些局部E-R

图合并为一个全局E-R图,并指明各实体以及联系的属性,标明联系的种类(注:

为使图形简洁明了,在全局E-R图中可只画出实体和联系,属性单独用文字描述)。

将合并后的E-R图转换为符合3NF要求的关系模式,并说明主码和外码。

9.将下列E-R图转换为符合3NF的关系模式,并指出每个关系模式的主码和外码。

(1)图8-27所示为描述图书、读者以及读者借阅图书的E-R图。

答:对图书、读者E-R模型,转换后的关系模式为:

图书(书号,书名,出版日期,作者)

读者(读者编号,读者姓名,联系电话,所在单位)

借阅(书号,读者编号,借书日期)书号为引用图书的外码,读者编号为引用读者

的外码。

(2)

厂家(厂家编号,联系地址,联系电话)

商店(商店编号,商店名,联系电话)

商品(商品编号,商品名称,库存量,商品分类),

订购(商店号,厂家编号,商品编号,订购日期,订购数量),商店号为引用商店的

外码,商品编号为引用商品的外玛,厂家编号为引用厂家的外码。

(3)

学生(学号,姓名,性别,专业,社团号,参加日期),社团号是引用社团的外码。

社团(社团号,社团名,电话,性质)

第9章SQLServer基础

二.SQLServer2012提供了几个版本?

答:提供了企业版、商业智能版、标准版、开发版、简易版。

对操作系统的要求:

2.安装SQLServer2012对硬盘及内存的要求分别是什么?

答:全部安装大概需要4GB空间,内存不小于IGBo

3.SQLServer实例的含义是什么?实例名的作用是什么?

答:实例代表一个实际安装的SQLServer,实例名标识了每个不同的实例。

4.SQLServer2012的核心引擎是什么?

答:SQLServer(MSSQLSERVER)。

5.SQLServer2012提供的设置服务启动方式的工具是哪个?

答:SQLServerConfigurationManager。

7.提供通过图形化方法操作数据库的工具是哪个?

答:SQLServerManagementStudio。

第10章数据库及表的创建与管理

1.根据数据库用途的不同,SQLServer将数据库分为哪两类?

答:系统数据库和用户数据库。

2.安装完SQLServer之后系统提供了哪些系统数据库?每个系统数据库的作用是什么?

答:4个系统数据库:master、msdb>model和tempdbo

•master:用于记录SQLServer系统中所有系统级信息。

•msdb:供SQLServer代理服务调度报警和作业以及记录操作员时使用,保

存关于调度报警、作业、操作员等信息。

•mode1:包含所有用户数据库的共享信息。

•tempdb:是临时数据走,用于存储用户创建的临时表、用户声明的变量以及

用户定义的游标数据等,并为数据的排序等操作提供一个临时工作空间。

3.SQLServer数据库由哪两类文件组成?这些文件的推荐扩展名分别是什么?

答:数据文件和日志文件。数据文件中主数据文件的推荐扩展名为:.mdf;次要数据文

件的推荐扩展名为:.ndf。日志文件的推荐扩展名为:

4.SQLServer数据库可以包含几个主要数据文件?几个次要数据文件?几个日志文件?

答:1个主数据文件,。个或多个次要数据文件,1个或多个日志文件。

5.数据文件和口志文件分别包含哪些属性?

答:包含:逻辑文件名、物理存储位置、初始大小、增长方式、最大大小5个属性。

6.SQLServer中数据的存储单位是什么?存储单位对存储数据有何限制?

答:数据页。数据页是数据的最小存储分配单位,其大小也就是表中一行数据的最大大

小,因为行不能跨页存储。

7.SQLServer2012每个数据页的大小是多少?数据页的大小对表中一行数据大小的限制

有何关系?

答:8KB。表中一行数据的大小不能超过一个数据页的大小。

8.如何估算某个数据表所占的存储空间?如果某个数据表包含20000行数据,每行的

大小是5000字节,则此数据库表大约需要多少存储空间?在这些存储空间中,有多少

空间是浪费的?

答:根据数据是按数据页存储,且行不能跨页存储的原则即可估算出一个数据表所占的

大致空间。需要160MB。有差不多3/8是浪费的。

9.用户创建数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论