数据库原理相关知识
made by @杨领well(yanglingwell@sina.com)
一、基础知识
1. 简述数据库系统的特点。
- 数据结构化 : 这是数据库系统与文件系统的本质区别。
- 数据的共享性高、冗余度低且易扩充 : 数据共享可以大大减少数据冗余, 节约存储空间。数据共享还能够避免数据之间的不相容性和不一致性。
- 数据的独立性高 : 数据独立性包括物理独立性和逻辑独立性。
- 数据由数据库管理系统统一管理和控制 : 数据的安全性保护(保护数据以防止不合法使用造成的数据泄密和破坏)、数据的完整性检查(数据的正确性、有效性、相容性)、并发控制、数据库恢复。
2. 数据库管理系统的主要功能有哪些?
- 数据定义功能
- 数据组织、存储和管理
- 数据操纵功能
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
- 其他功能
3. 什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?
- 物理独立性:应用程序和数据库中的数据的物理存储是相互独立的。
- 逻辑独立性:应用程序与数据库的逻辑结构是相互独立的。数据库的逻辑结构改变时,用户程序也可以不变。
- 数据与程序的独立 把数据的定义从程序中分离出去,加上存取数据的方法又由于数据库管理系统负责提供,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
4. 简述数据库系统的三级模式结构。
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOtve8IS-1571491673127)(http://www.educity.cn/ncre/ncrefx/images/20136241475.png)]
- 模式: 也称逻辑模式或概念模式。是数据库中全体数据的的逻辑结构和特征的描述,是所有用户的公共数据视图。定义模式时,不仅要定义数据的逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。一个数据库只有一个模式。
- 外模式:也称子模式或用户模式。是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某应用有关的数据的逻辑表示。外模式通常是模式的子集。一个数据库可以有多个外模式。同一个外模式可以为多个应用系统使用,但一个应用程序只能使用一个外模式。
- 内模式:也称存储模式。是数据物理结构和存储方式的描述, 是数据在数据库内部的组织方式。一个数据库只有一个内模式。
数据库的二级映像功能与数据独立性
- 外模式/模式映像:对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。
当模式改变时,由数据库管理员对各外模式/模式映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。- 模式/内模式映像: 数据库只有一个模式,也只有一个外模式,所有模式/内模式映像是唯一的,它定义了数据全局逻辑结构(模式?)和存储结构(内模式?)之间的对应关系。该映像定义在模式描述中。
当数据库的存储结构改变时,由数据管理员对模式/内模式映像作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性。
5. 试述数据库系统的组成。
- 硬件平台及数据库
- 软件:数据库管理系统、支持数据库管理系统运行的操作系统、具有与数据库接口的高级语言及其编译系统、以数据库管理系统为核心的应用开发工具、为特定应用环境开发的数据库应用系统。
- 人员:数据库管理员(DBA)、系统分析员和数据库设计人员、应用程序员、用户(end user)。
6. 简述文件系统与数据库系统的区别和联系。
- 文件系统和数据库系统之间的区别
a. 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;
b. 文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;
c. 文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;
d. 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。 - 文件系统和数据库系统之间的联系
a. 均为数据组织的管理技术;
b. 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;
c. 数据库系统是在文件系统的基础上发展而来的。
7. DBA的职责是什么?
- 决定数据库中的信息内容和结构。
- 决定数据库的存储结构和存取策略。
- 定义数据的安全性要求和完整性约束。
- 监控数据库的使用和运行。
- 数据库的改进和重组、重构。
8. 关系代数的基本运算有哪些 ?
- 并(union): R
- S = { t | t
- R
- t
- 差(except):R - S = { t | t
- S
- t
- 交(intersection):R
- S = { t
- R
- t
- 笛卡尔积(cartesian producr): R
- S = {
- |
- R
- 选择(select)又称限制(restriction):
- ® = { t | t
- R
- 投影(project):
- ® == { t[A] | t
- 连接 (join) :
连接: R
- S = {
- |
- R
- S $ \bigwedge t_r$[A]
- [B] }
是比较运算符.
自然连接: R
S = {
[U - B] |
R
S $ \bigwedge t_r$[B] =
[B] }
要求R和S中具有相同的属性组B, U为R和S的全体属性集合。 要求两个关系进行比较的分量必须是同名的属性组,并在结果中把重复的属性列去掉。
- 除运算(division): R
- S = {
- |
- R
- (S)
- },其中
- 为
- 在R的象集,
- [X]。
9. 什么是基本表?什么是视图?两者的区别和联系是什么?
- 基本表,又称基本关系或基表:是实际存在的表,它是实际存储数据的逻辑表示。
- 视图:是由基本表或其他视图表导出的表,是虚表。数据库中只存放视图的定义,而不存放视图对应的数据。
- 基本表和视图的区别:
a. 视图是已经编译好的sql语句。而表不是;
b. 视图没有实际的物理记录。而表有;
c. 表是内容,视图是窗口;
d. 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改;
e. 表是内模式,视图是外模式;
f. 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构;
g. 表属于全局模式中的表,是实表;视图属于局部模式的表, 是虚表;
h. 视图的建立和删除只影响视图本身,不影响对应的基本表。 - 基本表和视图的联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表, 也可以对应多个基本表。 视图是基本表的抽象和在逻辑意义上建立的新关系。
关系可以有三种类型:基本关系(基本表)、查询表(查询结果对应的表)和视图表。
10. 简述视图的优点。
- 视图能够简化用户的操作:通过定义视图使数据库看起来结构简单清晰,并且可以简化用户的数据查询操作。
- 视图使用户能以多种角度看待同一数据。
- 视图对重构数据库提供了一定程度的逻辑独立性。
- 视图能够对机密数据提供安全保护。
- 适当的利用视图可以更清晰地表达查询。
11. 所有的视图是否都可以更新? 哪类视图是可以更新的,哪类视图是不可更新的?
- 在关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能唯一有意义地转换成对相应基本表的更新。
- 一般地,行列子集视图是可更新的。
- 若视图的属性来自聚集函数、表达式,则该视图肯定是不可以更新的。
由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。
若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,则称之为行列子集视图。
12. 简述SQL(Structured Query Language, 结构化查询语言)的特点。
- 综合统一: SQL集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。
- 高度非过程化。
- 面向集合的操作方式。
- 以同一种语法结构提供多种使用方式。
- 语言简洁,易学易用。
13. 在嵌入式SQL中是如何协调SQL语言的集合处理方式和主语言的单记录处理方式的?
- 游标 是用于协调SQL语言的集合处理方式和主语言的单记录处理方式。
- 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果(多条记录的集合),用户可以通过游标来逐一获取记录并赋值给主变量,交由主语言进一步处理。
14. 关系数据库的完整性规则有哪几类?
- 实体完整性规则:若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。
- 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码
- 相对应(基本关系R和S不一定是不同关系),则对于R中的每个元组在F上的值必须:
a. 或者取空值(F的每个属性值均为空值);
b. 或者等于S中某个元组的主码值。 - 用户定义的完整性规则:某一具体的实际数据库的约束条件,由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求(比如说一个人的年龄必须要大于零),根据现实生活中的一个实际情况用户定义的一个用户自定义完整性。
数据库的完整性(integrity)是指数据的正确性和相容性。数据的正确性是指数据是符合现实世界的语义、反应当前实际情况的;数据的相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。
15. 试述查询优化在关系数据库系统中的重要性和可能性。
- 查询优化在关系数据库系统中的重要性:
a. 关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点所在。它减轻了用户选择存储路径的负担。用户只要提出“干什么”,而不必指出“怎么干”。
b. 查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较高的效率,而且在于系统可以比用户程序的“优化”做的更好。 - 查询优化在关系数据库系统中的可能性:
a. 优化器可以从数据字典中获取许多统计信息。优化器可以根据这些信息作出正确的估算,选择高效的执行计划。
b. 如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。
d. 优化器可以考虑数十甚至数百种不同的执行计划,从中选出较优的一个,而程序员一般只能考虑有限的几种可能性。
e. 优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术。
16. 写出 Armstrong 推理规则中自反律、增广律、传递律的形式化定义。
设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R<U,F>,对R<U, F>来说有以下的推理规则:
- 自反律:若 $Y \subseteq X \subseteq U $ 则
- 增广律:若
- 为F所蕴涵, 且 $ Z \subseteq U$,则
- 为F所蕴涵。
- 传递律:若
- 及
- 为F所蕴涵,则
- 为F所蕴涵。
- 逻辑蕴涵:对应满足一组函数依赖F的关系模式R<U,F>,其任何一个关系r,若函数依赖
- 都成立(即r中的任意元组t、s,若t[X]=s[X], 则t[Y] = s[Y]),则称F逻辑蕴涵
- 。
- 合并规则: 若
- 则
- 。
- 伪传递规则: 若
- 则
- 。
- 分解规则: 若
- 则
- 。
- 完全函数依赖:在R(U)中,如果
- ,并且对应X的任何一个真子集
- ,都有
- ,则称Y对X完全依赖。
- 部分函数依赖:若
- ,但Y不完全依赖于X,则称Y对X部分函数依赖。
- 传递函数依赖:在R(U)中,如果
- 则称Z对X传递函数依赖。
- 第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。即,每一个列(属性)只有一个,没有重复。
- 第二范式:若 $R \in $ 1NF, 且每一个非主属性完全函数依赖于任何一个候选码,则
- 第三范式:设关系模式R<U,F>
- 1NF,若R中不存在这样的码X,属性组Y及非主属性
- 使得
- 成立,
- ,则称R<U,F>
- BCNF: 设关系模式R
- 1NF,如果对于R的每个非平凡的函数依赖X
- Y,X必为候选码,则R
17. 简述日志文件的内容。
- 各个事务的开始标记。
- 各个事务的结束。
- 各个事务的所有更新操作。
18. 简述 SQL 中的自主存取控制机制。
- 数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户。
- 用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用GRANT语句将某些权限授予其他用户。被授权的用户如果有“继续授权”的许可,还可以把获得的权限再授予其他用户。
- 所有授予出去的权限再必要时又都可以用REVOKE语句收回。
grant vt. 承认;同意;准许;授予;
revoke vt. 撤销,取消;废除
19. 简述数据库中事务的概念及其性质。
- 事务的概念:事务是用户定义的一个数据库操作序列,这个操作要么全做,要么全不做,是一个不可分割的工作单位。
- 事务的性质:ACID特性。
a. 原子性(Atomicity)。事务是数据库的逻辑工作单元,事务中包括的诸操作要么都做, 要么都不做。
b. 一致性(Consistency)。事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态。
c. 隔离性(Isolation)。一个事务的执行不能被其他事务干扰。
d. 持续性(Durability),也称永久性。 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
事务是恢复和并发控制的基本单位。
20. 简述事物的原子性。
- 事务是数据库的逻辑工作单元,事务中包括的诸操作要么都做, 要么都不做,它是一个不可分割的工作单位。
21. 简述并发操作带来的三类数据不一致性。
- 丢失修改: 两个事务
- 和
- ,读入同一数据并修改,
- ,提交的结果破坏了
- 提交的结果,导致
- 的修改被丢失。
- 不可重复读:事务
- 读取数据后,事务
- 执行更新操作,使
- 无法再现前一次读取结果。包括下列三种情况:
a. 事务 - 读取某一数据后,事务
- 对其进行了修改,当事务
- 再次读取该数据时,得到与前一次不同的值。
b. 事务 - 按一定条件从数据库中读取了某些数据记录后,事务
- 删除了其中部分记录,当
- 再次按相同条件读取数据时,发现某些记录神秘地消失了。
c. 事务 - 按一定条件从数据库中读取了某些数据记录后,事务
- 插入了一些记录,当
- 再次按相同条件读取数据时,发现多了一些数据。
- 读“脏”数据:事务
- 修改某一数据并将其写回磁盘,事务
- 读取同一数据后,
- 由于某种原因被撤销,这时被
- 修改过的数据恢复原值,
- 读到的数据就与数据库中的数据不一致,则
- 读到的数据为“脏”数据。
22. 在数据库中为什么要并发控制?并发控制技术可以保证事务的哪些特征?
- 数据库需要并发控制的原因:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。
- 并发控制技术保证了并发事务的隔离性和一致性。
23. 什么是封锁?基本的封锁类型有几种?
- 封锁:事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务就不能更新此数据对象。
- 基本的封锁类型:
a. 排它锁(exclusive locks, 简称X锁),又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。
b. 共享锁(share locks,简称S锁), 又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁为止。
exclusive adj. 专用的; 高级的; 排外的; 单独的;
24. 简述两段封锁协议的内容。
两段锁协议将事务分为两个阶段:
- 扩展阶段 :获得封锁。在这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。
- 收缩阶段 :释放封锁。在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何的锁。
25. 简述数据库系统中活锁和死锁的含义。避免活锁的简单方法是什么?
- 活锁: 如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,…,T2有可能永远等待,这就是活锁的情形。
- 死锁:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
- 避免活锁的简单方法是采用先来先服务的策略。
26. 什么叫做数据库的恢复?数据库恢复的基本技术有哪些?
- 数据库的恢复:系统具有的把数据库从错误状态恢复到已知的正确状态(也称为一致状态或完整状态)的功能。
- 数据库恢复的基本技术:
a.数据转储。数据库管理员定期地将整个数据库复制到磁盘、磁带或其他存储介质上保存起来,这些备用数据称为后备副本。当数据遭到破坏后可以将后备副本的数据重新装入。
b. 登记日志文件。日志文件可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。(关于日志文件,详见第17条)
27. 简述数据库系统中可能发生的故障类型,以及数据恢复方法。
- 数据库系统中可能发生的故障类型:
a. 事务内部的故障。事务故障意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK), 因此,数据库可能处于不正确状态。
b. 系统故障。 系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。
c. 介质故障。 外存故障破坏数据库或部分数据库。
d. 计算机病毒。 - 数据恢复方法:
a. 事务故障的恢复。 利用日志文件撤销此事务已对数据库进行的修改。
b. 系统故障的恢复。 撤销故障发生时未完成的事务,重做已完成的事务。
c. 介质故障的恢复。 重装数据库,然后重做已完成的事务。
28. 简述“运行记录优先原则”。
- 至少要等相应运行记录已经写入日志文件后,才能允许事务往数据库中写记录。
- 直至事务的所有 运行记录都已写入运行日志文件后,才允许事务完成“END TRABSACTION”处理。
transaction n. 事务,交易,记录。
29. 简述日志文件内容及其作用。
- 日志文件的作用:(日志文件的内容见第17条)
a. 事务故障恢复和系统故障恢复必须用日志文件。(详见第27条)
b. 在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。
c. 在静态转储方式中,也可以建立日志文件,当数据库毁坏后可重新装入后备副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。这样就不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。
静态转储:在系统中无运行事务时进行的转储操作。即,转储操作开始的时刻数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。
动态转储:转储期间允许对数据库进行存取或修改。即,转储和用户事务可以并发执行。动态转储结束时后备副本上的数据并不能保证正确有效。为此必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件。这样,后备副本加上日志文件就能把数据库恢复到某一时刻的正确状态。
30. 简述数据库设计过程。
- 需求分析。
- 概念结构设计。
- 逻辑结构设计。
- 物理结构设计。
- 数据库实施。
- 数据库运行和维护。
31. 需求分析阶段的设计目标是什么?调查的内容是什么?
- 设计目标: 通过详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
- 调查内容:
a. 信息要求。 用户需要从数据库中会的信息的内容和性质。
b. 处理要求。 用户要完成的数据处理功能,对处理性能的要求。
c. 安全性与完整性要求。
32. 数据字典的内容和作用是什么?
数据字典是关于数据库中的数据的描述,即,元数据,而不是数据本身。
- 数据字典的内容:
a. 数据项。 数据项是不可再分的数据单元。数据项的描述 = { 数据项名, 数据项含义说明, 别名, 数据类型, 长度, 取值范围, 取值含义, 与其他数据项的逻辑关系, 数据项之间的联系 }
b. 数据结构。 数据结构反应了数据之间的组合关系。数据结构描述 = { 数据结构名, 含义说明, 组成:{ 数据项或数据结构 } }
c. 数据流。 数据流是数据结构在系统内传输的路径。 数据流描述 = { 数据流名, 说明, 数据流来源, 数据流去向, 组成:{ 数据结构 }, 平均流量, 高峰期流量 }
d. 数据存储。 数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。 数据存储描述 = { 数据存储名, 说明, 编号, 输入的数据流, 输出的数据流, 组成: { 数据结构 }, 数据量, 存取频度, 存取方式 }
e. 处理过程。 处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典只需要描述处理过程的说明性信息即可。 处理过程描述 = { 处理过程名, 说明, 输入:{ 数据流 }, 输出:{ 数据流 }, 处理: { 简要说明 } } - 数据字典的作用: 数据字典在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完善。
33. 在全局 ER 模型设计过程中,需要消除局部 ER 模型之间存在的哪三种冲突?
- 属性冲突:
a. 属性域冲突。即,属性值的类型、取值范围或取值集合不同。
b. 属性取值单位冲突。 - 命名冲突:同名异义或异名同义。
- 结构冲突:
a. 同一对象在不同应用中具有不同的抽象。
b. 同一实体在不同子系统中的E-R图中所包含的属性个数和属性排列次序不完全相同。
c. 实体之间的联系在不同的E-R图中为不同的类型。
34. 简述数据库完整性和安全性的概念。
- 数据安全性: 是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
- 数据完整性:数据库的完整性(integrity)是指数据的正确性和相容性。(详见第14条)
安全性措施的防范对象是非法用户和非法操作, 而完整性措施的防范对象是不合语义的数据。