数据库系统及应用教程(SQL Server 2008)习
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
1-8章答案
习题1
1(名词解释:
DB:是长期存储在计算机 例如:部门和职工两个实体集之间的联系。
M:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有
联系,反之亦然,那么El和E2的联系称为“M:N联系”。例如:工程项目和职工两个实体集之间的联系。
6(分析层次模型、网状模型和关系模型的特点。
答:层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML
属于过程化的语言,操作复杂。
1
网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容易实现M:N联系,但DML属于过程化的语言,编程较复杂。
关系模型的数据结构为二维表格,容易为初学者理解。记录之间联系通过关键码实现。DML属于非过程化语言,编程较简单。
面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌套、递归的数据结构。但涉及的知识面较广,用户较难理解,这种模型尚未普及。
7(简述数据库系统的两级映像和数据独立性之间的关系。
答:为了能够在系统内部实现外部级、概念级和内部级3个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:
外模式/模式映像定义通常包含在各自外模式的描述中,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性,应用程序是依据外模式编写的;
模式/内模式映像包含在模式描述中,此映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系,它保证了数据与程序的物理独立性,所以称为数据的物理独立性。
8(分析分布式数据库的体系结构。
答: 分布式DBS的体系结构分为四级:全局外模式、全局概念模式、分片模式和分配模式。
(1)全局外模式:它们是全局应用的用户视图,是全局概念模式的子集。
(2)全局概念模式:全局概念模式定义了分布式数据库中所有数据的逻辑结构。
(3)分片模式:分片模式定义片段以及定义全局关系与片段之间的映象。这种映象是一对多的,即每个片段来自一个全局关系,而一个全局关系可分成多个片段。
(4)分配模式:片段是全局关系的逻辑部分,一个片段在物理上可以分配到网络的不同场地上。分配模式根据数据分配策略的选择定义片段的存放场地。
9(当前主要的几种新型数据库系统各有什么特点,用于什么领域,
答:主要有:分布式数据库系统、面向对象数据库系统、专家数据库系统、多媒体数据库系统、空间数据库系统、工程数据库系统。
分布式数据库系统分布式数据库系统是地理上分布在计算机网络的不同结点,逻辑上属于同一系统的数据库系统,它不同于将数据存储在服务器上供用户共享存取的网络数据库系统,分布式数据库系统不仅能支持局部应用,存取本地结点或另一结点的数据,而且能支持全局应用,同时存取两个或两个以上结点的数据。分布式数据库的主要特点是:数据是分布的;数据是逻辑相关的;结点的自治性。分布式数据库系统广泛地应用于大企业,多种行业
及军事国防等领域。
面向对象数据库(简称OODB)有以下特点:
使用对象数据模型将客观世界按语义组织成由各个相互关联的对象单元组成的复杂系统 。对象可以定义为对象的属性和对象的行为描述,对象间的关系分为直接和间接关系;语义上相似的对象被组织成类,类是对象的集合,对象只是类的一个实例,通过创建类的实例实现对象的访问和操作;对象数据模型具有“封装”、“继承”、“多态”等基本概念;方法实现类似于关系数据库中的存储过程,但存储过程并不和特定对象相关联,方法实现是类的一部分。面向对象数据库可以实现一些带有复杂数据描述的应用系统,如时态和空间事务、多媒体数据管理等。
专家数据库系统(Expert DataBase System,EDBS)是人工智能与数据库技术相结合的产物。它具有两种技术的优点,而避免了它们的缺点。它是一种新型的数据库系统,它所涉及的技术除了人工智能和数据库以外还有逻辑、信息检索等多种技术和知识。
多媒体数据库系统随着信息技术的发展,数据库应用从传统的企业信息管理扩展到计算机辅助设计(Computer Aided Design,CAD)、计算机辅助制造 2
(Computer Aided Manufacture,CAM)、办公自动化(Office Automation,OA)、人工智能(Artificial Intelligent,AI)等多种应用领域。这些领域中要求处理的数据不仅包括传统的数字、字符等格式化数据,还包括大量多种媒体形式的非格式化数据,如图形、图像、声音等。多媒体数据库系统(Multimedia Database System,MDBS)是能存储和管理多种媒体的数据库系统。
空间数据库系统的特点:数据量庞大。空间数据库面向的是地理学及其相关对象,而在客观世界中它们所涉及的往往都是地球表面信息、地质信息、大气信息等及其复杂的现象和信息,所以描述这些信息的数据容量很大,容量通常达到 GB级;具有高可访问性。空间信息系统要求具有强大的信息检索和分析能力, 这是建立在空间数据库基础上的,需要高效访问大量数据;空间数据模型复杂。空间数据库存储的不是单一性质的数据,而是涵盖了几乎所有与地理相关的数据类型。空间数据库系统有效地利用卫星遥感资源迅速绘制出各种经济专题地图。
工程数据库系统特点:主要数据库是图形和图象数据;数据库规模庞大;设计处理的状态是直观和暂时的;设计的多次版本信息都要予以保存;事务是长寿的,从设计到生产周期较长;数据要求有序性;数据项可多达几百项。工程数据库系统主要用于CAD/CAM领域。
习题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。
2(为什么关系中的元组没有先后顺序,且不允许有重复元组,
答:由于关系定义为元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后的顺序(对用户而言)。这样既能减少逻辑排序,又便于在关系数据库中引进集合论的理论。
3(笛卡尔积、等值连接和自然连接三者之间有什么区别,
答:笛卡儿积是一个基本操作,而等值连接和自然连接是组合操作。
设关系R的元数为r,元组个数为m;关系S的元数为s。,元组个数为n。
那么,R×S的元数为r+s,元组个数为m×n;
的元数也是r+s,但元组个数小于等于m×n; 3
的元数小于等于r+s,元组个数也小于等于m×n:
4(设有关系R和S,如图2.17所示。
R ? 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’C))
? πSNAME(σSEX=’F’?TEACHER=’LIU’C))
? πCNO(C)-πCNO(σSNAME=’WANG’SC))
? π1(σ1=4?2?5(SC×SC))
4
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模式集。
9(设有关系模式R(运动员编号,比赛项目,成绩,比赛类别,比赛主管),如果规定:
每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个
比赛类别只有一个比赛主管。试回答下列问题:
(1) 根据上述规定,写出模式R的基本FD和候选键。
(2) 说明R不是2NF的理由,并把R分解成2NF模式集。
(3) 进而分解成3NF模式集。
5
解:? 基本的FD有3个:
(运动员编号,比赛项目)? 成绩
比赛项目 ? 比赛类别
比赛类别 ? 比赛主管
R的关键码为(运动员编号,比赛项目)。
? R有两个这样的FD:
(运动员编号,比赛项目)? (比赛类别,比赛主管)
比赛项目 ? (比赛类别,比赛主管)
可见,前一个FD是部分(局部)函数依赖,所以R不是2NF模式。
如果把R分解成R1(比赛项目,比赛类别,比赛主管)
R2(运动员编号,比赛项目,成绩)
这里,R1和R2都是2NF模式。
? R2已是3NF模式。
在R1中,存在两个FD:比赛项目 ? 比赛类别
比赛类别 ? 比赛主管
因此,“比赛项目 ? 比赛主管”是一个传递依赖,R1不是3NF模式。
R1应分解为R11
R12(比赛类别,比赛主管)
这样,ρ={R11,R12,R2}是一个3NF模式集。
习题3
1(名词解释
数据库设计:是指对于给定的软、硬件环境,针对现实问题,设计一个较优的数据模型,建立相应的数据库结构和数据库应用系统。
数据流图:是从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法。具有直观、易于被用户和软件人员双方都能理解的一种表达系统功能的描述方式。
数据字典:数据字典提供了对数据库数据描述的集中管理,它的功能是存储和检索各种数据描述,如叙述性的数据定义等,并且为DBA提供有关的报告。对数据库设计来说,数据字典是进行详细的数据收集和数据分析所获得的主要成果。数据字典中通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
弱实体:一个实体对于另一些实体(父实体)具有很强的依赖联系,而且该实体主键的部分或全部从其父实体中获得,则称该实体为弱实体。
概念结构设计:概念结构设计就是将需求分析得到的用户需求抽象为信息结构即概念模型的过程,是对信息世界进行建模,常用的概念模型是E-R模型。
逻辑结构设计:是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。
物理结构设计:数据库最终是要存储在物理设备上的。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。
2(什么是数据库设计目标,数据库设计的基本步骤有哪些,
6
答:数据库设计的主要目标有:最大限度地满足用户的应用功能需求、获得良好的数据库性能、对现实世界模拟的精确度要高、数据库设计应充分利用和发挥现有DBMS的功能和性能、符合软件工程设计要求。
数据库设计的基本步骤是:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施阶段、数据库运行和维护阶段。
3(数据库设计的需求分析阶段是如何实现的,任务是什么,
答:需求分析阶段的工作由下面4步组成:分析用户活动,产生用户活动图;确定系统范围,产生系统范围图;分析用户活动所涉及的数据,产生数据流图;分析系统数据,产生数据字典。
需求分析阶段的任务是对系统的整个应用情况作全面的、详细的调查,确定企业组织的 目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求;并把这些要求写成用户和数据库设计者都能接受的文档。
4(概念设计的具体步骤是什么,
答:概念设计的主要步骤为:进行数据抽象、设计局部概念模式;将局部概念模式综合成全局概念模式;评审。
5(简述采用E-R方法的数据库概念设计过程。
答:利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局ER模式,最后对全局ER模式进行优化,得到最终的ER模式,即概念模式。
6(逻辑设计的目的是什么,试述逻辑设计过程的输入和输出环境。
答:逻辑设计的目的是把概念设计阶段设计好的基本ER图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(包括数据库模式和外模式)。
逻辑设计过程中的输入信息有:独立于DBMS的概念模式,即概念设计阶段产生的所有局部和全局概念模式;处理需求,即需求分析阶段产生的业务活动分析结果;约束条件,即完整性、一致性、安全性要求及响应时间要求等;DBMS特性,即特定的DBMS特性,即特定的DBMS所支持的模式、子模式和程序语法的形式规则。
逻辑设计过程输出的信息有:DBMS可处理的模式;子模式;应用程序设计指南;物理设计指南。
7(
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化理论对数据库设计有什么指导意义,
答:在概念设计阶段,已经把关系规范化的某些思想用作构造实体类型和联系类型的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
, 在逻辑设计阶段,仍然要使用关系规范化的理论来设计模式和评价模式。 规范化的目的是减少乃至消除关系模式中存在的各种异常,改善完整性,一致性和存储效率。
8(什么是数据库结构的物理设计,主要包含哪几方面的内容,
答:数据库结构的物理设计是指对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程, 所谓数据库的物理结构主要指数据库在物理设备上的存储结构和存取方法。物理设计的步骤为:
(1) 设计存储记录结构,包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射;
(2) 确定数据存储安排;
(3) 设计访问方法,为存储在物理设备上的数据提供存储和检索的能力;
(4) 进行完整性和安全性的分析、设计;
(5) 程序设计。
9(数据库实施阶段主要做哪几件事情,
7
答:数据库实现阶段的主要工作有以下几点:建立实际数据库结构、试运行、装入数据。
10(数据库系统投入运行后,有哪些维护工作,
答:数据库系统投入运行后,主要维护工作有:
(1) 维护数据库的安全性与完整性控制及系统的转储和恢复;
(2) 性能的监督、分析与改进;
(3) 增加新功能;
(4) 发现错误,修改错误。
11(设某商业集团数据库中有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。
商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。
试画出ER图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系
模式的主键和外键。
解:ER图如下图所示。
所转换成的关系: 商品(商品号,商品名,规格,单价) 商店(商店编号,商店名,地址) 销售(商店编号,商品号,月销售量)
8
12(设某商业集团数据库中有三个实体集。一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等。
公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖;
仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。
试画出E-R图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系模式的主键和外键。
解:ER图及属性、联系图如下:
将ER图转换成为关系模式集为: 公司(公司编号,公司名,地址) 职工(职工编号,姓名,性别,仓库编号,聘期,工资)
13(设某商业集团数据库中有三个实体集。一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等。
供应商与商品间存在“供应”联系,每个供应商可供应多种商品,每种商品可向多个供应商订购,供应商供应每种商品有月供应量;商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,商店销售商品有月
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
数。
试画出E-R图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系模式的主键和外键。
解:ER图及属性、联系图为:
9
这个ER图转换的关系模式如下: 商品(商品号,商品名,规格,单价) 供应商(供应商编号,供应商名,地址) 商店(商店号,商店名,地址)
销售(商品号,商店号,月计划数)
14(假设要为银行的储蓄业务设计一个数据库,其中涉及到储户、存款、取款等信息,试设计E-R模型。
解:储蓄业务主要是存款、取款业务,设计的ER图如下所示。
15(假设某超市公司要设计一个数据库系统来管理该公司的业务信息。该超市公司的业务管理规则如下:
(1) 该超市公司有若干仓库,若干连锁商店,供应若干商品。
(2) 每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。
(3) 每个商店销售多种商品,每种商品可在不同的商店销售。
10
(4) 每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。每种商品可以有多种销售价格。
(5) 超市公司的业务员负责商品的进货业务。
试按上述规则设计E-R模型。
解:
16(假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。一个系有若干专业,每个专业每年只招一个班,每个班有若干学生;一个系的学生住在同一宿舍区;每个学生可以参加多个学会,每个学会有若干学生,学生参加某学会有入会年份。试为该大学的系、学生、班级、学会等信息设计一个E-R模型。
解:下图所示的是一种设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
11
习题4
1(简述SQL Server 2008数据库管理系统的安装环境。
答:
(1) 硬件要求
硬件配置的高低会直接影响软件的运行速度,通常情况下,对硬件性能的要求如下: ? CPU。对于运行SQL Server 2008的CPU,建议的最低要求是32位版本对应1 GHz的处理器,64位版本对应1.6 GHz的处理器,或兼容的处理器,或具有类似处理能力的处理器,但推荐使用2 GHz的处理器。
? 内存。对于运行SQL Server 2008的RAM至少为512MB,微软推荐1GB或更大的内存。如果运行企业版,2GB内存比较理想,可以获得较高的性能。
? 硬盘空间。SQL Server 2008自身将占用1GB以上的硬盘空间。也可以通过选择不安装某个可选部件,减少对硬盘空间的需求,如选择不安装联机丛书。此外,还需要在硬盘上留有备用的空间,以满足SQL Server和数据库的扩展。另外,还需要为开发过程中要用到的临时文件准备硬盘空间。
(2) 软件要求
? 操作系统。SQL Server 2008可以运行在Windows Vista Home Basic或更高版本上,也可以在Windows XP上运行。从服务器端来看,它可以运行在Windows Server 2003 SP2及Windows Server 2008上。它也可以运行在Windows XP Professional的64位操作系统上以及Windows Server 2003和Windows Server 2008的64位版本上。因此,可以运行SQL Server的操作系统有很多的。
? 互联网软件。要求IE6.0 SPI或更高版本。如果要安装报表服务组件,还需要安装IIS5.0或更高版本。
2(简述SQL Server 2008 配置管理器的主要功能。
答:
(1) SQL Server服务。它包括SQL Server数据库服务、服务器代理、全文检索、报表服务和分析服务等服务。
(2) SQL Server网络配置。它是指服务器端网络配置,通常在SQL Server正确安装之后,不需要更改服务器网络连接。但是如果需要重新配置服务器连接,以使SQL Server监听特定的网络协议、端口或管道,则可以使用SQL Server配置管理器对网络进行重新配置。
(3) SQL Native Client 10.0配置。它是指运行客户端程序的计算机网络配置。
3(简述T-SQL全局变量和局部变量的区别。
T-SQL程序中的变量分为全局变量和局部变量两类,全局变量是由SQL Server系统定义和使用的变量,也称为系统变量。它通过名称前面加两个“@”符号区别于局部变量。DBA和用户可以使用全局变量的值,但不能自己定义全局变量。
局部变量是用户自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以符号“@”开头,而且必须先用DECLARE语句说明后才可使用。
4(给出下列T-SQL语句的运行结果。
DECLARE @d DATETIME
SET @d=„2013-8-26?
SELECT @d+10,@d-10
解:
12
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
6(用PRINT语句输出习题4-5中的T-SQL语句结果。
习题五
1(名词解释:
主数据文件 辅助数据文件 主文件组 默认文件组 数据完整性约束
答:
主数据文件:是数据库的起点,其中包含数据库的初始信息,记录数据库所拥有的文件指针。每个数据库有且仅有一个主数据文件,这是数据库必需的文件。主数据文件的扩展名是.mdf。
辅助数据文件:存储主数据文件未存储的所有其它数据和对象,它不是数据库必需的文件。当一个数据库需要存储的数据量很大(超过了Windows操作系统对单一文件大小的限制)时,可以用辅助数据文件来保存主数据文件无法存储的数据。辅助数据文件可以分散存储在不同的物理磁盘中,从而可以提高数据的读写效率。辅助数据文件扩展名为.ndf。
主文件组:是包含主要文件的文件组。所有系统表和没有明确分配给其他文件组的任何文件都被分配到主文件组中,一个数据库只有一个主文件组。
默认文件组:每个数据库中均有一个文件组被指定为默认文件组。如果在数据库中创建
13
对象时没有指定对象所属的文件组,对象将被分配给默认文件组。在任何时候,只能将一个文件组指定为默认文件组。
数据完整性约束:是数据库设计方面的一个非常重要的问题,数据完整性代表数据的正确性、一致性与可靠性。实施完整性的目的在于确保数据的质量,约束是保证数据完整性的重
要方法。
2(简述创建表结构时,常用数据类型的主要作用。
答:
创建数据表时,常用数据类型指定义在该字段上的数据值以及在这些数据值上相关的操作。数据类型起着两种主要作用:
一是利用数据类型信息的字段操作:为字段操作提供了隐含的上下文环境,如字段“AGE”是int类型,表达式avg(AGE)就会求出平均年龄的操作。
二是通过数据类型信息捕捉字段操作错误:数据类型限制了语义上合法的程序里可以执行的操作集合。如数据类型不允许去做一个和字符串进行算术相加的字段操作。
3(简述各种约束对表中数据的作用。
答:
主键约束能唯一地标识表中数据的每一行。
唯一性约束用来限制不受主键约束的列上的数据的唯一性。
CHECK约束用于限制输入一列或多列值的范围,从逻辑表达式判断数据的有效性。 默认值约束是在用户在插入新的数据行时,如果没有为该列指定数据,那么系统就将默认值赋给该列。
外键约束用于建立和加强两个表(主表和从表)的一列或多列数据之间的链接。
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倍。
(5) 删除表AUTHOR中的AUTHOR_NAME为“王昌辉”的记录。
解:
(1) USE EDUC
GO
ALTER TABLE BOOK
14
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语句的执行结果。它从包括多个元组的集合中每次读取一个元组的机制。
2(对于教学管理数据库的三个基本表
S(SNO,SNAME, SEX, AGE,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用T-SQL查询语句表达下列查询:
(1) 查询“王志强”所授课程的课程号和课程名。
15
(2) 查询年龄大于20岁的男学生的学号和姓名。
(3) 查询学号为S6的学生所学课程的课程名和任课教师名。
(4) 查询至少选修“王志强”老师所授课程中一门课程的女学生姓名。
(5) 查询“李小刚”同学不学的课程的课程号。
(6) 查询至少选修两门课程的学生学号。
解:
(1) USE JXGL
GO
SELECT CNO,CNAME
FROM C
WHERE TNAME=„王志强?
GO
(2) USE JXGL
GO
SELECT SNO,SNAME
FROM S
WHERE SEX=„M? AND AGE>20
GO
(3) USE JXGL
GO
SELECT CNAME,TNAME
FROM S JOIN SC ON S.SNO=SC.SNO AND S.SNO=„S6?
JOIN C ON SC.CNO=C.CNO
GO
(4) USE JXGL
GO
SELECT SNAME
FROM S
WHERE SNO IN
(
SELECT SNO
FROM SC
WHERE CNO IN
(SELECT CNO
FROM C
WHERE TNAME=„王志强?
)
)
GO
(5) USE JXGL
GO
SELECT CNO
FROM C
EXCEPT
16
SELECT CNO
FROM S JOIN SC ON S.SNO=SC.SNO AND S.SNAME=„李小刚?
GO
(6) USE JXGL
GO
select SNO,count(CNO) as 选修门数
from sc
group by SNO having count(CNO)>1
GO
3. 试用T-SQL查询语句表达下列对习题2数据库中三个基本表S、SC、C的查询:
(1) 统计有学生选修的课程门数。
(2) 求选修C4号课程的学生的平均年龄。
(3) 求“王志强”老师所授课程的每门课程的学生平均成绩。
(4) 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人
数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
(5) 查询姓“王”的所有学生的姓名和年龄。
(6) 在SC中查询成绩为空值的学生学号和课程号。
(7) 查询年龄大于女同学平均年龄的男学生姓名和年龄。
解:
(1) USE JXGL
GO
SELECT COUNT(DISTINCT CNO)
FROM SC
GO
(2) USE JXGL
GO
SELECT AVG(AGE)
FROM S JOIN SC ON S.SNO=SC.SNO AND CNO=„C4?
GO
(3) USE JXGL
GO
SELECT SC.CNO,AVG(GRADE)
FROM SC JOIN C ON SC.CNO=C.CNO AND TNAME=„王志强?
GROUP BY SC.CNO
GO
(4) USE JXGL
GO
SELECT CNO,COUNT(SNO)
FROM SC
GROUP BY CNO HAVING COUNT(*)>10
ORDER BY 2 DESC,1
GO
(5) USE JXGL
GO
17
SELECT SNAME,AGE
FROM S
WHERE SNAME LIKE „王%?
GO
(6) USE JXGL
GO
SELECT SNO,CNO
FROM SC
WHERE GRADE IS NULL
GO
(7) USE JXGL
GO
SELECT SNAME,AGE
FROM S
WHERE SEX=„M? AND AGE>(SELECT AVG(AGE)
FROM S
WHERE SEX=„F?)
GO
4. 试用T-SQL更新语句表达对习题6-2中数据库中三个基本表S、SC、C的各个更新操作:
(1) 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检
索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。
(2) 在基本表SC中删除尚无成绩的选课元组。
(3) 把“张成民”同学在SC中的选课记录全部删去。
(4) 把选修“高等数学”课程中不及格的成绩全部改为空值。
(5) 把低于总平均成绩的女同学成绩提高5%。
解:
(1) 建表:
USE JXGL
GO
CREATE TABLE STUDENT(SNO CHAR(9) NOT NULL,
SNAME CHAR(8) NOT NULL,
SEX CHAR(2))
GO
查询结果插入:
USE JXGL
GO
INSERT INTO STUDENT(SNO,SNAME,SEX)
SELECT SNO,SNAME,SEX
FROM S
WHERE SNO IN (SELECT SNO
FROM SC
GROUP BY SNO HAVING MIN(GRADE)>80)
GO
18
(2) USE JXGL
GO
DELETE FROM SC
WHERE GRADE IS NULL
GO
(3) USE JXGL
GO
DELETE
FROM SC
WHERE SNO IN(SELECT SNO
FROM S
WHERE SNAME=„张成民?)
GO
(4) USE JXGL
GO
UPDATE SC
SET GRADE=NULL
WHERE GRADE<60 AND CNO IN(SELECT CNO
FROM C
WHERE CNAME=„高等数学?)
GO
(5) USE JXGL
GO
UPDATE SC
SET GRADE=GRADE*1.05
WHERE SNO IN(SELECT SNO
FROM S
WHERE SEX=„F?)
AND GRADE<(SELECT AVG(GRADE)
FROM SC)
GO
5. 假设某“仓库管理”关系模型有下列五个关系模式:
零件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
19
(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));
6(利用T-SQL语句声明一个游标,查询习题2数据库S表中所有男生的信息,并读取数据。
(1) 读取最后一条记录。
(2) 读取第一条记录。
(3) 读取第5条记录。
(4) 读取当前记录指针位置后第3条记录。
解:USE JXGL
GO
DECLARE S_Cursor SCROLL CURSOR
FOR SELECT *
FROM S
WHERE SEX=„M?
OPEN S_Cursor
FETCH LAST FROM S_Cursor
FETCH PRIOR FROM S_Cursor
FETCH ABSOLUTE 5 FROM S_Cursor
CLOSE S_Cursor
DEALLOCATE S_Cursor
GO
习 题 7
1(名词解释:
视图 索引 聚集索引 唯一索引
答:
视图:是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不存放视图的数据。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。这种索引对查询非 20
常有效,在每一张基本表中只能有一个聚集索引。
唯一索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查
2(简述数据库视图和基本表的联系与区别。
答:
联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和表是 PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。
(2) 试在上述两个视图的基础上进行数据查询:
? 检索上海的供应商所供应的零件的编号和名字。
? 检索项目J4所用零件的供应商编号和名字。
解:
(1) CREATE VIEW VIEWl
AS SELECT A.JNO,JNAME,DATE,C.PNO,PNAME,COLOR,WEIGHT,TOTAL
FROM PROJECT A,P_P B,PART C
WHERE A.JNO=B.JNO AND B.PNO=C.PNO;
CREATE VIEW VIEW2
AS SELECT A.PNO,PNAME,COLOR,WEIGHT,C.SNO,SNAME,SADDR,QUANTITY
21
FROM PART A,P_S B,SUPPLIER C
WHERE A.PNO=B.PNO AND B.SNO=C.SNO;
(2)
?
SELECT PNO,PNAME
FROM VIEW2
WHERE SADDR LIKE ’上海,’;
? SELECT SNO,SNAME
FROM VIEWl,VIEW2
WHERE VIEWl.PNO=VIEW2.PNO AND JNO=’J4’;
5. 对于教务管理数据库中基本表SC,建立视图如下:
CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE)
AS SELECT SNO,COUNT(CNO),AVG(GRADE)
FROM SC
GROUP BY SNO
试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操 作:
(1) SELECT * FROM S_GRADE
(2) SELECT SNO,C_NUM
FROM S_GRADE
WHERE AVG_GRADE>80;
(3) SELECT SNO,AVG_GRADE
FROM S_GRADE
WHERE C_NUM>(SELECT C_NUM
FROM S_GRADE
SNO=’200912121’);
(4) UPDATE S_GRADE
SET C_NUM=C_NUM+1
WHERE SNO=’200915122’
(5) DELETE FROM S_GRADE
WHERE C_NUM>4;
解:
答:? 允许查询。相应的操作如下:
SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRADE) AS AVG_GRADE
FROM SC
GROUP BY SNO;
? 允许查询。相应的操作如下:
SELECT SNO,COUNT(CNO)AS C_NUM
FROM SC
GROUP BY SNO
HAVING AVG(GRADE)>80;
? 允许查询。相应的操作如下:
SELECT SNO,AVG(GRADE) AS AVG_GRADE
FROM SC
22
GROUP BY SNO
HAVING COUNT(CNO)>(SELECT COUNT(CNO)
FROM SC
GROUP BY SNO
HAVING SNO=’200912121’);
? 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。
? 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。
6(简述创建索引的必要性和作用。
答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的 触发器 用户定义函数
答:
存储过程:是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
触发器:是一种对表进行插入、更新、删除的时候会自动执行的特殊存储过程。
23
用户定义函数:像系统内置函数一样,可以接受参数,执行复杂的操作并将操作结果以值的形式返回,也可以将结果用表格变量返回。
2(对于例5.9教学管理数据库的表S和SC,有下列程序清单,试叙述其功能。
USE JXGL
GO
DECLARE @MyNo CHAR(9)
SET @MyNo=„S7?
IF (SELECT SDEPT FROM S WHERE SNO=@MyNo)=„CS?
BEGIN
SELECT AVG(GRADE) AS „平均成绩?
FROM SC
WHERE SNO=@MyNo
END
ELSE
PRINT „学号为?+@MyNo+?的学生不存在或不属于计算机科学系?
GO
答:输入一个学生的学号,如果该学生属于计算机科学系则输出该学生的平均成绩,否则输出:该学号的学生不存在或不属于计算机科学系的提示。
3(简述存储过程与触发器的区别。
答:触发器与存储过程可以说是非常相似,可以说是一种变种的存储过程,触发器和存储过程一样都是SQL语句集。存储过程执行后驻留在计算机的高速缓冲区中,利用存储过程可以提高程序的效率,但存储过程只能通过调用来运行,可以有返回的状态值,存储过程可以在程序端调用执行。触发器是不可以在程序端调用的,它是SQL服务器端自动运行。触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。
4(AFTER触发器和INSTEAD OF触发器有什么不同,
答:AFTER触发器要求只有执行某一操作INSERT、UPDATE、DELETE之后触发器才被触发,且只能定义在表上,也可以针对表的同一操作定义多个触发器以及它们触发的顺序。而INSTEAD OF触发器表示并不执行其定义的操作(INSERT、UPDATE、DELETE)而仅是执行触发器本身。既可以在表上定义INSTEAD OF触发器,也可以在视图上定义,但对同一操作只能定义一个INSTEAD OF触发器。
5(在教学管理数据库中,创建一个名为STU_AGE的存储过程,该存储过程根据输入的学号,输出该学生的出生年份。
解:
USE JXGL
GO
CREATE PROCEDURE STU_AGE
@S_NAME CHAR(8)
AS
SELECT YEAR(GETDATE()-AGE) AS „YEAR?
FROM S
24
WHERE SNAME=@S_NAME
GO
6(在教学管理数据库中,创建一个名为GRADE_INFO的存储过程,其功能是查询某门
课程的所有学生成绩。显示字段为:CNAME,SNO,SNAME,GRADE。
解:
USE JXGL
GO
CREATE PROCEDURE GRADE_INFO
@C_NAME VARCHAR(50)
AS
SELECT CNAME,SC.SNO,SNAME,GRADE
FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND
CNAME=@C_NAME
GO
7(在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程~”的提示信息。
解:
CREATE TRIGGER TR_C_INSERT
ON C
FOR
INSERT
AS
PRINT „你插入了一门新的课程~?
GO
8-8 在教学管理数据库中,创建一个AFTER触发器,要求实现以下功能:在SC表上创建一个插入、更新类型的触发器TR_GRADE_CHECK,当在GRADE字段中插入或修改成绩后,触发该触发器,检查分数是否在0~100之间。
解:
CREATE TRIGGER TR_GRADE_CHECK
ON SC
FOR
INSERT,UPDATE
AS
DECLARE @SC_grede tinyint
SELECT @SC_grade=SC.grade
FROM SC
IF (@SC_grade NOT BETWEEN 0 AND 100)
PRINT „你插入的成绩不在0~100之间~?
GO
9(在教学管理数据库中,创建用户定义函数C_MAX,根据输入的课程名称,输出该门课程最高分数的同学学号。
解:
USE JXGL
GO
25
CREATE FUNCTION C_MAX
(@C_NAME CHAR(8))
RETURNS REAL
AS
BEGIN
DECLARE @S_MAX REAL
SELECT @S_MAX=MAX(GRADE)
FROM SC JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME
RETURN @S_MAX
END
GO
10(在教学管理数据库中,创建用户定义函数SNO_INFO,根据输入的课程名称,输出选
修该门课程的学生学号、姓名、性别、系部、成绩。
解:
USE JXGL
GO
CREATE FUNCTION SNO_INFO
(@C_NAME CHAR(8))
RETURNS TABLE
AS
RETURN(SELECT S.SNO,SNAME,SEX,SDEPT,GRADE
FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND
C.CNAME=@C_NAME)
GO
26