杭电数据库张红娟编第4章习题参考答案
- 格式:doc
- 大小:49.00 KB
- 文档页数:6
习题61、说明数据库设计的特点。
1)三分技术,七分管理,十二分基础数据2)综合性3)结构(数据)设计和行为(处理)设计相结合2、试述数据库设计的过程3、试述数据库设计过程的各个阶段设计内容。
1)需求分析阶段需求分析是对用户提出的各种要求加以分析,对各种原始数据加以综合、整理,是形成最终设计目标的首要阶段。
需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。
2)概念结构设计阶段概念结构设计是对用户需求进行进一步抽象、归纳,并形成独立于DBMS和有关软、硬件的概念数据模型的设计过程。
3)逻辑结构设计阶段逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化的设计过程。
4)物理设计阶段数据库物理设计阶段,是将逻辑结构设计阶段所产生的逻辑数据模型,转换为某种计算机系统所支持的数据库物理结构的实现过程。
5)数据库实施阶段数据库实施阶段,即数据库调试、试运行阶段。
一旦数据库的物理结构形成,就可以用已选定的DBMS来定义、描述相应的数据库结构,装入数据库数据库,以生成完整的数据库,编制有关应用程序,进行联机调试并转入试运行,同时进行时间、空间等性能分析。
6)数据库运行和维护阶段数据库实施阶段结束,标志着数据库系统投入正常运行工作的开始。
在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
4、需求分析中发现事实的方法有哪些?1)跟班作业。
通过亲身参加业务工作来观察和了解业务活动的情况。
2)开调查会。
通过与用户座谈来了解业务活动的情况及用户需求。
3)检查文档。
通过检查与当前系统有关的文档、表格、报告和文件等,进一步理解原系统,并有利于提供与原系统问题相关的业务信息。
4)问卷调查。
5、需求分析阶段的设计目标是什么?调查的内容是什么?需求分析阶段的目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,确定企业的组织目标,明确用户的各种需求,进而确定新系统的功能,并把这些要求写成用户和数据库设计者都能够接受的文档。
《软件技术基础》之数据库概论习题一、选择题1.把一个数据库分布在若干台计算机中,称为()数据库A.网状B.层次分布式 D.集中式2.关系数据库系统中,一个关系相当于()一张二维表 B.一条记录C.一个关系数据库D.一个实体3.在数据库设计中,E—R图(即实体联系图)是为了描述()A实体 B.结构数据模型C.关系D.概念数据模型4.关系数据库是用( C )实现数据间的联系A.表 ps:准确地说是二维表格B.外键C.关系D.指针5.数据库体系三级模式中,模式/内模式的映像使数据库具有()A.数据独立性B.数据逻辑独立性数据物理独立性 D.数据的一致性6.下面()不是数据库系统具有的特征?A.数据共享冗余大C.用数据模型描述数据D.数据独立于程序7.下面()描述了事物的特征,但不涉及信息在计算机中表示。
A实体 B. 概念数据模型C.关系D. 结构数据模型8.关系数据库与网状、层次数据库的主要区别在于()A.关系数据库存在关系B.关系数据库用表格表达数据C.关系数据库应用广泛9.数据管理技术发展过程中,文件系统与数据库系统的重要区别是数据库系统具有( )A .数据可共享 B. 数据无冗余C. 特定的数据模型有专门的数据管理软件10.在下面列出的几种语言中,哪一种是关系数据库的标准语言? ( )A. C++B. FORTRAN 11.假定有学生关系S 、课程关系C 、学生选课关系SC 的ER 图四,在由其产生的关系集合中查找选修"COMPUTER"课程的女学生的姓名,将涉及到关系( )图一A .,C ,SC12.设有关系R,S和T 如下。
关系T 是由关系R 和S 经过哪种操作得到的?( )A. R ∪×S D. R ∞S 13.下列选项中属于实体关系的是?( )A. 关系型B. 结构模型 一对多 D. 以上都不是二、填空题1.数据库系统中,常用的三种数据结构模型为:层次、网状、关系。
第1章数据库概述1.试说明数据、数据库、数据库管理系统和数据库系统的概念。
答:数据是描述事物的符号记录,是数据库中存储的基本对象。
数据库是存放数据的仓库,是长期存储在计算机中的有组织的、可共享的大量数据的集合。
数据库管理系统是一个专门用于实现对数据进行管理和维护的系统软件。
数据库系统是指在计算机中引入数据库后的系统,一般由数据库、数据库管理系统(及相关的实用工具)、应用程序、数据库管理员组成。
2.数据管理技术的发展主要经历了哪几个阶段?答:数据管理技术的发展主要经历了文件管理和数据库管理两个阶段。
3.与文件管理相比,数据库管理有哪些优点?答:将相互关联的数据集成在一起,具有较少的数据冗余,程序与数据相互独立,保证数据的安全可靠,最大限度地保证数据的正确性,数据可以共享并能保证数据的一致性。
4.在数据库管理方式中,应用程序是否需要关心数据的存储位置和存储结构?为什么?答:不需要。
因为在数据库系统中,数据的存储位置以及存储结构保存在数据库管理系统中,从数据到物理存储位置的转换是由数据库管理系统自动完成的。
5.在数据库系统中,数据库的作用是什么?答:在数据库系统中,数据库是存放数据的场所。
6.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据文件吗?答:不能。
7.数据独立性指的是什么?它能带来哪些好处?答:数据独立性指的是数据的逻辑独立性和物理独立性。
逻辑独立性带来的好处是当表达现实世界信息的逻辑结构发生变化时,可以不影响应用程序;物理独立性带来的好处是当数据的存储结构发生变化时,可以不影响数据的逻辑组织结构,从而也不影响应用程序。
8.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?答:数据库系统由四个主要部分组成,即数据库、数据库管理系统、应用程序和系统管理员。
数据库是数据的汇集,它以一定的组织形式存于存储介质上;数据库管理系统是管理数据库的系统软件,它可以实现数据库系统的各种功能;系统管理员负责数据库的规划、设计、协调、维护和管理等工作;应用程序指以数据库数据为核心的应用程序。
习题参考答案第1章习题参考答案一、选择题1. C2. B3. D4. C5. D6. B7. A8. B9. D 10. B11. C 12. D 13. D 14. D 15. B16. C 17. D 18. A 19. D 20. A21. D 22. D 23. C 24. A 25. C二、填空题1. 数据库系统阶段2. 关系3. 物理独立性4. 操作系统5. 数据库管理系统(DBMS)6. 一对多7. 独立性8. 完整性控制9. 逻辑独立性10. 关系模型11. 概念结构(逻辑)12. 树有向图二维表嵌套和递归13. 宿主语言(或主语言)14. 数据字典15. 单用户结构主从式结构分布式结构客户/服务器结构浏览器/服务器结构16. 现实世界信息世界计算机世界三、简答题1、简述数据库管理技术发展的三个阶段。
各阶段的特点是什么?????答:数据库管理技术经历了人工管理阶段、文件系统阶段和数据库系统阶段。
???(1)、人工管理数据的特点:??A、数据不保存。
B、系统没有专用的软件对数据进行管理。
C、数据不共享。
D、数据不具有独立性。
??????? (2)、文件系统阶段的特点:???A、数据以文件的形式长期保存。
B、由文件系统管理数据。
C、程序与数据之间有一定的独立性。
????D、文件的形式已经多样化E、数据具有一定的共享性(3)、数据库系统管理阶段特点:??A、数据结构化。
B、数据共享性高、冗余度底。
C、数据独立性高。
D、有统一的数据控制功能。
2、从程序和数据之间的关系来分析文件系统和数据库系统之间的区别和联系答:数据管理的规模日趋增大,数据量急剧增加,文件管理系统已不能适应要求,数据库管理技术为用户提供了更广泛的数据共享和更高的数据独立性,进一步减少了数据的余度,并为用户提供了方便的操作使用接口。
数据库系统对数据的管理方式与文件管理系统不同,它把所有应用程序中使用的数据汇集起来,以记录为单位存储,在数据库管理系统的监督和管理下使用,因此数据库中的数据是集成的,每个用户享用其中的一部分。
第4章触发器[题4.1]画出图P4.1所示由与非门组成的基本RS触发器输出端Q、Q的电压波形,输入端S、R的电压波形如图中所示。
图P4.1[解]见图A4.1图A4.1[题4.2]画出图P4.2由或非门组成的基本R-S触发器输出端Q、Q的电压波形,输出入端S D,R D的电压波形如图中所示。
图P4.2[解]见图A4.2[题4.3]试分析图P4.3所示电路的逻辑功能,列出真值表写出逻辑函数式。
图P4.3 [解]:图P4.3所示电路的真值表S R Q n Q n+1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0* 1 110*由真值表得逻辑函数式 01=+=+SR Q R S Q nn[题4.4] 图P4.4所示为一个防抖动输出的开关电路。
当拨动开关S 时,由于开关触点接触瞬间发生振颤,D S 和D R 的电压波形如图中所示,试画出Q 、Q 端对应的电压波形。
图P4.4[解] 见图A4.4图A4.4[题4.5] 在图P4.5电路中,若CP 、S 、R 的电压波形如图中所示,试画出Q 和Q 端与之对应的电压波形。
假定触发器的初始状态为Q =0。
图P4.5[解]见图A4.5图A4.5[题4.6]若将同步RS触发器的Q与R、Q与S相连如图P4.6所示,试画出在CP信号作用下Q和Q端的电压波形。
己知CP信号的宽度tw= 4 t Pd 。
t Pd为门电路的平均传输延迟时间,假定t Pd≈t PHL≈t PLH,设触发器的初始状态为Q=0。
图P4.6图A4.6[解]见图A4.6[题4.7]若主从结构RS触发器各输入端的电压波形如图P4.7中所给出,试画Q、Q端对应的电压波形。
设触发器的初始状态为Q=0。
图P4.7[解] 见图A4.7图A4.7R各输入端的电压波形如图P4.8所示,[题4.8]若主从结构RS触发器的CP、S、R、D1S。
试画出Q、Q端对应的电压波形。
第四章习题习题1.什么是数据库的安全性?答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2.数据库的安全性和计算机系统的安全性有什么关系?答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。
只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密XXX、相互支持的。
5.试述实现数据库安全性控制的常用方法和技术。
答:(1)用户标识和鉴别:该方法是由系统提供一定的方式让用户标识自己的名字和身份。
每次用户要求进入系统时,由系统进行核对,通过鉴定后才能提供系统的使用权。
(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。
例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)。
(3)视图机制:为不同的用户定义不同的视图,把数据对象限制在一定的范围内,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:建立审计日志,把用户对数据库的所有操作自动记录在审计日志中。
DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
6.什么是数据库中的自主存取控制方法和强制存取控制方法?答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。
当用户对数据库访问时首先检查用户的存取权限。
防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一级别的许可证。
系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
7.SQL语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
第1章数据库系统概述四、综合题1.商品(商品号,商品名,单价,产地)商店(商店编号,店名,店址,店经理编号)销售(商店编号,商品编号,月销售量)职工(职工编号,职工名,性别,工资,商店编号,聘用开始时间)2.3.第2章关系数据库4. (1)(2)(3)(4)(5)5.(1)(2)(3)第四章关系数据库4.第五章数据库设计1. 数据库系统的设计分为哪几个阶段?各阶段完成的具体任务是什么?答:(1)系统需求分析阶段:要收集数据库所有用户的信息内容和处理要求,并加以规划和分析。
(2)概念结构设计阶段:是把用户的信息要求统一到一个整体逻辑结构中,此结构能够表达用户的要求,是一个独立于任何DBMS软件和硬件的概念模型。
(3)逻辑结构设计阶段:是将上一步所得到的概念模型转换为某个DBMS所支持的数据模型,并对其进行优化。
(4)物理结构设计阶段:是为逻辑数据模型建立一个完整的能实现的数据库结构,包括存储结构和存取方法。
(5)数据库实施阶段:根据物理结构设计的结果把原始数据装入数据库,建立一个具体的数据库并编写和调试相应的应用程序。
(6)数据库运行与维护阶段:主要是收集和记录实际系统运行的数据,用来评价数据库系统的性能,进一步调整和修改数据库。
2. 数据库结构设计的任务是什么?分别形成的数据库模式是什么?答:数据库的结构设计是指根据给定的应用环境,进行数据库的模式或子模式的设计。
它包括数据库的概念设计、逻辑设计和物理设计。
数据库结构设计的不同阶段形成了数据库的各级模式,即:(1)在概念设计阶段形成独立于机器特点,独立于个DBMS产品的概念模式,在本篇中就是E-R 图;(2)在逻辑设计阶段将E-R图转换成具体产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图,形成数据的外模式;(3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
3.数据库设计过程的输入和输出有哪些内容?答:数据库设计过程的输入包括四部分内容:1)总体信息需求;2)处理需求;(3)DBMS的特征;(4)硬件和OS(操作系统)特征。
-数据库原理及应用第二版-第1-4章习题答案-课后习题数据库原理及应用第二版第1-4章习题答案课后习题---1. 第一章习题答案1.1 什么是数据库管理系统(DBMS)?提供三个具体例子。
DBMS是一种软件系统,用于管理和组织大量数据的存储和访问。
具体例子包括MySQL,Oracle和Microsoft SQL Server。
1.2 数据库系统由哪些基本组成部分构成?简要描述每个组成部分的功能。
数据库系统由以下组成部分构成:- 数据库:用于存储和组织数据的集合。
- 数据库管理系统(DBMS):负责管理和操作数据库的软件系统。
- 应用程序:使用数据库中的数据进行特定任务的软件程序。
- 用户:通过应用程序和DBMS与数据库进行交互的人。
1.3 什么是数据库模式(schema)?它包括哪些内容?数据库模式是数据库的逻辑结构和特征的描述。
它包括实体(Entity)、属性(Attribute)、关系(Relationship)以及约束条件等内容。
1.4 什么是数据库实例(instance)?它包括哪些内容?数据库实例是指在内存中运行的数据库系统。
它包括当前数据库中的数据以及与之相关的缓冲区、连接信息和其他控制结构等内容。
1.5 简述数据库管理系统的主要功能。
- 数据定义功能:定义和描述数据库模式。
- 数据操作功能:实现对数据库的增、删、改、查等操作。
- 数据控制功能:管理用户访问权限,并确保数据的完整性和安全性。
- 数据库恢复功能:通过备份和恢复机制保护数据的持久性。
- 并发控制功能:维护多个用户同时访问数据库的一致性和隔离性。
2. 第二章习题答案2.1 数据库系统中的数据模型是什么?它的目的是什么?数据模型是数据库中数据的逻辑表示方式。
它的目的是描述数据之间的关系以及数据的特性和约束条件。
2.2 列举并简要描述常见的数据模型。
- 层次模型:将数据组织成树状结构,通过父节点和子节点之间的关系表示数据之间的层次关系。
免责声明:私人学习之余整理,如有错漏,概不负责1.查询学生选课表中的全部数据SELECT *FROM SC2.查询计算机系的学生的姓名、年龄SELECT Sname,SageFROM StudentWHERE Sdept = '计算机系'3.查询成绩在70到80分之间的学生的学号课程号和成绩SELECT *FROM SCWHERE Grade BETWEEN 70 AND 804.查询计算机系年龄在18-20岁之间且性别为男的学生的姓名和年龄SELECT Sname,SageFROM StudentWHERE Sage BETWEEN 18 AND 20AND Sdept = '计算机系'AND Ssex = '男'5.查询课程号为‘c001’的课程的最高的分数SELECT MAX(Grade)FROM SCWHERE Cno = 'c001'6.查询计算机系学生的最大年龄和最小年龄SELECT MAX(Sage),MIN(Sage)FROM StudentWHERE Sdept = '计算机系'7.统计每个系的学生人数SELECT Sdept,COUNT(*) AS 学生人数FROM StudentGROUP BY Sdept8.统计每门课程的选课人数和考试最高分SELECT Cno,COUNT(*) AS 选课人数,MAX(Grade)FROM SCGROUP BY Cno9.统计每个学生的选课门数和考试总成绩,并按照选课门数升序显示结果SELECT Sno,COUNT(*) AS 选课门数,SUM(Grade) AS 总成绩FROM SCGROUP BY SnoORDER BY COUNT(*) ASC10.查询总成绩超过200分的学生的学号和总成绩SELECT Sno,SUM(Grade) AS 总成绩FROM SCGROUP BY SnoHAVING SUM(Grade) >20011.查询选修了'c002'号课程的学生的姓名和所在系SELECT Sname,SdeptFROM Student INNER JOIN SC ON Student.Sno = SC.SnoWHERE Cno = 'C002'12.查询成绩80分以上的学生的姓名、课程号和成绩,按成绩降序排列SELECT Sname,Cno,GradeFROM Student INNER JOIN SC ON Student.Sno = SC.SnoWHERE Grade > 80ORDER BY Grade DESC13.查询那些学生没有选修课,列出学号、姓名和所在系SELECT Student.Sno,Sname,Sdept,CnoFROM Student LEFT OUTER JOIN SC ON Student.Sno = SC.SnoWHERE Cno IS NULL14.查询与java在同一学期开设的课程的课程名和开课学期SELECT ame,c2.SemesterFROM Course c1 JOIN Course c2 ON c1.Semester = c2.SemesterWHERE ame = 'Java'-- 注意select的列与where的列应该不同15.查询与李勇年龄相同的学生的姓名、所在系和年龄SELECT s1.Sname,s1.Sdept,s1.SageFROM Student s1 JOIN Student s2 ON s1.Sage = S2.SageWHERE s2.Sname = '李勇'16.用子查询实现如下查询1)查询选修了'c001'号课程的学生的姓名和所在系SELECT Sname,SdeptFROM StudentWHERE Sno IN (SELECT Sno FROM SC WHERE Cno = 'c001')2)查询数学系成绩在80分以上的学生的学号、姓名、课程号和成绩SELECT s.Sno,Sname,Cno,GradeFROM Student s INNER JOIN SC ON s.Sno = SC.SnoWHERE Grade > 80 ANDs.Sno IN (SELECT Sno FROM SC WHERE Sdept = '数学系')3)查询计算机系考试成绩最高的学生的姓名SELECT SnameFROM Student s INNER JOIN SC ON s.Sno = SC.SnoWHERE Sdept = '计算机系' ANDgrade = (SELECT MAX(Grade) FROM SC INNER JOIN Student ON SC.Sno = Student.Sno)-- 不用子查询SELECT SnameFROM Student s INNER JOIN SC ON s.Sno = SC.SnoWHERE Sdept = '计算机系'GROUP BY Grade DESC LIMIT 1-- mysql没有top n 可以用limit替代4)查询数据结构考试成绩最高的学生的姓名、所在系、性别和成绩SELECT Sname,Sdept,Ssex,GradeFROM SC INNER JOIN Student s ON SC.Sno = s.SnoWHERE Grade = (SELECT MAX(Grade) FROM SC INNER JOIN Course c ON o = o WHERE Cname = '数据结构')AND Cno = (SELECT Cno FROM Course WHERE Cname = '数据结构')-- 使用排序SELECT Sname,Sdept,Ssex,GradeFROM Student s INNER JOIN SC ON s.Sno = SC.SnoWHERE Cno = (SELECT Cno FROM Course WHERE Cname = '数据结构')GROUP BY Grade DESC LIMIT 1-- mysql没有top n 可以用limit替代17.查询没有选修java课程的学生的姓名和所在系-- 子查询SELECT Sname,SdeptFROM StudentWHERE Sno NOT IN (SELECT Sno FROM SCWHERE Cno = (SELECT Cno FROM Course WHERE Cname = 'Java'))18.查询计算机系没有选课的学生的姓名和性别SELECT Sname,SsexFROM StudentWHERE Sno NOT IN (SELECT Sno FROM SC)19.创建一个新表,表明test_t........CREATE TABLE test_t(COL1 INT,COL2 CHAR(10) NOT NULL,COL3 CHAR(10))INSERT INTO test_t VALUE(NULL,'B1',NULL),(1,'B2','C2'),(2,'B3',NULL)20.删除考试成绩低于50分的学生的选课记录DELETE FROM SCWHERE Grade < 5021.删除没有人选的课程记录DELETE FROM CourseWHERE Cno NOT IN (SELECT Cno FROM SC)22.删除计算机系java成绩不及格学生的java课程选课记录DELETE FROM SCWHERE Sno IN (SELECT Sno FROM Student WHERE Sdept = '计算机系')AND Cno = (SELECT Cno FROM Course WHERE Cname = 'Java')AND Grade < 6023.将第二学期开设的所有课程的学分增加2分UPDATE Course SET Credit = Credit + 2WHERE Semester = 224.将java课程的学分改为3分UPDATE Course SET Credit = 3WHERE Cname = 'Java'25.将计算机系的学生的年龄增加一岁UPDATE Student SET Sage = Sage + 1WHERE Sdept = '计算机系'26.将信息系学生的计算机文化学课程的考试成绩加5分UPDATE SC SET Grade = Grade + 5WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept = '信息系')AND Cno = (SELECT Cno FROM Course WHERE Cname = '计算机文化学')27.查询每个系年龄大于等于20的学生人数,并将结果保存到一个新永久标Dept_ageCREATE TABLE Dept_age (SELECT b.Sdept,IFNULL(人数,0) AS 人数FROM(SELECT Sdept,COUNT(*) AS 人数FROM Student WHERE Sage >= 20 GROUP BY Sdept) a RIGHT OUTER JOIN (SELECT DISTINCT Sdept FROM Student) b ON a.Sdept = b.Sdept)SELECT * FROM Dept_age-- mysql不支持select into from28.查询计算机系每个学生的java考试情况,列出学号、姓名、成绩和成绩情况>=90(好)80-89(较好)70-79(一般)60-69(较差)<60(差)SELECT s.Sno,Sname,Grade,CASEWHEN Grade >= 90 THEN '优'WHEN Grade BETWEEN 80 AND 89 THEN '较好'WHEN Grade BETWEEN 70 AND 79 THEN '一般'WHEN Grade BETWEEN 60 AND 69 THEN '较差'WHEN Grade < 60 THEN '差'END AS 成绩情况FROM Student s INNER JOIN SC ON s.Sno = SC.SnoWHERE Cno = (SELECT Cno FROM Course WHERE Cname = 'Java')29.统计每个学生的选课门数(包括没有选课的人),列出学号、选课门数和选课情况>=6(多)3-5(一般)1-2(偏少)0(未选课)SELECT s.Sno,IFNULL(COUNT(*),0) AS 选课门数,CASEWHEN COUNT(*) >= 6 THEN '多'WHEN COUNT(*) BETWEEN 3 AND 5 THEN '一般'WHEN COUNT(*) BETWEEN 1 AND 2 THEN '偏少'WHEN COUNT(*) IS NULL THEN '未选课'END AS 选课情况FROM Student s LEFT OUTER JOIN SC ON s.Sno = SC.SnoGROUP BY Sno30.修改全部课程的学分,修改规则如下:1-2学期开设的课程加5分3-4学期开设的课程加3分5-6学期开设的课程加1分其余不变UPDATE Course SET Credit = Credit +CASEWHEN Semester BETWEEN 1 AND 2 THEN 5WHEN Semester BETWEEN 3 AND 4 THEN 3WHEN Semester BETWEEN 5 AND 6 THEN 5ELSE 0END31.查询李勇和王大力所选的全部课程,列出课程名、开课学期和学分,不包括重复结果SELECT Cname,Semester,CreditFROM CourseWHERE Cno IN (SELECT Cno FROM SC WHERE Sno IN (SELECT Sno FROM Student WHERE Sname = '李勇' OR Sname = '王大力'))-- 并运算SELECT Cname,Semester,Credit FROM CourseWHERE Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇'))UNIONSELECT Cname,Semester,Credit FROM CourseWHERE Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '王大力'))32.查询第3学期开设的课程中,李勇选了但王大力没选的课程,列出课程名和学分SELECT Cname,CreditFROM CourseWHERE Semester = 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇'))AND Cno NOT IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '王大力'))-- 差运算mysql不支持EXCEPTSELECT Cname,CreditFROM CourseWHERE Semester = 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇'))EXCEPTSELECT Cname,CreditFROM CourseWHERE Semester = 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '王大力'))33.查询学分大于3分的课程中,李勇和王大力所选的相同课程,列出课程名和学分SELECT Cname,CreditFROM CourseWHERE Credit > 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇'))AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '王大力'))-- 交运算mysql不支持INTERSECTSELECT Cname,CreditFROM CourseWHERE Credit > 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇'))INTERSECTSELECT Cname,CreditFROM CourseWHERE Credit > 3AND Cno IN (SELECT Cno FROM SC WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '王大力'))。
1.关于IPv4地址的说法,错误的是(C )。
A.IP地址是由网络地址和主机地址两部分组成B.网络中的每台主机分配了唯一的IP地址C.IP地址只有三类:A,B,CD.随着网络主机的增多,IP地址资源将要耗尽2.A类IP地址共有( A )个有效网络节点。
A.126 B.127 C.128 D.16384 3.IP地址127.0.0.1(D )。
A.是一个暂时未用的保留地址 B.是一个属于B类的地址C.是一个表示本地全部节点的地址 D.是一个表示本节点的地址4.从IP地址195.100.20.11中我们可以看出(C)。
A.这是一个A类网络的主机 B.这是一个B类网络的主机C.这是一个C类网络的主机 D.这是一个保留地址5.要将一个IP地址是220.33.12.0的网络划分成多个子网,每个子网包括25个主机并要求有尽可能多的子网,指定的子网掩码应是为(B )。
A.255.255.255.192 B.255.255.255.224C.255.255.255.240 D.255.255.255.248 6.一个A类网络已经拥有60个子网,若还要添加两个子网,并且要求每个子网有尽可能多的主机,应指定子网掩码为( B )。
A.255.240.0.0 B.255.248.0.0C.255.252.0.0 D.255.254.0.0二、问答题1.168.122.3.2是一个什么类别的IP地址?该网络的网络地址是多少?广播地址是多少?有限广播地址是多少?答:168.122.3.2是一个什么B类IP地址,该网络的网络地址是168.122.0.0,广播地址是168.122.255.255,有限广播地址是255.255.255.255。
2.B类地址的子网位最少可以有几位?最多能有几位?可以是一位子网位吗?为什么?答:B类地址,该网络的网络地址是168.122.0.0,广播地址是168.122.255.255,有限广播地址是255.255.255.255。
第1章数据库概述1.试说明数据、数据库、数据库管理系统和数据库系统的概念。
答:数据是数据库中存储的基本对象。
数据库:是存放数据的场所。
数据库管理系统:管理数据库数据及其功能的系统软件。
数据库系统:由数据库、数据库管理系统、数据库管理员和数据库应用程序共同构成的系统。
2.数据管理技术的发展主要经历了哪几个阶段?答:文件管理和数据库管理。
3.文件管理方式在管理数据方面有哪些缺陷?答:(1)编写应用程序不方便。
(2)数据冗余不可避免。
(3)应用程序依赖性。
(4)不支持对文件的并发访问。
(5)数据间联系弱。
(6)难以满足不同用户对数据的需求。
4.与文件管理相比,数据库管理有哪些优点?答:(1)相互关联的数据集合;(2)较少的数据冗余;(3)程序与数据相互独立;(4)保证数据的安全可靠;(5)最大限度地保证数据的正确性;(6)数据可以共享并能保证数据的一致性。
5.比较用文件管理和用数据库管理数据的主要区别。
答:文件系统不能提供数据的独立性,也不能提供数据共享、安全性等功能,这些需要客户端编程实现。
而数据库管理系统可以很方便地提供这些功能。
6.在数据库管理方式中,应用程序是否需要关心数据的存储位置和存储结构?为什么?答:不需要。
因为这些都由数据库管理系统来维护。
7.在数据库系统中,数据库的作用是什么?答:数据库是存储数据的仓库,其作用是存储数据。
8.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据文件吗?答:不可以。
9.数据独立性指的是什么?它能带来哪些好处?答:数据独立性包括逻辑独立性和物理独立性两部分。
物理独立性是指当数据的存储结构发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。
这两个独立性使用户只需关心逻辑层即可,同时增强了应用程序的可维护性。
10.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?答:数据库系统一般包括3个主要部分:数据库、数据库管理系统和应用程序。
杭电数据库张红娟编第4章习题参考答案/* 完成表中约束的定义*/--创建course表create table course(cno char(1) primary key,cname varchar(20) not null,credit smallint check(credit>=1 and credit<=6))--创建class表create table class(clno char(5) primary key,speciality varchar(20) not null,inyear char(4) not null,number integer check(number>1 and number<100),monitor char(7))--创建student表create table student3(sno char(7) primary key,sname varchar(20) not null,ssex char(2) not null default('男'),sage smallint check(sage>14 and sage<65),clno char(5) not null references class(clno) on delete cascade on update cascade)--为class表添加参照完整性alter table classadd constraint fk_monitor foreign key (monitor) references student(sno) on delete no action--创建grade表create table grade(sno char(7) not null references student(sno) on delete cascade on update cascade,cno char(1) not null references course(cno) on delete cascade on update cascade,gmark decimal(4,1) check(gmark>0 and gmark <100),primary key (sno,cno))/* 针对成绩管理数据库中的表,完成以下操作:*/--(1)用户张勇对Student表和Course表有Select权力。
第4章习题与参考答案一. 单项选择题1.下列所述功能中,不属于SQL语言功能的是(D)。
A.数据表的定义功能B.数据查询功能C.数据增、删、改功能D.提供方便的用户操作界面功能2.设某职工表中有用于存放年龄(整数)的列,下列类型中最适合年龄列的是(C)。
A.intB.smallintC.tinyintD.bit3.设某学生表中有用于存放学生编号的列,下列类型中最适合的是(D)。
A.intB.dateC.tinyintD.char4.下列约束中用于限制列的取值范围的约束是(B)。
A.PRIMARY KEYB.CHECKC.DEFAULTD.UNIQUE5.下列约束中用于限制列取值不重的约束是(D)。
A.PRIMARY KEYB.CHECKC.DEFAULTD.UNIQUE6.下列约束中用于实现实体完整性的是(A)。
A.PRIMARY KEYB.CHECKC.DEFAULTD.UNIQUE7.下列关于DEFAULT约束的说法,错误的是(D)。
A.一个DEFAULT约束只能约束表中的一个列B.在一个表上可以定义多个DEFAULT约束C.DEFAULT只能定义在列级完整性约束处D.在列级完整性约束和表级完整性约束处都可以定义DEFAULT约束8.下列为变量赋值的语句中,错误的是(D)。
A.SET @X = 10B.SELECT @X = 10C.SET @X = 10 + 10D.SET @X = 10 + 'A'9.设有表T,现要在该表新增加一个列,列名为:c1,类型为int。
下列能实现该功能的语句是(A)。
A.ALTER TABLE T ADD COLUMN c1 intB.ALTER TABLE T ADD (c1 int)C.ALTER TABLE T ADD COLUMN c1D.ALTER TABLE T ADD c110.设有表M,将其中的Type列的数据类型改为NCHAR(4)。
第四章 关系规范化1. 设有关系模式R (职工名,项目名,工资,部门号,部门名,部门经理)(职工名,项目名,工资,部门号,部门名,部门经理) 如果规定:如果规定:每个职工可参加多个项目,各领一份工资;每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门经理;每个项目只属于一个部门经理;每个部门只有一个经理。
每个部门只有一个经理。
该模式中,函数依赖关系如下图所示:该模式中,函数依赖关系如下图所示:试回答下列问题:试回答下列问题:(1) 请分析该模式是不是一个好的关系模式?为什么?(5分)分) (2) 试问关系模式R 最高已经达到第几范式?如果该模式不是一个好的模式,试用规范化理论对其进行分解使之达到第三范式。
( 5分)分)参考答案:参考答案: 2、(1) R (职工名,项目名,工资,部门号,部门名,部门经理)不是一个好的关系模式,因为:模式,因为:通过图中关系依赖图可以发现其码为(职工号,项目名)通过图中关系依赖图可以发现其码为(职工号,项目名)① 插入异常插入异常假设职工号为07102,部门号为S1的职工的职工还未还未还未参加项目,参加项目,因项目名是因项目名是主主属性,因此该学生学生的的信息无法插入R 。
② 删除异常删除异常假定某个职工个职工本来本来本来只参加只参加只参加了了项目名为“三建”的一个工的一个工程程。
现在因某种原某种原因,因,他连“他连“三三建”建”工工程也程也不参加不参加不参加了了。
因项目名是。
因项目名是主主属性,此操作将导致此操作将导致该该学生信息学生信息的的职工名项目名工资部门经理部门号部门名整个元组都要删除元组都要删除。
③ 数据冗余度大据冗余度大如果一个职工参加如果一个职工参加了了10个工个工程程,那么他的部门名的部门名称和称和称和部门经理的部门经理的部门经理的值就要重复值就要重复存储了10次。
④ 修改复杂修改复杂例如由于某种原某种原因,因,因,某某职工职工要改变要改变要改变所参所参所参与与的项目,的项目,在修改此在修改此在修改此职工职工职工元组元组元组的项目的项目名的名的同时同时同时,,还可能需要修改能需要修改其部门号,其部门号,部门名部门名称和称和称和部门经理。
第4章课后习题答案一、单选题1.在 MapReduce 程序中,map() 函数接收的数据格式是(A. 字符串B. 整型C. LongD. 键值对参考答案:D2.每个 Map 任务都有一个内存缓冲区,默认大小是( ) 。
A. 128 MBB. 64 MBC. 100 MBD. 32 MB参考答案:C3.在 MapTask 的 Combine 阶段,当处理完所有数据时,MapTask 会对所有的临时文件进行一次() 。
A. 分片操作B. 合并操作C. 格式化操作D. 溢写操作参考答案:B4.下列选项中,主要用于决定整个 MapReduce 程序性能高低的阶段是( ) 。
A. MapTaskB. ReduceTaskC. 分片、格式化数据源D. Shuffle参考答案:D二、判断题1. MapReduce 编程模型借鉴了面向过程的编程语言的设计思想。
( )参考答案:错2.在MapReduce 程序进行格式化数据源操作时, 是将划分好的分片格式化为键值对“ < key,value > ” 形式的数据。
( )参考答案:对3.带有倒排索引的文件称为“倒排索引文件”,简称“ 倒排文件” 。
( )参考答案:对4.reduce() 函数会将 map( ) 函数输出的键值对作为输入,将相同 key 值的 value 进行汇总,输出新的键值对。
( )参考答案:对5.MapReduce 通过 TextOutputFormat 组件输出到结果文件中。
( )参考答案:对biner 组件可以让 Map 对 key 进行分区,从而可以根据不同的 key 分发到不同的Reduce 中去处理。
( )参考答案:错7.对于 MapReduce 任务来说,一定需要 Reduce 过程。
( )参考答案:错8.在 MapReduce 程序中,只有 Map 阶段涉及 Shuffle 机制。
( )参考答案:错9.MapReduce 的数据流模型可能只有 Map 过程,由 Map 产生的数据直接被写入 HDFS中。
/* 完成表中约束的定义*/--创建course表create table course(cno char(1) primary key,cname varchar(20) not null,credit smallint check(credit>=1 and credit<=6))--创建class表create table class(clno char(5) primary key,speciality varchar(20) not null,inyear char(4) not null,number integer check(number>1 and number<100),monitor char(7))--创建student表create table student3(sno char(7) primary key,sname varchar(20) not null,ssex char(2) not null default('男'),sage smallint check(sage>14 and sage<65),clno char(5) not null references class(clno) on delete cascade on update cascade)--为class表添加参照完整性alter table classadd constraint fk_monitor foreign key (monitor) references student(sno) on delete no action--创建grade表create table grade(sno char(7) not null references student(sno) on delete cascade on update cascade,cno char(1) not null references course(cno) on delete cascade on update cascade, gmark decimal(4,1) check(gmark>0 and gmark <100),primary key (sno,cno))/* 针对成绩管理数据库中的表,完成以下操作:*/--(1)用户张勇对Student表和Course表有Select权力。
Grant select on student to 张勇Grant select on course to 张勇--(2)把对表Student的INSERT和Delete权限授予用户张三,并允许他再把此权限授予其他用户。
Grant insert,delete on student to 张三with grant option--(3)把查询Course表和修改属性Credit的权限授给用户李四。
Grant select,update(credit) on course to 李四--(4)授予用户李勇敏对Student表的所有权力(读、插、删、改),并具有给其他用户授权的权力。
Grant all privilege on student to 李勇敏with grant option--(5)撤销(1)中对张勇所授予的所有权力。
Revoke select on student to 张勇Revoke select on course to 张勇或:Revoke select on student from 张勇Revoke select on course from 张勇--(6)撤销(2)中对张三所授予的所有权力。
revoke insert,delete on student to 张三cascade或revoke insert,delete on student from 张三cascade/* 为成绩管理数据库中的Student表创建一触发器:当向表中插入或删除记录时,修改Class 表中相应班级的人数。
*/--创建insert触发器,适用于student表的单行数据的添加create trigger stu_inserton studentafter insertasupdate classset number=number+1from class,insertedwhere class.clno = inserted.clno--创建delete触发器,适用于student表的单行数据的删除create trigger stu_deleteon studentafter deleteasupdate classset number=number-1from class,deletedwhere class.clno = deleted.clno--将insert和delete写入一个触发器内,适用于student表的单行数据的添加或删除create trigger tri_stuon studentafter insert,deleteasif update(sno)update classset number=number+1where clno = (select clno from inserted)else update classset number=number-1where clno = (select clno from deleted)--验证触发器,添加数据insert into studentvalues ('2222','tom','男',20,'00311')--验证触发器,删除数据delete from studentwhere sno='2222'--假设向student表添加或删除的多行数据都来自同一个班级create trigger tri_stu2on studentafter insert,deleteasif update(sno)update classset number=number+(select count(*) from inserted)where clno = (select clno from inserted)else update classset number=number-(select count(*) from inserted)where clno = (select clno from deleted)----适用于student表的多行数据的添加或删除(最靠谱解决方案)create trigger tri_stu2on studentafter insert,deleteasbegindeclare @sno char(7),@clno char(5)if update(sno)begindeclare mycursor cursor for select sno,clno from inserted --声明游标open mycursor --打开游标fetch next from mycursor into @sno,@clno --获取数据while(@@fetch_status =0 ) /* 0操作成功,-1 FETCH 语句失败或此行不在结果集中,-2 被提取的行不存在*/beginupdate classset number=number+1where clno = @clnofetch next from mycursor into @sno,@clnoendclose mycursor --关闭游标deallocate mycursor --释放游标endelsebegindeclare mycursor cursor for select sno,clno from deletedopen mycursorfetch next from mycursor into @sno,@clnowhile(@@fetch_status = 0)beginupdate classset number = number -1where clno=@clnofetch next from mycursor into @sno,@clnoendclose mycursordeallocate mycursorendend--为class表再建一更新触发器:当更新班长学号时,检查新输入的学号是否为同一班级的学生学号,若不是,给出适当的提示信息。
create trigger stu_updateon classafter updateasif update(monitor)if ( select monitor from inserted ) not in( select sno from studentwhere clno = (select clno from deleted ) ) beginprint 'there is not the new monitor in the class'rollback transactionend--验证触发器执行update classset monitor = '2001104'where clno = '00312'--创建商品表create table product( pno char(6) primary key,pname varchar(20) not null,price decimal(7,2) )--创建仓库表create table warehouse( whno char(3) primary key,whname varchar(20) not null,whaddress varchar(20) )--创建库存商品表create table whproduct( whno char(3) references warehouse(whno) on delete no action on update cascade,pno char(6) references product(pno) on delete cascade on update cascade,number int )--设计触发器,当新增商品时,自动生成该商品在所有仓库的库存记录,库存数量为0 create trigger tri_producton productafter insertasbegindeclare @pno char(3)select @pno=pno from insertedinsert into whproductselect whno,@pno,0from warehouseend----设计触发器,当新增仓库时,自动生成该仓库在所有商品的库存记录,库存数量为0 create trigger tri_warehouseon warehouseafter insertasbegindeclare @whno char(6)select @whno=whno from insertedinsert into whproductselect @whno,pno,0from productend。