数据库原理及应用(MySQL版在线实训版)-习题答案 陈业斌_第1页
数据库原理及应用(MySQL版在线实训版)-习题答案 陈业斌_第2页
数据库原理及应用(MySQL版在线实训版)-习题答案 陈业斌_第3页
数据库原理及应用(MySQL版在线实训版)-习题答案 陈业斌_第4页
数据库原理及应用(MySQL版在线实训版)-习题答案 陈业斌_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

《数据库原理及应用》(MySQL版)习题及答案

习题1

i.i选择题

(1)C(2)B(3)A(4)B(5)D(6)B(7)B

1.2名词解释

关系:一个关系就是一张二维表格。

无组(记录):表中的行称为元组或记录,一行为一个元组或一条记录。

属性(字段):表中的列称为属性或字段,给每一个属性起一个名称为属性名或字段名。

域:域是属性的取值范围,即不同元组对同一个属性的值所限定的范围。

候选码:若关系中的某一属性组的值(最小集)能唯一地标识一个元组,则称该属性组

为候选码。

主码:用户选作元组标识的候选码称为主码。

外码:如果一个关系中的属性或属性组并非该关系的码,但它们是另外一个关系的码,

则称其为该关系的外码。

1.2什么是数据,什么是信息,二者之间有什么关系?

信息:信息是现实世界中各种事物(包括有生命的和无生命的、有形的和无形的)的存在

方式、运动形态,以及它们之间的相互联系等诸多要素在人脑中的反映,是通过人脑抽象

后形成的概念。

数据:数据(Data)是信息的载体,是信息的一种符号化表示。

数据与信息的关系:信息和数据既有联系又有区别。数据是承载信息的物理符号或称之

为载体,而信息是数据的内涵。信息是抽象的,同一信息可以有不同的数据表示方式。数

据可以表示信息,但不是任何数据都能表示信息,同一数据也可以有不同的解释。

1.4试述数据库、数据库系统、数据库管理系统这几个概念。

数据库(Database,简称DB),是为了满足对数据管理和应用的需要,按照一定的数据

模型存储在计算机中的、能为多个用户所共享的、与应用程序彼此独立的、相互关联的数据

集合。

数据库系统:能够对外提供数据服务的所有软件和硬件的总和。

数据库管理系统:提供数据管理的软件系统。

1.5试述数据模型的概念、作用及三要素。

数据模型表示数据与数据之间联系的方法,数据模型就是对现实世界的数据描述。显然,

在计算机中,人们经常要考虑数据的存储、数据的操作、操作的效率与性能以及数据可靠性

等因素。因此,目前定义数据模型时,通常要从3个方面来考虑,包括:数据结构、数据操作、完

整性约束。

三要素:数据结构、数据操作、完整性约束。

1.6试述数据库系统的组成。

数据库管理系统由数据库、数据库管理系统、数据库运行环境、数据库管理员和数据库

用户组成。

习题2

2.1选择题

(1)A(2)B(3)B(4)B(5)B(6)C(7)B

2.2为什么关系中的元组没有先后顺序,且不允许重复?

因为关系代数是定义在传统集合论的基础上的,而集合中的元素是没有先后顺序且不允

许重复的。

2.3连接、等值连接和自然连接有什么样的区别?

连接(Join)是从两个运算关系的广义笛卡儿积找出若干元组构成新的关系,是从行的

角度施加的操作。

连接运算由广义笛卡儿积中的R关系在A属性集上的值与S关系在B属性集上值满足

0比较运算的那些元组构成。当。为“=”号时,连接运算为等值连接。

自然连接为舍弃重复列的等值连接,它要求两个关系R与S具有公共属性,在连接结果

中把重复的属性消除。

2.4设有一个学生借书sjb数据库,包括s,b,sjb3个关系模式:

5(sno,sname,sage,ssex,sdept)

b(bno,bname,bwri,bpub,bqty,bpri)

s/b(sno,bno,bt,st,qty,fee)

学生表s由学生号(sno,、学生名(sname)、年龄(sage)、性别(ssex)、系部(sdept)组

成;

图书表由图书号(bno)、图书名(bname)、作者(bwri)、出版社(bpub)、数量(bqty)、价

格(bpri)组成;

学生借阅表由学生号(sno)、图书号(bno)、借阅时间(bt)、归还时间(ht)、借出数量(qty)、

欠费情况(fee)组成。

s表

snosnamesagessexsdept

si李明18男计算机系

s2王建18男计算机系

s3王丽17女计算机系

s4王小川19男数理系

s5张华20女数理系

s6李晓莉19女数理系

s7赵阳21女外语系

s8林路19男建筑系

s9赵强20男建筑系

b表

bnobnamebwribpubbqtybpri

bl数据通信赵甲南北出版社1028

b2数据库钱乙大学出版社534

b3人工智能孙内木华出版社738

b4中外建筑史李丁木华出版社452

b5计算机英语周戊大学出版社725

b6离散数学吴己木华出版社228

b7线性电子线路郑庚南北出版社334

b8大学物理王辛南北出版社428

sjb表

snobnobthtqtyfee

sibl08/04/200812/09/200813.5

sib210/07/200811/07/200810

sib310/07/20081

s2b209/04/200811/07/200810

s3b409/04/200812/31/200812.7

s3b306/11/200809/08/200820

s4b209/11/200812/10/200810

s4bl09/11/20081

s5b509/06/200812/31/200810

s6b705/14/200805/31/200810

s7b405/27/200809/16/2008111.2

s7b709/18/200810/26/200810

s9b811/21/200812/31/200810

s9b811/27/20081

试用关系代数完成下列查询并给出结果:

(1)检索si学生的借书情况。

(2)检索计算机系学生的借书情况。

(3)检索学生李明借的图书的书名和出版社情况。

(4)检索李明借的数据库原理书欠费情况。

(5)检索至少借了王小川同学所借的所有书的学生号。

(6)检索12月31号归还的图书情况。

(7)检索木华出版社出版的30元以下的图书情况。

试用关系代数完成下列查询并给出结果:

(1)检索si学生的借书情况。

Osno=,sl'(sjb)

(2)检索计算机系学生的借书情况。

Osdept—计算机系'(S0°Sjb)

(3)检索学生李明借的图书的书名和出版社情况。

nbname,bpub(0sname=,李明,(SOOSjboob))

(4)检索李明借的数据库原理书欠费情况。

nfee(0sname=,李明人bname='数据库原理'(SOOSjbsb))

(5)检索至少借了王小川同学所借的所有书的学生号。

Jlsno.bnoCsoOSjb):口加。(°sname=6王小川,(soosjb))

(6)检索12月31号归还的图书情况。

ObT=l12/31/2008,(Sjb)

(7)检索木华出版社出版的30元以下的图书情况。

Obpub='木华出版社,Abprice<30(b)

习题3

3.1选择题

(1)B(2)D(3)C(4)D(5)D

3.2简要说明MySQL数据库的特点。

MySQL是一种关系数据库管理系统,由于体积小、速度快、使用方便、开放源代

码等优点,被越来越多的公司使用。MySQL具有如下特性。

(1)容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学

习使用。

(2)可移植性:能够工作在不同的系统平台上,例如:Windows>Linux、UNIX,

MacOS等。

(3)丰富的接口:提供了用于C、C++、Eiffle、Java、Perl、PHP、Python>Ruby

等语言的API。

(4)标准SQL:支持完整的SQL标准化语言。

(5)安全性:具有可靠的数据安全层,可为数据提供高效的加密。

3.3安装MySQL服务器过程中要注意的问题有哪些?

注意默认端口号,一般为3306;注意输入超级管理员root账号的密码,注意密码

策略,建议字母数字加符号,记住该密码以便配置完成后进行登录。

3.4启动MySQL服务的方法有哪些?

(1)通过Windows的服务管理器可以启动MySQL服务,在命令提示符中输入

Services.msc命令,或从Windows界面【计算机】一【管理】一【服务】打开Windows

的服务管理器,此时可以直接双击MySQL服务项打开属性对话框,通过单击“启动”

按钮修改服务的状态

(2)使用管理员身份打开命令提示符,输人如下命令启动名称为MySQL的服务。

netstartMySQL80。

习题4

4.1选择题

(1)D(2)C(3)C(4)D(5)C(6)A(7)C

4.2简述列约束和表约束的区别是什么,常用的约束有哪些?

直接在列后面定义的约束为列级约束。在表定义时,单独一行定义的约束为表级约

束。

4.3简述如何解决汉字显示乱码问题。

若把存储看成是服务器端行为,把显示看成是客户端行为,则服务器端和客户端必须使

用相同的编码和解码规则才不会产生乱码。

习题5

5.1选择题

(1)D(2)C(3)C(4)C

5.2分别用BETWEEN...AND…、IN(...)、OR运算符确定考试成绩为80、81或82的

学生学号,请写出相应的条件表达式。

SELECTsnoFROMXSWHEREgradeBTEWEEN80AND82;

SELECTsnoFROMXSWHEREgradeIN(80,81,82);

SELECTsnoFROMXSWHEREgrade=81ORgrade=81ORgrade=82;

习题6

6.1选择题

(1)A(2)B(3)B(4)A(5)A

6.2比较连接查询和子查询的执行效率。

连接查询能够高效处理大量数据,能够在多张表之间建立联系,进行大量数据的高

效查询。当子查询的结果集较大时,效率很低,查询时间长,子查询优先考虑单数据表查询,

或查询两个或三个表的关联数据,并且数据量较小的情况。

6.3比较相关子查询和非相关子查询的区别。

非相关子查询是用内查询的结果作为查询条件进行外查询,相关子查询执行过程中

内查询执行时要用外查询中字段的值作比较。

习题7

7.1选择题

(1)D(2)C(3)D(4)C(5)D(6)C(7)A(8)C(9)B(10)C

7.2索引关键字的选取原则有哪些?

答:1)表的某个字段值的离散度越高,该字段越适合选作索引的关键字;2)占用存储

空间少的字段更适合选作索引关键字;3)存储空间固定的字段更适合选作索引关键字;4)

where子句中经常使用的字段、分组字段或排序字段、多个表的连接字段应该创建索引;5)

更新频繁的字段、不会出现在where子句中的字段不应该建立索引;6)最左前缀原则;7)

尽量选用前缀索引。

7.3MySQL中普通索引、主索引、唯一索引有何区别?

答:MySQL中最常用的索引有普通索引、主键索引、唯一索引等类型。普通索引

是MySQL中最基本的索引类型,允许在定义索引中的列中插入重复值和空值。唯一索引中

索引列的值必须唯一,允许有空值,如果是组合索引,则列值的组合必须唯一,一个表上可

以有多个unique索引•主索引,也叫主键索引,是一种特殊的唯一索引,索引列中不允许

有空值和重复值,一般在建立表的同时创建主索引,一个表只能有一个主索引。

7.4简述创建视图的必要性。

答:视图为数据库用户提供了很多的便利,主要包括以下几个方面:

将数据集中显示,简化用户的数据查询和处理。

简化数据操作,将数据库设计与用户的使用分离开来,屏蔽数据库的复杂性。

重新定制数据,使得数据便于共享。组合分区数据,可将来自不同表的多个查询结果组

合成单一的数据集,利于用户查询和使用。

简化用户权限的管理,增强了数据库安全性。

7.5简述视图与基表的区别与联系。

答:区别:

1)视图是已经编译好的sql语句。而表不是;

2)视图没有实际的物理记录。而表有;

3)表是内容,视图是窗口;

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

时对它进行修改,但视图只能有创建的语句来修改;

5)表是模式,视图是外模式:

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

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

构;

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

8)视图的建立和删除只影响视图本身,不影响对应的基本表;

9)有些视图不能进行更新操作,而表可以进行更新操作。

联系:

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数

据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对

应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

7.6操作题

基于以下数据表完成操作:

学生(学生编号,姓名,性别,年龄)

课程(课程编号,课程名称)

成绩(学生编号,课程编号,成绩)

(1)在成绩表是建立按学生编号和课程编号组合的升序的主键索引,索引名为了

pk_snocnoindex«

(2)创建一个视图stu_info,查询全体学生的姓名,性别,课程名称,成绩。

答案:

(1)ALTERTABLE成绩ADDPRIMARYKEYpk_snocnoindex(学生编号,课

程编号);

(2)CREATEVIEWstujnfo

ASSELECT姓名,性别,课程名称,成绩FROM学生,课程,成绩WHERE学生.学

生编号=成绩.学生编号AND课程.课程编号=成绩.课程编号;

习题8

8.1选择题

(1)D(2)A(3)C(4)D(5)A(6)A(7)C(8)C(9)D(10)D

8.2简答题

(1)什么是游标?游标的特点是什么?

游标是指向内存的一快区域,保存查询返回的结果,用户可以使用游标从结果集中逐一

读取、逐一处理。

(2)简述存储过程和存储函数的区别。

存储过程与存储函数的区别:1)存储过程的参数传递类型可以有IN、OUT和INOUT3

种类型,而存储函数的参数传递类型只有IN类型;2)存储过程需要使用CALL语句调用,

而存储函数不需要,可以直接使用存储函数,方法与内置函数相同;3)存储过程中不允许

包含RETURN语句,不能有返回值,但可以通过OUT或INOUT参数带回多个值,而存储

函数的函数体中必须包含一条RETURN语句,且只能返回一个值;4)存储函数不能调用存

储过程,存储过程可以调用存储函数:5)存储过程主要用于执行并完成某个功能操作,而

存储函数主要用于计算并返回一个函数值。

(3)什么是触发器?触发器的作用是什么?

触发器是一种特殊的存储过程,编译后存储在数据库服务器中。当特定事件发生时,由

系统自动调用执行,无需显式执行。另外,触发器不接受任何参数,而存储过程需要显式调

用,可以接收和传回参数。触发器与数据表紧密联系,主要用于实现复杂完整性约束以及对

数据库中特定事件进行监控和响应。

(4)简述触发器和事件的区别。

触发器基于永久性表创建,并且只能由数据库的特定操作事件触发。当操作影响到被保

护的数据时,如进行插入(INSERT)、修改(UPDATE)和删除(DELETE)操作,数据库系统就会

自动执行触发器中动作体,以保护数据完整性。

事件是MySQL在相应时刻调用的数据库对象。它也是一种特殊的存储过程,用于定时

执行某个任务,触发器是基于数据表上的操作,而事件是基于时间被调度的。

8.3综合应用题

(1)针对教材中的教学数据库,编写一个存储过程,功能是根据学生的学号,返回取得的

学分总数,只有当成绩大于等于60分时才能获得该门课程的学分。

DELIMITER$$

DROPPROCEDUREIFEXISTScount_credit$$

CREATEPROCEDUREcount_credit(INstunoCHAR(6),OUTt_credDECIMAL(3,1))

BEGIN

DECLAREstucnoCHAR(3);

DECLAREcredDECIMAL(3J);

DECLAREdoneINTDEFAULTFALSE;

DECLAREstucurCURSORFORSELECTenoFROMscoreWHEREsno=stunoAND

grade>=60;

DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=TRUE;

SETt_cred=O;

OPENstucur;

loop_cursor:LOOP

FETCHstucurINTOstucno;

SELECTcreditINTOcredFROMcourseWHEREcno=stucno;

IFdoneTHENLEAVEloop_cursor;ENDIF;

SETt_cred=t_cred+cred;

ENDLOOP;

END$$

DELIMITER;

(2)针对教学数据库,创建一个存储函数,功能是根据课程号,计算该门课程的平均分,

并将平均分作为函数值返回。

DELIMITER$$

DROPFUNCTIONIFEXISTSpro_avggrade$$

CREATEFUNCTIONpro_avggrade(cnolCHAR(3))RETURNSDECIMAL

READSSQLDATA

BEGIN

DECLAREavg_gradeDECIMAL(4,2);

SELECTAVG(grade)INTOavg_gradeFROMscoreWHEREeno='101';

RETURNavg_grade;

END$$

DELIMITER;

(3)针对教学数据库,创建一个触发器,当修改成绩表中的成绩时,要求将被修改成绩的

学生的学号、课程号、修改前的值和修改后的值保存到日志表中,该日志表由用户创建。

CREATETABLEupate_log(

idINTUNSIGNEDAUTOJNCREMENTPRIMARYKEY,

snoCHAR(6),

enoCHAR(3),

oldgradeDECIMAL©』),

newgradeDECIMAL(3,1),

operate_userVARCHAR(20)

);

DELIMITER$$

DROPTRIGGERIFEXISTStrig_grade$$

CREATETRIGGERtrig_gradeAFTERUPDATEONscore

FOREACHROW

BEGIN

INSERTINTOupate」ogVALUES(NULL,old.sno,o,old.grade,new.grade,USER());

END$$

DELIMITER;

(4)针对教学数据库,创建一个数据表,字段包括序号(id)、专业名(dept)、总人数(total)、

插入时间(s_time)。创建一个周期性事件,该事件实现每周将每个系别的总人数插入到创建

的表中。

CREATETABLEdeptstudent(

idINTUNSIGNEDAUTOJNCREMENTPRIMARYKEY,

deptVARCHAR(20),

totalstudentINT,

createtimeDATETIME

);

DELIMITER//

DROPEVENTIFEXISTSevent_dept//

CREATEEVENTevent_dept

ONSCHEDULEEVERY1WEEK

DO

BEGIN

DECLAREdeptlVARCHAR(20);

DECLAREstudentsINT;

DECLAREdoneINTDEFAULTFALSE;

DECLAREstucurCURSORFORSELECTdept,COUNT(*)FROMstudentGROUP

BYdept;

DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=TRUE;

OPENstucur;

loop_cursor:LOOP

FETCHstucurINTOdeptl,students;

IFdoneTHENLEAVEloop_cursor;ENDIF;

INSERTINTOdeptstudentVALUES(NULL,depl1,students,NOW。);

ENDLOOP;

END//

DELIMITER;

习题9

9.1选择题

(1)C(2)B(3)C(4)C(5)D(6)D

9.2请设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者号、姓

名、性别、年龄、单位。对每本书存有:书号、书名、作者、出版社。对每本被借出的书存

有读者号、图书号、借出日期和应还日期。要求:画出E-R图,再将其转换为关系模型。

读者(读者号,姓名,性别,年龄,单位)

图书(书号,书名,作者,出版社)

借阅(读者号,书号,借出日期,应还日期)

借阅(①,读者号,书号,借出日期,应还日期)

9.3假设某公司在多个地区设有销售部经销本公司的各种产品,每个销售部聘用多名职

工,且每名职工只属于一个销售部。销售部有部门名称、地区和电话等属性,产品有产品编码、

品名和单价等属性,职工有职工号、姓名和性别等属性,每个销售部的销售产品有数量属性。

(1)根据上述语义画出E-R图,要求在图中画出属性并注明联系的类型;

(2)试将E-R图转换成关系模型,并指出每个关系模式的主码和外码。

销售部(部门名称,地区,电话)

产品(产品编码,品名,单价)

职工(职工号,姓名,性别,部门名称)

销售(部门名称,产品编码,数量)此处的部门名称和产品编码为外键

销售(1D,部门名称,产品编码,数量)此处的部门名称和产品编码为外键

9.4某商场可以为顾客办理会员卡,每个顾客只能办理一张会员卡,顾客信息包括顾

姓名、地址、电话、身份证号,会员卡信息包括号码、等级、积分。

(1)若顾客具有多个地址和多个电话号码,地址包括省、市、区、街道,电话号码包

括区号、号码

根据上述语义分别画出E-R图,并将E-R图转换成关系模式,并指出每个关系模式的主

码和外码。

顾客(身份证号,姓名,会员卡号码)外码:会员卡号码

地址(地址ID,省,市,区,街道,身份证号)外码:身份证号

电话号码(区号,号码,身份证号)外码:身份证号

会员卡(会员卡号码,等级,积分)

(2)若顾客具有多个地址,每个地址具有多个电话号码,地址包括省、市、区、街道,

电话号码包括区号、号码。

顾客(身份证号,姓名,会员卡号码)外码:会员卡号码

地址(地址ID,省,市,区,街道,身份证号)外码:身份证号

电话号码(区号,号码,地址ID)外码:地址ID

会员卡(会员卡号码,等级,积分)

9.5某数据库记录乐队、成员和歌迷的信息,乐队包括名称、多个成员、一个队长,队

长也是乐队的成员,成员包括名字、性别,歌迷包括名字、性别、喜欢的乐队、喜欢的成员。

(1)画出基本的E-R图;

(2)修改E-R图,使之能够表示成员在乐队的工作记录,包括进入乐队时间以及离

开乐队时间。

9.6考虑某个T公司的数据库信息:

(1)部门具有部门编号、部门名称、办公地点等属性;

(2)部门员工具有员工编号、姓名、级别等属性,员工只在一个部门工作;

(3)每个部门有唯一一个部门员工作为部门经理;

(4)实习生具有实习编号、姓名、年龄等属性,只在一个部门实习

(5)项目具有项目编号、项目名称、开始日期、结束日期等属性;

(6)每个项目由一名员工负责,由多名员工、实习生参与;

(7)一名员工只负责一个项目,可以参与多个项目,参与每个项目具有工作时间比;

(8)每个实习生只参与一个项目。

画出E-R图,并将E—R图转换为关系模型(包括关系名、属性名、码)。

部门(部门编号,部门名称,办公地点,经理编号)外码:经理编号

实习生(实习编号,姓名,年龄,部门编号,项目编号)外码:部门编号,项目编号

员工(员工编号,姓名,级别,部门编号)外码:部门编号

项目(项目编号,项目名称,开始日期,结束日期,负责员工)外码:负责员工

员工参与项目(员工编号,项目编号,工作时间比)外码:员工参与,项目编号

习题10

10.1指出下列关系模式是第几范式?并说明理由。

(1)R(A,B,O,F={A-^C,C^A,A^BC]

(2)R(A,B,C,D),F={BTD,ABTC)

(3)R(A,B,C),F={BTC,AC—B}

解:

(1)RG3NF候选码是A,不存在部分依赖和传递依赖关系

(2)RE1NF候选码是AB,存在部分依赖关系

(3)R£2NF候选码是AC,存在传递依赖关系

10.2已知关系模式R(sno,CNO,grade,TNAME,TADDR),其属性分别表示学号、课程号、

成绩、教师名、教师地址等意义。语义为:每个学生每学一门课程只有一个成绩,每门课程

只有一个教师任教,每个教师只有一个地址(不允许教师重名)。

求:

(1)关系模式R的基本函数依赖;

(2)关系模式R的码;

(3)关系模式R满足几范式,为什么?

(4)将R分解为第三范式,并说明理由。

解:(1)根据语义,其函数依赖集为:

F={(sno,CNO)igrade,CNO-TNAME,TNAME->TADDR}。

(2)由于(sno,CNO)能够决定所有的属性集合,且没有任一真子集能够决定所有的属性集

合,所以R的码为(sno,CNO)。

(3)已知R的候选码为(sno,CNO)。

•/F中存在CNO—TNAME,

存在非主属性TNAME对候选码(sno,CNO)的部分函数依赖,所以RG1NF«

(4)将R分解为RI,R2,R3:

R1(sno,CNO.grade),F1={(sno,CNO)-grade);

R2(CNO,TNAME),F2={CNO-TNAME}。

R3(TNAME,TADDR),F2={TNAME—TADDR}。

RI,R2,R3中不存在非主属性对候选码的部分函数依赖和传递函数依赖,所以RI,R2,

R3C3NF。

10.3建立一个关于系、学生、班级、学会等信息的关系数据库,其中:

学生属性:学号、姓名、出生年月、系号、班号。

班级属性:班号、班名、系号、入学年份。

系属性:系号、系名、系办公室地点。

协会属性:协会名、成立年份、地点。

有关语义如下:一个系有若干专业,每个专业有若干班级,每个班有若干学生。每个学

生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会时间。

(1)根据业务需求请设计出符合3NF的关系模式,标明主码和外码;

学生:student(sno,sname,birthday,eno)

班级:classfcnQ,cname,dno,cyear)

系:dept(dno,dname,office,)

协会:association(associationid,aname,ayear,addr)

参会:ioin(sno,associationid,jdate)

(2)当查询学生完整信息时,为了避免多表连接,请使用反范式设计思想重新修改学

生的关系模式,并说明修改后的学生关系符合第几范式,为什么。

学生:student(snoysname,birthday,dno,dname,eno,cname)

修改后的学生关系符合2NF,因为sno-dno,dno—>dname,sno与dname之间存在传递函

数依赖关系。

(3)班名和系名存在变动的可能,为了避免出现更新异常,请在student表上设计触发

器解决更新异常问题。

DELIMITER$$

CREATE

TRIGGER1tr_student_updaterAFTERUPDATE

ON'student'

FOREACHROWBEGIN

UPDATEclassSETcname=ameWHEREcno=o;

UPDATEdeptSETdname=new.dnameWHEREdno=new.dno;

END$$

DELIMITER;

习题11

11.1选择题

(1)D(2)D(3)C(4)C(5)D

11.2并发操作可能会产生哪几类数据不一致性?用什么方法能避免各种不一致的情况?

答:多个事务对数据库的并发操作会给数据库带来一些问题,主要有3类:丢失修改、不

可重复读、读“脏”数据。

并发控制就是要用正确的方式调度并发操作,保证事务的隔离性,使一个用户事务的执行

不受其他事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术是封锁(Locking)

等方法。

11.3什么是封锁?试述封锁的类型及含义。

答:封锁是实现并发控制的一个非常重要的技术。其基本思想很简单:即当一个事务需

要存取一个数据对象(基本表、若干元组或若干个数据项)时,事务必须获得该对象的某种控制

权,以避免来自其他事务的干扰,使得其他事务无法访问该对象,尤其是阻止其他事务更新该

对象。

DBMS采用的基本的封锁类型有两种:排他锁(ExclusiveLocks,简记为X锁)和共享锁

(ShareLocks,简记为S锁)。

排他锁:又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他

任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释

放A上的锁之前不能再读取和修改A。

共享锁:又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改

A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事

务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

11.4SQL标准定义了几种事务隔离级别?MySQL数据库支持其中的几种事务隔离级别?

MySQL数据库默认隔离级别是什么?

答:SQL标准定义了以下4种事务隔离级别,隔离级别从低到高的依次如下

(1)READUNCOMMITTED:如果一个事务已经开始写数据,则另外一个事务则不允

许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。该

隔离级别幻读、不可重复读和脏读都允许。

(2)READCOMMITTED:读取数据的事务允许其他事务继续访问该行数据,但是未提

交的写事务将会禁止其他事务访问该行。这可以通过“瞬间共享读锁”和“排他写锁”实现。该

隔离级别允许幻读、不可重复读,但是不允许脏读。

(3)REPETABLEREAD:读取数据的事务将会禁止写事务(但允许读事务),写事务则

禁止任何其他事务。这可以通过“共享读锁''和"排他写锁”实现。该隔离级别允许幻读,但是

不允许不可重复读和脏读。

(4)SERIALIZABLE:它要求事务序列化执行,事务只能一个接着一个地执行,不能并

发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据

不会被刚执行查询操作的事务访问到。该隔离级别幻读、不可重复读和脏读都不允许。

SQL标准定义的默认事务隔离级别是SERIALIZABLEo

2.MySQL数据库支持其中的四种事务隔离级别,MySQL数据库默认隔离级别是

REPETABLEREAD。

习题12

12.1选择题

(1)A(2)D(3)D(4)C

12.2什么是数据库的安全性?

答:数据库的安全性,是指保护数据库以防止对数据库的不合法使用和因偶然或恶意的

原因,使数据库中数据遭到非法更改、破坏或泄露等所采取的各种技术、管理、立法及其它

安全性措施的总称。

12.3实现数据库安全性控制常用的方法和技术。

答:数据库安全性控制常用的方法和技术有用户标识与鉴别,存取控制,数据库的视

图机制,数据库的审计,数据加密。

12.4什么是数据库的审计功能,简述审计功能的得与失。

答:审计就是犯罪侦破中的一个重要措施,它跟踪记录用户对数据库的所有操作,并把

这些信息保存在审计日志中。技术人员可以利用这些信息,分析导致对数据库泄露或损坏的

一系列时件,从而找出非法访问数据的人、时间、地点、内容等有关信息,以达到对犯罪人

员惩戒的目的。

审计通常是很耗费时间和空间的,所以这项功能一般是作为DBMS的可选项,主要用

于安全性要求较高的部门或单位。

12.5简述数据库加密的常用的两种方法。

答:加密的基本思想就是根据一定算法将原始数据(明文,Plaintext)变换为不可直接

识别的格式(密文,Ciphertext),具体的方法有两种:一种是替换法,该方法使用密匙

(EncryptionKey)将明文中的每一个字符转换为密文中的一个字符;另一种方法是排列法,

该方法仅将明文中的字符按不同的顺序重新排列。单独使用这两种方法的任意一种都是不够

安全的,但将这两种方法结合起来就能提供相当高的安全标准。

习题13

13.1选择题

(1)B(2)A(3)C(4)A(5)C

13.1数据库运行中可能产生哪些类型的故障?哪些故障影响事务的正常执行?哪些故障破

坏数据库数据?

答:数据库故障的种类有以下4类:

•事务故障。

•系统故障。

•介质故障。

•计算机病毒。

事务故障只发生在事务上,而整个数据库系统仍在控制下运行。事务故障有的是可以通

过事务程序本身发现的,有的是非预期的,不能由事务程序发现和处理的。

系统故障常称为软故障(SoftCrash)。系统故障是指造成系统停止运转的任何事件,使得

系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、

突然停电等等。这类故障影响正在运行的所有事务,但不破坏数据库。

介质故障称为硬故障(HardCrash)。硬故障指外存故障,如磁盘损坏等。这类故障将破坏

数据库或部分数据库,并影响正在存取这部分数据的所有事务。

计算机病毒主要指非法入侵数据库系统破坏数据库,其对数据库的破坏后果是很严重

的。

13.2什么是数据库的恢复?数据库恢复的基本技术有哪些?

答:作为数据库管理系统,应具有在最短的时间内,把数据库从被破坏、不正确的状态恢

复到最近一个正确的状态。数据库管理系统的备份和恢复机制就是保证数据库系统出现故障

时,能够将数据库系统还原到正确状态。

数据库恢复的基本技术有数据转储和日志文件

13.3什么是数据库迁移?常用的数据库迁移方式有哪些。

数据库迁移是把数据从一个系统移动到另一个系统上。数据迁移具有以下原因:需要安

装新的数据库服务器;MySQL版本更新;数据库管理系统的变更。

数据库迁移的一种方式是分为数据导出和数据导入两种操作。此方式会导出一个中间文

件,将这些文件保存在磁盘上,迁移数据时导入到另外的数据库中。这种方式虽然会生成文

件,但是可以随时进行数据的恢复。另外一种方式是在原数据库服务与目标数据库服务均开

启的情况下,直接进行数据的传输。由于数据文件的格式多种多样,数据迁移的方式也是多

种多样。

13.4试述分库分表技术的概念,阐述一下进行分库分表技术产生原因。

分库分表是一种数据分片技术,指的是将存在一个数据库的数据分散到多个数据库中,

或将一个表中的数据分散到多个表中。分库分表又分为垂直拆分和水平拆分。垂直拆分的意

思是,把部分字段及其值挪到其它表或者其它数据库实例中;水平拆分的意思是,把部分记

录挪到其它表或者其它数据库实例中。

对数据库执行分库分表操作有以下两个主要原因。

首先,在对表做数据查询时,为了提高性能,表的索引会被加载到内存中,如果表中数

据不多的时候,索引能被全部一次性加载到内存中,此时查询效率都可以得到保障。但如果

表中数据超过某一个阈值,使得该表的索引太大超过内存限制,不能被一次性加载到内存中

了,此时如果查找表中数据,会使得多次磁盘IO加载索引,从而导致查询效率大幅下降。

其次,基本表的存储总是有上限的,即使不考虑查询效率,有时也因需要将数据进行分

片,实现降低单表中数据行数、字段个数的目标。以MySQL为例,单表存储的上限MySQL

本身并没有做限制,它是和操作系统所允许的最大文件大小有关的,单表中字段数量越多,

行数越多,那么就会使得单表的存储大小越大,一旦单表总大小超过操作系统的限制了,那

么就达到了存储上限。

13.5MySQL支持的水平分区类型有哪些?请分别简述。

MySQL水平拆分的核心就是路由算法:

范围限定,划分数据值的范围,不同范围的数据放到不通的表中;优

温馨提示

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

评论

0/150

提交评论