数据库原理复习资料.docx
- 文档编号:12987778
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:20
- 大小:277.49KB
数据库原理复习资料.docx
《数据库原理复习资料.docx》由会员分享,可在线阅读,更多相关《数据库原理复习资料.docx(20页珍藏版)》请在冰点文库上搜索。
数据库原理复习资料
数据库原理习题
一、核心知识点
1、数据库系统和文件系统的比较。
文件系统:
分别组织文件,存储各类对象的记录。
系统不支持文件间的联系,由应用程序负责查询表达及数据的维护。
文件系统的弱点:
文件之间无联系、难于维护数据的完整性
数据库系统(关系):
数据统一按表结构存放,联系也表示为表形式
查询:
只需提查询要求,由系统完成查询过程
维护:
应用提出完整性约束,系统自动检查。
数据库系统的用武之地:
有查询、数据复杂
2、简述数据库系统的三级模式结构。
CODASYL(ConferenceOnDataSystemLanguage,美国数据系统语言协商会)提出模式、外模式、存储模式三级模式的概念。
三级模式之间有两级映象。
外模式(Sub-Schema):
用户的数据视图。
是数据的局部逻辑结构,模式的子集。
模式(Schema):
所有用户的公共数据视图。
是数据库中全体数据的全局逻辑结构和特性的描述。
内模式(StorageSchema):
又称存储模式。
数据的物理结构及存储方式。
3、简述数据库系统三级模式结构中的两级映像,并说明其优点。
外模式/模式映象:
定义某一个外模式和模式之间的对应关系,映象定义通常包含在各外模式中。
当模式改变时,修改此映象,使外模式保持不变,从而应用程序可以保持不变,称为逻辑独立性。
模式/内模式映象:
定义数据逻辑结构与存储结构之间的对应关系。
存储结构改变时,修改此映象,使模式保持不变,从而应用程序可以保持不变,称为物理独立性。
4、简述数据模型的三要素。
数据结构:
描述系统的静态特性,即组成数据库的对象类型。
包括:
数据本身:
类型、内容、性质。
如网状模型中的数据项、记录,关系模型中的域、属性,关系等。
数据之间的联系:
例如网状模型中的系型(SetType)在数据库系统中一般按数据结构的类型来命名数据模型。
数据操作:
描述系统的动态特性,即对数据库中对象的实例允许执行的操作的集合,包括操作及操作规则。
一般有检索、更新(插入、删除、修改)操作。
数据模型要定义操作含义、操作符号、操作规则,以及实现操作的语言。
数据的约束条件:
是完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确、有效、相容。
5、简述数据据独立性的特点。
数据独立性:
当数据的结构发生变化时,通过系统提供的映象(转换)功能,使应用程序不必改变
6、简述数据库系统的组成部分。
硬件:
内存大,放得下OS,DBMS核心,系统缓冲区,用户工作区等;大容量、直接存取的外存设备;作数据备份的磁带。
软件:
OS,DBMS,高级语言编译系统及其与数据库的接口,应用开发工具,应用系统。
数据:
包括目标数据(数据本身)及描述数据(对数据的说明信息)。
用户:
最终用户:
通过应用系统的用户接口(菜单等)使用数据库。
应用程序员:
基于外模式来编写应用程序。
系统分析员:
负责应用系统的需求分析和规范定义,确定系统的软硬件配置,参与数据库模式设计。
数据库管理员DBA:
负责数据库的全面管理和控制。
DBA的重要性:
重要资源,维护整个组织的信息资源。
共享资源,多用户共享,需要统一管理、协调、监控。
7、简述DBA的主要职责。
DBA职责:
建库方面:
确定模式、外模式、存储结构、存取策略、负责数据的整理和装入。
用库方面:
定义完整性约束条件,规定数据的保密级别、用户权限,监督和控制数据库的运行情况,制定后援和恢复策略,负责故障恢复。
改进方面:
监督分析系统的性能(空间利用率,处理效率);
数据库重组织,物理上重组织,以提高性能;
数据库重构造,设计上较大改动,模式和内模式修改。
8、简述关系模型的特点。
关系模式的特点:
关系模型的概念单一;关系必须是规范化关系;
在关系模型中,用户对数据的检索操作不过是从原来的表中得到一张新的表。
即是说:
(1)在用户眼中,无论是原始数据还是结果数据都是同一种数据结构——二维表;
(2)关系模型能够中数据操作是集合操作;
(3)关系模型把存取路径向用户隐蔽起来;
优点:
简单,表的概念直观,用户易理解。
非过程化的数据请求,数据请求可以不指明路径。
数据独立性,用户只需提出“做什么”,无须说明“怎么做”。
坚实的理论基础。
9、简述关系模型的组成部分。
关系:
一个关系对应于我们平常所说的一张表;
元组:
表中的一行称为一个元组;
属性:
表中的一列称为属性,给每一列取一个名称即为属性名;
主码:
表中的某个属性组,他们的值唯一地标识一个元组;
域:
属性的取值范围;
分量:
元组中的一个属性值;
关系模式:
对关系的描述,用关系名(属性名1,属性名2,….,属性名n)来表示;
10、简述关系的性质。
(1)列是同质的
即每一列中的分量来自同一域,是同一类型的数据。
其中的每一列称为一个属性,不同的属性要给予不同的属性名。
如TEACH(T,S,C)={(t1,s1,c1),(t1,t2,c1)}是错误的
(2)不同的列可来自同一域,每列必须有不同的属性名。
如P={t1,t2,s1,s2,s3},C={c1,c2},则TEACH不能写成TEACH(P,P,C),还应写成TEACH(T,S,C)
(3)行列的顺序无关紧要
(4)任意两个元组不能完全相同(集合内不能有相同的两个元素,一般限制为任意两个元组的候选码不能相同)
(5)每一分量必须是不可再分的数据。
满足这一条件的关系称作满足第一范式(1NF)的。
这是规范条件中最基本的一条.
11、简述关系的完整性。
关系模型的完整性
是对关系的某种约束条件。
分为三类:
实体完整性
参照完整性
用户定义的完整性
其中:
(1)实体完整性和参照完整性是关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持;
(2)用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
12、简述自然连接和等值连接的区别。
自然连接(Naturaljoin)
从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的属性列。
自然连接与等值连接的不同
自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。
13、简述视图和关系的区别。
视图
从一个或几个基本表导出的表
数据库中只存放视图的定义而不存放视图对应的数据
视图是一个虚表
用户可以在视图上再定义视图
关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
14、简述内连接和外连接的区别。
对于外连接,连接条件是必须的;
对于内连接,连接条件是可选的,没有连接条件等价于两个关系的笛卡儿积。
15、简述在SQL语言中实现子查询的方法和各自的特点。
不相关子查询:
子查询的查询条件不依赖于父查询
由里向外逐层处理。
即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。
相关子查询:
子查询的查询条件依赖于父查询
首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表
然后再取外层表的下一个元组
重复这一过程,直至外层表全部检查完为止
16、简述嵌入式SQL语言需要解决的问题。
区分SQL语句与C语言语句
嵌入的SQL语句以EXECSQL开始,以分号(;)或END_EXEX结束。
EXECSQLdeletefromPROF
whereDNO=10;
嵌入SQL语句与C语言之间的数据传递
宿主变量
C变量,既可以用在C语句中,也可用在SQL语句中,用来在两者之间传递数据。
宿主变量的声明:
声明为通常的C变量,并将其放在下列标识语句之间,
EXECSQLBEGINDECLARESECTION
EXECSQLENDDECLARESECTION
指示变量
C变量,用来指示返回给宿主变量的值是否为null值,以及返回给宿主变量的字符串是否发生了截断。
应用场合:
如果一个宿主变量所对应的数据库字段允许空值,或字符串类型的宿主变量的长度可能小于所对应的数据库字段的长度,则需要一个指示变量来指明数据库访问的返回状态。
指示变量的返回值:
=0:
取到主变量的值不空,没有发生截断。
=-1:
取到主变量的值为空值。
>0:
取到主变量的值发生了截断,指示变量的值是截断前的字符串的实际长度。
指示变量的用法:
声明与宿主变量的声明方式一样,在数据操纵语句中,在宿主变量和指示变量之间加(:
)或关键字indicator。
EXECSQLBEGINDECLARESECTION
intprof_no;
charprof_name[30];
intsalary;
shortname_id;
shortsal_id;
EXECSQLENDDECLARESECTION
EXECSQLselectPNAME,SAL
into:
prof_name:
name_id,:
salary:
sal_id
fromPROF
wherePNO=prof_no;
SQL与主语言之间操作方式的协调
SQL:
一次一集合。
C语言:
一次一记录。
游标:
在查询结果的记录集合中移动的指针。
若一个SQL语句返回单个元组,则不用游标。
若一个SQL语句返回多个元组,则使用游标。
不需要游标的数据操作
结果是一个元组的
select语句
EXECSQLselectPNAME,SAL
into:
prof_name:
name_id,:
salary:
sal_id
fromPROF
wherePNO=prof_no;
insert语句
EXECSQLinsertintoPROF
values(:
prof_no,:
prof_name,:
salary,:
dept_no,:
salary);
delete语句
EXECSQLdeletefromPROF
valuesPNO>:
prof_no;
update语句
EXECSQLupdatePROF
setSAL=:
salary
wherePNO=:
prof_no;
需要游标的数据操作
✧当select语句的结果中包含多个元组时,使用游标可以逐个存取这些元组。
✧活动集:
selecT语句返回的元组的集合。
✧当前行:
活动集中当前处理的那一行。
游标即是指向当前行的指针。
游标分类:
滚动游标:
游标的位置可以来回移动,可在活动集中取任意元组。
非滚动游标:
只能在活动集中顺序地取下一个元组。
更新游标:
数据库对游标指向的当前行加锁,当程序读下一行数据时,本行数据解锁,下一行数据加锁。
SQL语句执行信息反馈
良好的应用程序必须提供对错误的处理,应用程序需要知道SQL语句是否正确执行了,发生错误时的错误代码,执行时遇到特殊情况时的警告信息。
SQL通讯域SQLCA是一结构,每一嵌入SQL语句的执行情况在其执行完成后写入USERCA结构中的各变量中,根据SQLCA中的内容可以获得每一嵌入SQL语句执行后的信息,应用程序就可以做相应的处理。
为了说明(USERCA),必须在应用程序中包括:
EXECSQLINCLUDESQLCA;
17、简述使用游标的四个步骤。
定义与使用游标的语句
declare:
定义一个游标,使之对应一个select语句。
declare游标名[scroll]cursorforselect语句
[forupdate[of列表名]]
forupdate任选项,表示该游标可用于对当前行的修改与删除。
open:
打开一个游标,执行游标对应的查询,结果集合为该游标的活动集。
open游标名
fetch:
在活动集中将游标移到特定的行,并取出该行数据放到相应的宿主变量中。
fetch[next|prior|first|last|current|relativen|absolutem]游标名into[宿主变量表]
close:
关闭游标,释放活动集及其所占资源。
需要再使用该游标时,执行open语句。
close游标名
free:
删除游标,以后便不能再对该游标执行open语句了
free游标名
18、简述游标的特点。
游标允许应用程序对查询语句select返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力
19、简述关系数据库设计中存在的问题。
插入异常:
如果没有职工具有8级工资,则8级工资的工资数额就难以插入。
删除异常:
如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。
数据冗余:
职工很多,工资级别有限,每一级别的工资数额反复存储多次。
更新异常:
如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。
20、函数依赖的概念;
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意两个可能的关系r1、r2,若r1[x]=r2[x],则r1[y]=r2[y],或者若r1[x]不等于r2[x],则r1[y]不等于r2[y],称X决定Y,或者Y依赖X。
上面一段话是某些教材上的话,比较不好理解。
比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖,函数依赖又分为非平凡依赖,平凡依赖;从性质上还可以分为完全函数依赖、部分函数依赖和传递函数依赖。
Y=f(x)
1.数据依赖
在计算机科学中,数据依赖是指一种状态,当程序结构导致数据引用之前处理过的数据时的状态。
其中最重要的是函数依赖和多值依赖。
2.函数依赖
设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
3.平凡函数依赖
当关系中属性集合Y是属性集合X的子集时(Y?
X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
4.非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
5.完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!
→Y,则称Y完全函数依赖于X。
6.部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
7.传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y!
→X),Y→Z,则称Z传递函数依赖于X。
21、简述1NF,2NF,3NF,BCNF解决的模式设计中的问题。
1NF:
关系中每一分量不可再分。
即不能以集合、序列等作为属性值。
解决:
分量是否需要再分,与具体应用有关。
如果用到值的一部分,则需要进一步分割。
2NF:
若R属于1NF,且每个非主属性完全依赖于码,则称R属于2NF(消除非主属性对码的部分依赖)。
如S不属于2NF,因为(S#,C#)SN,
(S#,C#)SD
解决:
非主属性有两种,一种完全依赖于码,一种部分依赖于码。
将S分解为:
SC(S#,C#,G)
S_SD(S#,SN,SD,DEAN)
3NF:
关系模式R中,若不存在这样的码X,属性组Y及非主属性Z(ZY),使得下式成立,
X®Y,Y®Z,Y®X
则称R属于3NF(消除非主属性对码的传递依赖)。
如S_SD不属于3NF,因为有S#®SD,SD®DEAN
解决:
将S分解为:
STUDENT(S#,SN,SD)
DEPT(SD,DEAN)
BCNF:
关系模式R中,对于属性组X,Y,若X®Y且YX时X必含有码,则RÎBCNF。
如SPC不属于BCNF,因为P#®C#,而T不含有码。
解决:
将S分解为(S#,P#),(P#,C#)。
22、简述E-R模型之间的冲突类型及相应的解决方法。
由于各类应用不同,不同的应用通常又由不同的设计人员进行概念结构的设计,因此分E-R图之间不可避难会有很多不一致,我们称之为冲突
冲突的类型有:
1、属性冲突,包含:
✧属性域冲突,即属性值的类型、取值范围或取值集合不同。
如年龄,有的用出生年月表示,有的用整数表示,这类冲突比较号解决,需要各部门的协商就可以解决;
✧属性取值单位冲突,如重量,有的使用斤、有的使用公斤、而有的使用克;
3、命名冲突,包括属性名、实体名、联系名之间的:
✧同名异义,即不同意义的对象具有相同的名字;
✧异名同义,即同一意义的对象具有不同的名字。
属性冲突和命名冲突通常用讨论、协商等行政手段解决。
2、结构冲突
✧同一对象在不同的应用中的不同抽象,如职工,在某一应用中为实体,有的应用中为属性;
✧同一实体在不同的分E-R图中属性组成不同,包括属性个数、次序等;
✧实体之间的联系在不同分E-R图中呈现不同的类型。
如E1,E2在某一应用中是多对多联系,在另一应用中是一对多的联系等;
结构冲突就需要认真分析后用技术的手段解决。
解决的办法如:
1)把属性变换为实体或实体变换为属性,使同一对象具有相同的抽象,当然变换时要遵循两个准则;
2)同一实体的属性构成通常取分E-R图中属性的并,再适当调整;
3)实体联系的类型则根据应用的语义加以综合或调整。
23、简述E-R模型向关系模型转换的基本规则。
E-R图向数据模型的转换
这里以向关系模型转换为讨论重点。
转换规则:
1、一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码;
2、一个联系转换为一个关系模式,与该联系相连的各实体的码以及联系的属性转换为关系的属性,该关系的码则有三种情况:
若联系为1:
1,则每个实体的码军委该关系的候选码;
若联系为1:
n,关系的码为n端实体的码;
若联系为n:
m,则关系的码为诸实体码的组合。
24、简述数据库保护中安全性控制的一般方法。
概念:
安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。
数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。
其基本措施是存取控制。
25、简述事务的概念及特点。
事务定义
事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
示例
银行转帐:
事务T从A帐户过户50¥到B帐户。
T:
read(A);
A:
=A–50;
write(A);
read(B);
B:
=B+50;
write(B);
read(X):
从数据库传送数据项X到事务的工作区中。
write(X):
从事务的工作区中将数据项X写回数据库。
事务特性(ACID)
原子性(Atomicity)
事务中包含的所有操作要么全做,要么全不做。
原子性由恢复机制实现。
✧一致性(Consistency)
事务的隔离执行必须保证数据库的一致性。
事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。
数据库的一致性状态由用户来负责。
如银行转帐,转帐前后两个帐户金额之和应保持不变(意大利香肠)。
✧隔离性(Isolation)
系统必须保证事务不受其它并发执行事务的影响。
对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。
隔离性通过并发控制机制实现。
✧持久性(Durability)
一个事务一旦提交之后,它对数据库的影响必须是永久的。
系统发生故障不能改变事务的持久性。
持久性通过恢复机制实现。
26、简述事务的并发操作带来的数据不一致性的类型。
1)丢失(覆盖)修改
丢失修改是指当两个或多个事务选择同一数据,并且基于最初选定的值更新该数据时,会发生丢失更新问题。
每个事务都不知道其它事务的存在。
最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
即事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。
2)不可重复读
不可重复读是指一个事务重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务修改过。
即事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。
3)读“脏”数据
读“脏”数据时指一个事务读取了另一个未提交的并行事务写的数据。
即事务1修改某一数据,并将其写回磁盘,事务2读取同一数据后,事务1由于某种原因被撤销,这时事务1已修改过的数据恢复原值,事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称“脏”数据。
27、简述封锁的类型及含义。
封锁的定义
封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用。
并发控制的基本方法就是封锁。
封锁的类型
排它锁(X锁,eXclusivelock):
事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。
共享锁(S锁,Sharelock):
事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功。
28、封锁粒度的概念。
封锁粒度
封锁对象:
属性值、属性值几何、元组、关系、某索引项、整个索引、整个数据库、物理页、块。
封锁粒度大,则并发度低,封锁机构简单,开销小。
封锁粒度小,则并发度高,封锁机构复杂,开销高。
理想的情况是只封锁与规定的操作有关的的数据对象,这些数据对象称作事务的完整性相关域。
29、简述封锁协议类型及含义。
封锁协议
保持到事务结束时才释放的锁称作长锁。
在事务中途就可以释放的锁称作短锁。
0级封锁协议
1级封锁协议
2级封锁协议
3级封锁协议
30、简述恢复的策略。
当系统运行过程中发生故障,利用数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
不同故障其恢复策略和方法也不一样。
1.事务故障的恢复
事务故障是指事务在运行至正常终止点前被终止,这时恢复子系统应利用日志文件撤销(undo)此事务已对数据库进行的修改。
事务故障的恢复是由系统自动完成的,对用户是透明的。
2.系统故障的恢复
系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。
因此恢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 复习资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)