《数据库技术与应用》复习资料.doc
数据库技术与应用章节复习资料(考试成绩70%,平时成绩30%)题型及分值一、填空题(10空,每空1分,共10分)二、判断题(10小题,每题1分,共10分)三、名词解释(5小题,每题4分,共20分)四、简答题(5小题,每题6分,共30分)五、综合应用题(6小题,每题5分,共30分)注:综合应用题主要来自于实验三、四,教材中介绍的基本SQL语句要熟悉。第一章 绪 论(一)填空与名词解释1. 数据(Data)数据是数据空中存储的基本对象,是描述事物的符号记录。2. 数据库(Database)数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。3. 数据库管理系统(DBMS)的主要功能(database management system)数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事务管理和维护功能,其他功能4. 数据库系统(DBS)数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。5. 两类数据模型概念模型也称信息模型,它是按用户的观点来对数据和信息建模, 用于数据库设计。 逻辑模型和物理模型逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。 物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。6. 数据模型的组成要素数据结构、数据操作、完整性约束数据结构是描述数据库的组成对象以及组成对象之间的联系,是对系统静态特征的描述;数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作集合及有关操作规则,由查询,更新,是对系统动态特征的描述;完整性约束条件是一组完整性规则的集合。7. 最常用的数据模型(五个)层级模型、网状模型、关系模型、面向对象模型、对象关系模型8. 数据库系统的三级模式外模式、模式、内模式(二)简答1. 数据库的二级映像功能与数据独立性。P.33数据库在三级模式之间提供了两层映像,即外模式/模式映像,模式/内模式映像正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。一、外模式模式映象(多对一)模式:描述的是数据的全局逻辑结构外模式:描述的是数据的局部逻辑结构 同一个模式可以有任意多个外模式 每一个外模式,数据库系统都有一个外模式模式映象,定义外模式与模式之间的对应关系映象定义通常包含在各自外模式的描述中保证数据的逻辑独立性当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。二、模式内模式映象模式内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的数据库中模式内模式映象是唯一的该映象定义通常包含在模式描述中保证数据的物理独立性当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。2. 数据库系统的特点。P.8数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由DBMS统一管理和控制;3. 数据库系统的组成。P.34数据库;数据库管理系统(及其开发工具);应用系统;数据库管理员硬件平台及数据库;软件;人员 第二章 关系数据库(一)填空与名词解释1. 关系模型的3个组成部分域、笛卡尔积、关系2. 关系、元组、属性关系:D1×D2××Dn 的子集叫作在域D1,D2,Dn上的关系,表示为 R(D1,D2,Dn)元组:笛卡尔积中每一个元素(d1,d2,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)属性:关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性3. 候选码、主码、外码候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。主码:若一个关系有多个候选码,则选定其中一个为主码。外码:设F是基本关系R的一个或一组属性,但不是关系R的码。Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码。4. 关系模式、关系、关系数据库关系:关系是关系模式在某一时刻的状态或类容。关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库。(二)简答1. 试述关系模型的完整性规则。P.49关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能去空值。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所设计的数据必须满足的语义要求。2. 等值连接、自然连接、外连接、左外连接、右外连接及其之间关系。P.58自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。外连接:如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。左外连接: 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)右外连接:如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。 如果把舍弃的元组也在结果关系中,而在其他属性上填空值(null),那么这种连接就叫做外连接。如果只把左边关系R中要舍弃的元组保留就叫做左外连接,如果只把右边关系S中要舍弃的元组保留就叫做右外连接。第三章 关系数据库标准语言SQL(一)填空与名词解释1. 行列子集视图若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图。2. SQL(Structured Query Language)即结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能极强的关系数据库语言。(二)简答1. SQL的特点,简要说明。综合统一。SQL集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。高度非过程化。存取路径的选择以及SQL的操作过程由系统自动完成。不但大大减轻了用户负担,而且有利于提高数据独立性。面向集合的操作方式。不尽操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。以同一种语言结构提供多种使用方式。即使独立的语言,优势嵌入式语言。语言简介,易学易用。SQL功能极强,但由于设计巧妙,语言十分简介,完成核心功能只用了9个动词。2. 什么是基本表?什么是视图?两者之间的区别与联系是什么?基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表;视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。视图一经定义,就可以和基本表一样被查询、被删除。也可以在视图之上再定义新的视图,但对视图的更新(增删改)操作则有一定的限制。联系:基本表和视图一样,都是关系。视图在概念上与基本表相同,用户可以在视图上再定义视图。3. 视图的优点有哪些?(视图的作用)1. 视图能够简化用户的操作。2. 视图使用户能以多种角度看待同一数据。3. 视图对重构数据库提供了一定程度的逻辑独立性。4. 视图能够对机密数据提供安全保护。5. 适当的利用视图可以更清晰的表达查询。(三)综合应用题实验三、四全部习题,弄懂每一道题。实验三1查询“实验2”中创建的各表所有记录select*FROM STUDENT,SC,COURSE;2查询学生总人数select count (*)from student3检索“LIU”老师所授课程的课程号和课程select cname,cnofrom coursewhere cteacher ='LIU'4检索年龄大于23岁的男学生的学好和姓名select sno,snamefrom studentwhere sage>23 and ssex='男'5检索“信息管理”专业的所有女学生的学好和姓名select sno,snamefrom student where ssex='女' and sdept='信息管理'6查询年龄最小的学生学好、姓名和年龄select top 1 sname,sno,sagefrom studentorder by sage asc7检索所有学生中年龄最大的前4人,输出其学号、姓名、年龄select top 4 sno,sname,sagefrom studentorder by sage desc8检索至少选修了两门课程的学生学号select snofrom SCgroup by snohaving count(*)>29在course表中统计开设课程的教师人数select count(distinct cteacher)from course10查询各个课程号相应的选课人数select count(distinct sno)from SC11查询各个课程号相应的选课人数select cno,count(sno)from scgroup by cno12计算C001号课程的学生平均成绩select avg(grade)from scwhere cno='1'13求每个学生选秀课程(已有成绩)的门数和平均成绩select sno,count( cno),avg(grade)from scgroup by sno14统计每个学生选秀课程的门数(超过5门的学生才统计)。要求输出学生学号和选修门数,查询结果按门数降序排列,若门数相同,按学号升序排列。select sno,count(cno)from scgroup by snohaving count (*)>5order by sno asc15检索学号比WANG同学大,而年龄比他小的学生姓名。select sname from student where sno >(select sno from student where sname like '王%') and sage <(select sage from student where sname like'王%')16在表SC表中检索成绩为空值的学生学号和课程号。select sno,cnofrom scwhere grade=null17检索姓名以“刘”开头的所有学生的姓名和课程号。select sname,sagefrom student where sname like '刘%'18求年龄大于女同学平均年龄的男学生和年龄。select sname,sagefrom student where sage >(select avg(sage) from student where ssex='女' ) and ssex='男'19求年龄大于所有女同学年龄的男同学的姓名和年龄。select sname, sagefrom Student where ssex='男' and sage >all (select sage from Student where ssex='女')20查询所有学生中平均成绩最差的学生的学号;(按已有成绩,没有成绩的暂不统计)select top 1 snofrom scgroup by sno order by avg(grade) asc21查询学生平均成绩最好的课程的课程号和平均成绩;(按已有成绩,没有成绩的暂不统计)select top 1 cno, avg(grade)from scgroup by cnoorder by avg(grade) desc22查询与“刘晨”在同一个系学习的学生。select s1.sno,s1.sname,s1.sdeptfrom student s1,student s2where s1.sdept =s2.sdept and s2.sname ='刘晨'实验四1. 求选修C004课程的女学生的平均成绩select avg(grade)from scwhere cno='4' and sno in (select sno from student where ssex='' )2求选修C004课程的女学生的平均年龄select avg(sage)from studentwhere ssex=''and sno in(select sno from scwhere cno='4')3. 检索学号为S0003学生所学课程的课程名与任课教师姓名select cno,cteacherfrom coursewhere cno in (select cno from scwhere sno='200215123')4. 检索至少选修LIU老师所授课程的女学生姓名select snamefrom student where sno in (select sc.snofrom sc,coursewhere o=o and course.cteacher='liu') and ssex=''5. 检索WANG同学不学的课程的课程号select cnofrom scwhere sno not in (select sno from student where sname like '王_')6. 检索全部学生都选修的课程号和课程名方法一:select cno,cnamefrom coursewhere not exists (select * from student where not exists (select * from sc where sc.sno=student.sno and o=o) )方法二select cno,cnamefrom coursewhere not exists(select *from studentwhere sno not in (select snofrom scwhere o=o)方法三 SELECT Cno, Cname FROM Course WHERE Cno IN (SELECT Cno FROM SC GROUP BY Cno HAVING COUNT(*)= (SELECT COUNT(*) FROM Student) )7. 检索选修课程包含LIU老师所授课程的学生学号select sno from scwhere cno in (select cno from coursewhere cteacher='liu')8. 查询属于“信息管理”系学生且性别为女性的学生号及姓名select sno, snamefrom student where ssex='女' and sdept='信息管理'9. 查询“信息管理”系学生或者是女学生的学生号及姓名select sno, sname from student where sdept='信息管理' or ssex='女'10. 查询“电子商务”系学生平均成绩大于75分的学生学号select sno from studentwhere sdept='电子商务' and sno in (select sno from scgroup by snohaving avg(grade)>75)11. 查询选修了课程名为“管理信息系统”的学生学号及姓名select sno,snamefrom studentwhere sno in (select sno from sc where cno in (select cno from course where cname='信息系统')12. 找出选修课程中成绩最高的同学姓名及成绩select top 1 student.sname,sc.gradefrom student,scwhere student.sno=sc.snoorder by sc.grade desc13. 查询“电子商务”系选修了两门以上课程的学生学号select sno from student where sdept='电子商务'and sno in (select sno from scgroup by snohaving count(*)>2)14查询其他系中比“市场营销”系某一学生年龄小的学生名单select snamefrom student where sage<any (select sage from student where sdept='市场营销') and sdept<>'市场营销'15. 查询其他系中比“市场营销”系所有学生年龄小的学生名单select sname from student where sage<all(select sage from student where sdept='市场营销') and sdept<>'市场营销'16. 查询所有选修了C002好课程的学生姓名select sname from studentwhere sno in (select sno from sc where cno='2')更新操作17. 向关系COURSE中插入一个课程元组(C010,JAVA程序设计,BAO)insert into course(cno,cname,ccredit,cteacher)values('10','java程序设计','2','BAO')18将SC表中删除尚无成绩单额选课元组deletefrom scwhere grade=null19. 把选修LIU老师课程的女学生选课元组全部删除deletefrom scwhere sno in (select sno from student where ssex='')and cno in (select cnofrom coursewhere cteacher='LIU')20. 把“数据库原理与应用”课程不及格的成绩全改为60分update scset grade='60'where grade<'60'21. 把低于总平均成绩的女同学成绩提高5%UPDATE SCSET GRADE=GRADE*1.05WHERE sno IN(SELECT Sno FROM Student WHERE sSEX='')and GRADE<(SELECT AVG(GRADE) FROM SC)22. 在表SC中,当某个选修成绩低于所有课程的平均成绩时,提高5%(要针对课程进行分组,与21题不一样)update scset grade=grade*1.05where grade<(select avg(grade) from sc)23在表SC中修改C004课程的成绩,当成绩小于等于70分时提高5%,当成绩大于70分时提高4%update SC set grade= case when grade<=70 then grade+grade*0.05 when grade>70 then grade+grade*0.04 end where cno='4'24. 检索存在所授课程平均成绩大于80分的教师姓名,并把检索到的值送往另一个已存在的表faculty(tname),思考,假设这个表不实现存在,怎么办呢?insert into faculty(tname)select cteacherfrom coursewhere cno in (select cno from sc group by cnohaving avg(grade)>80)第四章 数据库安全性(一)填空与名词解释1. 计算机系统的三类安全问题所谓计算机安全性,是指为计算机建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄漏。计算机系统安全性问题可分为三大类,即技术安全类,管理安全类和政策法律类。2. MAC中将DBMS所管理的实体分为两大类。P.144主体和客体两大类主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,DBMS为它们每个实例指派一个敏感度标记。3. 自主存取控制与强制存储控制(MAC)。P.143自主存取控制能够通过授权机制有效地控制对敏感数据的存取。所谓MAC是指系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求,所采取的强制存取检查手段。4. 数据库安全性数据库的安全性是指保护数据库以防不合法的使用所造成的数据泄漏、更改或破坏。(二)简答1. 试述三种实现数据库安全性控制的常用方法。(1)用户标识和鉴别:是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过坚定后才提供机器使用权,常用的方法有:用户标识,口令。(2)存取控制:数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制实现。主要包括两部分:定义用户权限,并将用户权限等级到数据字典中;合法权限检查。两者一起组成了DBMS的安全子系统。自主存取控制(DAC):用户对于不同的数据库对象有不同的存取权限,不通的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限传授给其他用户,因此DAC非常灵活。强制存取控制(MAC):每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。MAC比较严格。(3)视图机制:可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内,也就是说,通过视图机制把要保密的数据对物权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。视图机制简介地实现支持存取为此的用户权限定义。(4)审计:审计功能把用户对数据库的所有操作自动记录下来仿佛审计日志。DBA可以利用审计跟踪的信息,重视导致数据库现有状况的一系列时间,找出非法存取数据的人、时间和内容等。审计功能一般主要用于安全性要求比较高的部门。审计一般可以分为用户级审计和系统级审计。用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据表或视图进行审计,记录所有用户对这些表或视图的一切访问要求以及各种类型的SQL操作。系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测GRANT和REVOKE操作以及其他数据库级权限下的操作。(5)数据加密:对于高度敏感数据,还可以采用数据加密技术。数据加密是放置数据库在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容。加密方法主要有替换方法和置换方法。第五章 数据库完整性(一)填空与名词解释1. 数据库完整性数据库的完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,也是防止数据库中存在不正确的数据。2. RDBMS完整性控制机制应具有的三个方面的功能提供定义完整性约束条件的机制;提供完整性检查的方法;违约处理。3. 触发器触发器是用户定义在关系表上的一类由事件驱动的特殊过程。由服务器自动激活;可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。(二)简答1. 数据库完整性与数据库安全性之间有什么联系与区别。区别:数据库的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。数据库的安全性是保护数据库防止恶意的破坏和非法存取。2. 同一表中执行触发器的顺序。同一个表上的多个触发器激活时遵循如下的执行顺序:(1)执行该表上的BEFORE触发器;(2)激活触发器的SQL语句;(3)执行该表上的AFTER触发器。第六章 关系数据理论1. 简述1NFà2NFà3NFàBCNFà4NF的规范化过程。P1821NF 消除非主属性对码的部分函数依赖消除决定属性 2NF集非码的非平 消除非主属性对码的传递函数依赖凡函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF 消除非平凡且非函数依赖的多值依赖 4NF