关系数据库与sql serveer教程课后作业答案.docx
《关系数据库与sql serveer教程课后作业答案.docx》由会员分享,可在线阅读,更多相关《关系数据库与sql serveer教程课后作业答案.docx(35页珍藏版)》请在冰豆网上搜索。
关系数据库与sqlserveer教程课后作业答案
关系数据库与SQL语言课后作业
第2课构造学生信息管理系统数据库
1.给出下列术语的定义,并加以理解:
函数依赖、完全函数依赖、传递函数依赖、1NF、2NF、3NF。
答:
函数依赖:
设R(U)是属性集U上的关系模式,X,Y是U的子集。
如果对于R的所有关系r都存在:
对于X的每一个具体值,Y都只有一个具体值与之对应,则称属性Y函数依赖于属性X。
或者说,属性X函数决定属性Y,记作X→Y。
完全函数依赖:
在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’?
?
Y,则称Y完全函数依赖于X,记作XY。
传递函数依赖:
在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y?
?
X,则称Z传递函数依赖于X,记作XY。
1NF:
每一个分量必须是不可分的数据项。
满足了这个条件的关系模式就属于第一范式(1NF),记作关系R1NF。
2NF:
若关系模式R满足第一范式,即R1NF,并且每个非主属性都完全函数依赖于R的码(即不存在部分函数依赖),则R满足第二范式,记为R2NF。
3NF:
若关系模式R∈2NF,且它的每一个非主属性都不传递函数依赖于码,则R满足第三范式,记作R∈3NF。
2.试述数据库设计方法和基本过程。
答:
数据库常用的设计方法有:
1)直观设计法(手工试凑法)
2)规范设计法,常用的有如下:
①新奥尔良法
②基于E-R模型的数据库设计方法。
③基于3NF的数据库设计方法。
④基于视图的数据库设计方法
3)计算机辅助设计法
4)自动化设计法
数据库设计的一般过程:
需求分析→概念结构设计→逻辑结构设计→物理结构设计→数据库实施→数据库运行和维护。
3.什么是E-R图?
构成E-R图的基本要素是什么?
答:
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是:
矩形。
用来表示实体,矩形框内写上实体名。
椭圆。
用来表示实体的属性,椭圆框内写上属性名,并用无向线把实体与属性连接起来。
菱形。
用来表示实体与实体的联系,菱形框内写上联系名,用无向线把菱形与有关实体连接起来,并在无向线旁标注联系的类型。
无向线。
用于实体与属性、实体与联系之间的连接。
4.试述E-R图转换为关系模式的转换规则。
答:
将E-R图转换为关系模型实际上就是将实体、属性和联系转换成关系模式。
在转换中要遵循以下原则:
1)实体的转换规则
将E-R图中的每一个常规实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。
2)实体间联系的转换规则
①一个1:
1可以转换为一个独立的关系模式,也可以与任意一端所对应的关系模式合并。
如果转换为一个独立的关系模式,则与联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。
如果将联系与任意一端实体所对应的关系模式合并,则需要在被合并的关系中增加属性,其新增的属性为联系本身的属性和与联系相关的另一个实体的码。
②一个1:
n联系可以转换为一个独立的关系模式,也可以与n端所对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
如果与n端所对应的关系合并,则在n端实体中增加新属性,新属性由联系对应的1端实体的码和联系自身的属性构成,新增属性后原关系的码不变。
③一个m:
n联系转换为一个关系模式。
转换的方法为与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合。
5.现有一个局部应用,包括两个实体:
“出版社”和“作者”,这两个实体是多对多的联系,请设计适当的属性,画出E-R图,再将其转换为关系模式。
答:
E-R图如下:
关系模式:
出版社(名称,地址,电话,网址)
作者(证件号,名称,性别,年龄)
出版(出版社名称,作者证件号)
6.请设计一个图书馆数据库,此数据库中对每个借阅者保存的记录包括:
读者号,姓名,地址,性别,年龄,单位。
对每本书保存有:
书号,书名,作者,出版社。
对每本被借出的书保存有读者号、借出日期和应还日期。
要求:
给出该图书馆数据库的E-R图,再将其转换为关系模式。
答:
关系模式:
读者(读者号,姓名,地址,性别,年龄,单位)
图书(书号,书名,作者,出版社,读者号,借出日期,应还日期)
借阅(读者号,书号,借出日期,应还日期)
E-R图如下:
7.图1是一个销售业务管理的E-R图,请把它转换成关系模式。
答:
工厂(厂名,厂长,地址)
产品(编号,型号,单价)
用户(姓名,地址,电话)
工厂-产品(厂名,编号)
工厂-用户(厂名,姓名)
产品-用户(编号,姓名)
8.现在要建立关于系、学生、班级、学会诸信息的一个关系数据库。
规定:
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会有若干学生。
描述学生的属性有:
学号、姓名、出生日期、系号、班号、宿舍区;
描述班级的属性有:
班号、专业名、系号、人数、入校年份;
描述系的属性有:
系号、系名、系办地点、人数;
描述学会的属性有:
学会名、成立年份、地点、人数、学生参加某会有一个入会年份。
①请写出关系模式。
②写出每个关系模式的函数依赖集,指出是否存在传递依赖。
在函数依赖的决定因素是多属性的情况下,讨论函数依赖是完全依赖,还是部分函数依赖。
③指出各个关系模式的关键字。
答:
①关系模式
学生(学号,姓名,出生日期,系号,班号,宿舍区)
班级(班号,专业名,系号,人数,入校年份)
系(系号,系名,系办地点,人数)
学会(学会名,成立年份,地点,人数)
会员(学号,学会名,入会年份)。
②写出每个关系模式的函数依赖集,指出是否存在传递依赖。
在函数依赖的决定因素是多属性的情况下,讨论函数依赖是完全依赖,还是部分函数依赖。
学生:
主键:
学号;外键:
班号,系号。
最小函数依赖集:
学号→姓名,学号→出生日期,学号→班号,班号→系号,系号→宿舍区。
存在传递函数依赖:
学号→系号(学号→班号,班号→系号),学号→宿舍区(班号→系号,系号→宿舍区)。
班级:
最小函数依赖集:
班号→专业名,班号→系号,班号→人数,班号→入校年份
主键:
班号;外键:
系号。
存在传递函数依赖:
班号→系号(班号→专业名,专业名→系号)
系:
最小函数依赖集:
系号→系名,系号→系办地点,系号→人数
主键:
系号;外键:
无
不存在传递函数依赖。
学会:
最小函数依赖集:
学会名→成立年份,学会名→地点,学会名→人数
主键:
学会名;外键:
无
不存在传递函数依赖。
会员:
最小函数依赖集:
(学号,学会名)→入会年份
主键:
(学号,学会名);外键:
学号,学会名。
不存在传递函数依赖和部分函数依赖。
③指出各个关系模式的关键字
学生主键:
学号;外键:
班号,系号。
班级主键:
班号;外键:
系号。
系主键:
系号;外键:
无。
学会主键:
学会名;外键:
无
会员主键:
(学号,学会名);外键:
学号,学会名。
9.设一个仓库管理系统的局部应用有如下三个实体:
仓库:
仓库号、仓库名称、地点、面积
职工:
职工号、职工姓名、性别、年龄
货物:
货物号、货物名、价格
其中,仓库和职工是一对多的关系,仓库和货物是多对多的关系。
画出该局部应用的E-R模型,并将其转换为关系模式。
答:
仓库和职工局部E-R图:
仓库和货物局部E-R图:
关系模式:
职工(职工号,仓库号,职工姓名,性别,年龄)
仓库(仓库号,仓库名称,地点,面积)
货物(货物号,货物名,价格)
存储(仓库号,货物号)
10.关系规范化的作用是什么?
第一范式至第三范式,每种范式的特点是什么
答:
一个低一级范式的关系模式,通过模式分解转化为若干个高一级范式的关系模式的集合,这种分解过程叫作关系模式的规范化(Normalization)。
规范化的目的就是使结构合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。
第一范式要求关系中属性必须是原子项,即不可再分的基本类型,集合、数组和结构不能作为某一属性出现,严禁出现“表中有表”的情况。
2NF就是不允许关系模式的属性之间有这样的函数依赖X→Y,其中X是码的真子集,Y是非主属性。
一个关系模式R满足不存在部分函数依赖和传递函数依赖,则R满足3NF。
第3课初识SQLServer
1.安装SQLServer2000对硬件有什么需求?
答:
计算机的芯片、内存、硬盘空间等配备需要满足最低的硬件配置要求:
处理器 Pentium2或更高
内存 至少64MB,建议128MB或更多
硬盘空间 需要约250MB的程序空间,以及预留200M的数据空间
显示器 需要设置成至少800*600模式,才能使用其图形分析工具
2.SQLServer2000提供了哪些主要组件,其功能是什么?
答:
查询分析器:
提供图形化的查询分析工具。
导入和导出数据:
提供SQLServer与其他数据源之间的数据库服务。
客户端网络实用工具:
用于管理客户端网络连接配置。
联机丛书:
为用户提供MicrosoftSQLServer联机文档资料,它具有索引和全文搜索能力,可根据关键字来快速查找用户所需资料。
企业管理器:
SQLServer企业管理器,它是一个具有界面的综合管理工具,可完成如下工作:
管理SQLServer服务器和表、视图、存储过程、触发器、索引、规则、默认等数据库对象,以及用户定义数据库类型;
管理SQLServer登陆标识和用户;
设置数据库对象的访问权限;
管理备份设备和数据库;
备份数据库和事务日志、恢复数据库;
实现数据转换服务;
创建全文索引、数据库图表和数据库维护计划;
执行数据库Web出版和复制操作。
事件探查器:
SQLServer事件探查器,它能实时地捕获服务器活动记录,监视SQLServer所产生的事件,并可将监视结果输出到文件、表或屏幕上。
服务管理器:
SQLServer服务管理器,用来启动、暂停、继续和停止MSSQLServer、SQLServerAgent、MicrosoftSearch等服务。
3.下面的硬件设备,哪一个不是SQLServer2000系统必备的?
A.CPU B.RAM C.显示器 D.打印机
答:
D
4.SQLServer2000数据库系统不能运行在哪个平台上?
A.Windows2000Server B.WindowsNTServer
C.Windows98 D.Windows2000Professional
答:
C
5.企业管理器的用途是什么?
使用它可以完成哪些操作?
答:
用途:
SQLServer企业管理器是一个集成化的操作环境,几乎所有的操作都可以在该工具中完成。
操作:
创建数据库、执行数据库备份、执行各种向导工具、服务配置、数据复制等。
6.查询分析器可以进行的操作有哪些?
答:
在命令语句编辑窗口中,创建查询和其他SQL脚本,并针对SQLServer数据库来分析和执行它们,执行结果在结果窗格中以文本或表格形式显示,还允许用户将执行的结果保存到报表文件中或导出到指定文件中;
利用模板功能,可以借助预定义脚本来快速创建数据库和数据库对象;
利用对象浏览器脚本功能,快速复制现有数据库对象;
在参数未知的情况下执行存储过程;
调式查询性能问题,包括显示执行计划、显示服务器跟踪、显示客户统计、索引优化向导等;
在树型对象浏览窗格中,可以定位数据库对象或查看和使用对象;
在“打开表”窗口中,可快速插入、更新或删除表中的行。
7.可以使用SQLServer提供的哪种工具来执行T-SQL语句?
答:
可以使用SQLServer查询分析器。
8.使用什么工具可启动SQLServer的服务?
答:
1)利用服务管理器;
2)利用DOS命令启动。
9.如何以net命令来启动SQLServer的服务?
答:
在DOS命令运行方式下输入netstartmssqlserver即可启动。
第4课创建和管理学生信息管理系统数据库
1.SQLServer系统数据库有哪些,它们各自的功能是什么?
答:
系统数据库有四个,分别是:
master,tempdb,model,msdb
master数据库记录了所有系统信息,所有的注册帐户和密码,所有的系统设置信息。
Master数据库还记录了所有用户定义数据库的存储位置和初始化信息。
Tempdb数据库记录了所有的临时表格,临时数据和临时创建的存储过程。
Model数据库是创建所有用户数据库和tempdb数据库的模板。
Msdb数据库供SQLServer代理程序调度警报和作业以及记录操作员时使用。
2.SQLServer系统表有何作用?
答:
SQLServer2000中的每个数据库都包含系统表,是在创建数据库时自动产生的。
这些表用来记录SQLServer组件所需的数据。
每个数据库中的系统表,为每个数据库存储数据库级系统信息。
SQLServer的操作能否成功,取决于系统表信息的完整性。
3.什么是SQLServer系统存储过程?
有何作用?
答:
系统存储过程是预先经过编译的SQL语句的集合,所有系统存储过程的名字都以sp为前缀,下划线后是这个系统存储过程的功能简介。
使用系统存储过程可以方便地查看有关数据库和数据库对象的相关信息。
4.SQLServer2000的数据库对象有哪些?
答:
对象有系统数据库,系统表,系统存储过程,实例数据库。
5.创建,修改和删除数据库的T-SQL语句是什么?
答:
用CREATEDATABASE语句来创建数据库,用ALTERDATABASE语句来修改数据库,用DROP语句删除数据库。
6.创建一个名为“RSGL”的数据库,数据文件的逻辑文件名为“rsgl_data”,物理文件名为“D:
\rsgl_data.mdf”,初始容量为1MB,最大容量为20MB,按2MB增长;日志文件的逻辑文件名为“rsgl_log”,物理文件名为“D:
\rsgl_log.ldf”初始容量为1MB,最大容量为10MB,按2%比例增长。
写出T-SQL语句。
答:
CREATEDATABASErsgl
ON
(NAME=’rsgl_data’,
FILENAME=’d:
\rsgl_data.mdf’,
SIZE=1MB,
MAXSIZE=20MB,
FILEGROWTH=2MB)
LOGON
(NAME=’rsgl_log’,
FILENAME=’d:
\rsgl_log.ldf’,
SIZE=1MB,
MAXSIZE=10MB,
FILEGROWTH=2%)
GO
7.写出T-SQL语句,完成对RSGL数据库进行如下的操作。
答:
1.将RSGL数据库的初始分配空间1MB,扩充到10MB;
ALTERDATABASERSGL
MODIFYFILE
(NAME=’rsgl_data’,
SIZE=10MB
)
GO
2.修改RSGL数据库文件的属性参数。
将最大大小改为不限制,增长方式改为每次按10%比例增长。
ALTERDATABASERSGL
MODIFYFILE
(NAME=’rsgl_data’,
MAXSIZE=UNLIMITED
FILEGROWTH=10%)
GO
3.修改RSGL日志文件的属性参数。
将最大大小改为20MB,增长方式改为每次按5MB增长。
ALTERDATABASERSGL
MODIFYFILE
(NAME=’rsgl_log’,
MAXSIZE=20MB,
FILEGROWTH=5MB)
GO
4.将RSGL数据库的空间压缩至最小容量。
USERSGL
GO
DBCCSHRINKDATABASE(‘RSGL’)
5.将RSGL数据库更名为“NEW_RSGL”。
EXECsp_renamedb‘RSGL’,‘NEW_RSGL’
6.删除NEW_RSGL数据库。
DROPDATABASENEW_RSGL
第5课创建和管理学生信息管理系统中的表
1.什么是表?
SQLServer为列提供了哪些数据类型?
答:
表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表的形式。
在创建表之前的重要工作是设计表结构,即确定表的名字、所包含的各个列的列名、数据类型和长度、是否为空值等。
SQLServer为列提供的数据类型有:
字节型、数据型、精确数值型、浮点型、货币型、位型、字符型、文本型、日期时间型等。
2.简要说明空值的概念及其作用?
答:
创建表时需要确定该列的取值能否为空值。
空值意味着没有值,并不是“空格”或数值为0。
允许空值表示该列取值目前是不确定的。
3.如果创建表时没有指定NULL或NOTNULL,默认用什么?
答:
允许列的取值为空或不为空,默认情况为NULL。
4.INSERT语句的作用是什么?
如果在INSERT语句中列出了5个列名,需提供几个列值?
答:
T—SQL中向表中插入记录的语句是INSERT。
如果在INSERT语句中列出了5个列名,需提供5个列值。
5.UPDATE语句的作用是什么?
在使用UPDATE语句时,带上WHERE子句意味着什么?
答:
T—SQL中用于修改表记录的语句是UPDATE。
WHERE子句意味着指定被修改的记录应满足的条件。
当省略该子句时,表明所有的记录都执行SET指定的修改。
6.DELETE语句的作用是什么?
用DELETE语句能删除表吗?
答:
T—SQL中用于删除记录的语句是DELETE。
用DELETE语句不能删除表。
7.ALTERTABLE的作用是什么?
在表中增加列的子句是什么?
删除列的子句是什么?
用ALTERTABLE可更新列名吗?
答:
T-SQL中对表进行修改的语句是ALTERTABLE。
在表中增加列的子句是ADD子句。
删除列的子句是DROP子句。
用ALTERTABLE不可更新列名。
8.使用企业管理器创建STUMS数据库中的各表。
答:
略
9.按照题目要求写出下列SQL命令,并在机器上进行测试。
答:
1.创建STUMS数据库的专业表,并将专业代码设为主键。
CREATETABLE专业表
(专业代码CHAR(4)NOTNULLPRIMARYKEY,
专业名称CHAR(16),
系部代码CHAR
(2)
)
2.在专业表中增加一列“培养方向”,CHAR(20)。
ALTERTABLE专业表
ADD培养方向char(20)
GO
3.在专业表中插入一条记录,其数据为:
0210、轮机工程、02、船舶制造。
INSERT专业表(专业代码,专业名称,系部代码,培养方向)
VALUES(‘0210’,‘轮机工程’,‘02’,‘船舶制造’)
GO
4.修改专业表中的记录,将轮机工程的专业代码改为“0201”、培养方向改为“船舶修理”。
UPDATE专业表
SET专业代码=’0201’,培养方向=’船舶修理’
WHERE专业名称=’轮机工程’
5.删除专业表中的全部记录。
DELETE专业表
6.查看专业表的属性。
EXECsp_help专业表
7.删除专业表。
DROPTABLE专业表
第6课创建简单的SELECT查询
1.简述SELECT语句的基本语法格式。
答:
SELECT语句的基本语法格式:
SELECTselect_list
[INTOnew_table_name]
FROMtable_source
[WHEREsearch_conditions]
[GROUPBY?
group_by_expression]
[HAVINGsearch_conditions]
[ORDERBYorder_expression[ASC/DESC]
其中,
SELECT子句——用于指定查询结果集中的列。
Select_list:
为结果集选择的列。
用*表示当前表或视图的所有列。
INOT子句——创建新表并将查询结果插入新表中。
new_table_name:
为保存查询结果的新表名。
FROM子句——用于指定查询的数据源。
table_source:
指定用于查询的表或视图、派生表和联接表等。
WHERE子句——用于指定查询条件。
search_conditions:
为条件表达式,可以是关系表达式或逻辑表达式。
GROUPBY子句——将查询结果按指定的表达式分组。
group_by_expression:
是对其执行分组的表达式,group_by_expression也称为分组列。
group_by_expression可以是列或引用列的非聚合表达式。
HAVING子句——指定满足条件的组才予以输出。
HAVING通常与GROUPBY子句一起使用。
search_condition:
为输出组应满足的条件。
ORDERBY——指定结果集的排列顺序。
order_expression:
指定要排序的列。
可以将排序列指定为列名或列的别名,也可以指定一个表示该名称或别名在选择列表中所处位置的非负整数。
列名和别名可由表名或视图名加以限定。
也可指定多个排序列。
ASC:
指定递增顺序。
从最低值到最高值对指定列中的值进行排序。
DESC:
指定递减顺序。
从最高值到最低值对指定列中的值进行排序。
2.SQL Server中提供了哪些常用的进行数据统计的聚合函数?
答:
函数
功能
含义(返回值)
COUNT
统计
统计满足条件的行数
MIN
求最小值
求某字段值的最小值
MAX
求最大值
求某字段值的最大值
AVG
求平均值
求某数字段值的平均值
SUM
求总和
求某数字字段值的总和
STDEV
求标准偏差
求所有数值的标准偏差
STDEVP
求标准偏差
求所涉及及数值的标准偏差
VAR
求标准方差
求所有数值的标准方差
VARP
求标准方差
求所涉及数值的标准方差
注:
字段值为NULL的数据记录不包括在聚合函数的运算中。
3.在STUMS数据库中,用SQL语句完成下列操作。
答:
1.列出家住南通的学生的姓名和年龄。
SELECT姓名,年龄FROM学生基本信息WHERE籍贯=’南通’
2.查询不在1990年出生的男生的姓名。
SELECT姓名FROM学生基本信息WHERE性别=’男’andYEAR(出生日期)NOTIN(‘1990’)
3.列出所有“共产党员”的基本信息。
SELECT*FROM学生基本信息WHERE政治面貌