学数据库的时候,感觉知识点比较散,借此期末来整理梳理一下知识点。如果文章中有错误的地方,欢迎大家来批评指正。
1、什么是数据?用以描述事物属性的符号。
2、什么是数据库?一个相互联系的数据的集合。
3、什么是数据库管理系统?广义的数据库管理系统包括相互联系的数据集合(数据库)以及存取和管理这些数据的一套程序(数据库管理系统软件)。
4、什么是数据库系统?指以数据库为核心的整个计算机系统。其目的是向用户提供方便、高效、可靠的存取数据的功能。
5、数据库系统的组成(熟记):数据库、硬件、软件、人员
6、理解DBA是对数据库进行集中控制和管理的最重要人员。
7、数据管理技术的发展经历了哪三个阶段?每个阶段是用什么管理数据的?
人工管理阶段(人工)、文件系统阶段(文件系统)、数据库系统阶段(数据库管理系统)
8、实例和模式的对比:内容/状态VS结构、变化VS稳定。
9、三级模式:物理模式(内模式、存储模式)、逻辑模式(模式)、子模式(外模式)。
10、一个数据库有1个物理模式,1个逻辑模式,多个子模式。
11、两级映射的作用:带来两种数据独立性,物理数据独立性和逻辑数据独立性。是由DBMS完成这种映射功能。
12、物理模式:描述全体数据在硬盘等介质上如何存储。
13、逻辑模式:描述所有数据的结构和数据间联系。
14、外模式:用户直接看到的部分,用于描述特定用户可以看到的这部分数据和彼此间联系。
15、什么是逻辑数据独立性?什么是物理数据独立性?如何实现的?(熟记)
物理数据独立性:物理模式改变,外模式不改变。
逻辑数据独立性:逻辑模式改变,外模式不改变。
实现:通过两级映射,修改物理模式和逻辑模式时可以同时修改映射关系,达到外模式不改变。通过两个子系统(DBCS数据库控制系统和DBSS数据库存储系统)。
16、用户或者应用程序面向的到底是哪一级数据库模式:外模式。
17、概念数据模式用于数据库设计,是对客观世界的第一层抽象(E-R模型)。
18、逻辑数据模型中,层次(树形)、网状(图)、关系(表)模型。
19、数据库模型三要素:数据结构、数据操作、数据完整性约束
20、关系模型三要素:关系、关系操作、关系完整性约束
21、关系的组成:什么是属性?什么是元组?什么是分量?什么是度和基数?
属性:关系中的一列。
元组:关系中的一行。
分量:某元组的某个属性。
基数:关系元组的个数。
度:关系的属性个数。
域:关系某个属性的取值范围,即字段的数据类型。
22、关系有哪些性质(5点熟记):列的同质性、异列同域性(不同的列可来自同个域,但属性名不能相同)、元组相异性、行列无序性、属性原子性。
23、外部码的属性名可以和所对应的主码不同,但取值范围必须相同。外部码可以指向同个关系(自己指向自己)的主码。外部码从E-R图的联系中转化而来。
24、四码:
超码:关系中能够唯一标识每个元组的属性或者属性组。
候选码:最小的超码。
主码:选出一个候选码来成为主码。(成为主码的属性叫主属性)
外部码:关系R1的属性或者属性组对应关系R2的主码,R1称为参照关系,R2称为被参照关系。取值范围:要么取其所参照的主码的值,要么取空值。
25、关系模式和关系实例的对比:
关系实例是关系的内容(某个表)
关系模式比较稳定,关系实例需要进程进行插入、删除、更新等操作。
26、过程化和非过程化语言的区别:
过程化:用户要指定what和how,执行过程。
非过程化:用户只要指定what即可,how留给系统处理。
27、最基本的运算:选择、投影、笛卡尔积、集合并、集合差、更名。
28、SQL全名:structured query language(结构化查询语言)
29、SQL的特点(熟记):综合统一性、高度非过程化、面向集合的操作方式(一次操作一个集合)、两种使用方式(自含式SQL、嵌入式SQL)、统一的语法结构、语言简洁易学易用。
30、SQL的四种功能,这些功能分别由哪些语句实现?(熟记)
定义:create、alter(表的修改)、drop
查询:select
修改:insert、update(元素的修改)、delete
控制:grant(允许)、revoke(撤销)
31、SQL中系统数据类型:
char(n):长度固定为n的字符串。
varchar(n):长度可变,最大长度为n的字符串。
numeric(p,q):总共不多于p位,小数点右边不多于q位的定点数。(p>q)
real:浮点数。
float:精度至少为n位的浮点数。
date:日期(年,月,日)
time:时间(小时,分,秒)
32、SQL的各个数据定义语句(特别是新建表、新建视图、修改表、删除表)(掌握)
33、SQL的select数据查询语句(掌握):
union运算:表示取并集
intersect运算:表示取交集
except运算:表示对两个相同结果集的关系去差集,例如:查询不是教师的学生姓名
34、运行次序
35、SQL的各个数据修改语句:insert、update、delete(掌握)
其一,直接写入数据
其二,通过查询语句获取内容
其一,直接where判断删除
其二,通过子查询来获取判断删除信息
其一,直接在原元组原属性上修改
其二,通过查询语句设置新属性并赋值
36、空值的运算规则(包括聚集函数忽略空值等)(掌握)
a>90 and a <=90不等于全部,没考虑null的情况
39.3=(35+40+43)/3
37、视图的本质:有名字的查询;查询中使用到的关系称为基础关系,视图就是定义在基础关系上的。
38、视图的表象:”虚拟“关系。用户访问视图时,看到的是一个基础关系+查询所派生计算出来的”虚拟“关系,和真正的关系有相同的地方,也有不同的地方。关系是实际存在的,视图并不实际存在。但在使用上,两者非常类似,可以当作一个真正关系去操作。动态变化。
39、视图的优点(熟记)
用户:简化用户的操作、提供个性化服务
管理员:增强安全性、增强逻辑独立性
40、定义视图的语句(掌握)
41、视图的查询:展开视图——替换视图为它所对应的查询。
42、视图的修改:转换为对基本表的修改,这种转换可能因为缺少主码等原因导致失败,从而无法修改/修改受限。
43、数据库设计的基本过程,包括在各个阶段分别要做的工作?(熟记)
用户需求分析:与应用领域专家,数据库用户广泛地交流,获得用户预期的数据和功能需求
概念设计:将用户需求转化为选定的某种概念模型(E-R模型)
逻辑设计:将概念模式转化为选定的某种数据模型(关系模型)
物理设计:在上阶段得到逻辑模式的基础上,补充定义数据库的物理特征。比如索引、内部存储结构、文件组织方式等。
44、E-R模型的三要素:实体、属性和联系。外部码隐藏在联系中。
45、E-R图
椭圆:属性;
矩形框:实体;
菱形:联系;
单箭头指向一对多中的一;例如,一个科室可以聘用多名医生。
46、关系模式设计不当可能产生的四种问题(熟记):数据冗余和三种异常(插入异常、删除异常、更新异常)
47、
于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别说明,我们总是讨论非平凡函数依赖。
48、
49、
50、
51、如何分解求出BCNF?
第一步,求出函数依赖集合的最小覆盖集(将所有的函数依赖的右边只有一个属性,x->yz化成
x ->y 和x ->z)
第二步,去除多余的函数依赖(Determine inessential X ->A if A is in X+ under FDs without X -> A)
第三步,去除左边多余的属性(是否多余)
如果第三步函数依赖有改变要回到第二步
第四步,把右边的合并(x->y and x ->z then x ->yz)
52、无损分解:分解关系后再连接不造成信息丢失。
53、1NF、2NF、3NF、BCNF的定义(掌握)
1NF:关系模式的每个属性都是原子的。
2NF:关系模式在1NF中、每一个非码属性完全函数依赖于码。(对于每一个X®A,若X是候选码的一部分,则违反2NF,若X是非码属性则不违反,对于每个函数依赖,左边不能是候选码的一部分)
3NF:关系在1NF中、每一个非码属性非传递函数依赖于码。(对于每个非主属性A,X®A,X一定是超码)
BCNF:关系在1NF中、每一个属性(码属性+非码属性)不传递函数依赖于码。(对于每个函数依赖,左边一定包含候选码)
54、
DDL:数据定义语言,create、alter、drop
DML:数据操作语言,select、update、delete
DCL:数据控制语言,grant、revoke
DQL:数据查询语言,select
55、安全性是防止非法用户进入数据库,以及合法用户进入数据库后做了非法操作,造成数据泄露或破坏。
56、完整性是防止非法数据,也就是不正确的数据进入数据库。
57、关系模型中的三类完整性规则及其要求(熟记)
实体完整性:关系中,元组主码取值唯一,且不能取空值(由多个属性构成时,每一个属性都不能取空值)
参照完整性:外部码要么取空值,要么取对应主码值。
用户定义完整性:用户根据具体的应用环境定义。
58、角色的定义及作用:角色是被命名的一组与数据库操作相关的权限。角色是批量用户授权操作的需要,简化了授权的过程。
59、在定义外部码约束时,有哪几种参照动作?代表什么意义?(掌握)
foreign key()
references r()
on delete/update <参照动作>
参照动作
说明当(被参照关系的)某个主码值被删除/更新时,如何处理自己表中对应的外部码值。
restrict:仅当没有任何对应的外部码值时,才可以删除/更新这个主码值,否则系统拒绝执行此操作。
cascade:连带将所有对应的外部码值一起删除/更新
Set null:将所有对应的外部码值设为空值
Set default:将所有对应的外部码值设为默认值
60、触发器是一种ECA规则,构成:event事件、condition条件、action动作。触发器的事件主要有三类:insert、update、delete。
61、完整性的原义:数据的完整性指的是数据的正确性、有效性和相容性。
62、
63、事务是DBMS的基本执行单位。
64、事务的ACID性质(熟记)
原子性(Atomicity):事务中包含的所有操作,要么全部做,要么全不做。实现机制:恢复机制。
一致性(Consistency):单独执行一个事务的结果必须保证数据一致性。即事务开始前,数据满足一致性要求;事务结束后,数据虽然可能被修改了,但仍然满足一致性的要求。实现机制:完整性机制。
隔离性(Isolation):多个事务在并发执行时不会相互影响,好像它们时隔开一样。最后的效果与按某个顺序依次执行这些事务时一样的。隔离性要求一个事务不会看到另一个事务的中间结果。实现机制:并发控制机制。
持久性(Durability):事务一旦提交,它对数据库的影响就是永久性的。无论发生什么事情都不能取消这种影响。实现机制:恢复机制。
65、事务以begin transaction语句开始,以commit(提交事务,永久写入数据库)或者rollback(回滚事务,非正常结束,回退到事务开始前的状态)语句结束。
66、错误的并发调度可能产生的三种错误:丢失修改(两个事务对同个数据进行修改,后面提交的数据把前面的覆盖)、不可重复读(事务一读了一个数据,事务二把那个数据修改了,则再次读结果会不一样)、读“脏”数据(读到的数据是事务修改后但又被撤销的数据)。
67、封锁的基本类型
X锁(写锁、排它锁):事务T修改A前先加X锁,任何事务都不能再对A加任何类型的锁,直到事务T释放A。(不能读写)
S锁(读锁、共享锁):事务T读取A前先加S锁,其他事务可对A加S锁,但不能加X锁,直到事务T释放A。(可读不可写)
68、一级封锁:可解决丢失修改的问题,但不能解决不可重复读和读脏数据的问题(因为读数据可以不加锁,那就可以读)
69、二级封锁:在此基础上又解决了读脏数据问题(因为读数据前要先加S锁,在读完后,可以在任何时候释放S锁)
70、三级封锁:在此基础上又解决了不可重复读问题(因为读数据前要先加S锁,直到事务结束才释放S锁,当一个事务中有两次读数据时不一样)
71、两段封锁协议是可串行化调度的充分非必要条件。
72、事务分为两个阶段——
生长阶段:(一直在)获得锁
收缩阶段:(一直在)释放锁
首次释放掉一个锁后,即由生长阶段转入收缩阶段。
73、死锁:如果有两个事务同时要对两个不同的数据加锁就有可能发生相互等待的问题,从而形成死锁。
74、死锁预防:一次封锁法、顺序封锁法、抢占与事务回滚。
死锁检测与恢复:死锁不可避免!方法一:超时法;方法二:等待图法
75、两段锁协议的内容:
定理:如果所有事务都遵守两段锁协议,调度一定是可串行化的。
两段锁协议不能防止死锁的发生。
76、并发引起的三类数据不一致问题,产生的根本原因是事务在并发执行调度时,没有保证隔离性。(熟记)
77、故障种类:事务故障、系统故障、磁盘故障
78、事务故障:1、执行语句逻辑错误,例如运算溢出等 2、死锁;特征:事务异常结束;恢复:undo故障事务
79、系统故障:1、硬件错误,cpu故障2、软件错误,DBMS本身异常3、其它,突然停电;特征:系统需要重新启动,缓冲区的数据丢失,但磁盘的数据完好无损;恢复:undo未提交事务、redo已提交事务。
80、磁盘故障:磁盘的数据部分或完全丢失;特征:磁盘上的数据丢失;恢复:根据其它地点上的数据备份,重建数据库。
81、恢复的基本原理:冗余;任何数据被破坏或发生错误后,都可以通过存储在其它地点的冗余数据重建该数据。
82、解决方法:数据转储、登记日志文件。
83、数据转储:由DBA定期将数据库进行复制,得到后备副本并保存在另外的磁盘或磁带上的过程。
84、静态转储:简单、保持一致性、数据库不可用;动态转储:复杂、不能保证一致性、数据库可用。
85、海量转储:转储整个数据库;增量转储:转储自上次转储以来发生变化的那部分。
86、登记日志文件:以记录为操作对象的日志文件、以数据块为操作对象的日志文件。先写日志文件再写数据。
87、对未提交事务:undo;对已提交事务:redo
89、事务故障的恢复:反向扫描日志文件,undo该事务。
90、系统故障的恢复:正向扫描日志文件,redo已提交的所有事务;反向扫描日志文件,undo未提交的所有事务
91、磁盘故障的恢复:一般由DBA完成;装入最近一次转储的数据库副本,装入转储后到故障发生时的日志文件副本,redo那些已提交事务。
92、检查点是把该时间之前所有的事务写入磁盘。
93、日志文件的作用:事务故障、系统故障的恢复,必须使用日志文件;
磁盘故障的恢复,使用转储产生的副本+日志文件。
个人感觉数据库的学习还得是多做题,或者做项目使用设计数据库才能更好地掌握。欢迎大家评论指正!