数据库原理总复习提纲.docx
《数据库原理总复习提纲.docx》由会员分享,可在线阅读,更多相关《数据库原理总复习提纲.docx(29页珍藏版)》请在冰豆网上搜索。
数据库原理总复习提纲
数据库复习提纲
考试题目类型
1、单选题(30%)
2、判断题(10%)
3、简答题(20%)
4、查询分析题(24%)
5、综合题(16%)
第1章数据库概述
1.1四个基本概念的掌握:
数据——描述事物的符号记录
数据库——长期存储在计算机内的有组织,可共享的数据集合。
DBMS——位于用户与操作系统之间的一层数据管理软件。
数据库系统——数据库、DBMS、应用程序等有关软件、硬件及各类人员(数据库管理员和用户)。
例如:
学生个人信息管理系统。
数据库系统的核心是数据库管理系统。
1.2数据管理的三个阶段
1.2.1人工管理阶段:
数据不保存;
应用程序自己控制管理数据,程序员负担重;
不独立,完全依赖于程序;
无共享、冗余度极大
1.2.2文件系统阶段:
数据可长期保存;
由文件系统管理数据;
共享性差、冗余度大;
数据的独立性:
独立性差,数据的逻辑结构改变必须修改应用程序;
数据控制能力:
应用程序自己控制
1.2.3数据库系统阶段:
数据结构化,采用数据模型表示复杂的数据结构;
有较高的数据独立性;
共享性高、冗余度小、易扩充;数据由DBMS统一管理和控制
1.3数据库系统的特点
数据整体结构化;
数据冗余度低,共享性高,易扩充;
数据的物理独立性与逻辑独立性强(物理、逻辑独立性的概念,体现在那些地方P4);
由DBMS统一管理控制
1.4数据库管理系统的功能:
1.数据定义功能(DDL)
2.数据操纵功能(DML)
3.数据库的运行管理(并发性、安全性、完整性)
4.数据库的建立与维护功能
5.数据的组织、存储和管理
6.数据通信功能
1.5模式,外模式,内模式的定义。
1.5.1模式(也称逻辑模式),是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,综合了所有用户的需求。
1.5.2外模式(子模式或用户模式)是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述。
是与某一应用有关的数据的逻辑表示。
1.5.3内模式(也称存储模式)是数据物理结构和存储方式的描述;是数据在数据库内部的表示方式
1.6数据库系统三级模式结构及特点?
如何实现数据独立性的(两级映像功能)?
P8
数据库系统的三级模式结构由外模式、模式和内模式组成。
外模式,亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式。
模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式描述的是数据的全局逻辑结构。
外模式涉及的是数据的局部逻辑结构,通常是模式的子集。
一个数据库只有一个模式
内模式,亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。
一个数据库只有一个内模式
数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。
数据库系统在这三级模式之间提供了两层映像:
外模式/模式映像和模式/内模式映像,这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
1.7数据模型的三个要素——数据结构、数据操作、数据的完整性约束?
1.8常用的数据模型的分类及特点。
P14
1.8.1层次模型的特点:
结点的双亲是唯一的
只能直接处理一对多的实体联系
任何记录值只有按其路径查看时,才能显出它的全部意义
没有一个子女记录值能够脱离双亲记录值而独立存在
1.8.2网状数据模型特点:
多根:
允许一个以上的结点无双亲
多父:
一个结点可以有多于一个的双亲
多联系:
允许两个结点间有多种联系(复合联系)
1.8.3关系数据模型的特点:
实体及实体间的联系都用表来表示
表以文件形式存储
1.8.4面向对象数据模型的特点:
有的DBMS一个表对应一个操作系统文件
有的DBMS自己设计文件结构
1.9实体联系方法(即E-R图方法)怎样来描述现实世界的?
实体集之间和实体内部的联系有哪几种形式?
P12-13
E-R图所描述的现实世界的信息结构称为实体-联系模型(E-R模型)。
实体用矩形框表示,属性用椭圆形框表示,联系用菱形框表示,实体与属性与联系之间用无向直线连接。
实体集之间和实体内部的联系:
一对一;一对多;多对多;
1.20信息世界的概念
实体:
通常是客观存在并且可以互相区分的事物。
属性:
是描述对象的某个特性。
码:
可以唯一识别实体的属性的码。
域:
属性的取值范围
实体集:
是具有相同实体属性的集合。
实体型:
是对实体集的抽象描述,用实体名和其集合来抽象和刻画同类实体。
联系:
是实体间的相互关系。
他反映了客观事物间相互依存的状态
书上习题回顾——p.191.6.2和1.6.3(1、2题)
1.6.3.1.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。
请用E一R图画出此学校的概念模型。
答:
1.6.3.2.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。
这些零件由不同的原材料制成,不同零件所用的材料可以相同。
这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。
请用E一R图画出此工厂产品、零件、材料、仓库的概念模型。
答:
第2章关系数据库
2.1、基本术语的解释P21-23
域(Domain):
一组具有相同数据类型的值的集合,也称为值域,用D表示。
笛卡尔积(CartesianProduct):
给定一组域D1,D2,...Dn(域可相同),它们的笛卡儿积为:
D1xD2x...xDn={(d1,d2,...,dn)|di∈Di,i=1,2,..,n}
关系:
是笛卡尔集的子集D1xD2x...xDn的子集称作在域D1,D2…….Dn上的关系,用R(D1,D2…….Dn)表示,R为关系名,n是关系的目或度。
属性(Attribute)
⏹关系中不同列可以对应相同的域
⏹为了加以区分,必须对每列起一个名字,称为属性名
⏹n目关系必有n个属性
候选码(Candidatekey)
⏹若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
⏹最简单的情况:
候选码只包含一个属性
主码(Primarykey):
若一个关系有多个候选码,则选定其中一个为主码。
外码:
某个关系的主码相应的属性在另一关系中出现,此时该主码在就是另一关系的外码,如有两个关系S和SC,其中S#是关系S的主码,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外码。
主属性(Primeattribute):
候选码的诸属性称为主属性。
2.2、关系模式的优点及其特点。
P24
2.2.1关系模型的优点:
1.结构简单,具有高度的简明性和高度性
2.可直接处理多对多关系
3.一次处理一个元组集合
4.数据独立性很高
5.坚实的数学理论基础
2.2.2特点:
对关系的描述;静态的、稳定的
2.3、关系的三类完整性约束p27
2.3.1实体完整性——规定关系中的所有主属性不能为空,而不仅是整体不能为空NULL的含义(不知道或者无意义的值)。
2.3.2参照完整性——外码、参照关系、被参照关系外码取值规则:
要么为空,要么等于对应参照关系的某个主码值。
2.3.3用户定义完整性——反映某一具体应用所涉及的数据必须满足的语义要求。
2.4、5种基本关系操作(并、差、笛卡儿积、选择、投影)p30
2.5、关系代数的各种运算理解应用。
(要会运算)
2.6、关系代数的结果表示。
第三章SQL
3.1、SQL是怎样的语言?
SQL有何特点?
P41-42
vSQL(StructuredQueryLanguage),即结构化查询语言,是关系数据库的标准语言,是一个通用的、功能极强的关系数据库语言;其功能并不仅仅是查询;主要用来对存放在计算机中的数据库进行组织、管理和检索。
特点:
综合统一;高度非过程化;面向集体的操作方式;以同一种语法结构提供两种操作方式;语言简洁,易学易用
3.2、基本表和视图的区别
表是由行和列构成的集合,用来存储数据,表是最重要的数据库对象。
视图由表或其他视图导出的虚拟表。
3.3、简单查询:
选择条件、排序输出、聚集运算以及分组处理。
3.4、连接查询:
多表连接
3.5、嵌套查询:
产生单值的子查询;涉及到关系的选择条件;涉及到元组的选择条件;相关子查询。
3.6、SQL的数据定义功能:
基本表的定义与、索引的定义与删除、建立和撤消索引。
3.7、SQL的数据更新功能:
数据的插入、修改、删除。
3.8、视图:
定义、查询、更新、撤消。
3.9、视图的作用(优点):
简单性;安全性;逻辑数据独立性
3.10基本表的定义、删除与修改
定义基本表
CREATETABLE<表名>
(<列名><数据类型>[<列级完整性约束条件>]
[,<列名><数据类型>[<列级完整性约束条件>]]…
[,<表级完整性约束条件>]);
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
[例]建立一个“学生选课”表SC
CREATETABLESC
(SnoCHAR(9),
CnoCHAR(4),
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),
/*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
/*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
/*表级完整性约束条件,Cno是外码,被参照表是Course*/
);
删除基本表
[例]删除Student表
DROPTABLEStudentCASCADE;
基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除
建立索引
CREATE[UNIQUE][CLUSTERED]INDEX<索引名>
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
建立索引(续)
[例]为学生-课程数据库中的Student,Course,SC三个表建立索引。
CREATEUNIQUEINDEXStusnoONStudent(Sno);
CREATEUNIQUEINDEXCoucnoONCourse(Cno);
CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
Student表按学号升序建唯一索引
Course表按课程号升序建唯一索引
SC表按学号升序和课程号降序建唯一索引
删除索引
DROPINDEX<索引名>;
删除索引时,系统会从数据字典中删去有关该索引的描述。
[例]删除Student表的Stusname索引
DROPINDEXStudent.Stusname;
3.11数据查询:
Select子句
使用列别名改变查询结果的列标题:
SELECTSnameNAME,'YearofBirth:
’BIRTH,
2008-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT
FROMStudent;
输出结果:
NAMEBIRTHBIRTHDAYDEPARTMENT
------------------------------------------------------
李勇YearofBirth:
1984cs
刘晨YearofBirth:
1985is
王敏YearofBirth:
1986ma
张立YearofBirth:
1985is
消除取值重复的行
指定DISTINCT关键词,去掉表中重复的行SELECTDISTINCTSnoFROMSC;
字符匹配
[例]查询所有姓刘学生的姓名、学号和性别。
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameLIKE‘刘%’;
[例]查询姓"欧阳"且全名为三个汉字的学生的姓名。
SELECTSname
FROMStudent
WHERESnameLIKE'欧阳_';
确定集合
谓词:
IN<值表>,NOTIN<值表>
[例]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECTSname,Ssex
FROMStudent
WHERESdeptIN('IS','MA','CS');
[例]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
SELECTSname,SsexFROMStudentWHERESdeptNOTIN('IS','MA','CS');
涉及空值的查询
谓词:
ISNULL或ISNOTNULL
“IS”不能用“=”代替
[例]某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
SELECTSno,CnoFROMSCWHEREGradeISNULL
ORDERBY子句
[例]查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
SELECT*FROMStudentORDERBYSdept,SageDESC;
聚集函数
计数
COUNT([DISTINCT|ALL]*)
COUNT([DISTINCT|ALL]<列名>)
计算总和
SUM([DISTINCT|ALL]<列名>)
计算平均值
AVG([DISTINCT|ALL]<列名>)
最大最小值
MAX([DISTINCT|ALL]<列名>)
MIN([DISTINCT|ALL]<列名>)
GROUPBY子句
细化聚集函数的作用对象
未对查询结果分组,聚集函数将作用于整个查询结果
对查询结果分组后,聚集函数将分别作用于每个组
作用对象是查询的中间结果表
按指定的一列或多列值分组,值相等的为一组
SC(S#,C#,SCORE)
列出每个学生的平均成绩
SELECTs#,AVG(score)FROMSCGROUPBYs#
Having子句
可以针对聚集函数的结果值进行筛选,它是作用于分组计算的结果集,跟在GroupBy子句的后面
例:
查询选修了3门以上课程的学生学号。
selectsnofromscgroupbysnohavingcount(*)>3
复合条件连接:
WHERE子句中含多个连接条件
[例]查询选修2号课程且成绩在90分以上的所有学生
SELECTStudent.Sno,SnameFROMStudent,SC
WHEREStudent.Sno=SC.SnoAND/*连接谓词*/
SC.Cno=‘2’ANDSC.Grade>90;/*其他限定条件*/
带有ANY(SOME)或ALL谓词的子查询
[例]查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄
SELECTSname,SageFROMStudent
WHERESageWHERESdept='CS')
ANDSdept<>‘CS';
插入元组
INSERT
INTO<表名>[(<属性列1>[,<属性列2>…)]
VALUES(<常量1>[,<常量2>]…)
修改数据
UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>]…
[WHERE<条件>];
删除数据
DELETE
FROM<表名>
[WHERE<条件>];
建立视图
CREATEVIEW
<视图名>[(<列名>[,<列名>]…)]
AS<子查询>
[WITHCHECKOPTION];
第4章关系数据理论
4.1、一个关系模式可能存在的问题有哪些?
p71
1数据冗余;2更新异常;3插入异常;4删除异常;
4.2、函数依赖:
p74
函数依赖、平凡函数依赖与非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义理解和应用(即能区分不同的函数依赖)
根据文字描述,判断关系的函数依赖,由函数依赖再来判断是否存在部分、传递依赖,会分析判断不好的依赖带来的操作麻烦和异常。
4.3、范式:
4.5、1NF、2NF、3NF、BCNF的定义和判别p77-79
4.5.1第一范式(1NF)
当且仅当一个关系R中,每一个分量都是不可再分的数据项时,R∈1NF;
要求属性是原子的;
4.5.2第二范式(2NF):
若R1NF,且每个非主属性完全函数依赖于码,则称R2NF。
2NF的定义要求消除非主属性对码的部分依赖。
4.5.3第三范式(3NF):
关系模式R中,若不存在这样的码X,属性组Y及非主属性Z(ZY),使得下式成立,XY(YX),YZ则称R3NF。
3NF的定义要求消除非主属性既不部分函数依赖于码也不传递函数依赖码。
4.5.4BCNF:
关系模式R1NF,对于属性组X和Y,若XY且YX时X必含有码,则RBCNF。
注意到:
BCNF的定义更简单,不需要从1NF到2NF再到3NF再到BCNF一步步检查,也不涉及完全、部分和传递函数依赖等概念,可以直接判断一个1NF的关系是否属于BCNF。
4.6、关系模式候选码的求解
设关系模式R
v
(1)将R的所有属性分为L、R、N和LR四类,并令X代表L、N两类,Y代表LR类。
L类:
仅出现在F的函数依赖左部的属性;
R类:
………………………...右…………;
N类:
在F的函数依赖左右两边都不出现的属性;
LR类:
…………………………都出现的属性。
v
(2)求属性集闭包X+,若X+包含了R的全部属性则X即为R的唯一候选码,转(6);
(3)否则,在Y中取一属性A,求属性集闭包(XA)+,若(XA)+包含了R的全部属性,则转(4);否则,调换一属性反复进行这一过程,直到试完所有Y中的属性。
(4)如果已找出了所有的候选码,则转(6);否则在Y中依次取2个、3个、…属性,求X与它们的属性集闭包,直到其闭包包含R的全部属性。
(6)停止,输出结果。
函数依赖闭包
[例]已知关系模式R,其中
U={A,B,C,D,E};
F={AB→C,B→D,C→E,EC→B,AC→B}。
求(AB)F+。
解设X(0)=AB;
(1)X
(1)=AB∪CD=ABCD。
(2)X(0)≠X
(1)
X
(2)=X
(1)∪BE=ABCDE。
(3)X
(2)=U,算法终止
à(AB)F+=ABCDE。
例:
设关系模式R,其中U={A,B,C,D,E},
若F={A→BC,C→D,BCD→E,B→D},则关系模式R的候选关键字是什么,并指出R所属的范式最高等级及原因。
解:
E只在函数依赖的右边出现,所以候选码中不可能包含E;A只在函数依赖的左边出现,所以候选码中一定包含A;
根据F,AF+=ABCDE=U,所以A为候选码。
由于A是单属性,所以R至少是2NF。
因A→BC,所以A→C,由于C→D,所以D传递函数依赖于A。
所以R不是3NF。
R范式最高等级为2NF。
第5章关系查询处理与优化
5.1、查询处理过程
查询分析,查询处理,查询优化,查询执行
5.2、使用索引的一般准则(P99)
(1)值得建索引并且用得上。
记录有一定规模,而且查询只限于少数记录,规模小的表不宜建索引。
(2)先装数据,后建索引。
(3)在频繁进行排序或分组(即进行groupby或orderby操作)的列上建立索引。
如果待排序的列有多个,可以在这些列上建立复合索引(compoundindex)
(4)在条件表达式中经常用到的不同值较多的列上建立检索,避免在重复值较多的列上建立索引。
(5)不应该对包含大量NULL值的字段设置索引。
5.3、查询树的启发式规则——如选择和投影尽可能的先做。
P95
(1)选择运算应尽可能先做;在优化策略中这是最重要、最基本的一条;
(2)把投影运算和选择运算同时进行;
如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系;
(3)笛卡儿积合并规则;
可以把笛卡尔积与之前之后的一系列选择和投影运算结合起来一起操作;
(4)提取公共子表达式;
当查询的是视图时,定义视图的表达式就是公共子表达式的情况。
习题回顾:
P1035.6.2综合题
第6章数据库保护
6.1数据库安全性
6.1.1、与数据库有关的安全性策略有哪几种?
P104
6.1.2、在关系数据库系统中存取控制的数据对象包括哪些?
操作类型包括哪些?
p107
6.1.3、自主存取控制和强制存取控制方法
例:
把查询Student表和修改学生学号的权限授给用户stu4,并允许他再将此权限授予其他用户;
GRANTSELECT,UPDATE(Sno)
ONStudent
TOstu4
WITHGRANTOPTION
例:
把用户stu4对SC表的查询权限收回;
REVOKESELECT,UPDATE(Sno)
ONStudent
FROMstu4CASCADE--权限收回的时候必须级联收回
6.2数据库完整性
6.2.1、SQL的完整性控制P112(主码约束的定义、外码约束的定义和参照完整性的定义和修改删除规则、属性约束的定义)、表级约束和属性级约束的区分。
6.2.2、RDBMS在实现参照完整性时需要考虑哪几个方面?
(外码是否允许取空值,删除、修改被参照关系的元组时的考虑。
)
6.2.3实体完整性定义
关系模型的实体完整性
CREATETABLE中用PRIMARYKEY定义
单属性构成的码有两种说明方法
定义为列级约束条件
定义为表级约束条件
对多个属性构成的码只有一种说明方法
定义为表级约束条件
6.2.4实体完整性检查和违约处理
插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。
包括:
1.检查主码值是否唯一,如果不唯一则拒绝插入或修改
2.检查主码的各个属性是