2022年《数据库系统概论》复习 .pdf
第 1 章绪论1.数据、数据库、数据库系统、数据库管理系统的概念。答: ( l ) 数据:描述事物的符号记录称为数据。(2)数据库:数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存, 具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。(3)数据库系统: 数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。数据库系统包含数据库管理系统。(4)数据库管理系统:数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。2.数据库系统的特点:(1)数据结构化(2)数据的共享性高,冗余度低,易扩充(3)数据独立性高数据独立性包括数据的物理独立性和数据的逻辑独立性。(4)数据由DBMS 统一管理和控制。3.数据模型是数据库管理系统的核心和基本。4.概念模型和关系模型自行查看。5.数据库系统结构不是唯一的。6.数据库系统的三级模式结构:数据库系统的三级模式结构由外模式、模式和内模式组成。外模式: 亦称子模式或用户模式,是数据库用户 (包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。模式: 亦称逻辑模式, 是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。内模式: 亦称存储模式, 是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。7. 数据库系统的组成数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。第二章1.关系-P43 定义自行查看,主要的是关系可以有三种类型:基本关系、查询表和视图表。2.关系的完整性实体完整性、参照完整性和用户自定义完整性。3.关系代数涉及内容较多,请自行查看。 主要是专门关系运算。-P42 第七章1.数据库设计:对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的需求,包括信息管理要求和数据操作要求。2. 数据库设计过程各个阶段上的设计描述。(1)需求分析:准确了解与分析用户需求(包括数据与处理)。(2)概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。(3)逻辑结构设计:将概念结构转换为某个DBMS 所支持的数据模型,并对其进行优化。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - (4)数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法) 。(4)数据库实施:设计人员运用DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。(5)数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。3. 什么是数据库的概念结构?试述其特点和设计策略。答:概念结构是信息世界的结构,即概念模型,其主要特点是:( l )能真实、充分地反映现实世界, 包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;( 2 )易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;( 3 )易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;( 4 )易于向关系、网状、层次等各种数据模型转换。概念结构的设计策略通常有四种:l )自顶向下, 即首先定义全局概念结构的框架,然后逐步细化;2 )自底向上, 即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构;3 )逐步扩张,首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;4 )混合策略,即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。4. 什么是数据库的逻辑结构设计?试述其设计步骤。答:数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E 一R 图转换为与选用的DBMS 产品所支持的数据模型相符合的逻辑结构。设计步骤为: ( l )将概念结构转换为一般的关系、网状、 层次模型;( 2 )将转换来的关系、网状、 层次模型向特定DBMS 支持下的数据模型转换;( 3 )对数据模型进行优化。5. 试述数据库概念结构设计的重要性和设计步骤。答:重要性: 数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、 更准确地用某一 DBMS 实现这些需求。设计步骤:概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第1 步是抽象数据并设计局部视图,第 2 步是集成局部视图,得到全局的概念结构。6.SQL 的特点:综合统一;高度非过程化;面向集合的操作方式;以同一种语法结构提供多种使用方式;语言简洁,易学易用。第十章1试述事务的概念及事务的4 个特性。答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有4 个特性:原子性、一致性、隔离性和持续性。原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性: 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。持续性:持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。恢复技术是能保证原子性、一致性持续性。并发控制机制能保证隔离性。2.数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 答: (1)事务内部的故障; (2)系统故障; (3)介质故障; (4)计算机病毒。事务故障、 系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。3. 数据库恢复的基本技术有哪些?答:数据转储和登录日志文件是数据库恢复的基本技术。当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。第 11 章并发控制1. 发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、 不可重复读和读 “脏夕数据。 ( l )丢失修改( lost update ) 两个事务Tl 和 T2 读入同一数据并修改,T2 提交的结果破坏了(覆盖了)Tl 提交的结果, 导致 Tl 的修改被丢失。( 2 ) 不可重复读 (Non 一 Repeatable Read ) 不可重复读是指事务Tl 读取数据后, 事务几执行更新操作, 使 Tl 无法再现前一次读取结果。( 3 )读“脏”数据(Dirty Read ) 读“脏夕数据是指事务Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏” 数据, 即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。2.什么是封锁?基本的封锁类型有几种?试述它们的含义。答:封锁就是事务T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T 就对该数据对象有了一定的控制,在事务T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。基本的封锁类型有两种:排它锁 ( Exclusive Locks ,简称x 锁)和共享锁( Share Locks,简称S 锁) 。排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A ,其他任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。这就保证了其他事务在T 释放A 上的锁之前不能再读取和修改A 。共享锁又称为读锁。若事务 T 对数据对象A 加上S 锁,则事务T 可以读A 但不能修改A ,其他事务只能再对A 加 S 锁, 而不能加X 锁, 直到T 释放A 上的S 锁。 这就保证了其他事务可以读A ,但在T 释放A 上的S 锁之前不能对A 做任何修改。3. 活锁的产生原因和解决方法:活锁产生的原因: 当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。 避免活锁的简单方法是采用先来先服务的策略。 当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。4. 什么是活锁?什么是死锁?:如果事务Tl 封锁了数据R ,事务几又请求封锁R ,于是几等待。几也请求封锁R ,当 Tl 释放了R 上的封锁之后系统首先批准了几的请求,几仍然等待。然后几又请求封锁R ,当几释放了R 上的封锁之后系统又批准了几的请求,几有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。如果事务Tl 封锁了数据Rl,几封锁了数据凡,然后Tl 又请求封锁几,因几已封锁了几,于是Tl 等待几释放几上的锁。接着几又申请封锁Rl,因 Tl 已封锁了 Rl,几也只能等待Tl 释放 Rl 上的锁。 这样就出现了Tl 在等待几, 而几又在等待T 的局面,T 和几两个事务永远不能结束,形成死锁。5.可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务执行时的结果相同,称这种调度策略为可串行化的调度。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 附:第二章习题5 解答E R图如下:关系模型:S表( SNO,SNAME ,STA TUS,CITY )候选码: SNO P 表( PNO,PNAME,COLOR,WEGHT)候选码: PNO J 表( JNO,JNAME,CITY )候选码: JNO SPJ表( SNO,PNO,JNO,QTY )候选码: (SNO,PNO,JNO) 外码: SNO,PNO,JNO 关系代数:Sno(Sno=J1(SPJ)) Sno(Sno=J1 Pno=P1(SPJ)Sno(Pno=P1(COLOR= 红( P)SPJ))Jno(SPJ)- JNO (city= 天津 Color= 红( S SPJP )Jno,Pno(SPJ) Pno(Sno=S1(SPJ)SQL 语言如下:create database SPJ on primary ( name = SPJ_data, filename = D:SPJ_data.mdf, size = 1, maxsize = 20, filegrowth = 10% ) log on (name = SPJdb_log, filename = D:SPJdb_log.ldf, size = 1MB, maxsize = 25MB, filegrowth = 10%) go use SPJ S SPJ P J SNO SNAME STATUS CITY JNO JNA,ME CITY SNO PNO JNO QTY PNO PNAME COLOR WEIGHT 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - go create table S表( SNO char (8) primary key ,SNAME char(8), STATUS int, CITY char(8) insert into S 表 values(S1,精益 ,20,天津 ) insert into S 表 values(S2,盛锡 ,10,北京 ) insert into S 表 values(S3,东方红 ,20,北京 ) insert into S 表 values(S4,丰泰盛 ,20,天津 ) insert into S 表 values(S5,为民 ,20,上海 ) create table P表( PNO char(8) primary key, PNAME char (8), COLOR char(8), WEIGHT int) insert into P 表 values(P1,螺母 ,红, 12) insert into P 表 values(P2,螺栓 ,绿, 17) insert into P 表 values(P3,螺丝刀 ,蓝, 14) insert into P 表 values(P4,螺丝刀 ,红, 14) insert into P 表 values(P5,凸轮 ,蓝, 40) insert into P 表 values(P6,齿轮 ,红, 30) create table J表(JNO char(8) primary key, JNAME char(8),CITY char(8) insert into J 表 values(J1, 三建 ,北京 ) insert into J 表 values(J2, 一汽 ,长春 ) insert into J 表 values(J3, 弹簧厂 ,天津 ) insert into J 表 values(J4, 造船厂 ,天津 ) insert into J 表 values(J5, 机车厂 ,唐山 ) insert into J 表 values(J6, 无线电厂 ,常州 ) insert into J 表 values(J7, 半导体厂 ,南京 ) create table SPJ表(SNO char(8) not null,PNO char(8) not null,JNO char(8) not null,QTYint, primary key(SNO,PNO,JNO),foreign key(SNO) references S 表 (SNO),foreign key(PNO) references P 表(PNO),foreign key(JNO) references J 表(JNO) insert into SPJ 表 values(S1,P1,J1,200) insert into SPJ 表values(S1,P1,J3,100) insert into SPJ 表 values(S1,P1,J4,700) insert into SPJ 表values(S1,P2,J2,100) insert into SPJ 表values(S2,P3,J1,400) insert into SPJ 表values(S2,P3,J2,200) insert into SPJ 表values(S2,P3,J4,500) insert into SPJ 表values(S2,P3,J5,400) insert into SPJ 表values(S2,P5,J1,400) insert into SPJ 表values(S2,P5,J2,100) insert into SPJ 表values(S3,P1,J1,200) insert into SPJ 表values(S3,P3,J1,200) insert into SPJ 表values(S4,P5,J1,100) insert into SPJ 表values(S4,P6,J3,300) insert into SPJ 表values(S4,P6,J4,200) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - insert into SPJ 表values(S5,P2,J4,100) insert into SPJ 表values(S5,P3,J1,200) insert into SPJ 表values(S5,P6,J2,200) insert into SPJ 表values(S5,P6,J4,500) select * from SPJ 表select * from P 表select * from S 表select * from J 表查询结果如下:习题:(1)select SNO from SPJ 表 where JNO=J1 (2)select SNO from SPJ 表 where JNO=J1 and PNO=P1 (1)(2)(3)(3)(3 种查询方法 ):select SNO from SPJ 表 ,P 表 where JNO=J1 and COLOR= 红and SPJ表.PNO=P 表.PNO (4)select distinct J 表.JNO from J 表,P 表,SPJ表where not CITY = 天津 and not exists (select * from SPJ 表 where J表.JNO=SPJ 表.JNO and P表.pno=SPJ 表.PNO and COLOR= 红) (4)(5)(5) select distinct JNO from SPJ表 spjx where not exists (select * from SPJ 表 spjy where SNO=s1 and not exists (select * from SPJ表 spjz where spjz.JNO=spjx.JNO and spjz.PNO=spjy.PNO) 第三章内容涉及较多,请自行查看。附:习题强化SQL 语言( l )求供应工程Jl 零件的供应商号码SNO ; SELECT DIST SNO FROM SPJ WHERE JNO= J1( 2 )求供应工程Jl 零件Pl 的供应商号码SNO ; SELECT DIST SNO FROM SPJ WHERE JNO= J1 AND PNO=P1 ( 3 )求供应工程Jl 零件为红色的供应商号码SNO ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - SELECT SNO FROM SPJ,P WHERE JNO=J1 AND SPJ.PNO=P.PNO AND COLOR=红( 4 )求没有使用天津供应商生产的红色零件的工程号JNO ; SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE S.CITY=天津 AND COLOR= 红 AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO) 。( 5 )求至少用了供应商Sl 所供应的全部零件的工程号JNO ; 由于 VFP 不允许子查询嵌套太深,将查询分为两步A、查询 S1供应商供应的零件号SELECT DIST PNO FROM SPJ WHERE SNO=S1 结果是( P1,P2)B、查询哪一个工程既使用P1 零件又使用P2 零件。SELECT JNO FROM SPJ WHERE PNO=P1 AND JNO IN (SELECT JNO FROM SPJ WHERE PNO=P2) 5针对习题3 中的四个表试用SQL 语言完成以下各项操作:(1)找出所有供应商的姓名和所在城市。SELECT SNAME,CITY FROM S (2)找出所有零件的名称、颜色、重量。SELECT PNAME,COLOR,WEIGHT FROM P (3)找出使用供应商S1所供应零件的工程号码。SELECT DIST JNO FROM SPJ WHERE SNO=S1 (4)找出工程项目J2 使用的各种零件的名称及其数量。SELECT PNAME,QTY FROM SPJ,P WHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2 (5)找出上海厂商供应的所有零件号码。SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY=上海 (6)出使用上海产的零件的工程名称。SELECT JNAME FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND S.CITY= 上海 AND J.JNO=SPJ.JNO (7)找出没有使用天津产的零件的工程号码。注意 : SELECT DISP JNO FROM SPJ WHERE JNO NOT IN (SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY= 天津 ) 适用于 JNO 是唯一或不唯一的情况. 注意 : SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY天津 适用于 JNO 是唯一的情况(8)把全部红色零件的颜色改成蓝色。UPDATE P SET COLOR= 蓝 WHERE COLOR= 红 (9)由 S5供给 J4的零件 P6 改为由 S3供应。UPDATE SPJ SET SNO=S3 WHERE SNO=S5 AND JNO=J4 AND PNO=P6 (10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。A、DELETE FROM S WHERE SNO= S2B、DELETE FROM SPJ WHERE SNO=S2(11)请将 (S2,J6,P4,200)插入供应情况关系。INSERT INTO SPJ VALUES ( S2 , J6 , P4 ,200)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -