R
S
σA=C(R
S)
A
B
C
a
b
c
A
R.B
S.B
C
a
b
d
a
b
b
c
A
R.B
S.B
C
c
b
c
a
b
b
d
a
b
e
a
c
b
d
c
b
b
c
c
b
b
c
d
e
a
c
b
b
d
d
e
b
d
3.设有关系R、S:
R
A
B
C
S
a
b
c
A
B
C
b
a
f
b
a
f
c
b
d
d
a
f
计算R1=R-S、R2=R∪S、R3=R∩S和R4=R
S。
答计算结果如下:
R4
R2
R.A
R.B
R.C
S.A
S.B
S.C
A
B
C
a
b
c
b
a
f
a
b
c
a
b
c
d
a
f
R1
b
a
f
b
a
f
b
a
f
A
B
C
c
b
d
R3
b
a
f
d
a
f
a
b
c
d
a
f
A
B
C
c
b
d
b
a
f
c
b
d
A
B
C
b
a
f
c
b
d
d
a
f
第4章
CHAPTER04
关系数据库规范化理论
练习题4参考答案
1.什么是数据的规范化?
答现实世界的数据是有关系的,但这种关系是杂乱的,在进行数据分析时,要规范化这些关系。
关系数据模型的创始人E.F.Codd系统地提出了规范化的理论,即范式(NF)的概念。
满足一定条件的关系模式称为范式,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF范式等。
一个低级范式的关系模式,通过分解(投影)方法可转换成多个高一级范式的关系模式的集合。
数据满足范式的级别越高,就表示越规范化,其数据冗余就越好,用DBMS设计时越方便。
这个过程称为数据的规范化。
2.下面给出一个数据集,判断它是否可直接作为关系数据库中的关系,若不行,则改造成为尽可能好的并能作为关系数据库中关系的形式,同时说明进行这种改造的理由。
系名
课程名
教师名
计算机系
DB
李军,刘强
机械系
CAD
金山,宋海
造船系
CAM
王华
自控系
CTY
张红,曾键
答因为关系模式至少是1NF关系,即不包含重复组,并且不存在嵌套结构,给出的数据集显然不可直接作为关系数据库中的关系,改造为1NF的关系如下:
系名
课程名
教师名
计算机系
DB
李军
计算机系
DB
刘强
机械系
CAD
金山
机械系
CAD
宋海
造船系
CAM
王华
自控系
CTY
张红
自控系
CTY
曾键
3.下面给出的关系R为第几范式?
是否存在操作异常?
若存在,则将其分解为高一级范式。
分解完成的高级范式中是否可以避免分解前关系中存在的操作异常?
R
工程号
材料号
数量
开工日期
完工日期
价格
P1
I1
4
9805
9902
250
P1
I2
6
9805
9902
300
P1
I3
15
9805
9902
180
P2
I1
6
9811
9912
250
P2
I4
18
9811
9912
350
答它为1NF。
因为该关系的候选关键字为(工程号,材料号),而非主属性(开工日期和完工日期)部分函数依赖于候选关键字的子集工程号,即:
(工程号,材料号)p开工日期
(工程号,材料号)p完工日期
所以它不是2NF。
它存在操作异常。
如果工程项目确定后,若暂时未用到材料,则该工程的数据因缺少关键字的一部分(材料号)而不能进入到数据库中,出现插入异常。
若某工程下马,则删去该工程的操作也可能丢失材料方面的信息。
将其中的部分函数依赖分解为一个独立的关系,则产生如下的两个2NF关系子模式:
R1
工程号
材料号
数量
价格
P1
I1
4
250
P1
I2
6
300
R2
P1
I3
15
180
工程号
开工日期
完工日期
P2
I1
6
250
P1
9805
9902
P2
I4
18
350
P2
9811
9812
分解后,新工程确定后,尽管还未用到材料,该工程数据可在关系R2中插入。
删除某工程数据时,仅对关系R2操作,不会丢失材料方面的信息。
4.设有如下所示的关系R:
R
课程名
教师名
教师地址
C1
马千里
D1
C2
于得水
D1
C3
余快
D2
C4
于得水
D1
(1)它为第几范式?
为什么?
(2)是否存在删除操作异常?
若存在,则说明是在什么情况下发生的。
(3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作的异常问题的?
答
(1)它是2NF。
因为R的候选关键字为课程名,而“课程名→教师名”,“教师名→课程名”不成立,教师名→教师地址,所以课程名t教师地址,即存在非主属性教师地址对候选关键字课程名的传递函数依赖,因此R不是3NF。
又因为不存在非主属性对候选关键字的部分函数依赖,所以R是2NF。
(2)存在删除操作异常。
当删除某门课程时会删除不该删除的教师的有关信息。
(3)分解为高一级范式如下:
R1
课程名
教师名
R2
C1
马千里
教师名
教师地址
C2
于得水
马千里
D1
C3
余快
于得水
D1
C4
于得水
余快
D2
分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。
5.有如下的关系R:
(1)求出R所有的候选关键字。
(2)列出R中的函数依赖。
(3)R属于第几范式?
R
A
D
E
A1
d1
e2
A2
d6
e2
A3
d4
e3
答
(1)R的候选关键字为A和DE。
(2)R中的函数依赖有:
A→DE,DE→A。
(3)R是BCNF。
6.设有函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},计算属性集D关于F的闭包D
。
答令X=D,X(0)=D。
在F中找出左边是D子集的函数依赖,其结果是D→HG,所以X
(1)=X(0)HG=DGH,显然有X
(1)≠X(0)。
在F中找出左边是DGH子集的函数依赖,未找到,则X
(2)=DGH。
由于X
(2)=X
(1),因此D
=DGH。
7.设有关系框架R(A,B,C,D,E)及其上的函数相关性集合F={A→C,B→D,C→D,DE→C,CE→A},试问:
分解ρ={AD,AB,BE,CDE,AE}是否为R的无损联接分解?
答ρ的无损联接性判断表如下,由此判断不具有无损联接性。
Ri
A
B
C
D
E
AD
a1
AB
a1
a2
BE
a2
a5
CDE
a3
a4
a5
AE
a1
a5
第5章
CHAPTER05
数据库设计
练习题5参考答案
1.什么是数据库设计?
答数据库设计是指对于一个给定的应用环境,提供一个确定的最优数据模型与处理模式的逻辑设计,以及一个确定的数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,又能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库的过程。
2.试述采用E-R方法进行数据库概念设计的过程。
答采用E-R方法进行数据库概念设计,可以分成3步进行:
首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式进行优化,得到最终的E-R模式,即概念模式。
3.假定一个部门的数据库包括以下信息。
职工的信息:
职工号、姓名、地址和所在部门。
部门的信息:
部门所有职工、部门名、经理和销售的产品。
产品的信息:
产品名、制造商、价格、型号及产品内部编号。
制造商的信息:
制造商名称、地址、生产的产品名和价格。
试画出这个数据库的E-R图。
答对应的E-R图如图5.1所示。
图5.1一个E-R图
4.如图5.2所示给出图(a)、(b)和(c)3个不同的局部模型,将其合并成一个全局信息结构,并设置联系实体中的属性(允许增加认为必要的属性,也可将有关基本实体的属性选作联系实体的属性)。
各实体构成如下。
部门:
部门号、部门名、电话、地址
职员:
职员号、职员名、职务(干部/工人)、年龄、性别
设备处:
单位号、电话、地址
工人:
工人编号、姓名、年龄、性别
设备:
设备号、名称、规格、价格
零件:
零件号、名称、规格、价格
厂商:
单位号、名称、电话、地址
图5.2局部的E-R图
答汇总后的E-R图如图5.3所示。
各类实体的属性如下。
部门:
部门号、部门名、电话、地址
职员:
职员号、职员名、职务、年龄、性别
设备:
设备号、名称、规格、价格
零件:
零件号、名称、规格、价格
图5.3汇总后的E-R图
第6章
CHAPTER06
SQLServer2005系统概述
练习题6参考答案
1.SQLServer2005有哪些版本?
答SQLServer2005有以下5个版本:
•SQLServer2005学习版
•SQLServer2005工作组版
•SQLServer2005开发版
•SQLServer2005标准版
•SQLServer2005企业版
2.什么是SQLServer2005实例?
答所谓实例就是虚拟的SQLServer2005服务器,在同一台计算机上可以安装一个或多个单独的SQLServer2005实例,每个实例就好比是一个单独的SQLServer2005服务器,实例之间互不干扰。
例如,如果有学生管理系统和教师管理系统两个应用程序,需要分别使用不同的SQLServer2005,可以在一台计算机上实装两个SQLServer2005实例,各自管理学生教师和数据,两者不会相互影响。
3.SQLServer有哪两种身份验证模式?
答SQLServer有如下两种身份验证模式。
•Windows身份验证模式:
该身份验证模式是在SQLServer中建立与Windows用户账户对应的登录账号,在登录Windows后,登录SQLServer就不用再一次输入用户名和密码了。
•混合模式(Windows身份验证和SQLServer身份验证):
该身份验证模式就是在SQLServer中建立专门的账户和密码,这些账户和密码与Windows登录无关。
在登录Windows后,登录SQLServer还需要输入用户名和密码。
4.SQLServer服务器是指什么?
SQLServer客户机是指什么?
答安装有SQLServer服务器组件的计算机就是SQLServer服务器。
安装有SQLServer客户机组件的计算机就是SQLServer客户机。
5.SQLServer管理控制器有哪些功能?
答SQLServer管理控制器是为SQLServer数据库的管理员和开发人员提供的图形化、集成了丰富开发环境的管理工具,它包括各种数据库对象的创建和管理、数据查询和分析等功能。
6.SQLServer配置管理器有哪些功能?
答SQLServer配置管理器用于管理与SQLServer相关联的服务,配置SQLServer使用的网络协议,以及从SQLServer客户端计算机管理网络连接配置。
7.在Windows资源管理器中打开SQLServer2005安装文件夹,查看其位置和相关内容。
答图6.1显示了SQLServer2005默认实例的文件位置。
图6.1SQLServer2005默认实例的文件位置
上机实验题1参考答案
在实习环境中安装SQLServer2005版本。
安装成功后,登录SQLServer服务器,运行SQLServer管理控制器。
操作过程
略。
第7章
CHAPTER07
创建和使用数据库
练习题7参考答案
1.SQLServer有哪些数据库对象?
答SQLServer包含的数据库对象如下:
•表
•字段
•索引
•视图
•存储过程
•触发器
2.系统数据库master包含哪些内容?
答master是SQLServer中最重要的系统数据库,它记录了SQLServer实例的所有系统级信息,例如登录账户、链接服务器和系统配置设置,还记录所有其他数据库是否存在以及这些数据库文件的位置和SQLServer实例的初始化信息。
3.简述文件组的概念。
答文件组就是把各个数据库文件组成一个组,对它们整体进行管理。
通过设置文件组,可以有效地提高数据库的读写速度。
例如,有3个数据文件分别存放在3个不同的物理驱动器上(C盘、D盘、E盘),将这3个文件组成一个文件组。
在创建表时,可以指定将表创建在该文件组上,这样该表的数据就可以分布在3个盘上。
当对该表执行查询操作时,可以并行操作,从而可大大提高查询效率。
SQLServer2005提供3种文件组类型,分别是主文件组、自定义文件组(user_defined)和默认文件组。
4.一个数据库中包含哪几种文件?
答SQLServer2005采用操作系统文件来存放数据库,数据库文件可分为主数据文件、次数据文件和事务日志文件共3类。
•主数据文件:
用于存放数据,它是所有数据库文件的起点(包含指向其他数据库文件的指针)。
每个数据库都必须包含也只能包含一个主数据文件。
主数据文件的默认扩展名为.mdf。
•次数据文件:
次数据文件也用来存放数据。
一个数据库中,可以没有次数据文件,也可以拥有多个次数据文件。
次数据文件的默认扩展名为.ndf。
•事务日志文件:
用于存放事务日志。
每个数据库都有一个相关的事务日志,事务日志记录了SQLServer所有的事务和由这些事务引起的数据库的变化。
每个数据库至少有一个日志文件,也可以拥有多个日志文件。
日志文件的默认扩展名为.ldf。
上机实验题2参考答案
创建一个名称为factory的数据库,要求:
(1)将主数据库文件factory.mdf放置在H:
\DBF文件夹中,其文件大小自动增长为按5MB增长。
(2)将事务日志文件factory_log.ldf放置在H:
\DBF文件夹中,其文件大小自动增长为按1MB增长。
操作过程
完成本实验的操作步骤如下:
(1)启动SQLServer管理控制器(采用例7.1的操作方法)。
(2)在“对象资源管理器”窗口中选中“数据库”节点,右击,在出现的快捷菜单中选择“新建数据库”命令。
(3)进入“新建数据库”对话框,首先出现“常规”选项卡;在“数据库名称”文本框中输入新建数据库的名称factory,数据库名称设置完成后,系统自动在“数据库文件”列表中产生一个主数据文件(名称为factory.mdf,初始大小为3MB,默认自动增长为1MB)和一个日志文件(名称为factory_log.ldf,初始大小为1MB,默认自动增长为10%),同时显示文件组、自动增长和路径等默认设置,如图7.1所示。
(4)选中“数据库文件”列表中的factory行,单击“路径”文本框后的“...”按钮,将路径改为H:
\DBF;单击“自动增长”文本框后的“...”按钮,将自动增长的增量改为5MB。
(5)选中“数据库文件”列表框中的factory_log行,单击“路径”文本框后的“...”按钮,将路径改为H:
\DBF;单击“自动增长”文本框后的“...”按钮,将自动增长的增量改为10%,如图7.2所示。
(6)其他保持默认值。
单击“确定”按钮,数据库factory创建完成。
图7.1“常规”选项卡
图7.2修改后的“常规”选项卡
第8章
CHAPTER08
创建和使用表
练习题8参考答案
1.简述表的定义。
答在数据库中包含一个或多个表。
表是数据的集合,按行和列排列。
例如,用户可能有一个名称为authors的作者信息表。
每一列包含某个信息,如作者的姓名。
每行包含有关某个特定作者的所有信息,如姓名、地址等。
在一个数据库中可以有多个表,每个表都有一个特定的主题。
例如,pubs数据库可能包含有关作者、标题等的表。
对每个主题使用一个单独的表可以消除重复数据,使数据存储更有效并减少数据输入项错误。
2.简述列属性的含义。
答列也称为字段,表中的每个列都对应关系模式中的一个属性。
每个属性都具有一些特性,如名称、数据类型、长度和外键关系等。
一个列的整组特性构成该列在数据库表中的定义。
可以在数据表中直接设置列特性,也可以在创建数据表之后才指定一些特性,但在将数据表保存到数据库之前,有3个列特性是必须指定的:
列名称、数据类型和长度。
可以通过编辑列的任何特性重新定义列。
例如可以重命名一个列名称,改变列长度,为列指定默认值,为列指定外键关系等。
3.表关系有哪几种类型?
答关系是通过匹配键中的数据而工作的,而键通常是两个表中具有相同名称的列。
在大多数情况下,关系将一个表中为每个行提供唯一标识符的主键与另一个表中外键数据相匹配。
例如,通过在student表的sno列(主键)和score表的sno列(外键)之间创建一个关系,可以使学生表与成绩表相关联。
表与表之间存在如下3种类型的关系,所创建的关系类型取决于相关联的列是如何定义的。
•一对一关系。
在这种表关系中,表A中的一行最多只能与表B中的一行相匹配,反之亦然。
如果两个相关列都是主键或具有唯一约束,则创建的是一对一关系。
•一对多关系。
这是最常见的表关系类型。
在这种关系类型中,表A中的行可以在表B中有许多匹配行,但是表B中的行只能在表A中有一个匹配行。
•多对多关系。
在这种表关系中,表A中的一行可与表B中的多行相匹配,反之亦然。
通过定义称为连接表的第