有关数据库的基础知识
第一章
概念:
一、数据库系统是由数据库、数据库管理系统(及应用开发工具)、应用程序和数据库管理人员(DDBA)组成的存储、管理、处理和维护数据的系统。
二、数据库管理技术的产生和发展,数据库管理技术经历了人工管理、文件管理、数据库系统三个阶段。
数据库管理阶段:共享性高,冗余度小,高度的物理和逻辑独立性,整体结构化。
数据独立性高:二级映像的关系。
三、两类数据模型:第一类是概念模型,第二类是逻辑模型和物理模型。
四、数据模型通常由数据结构、数据操作和数据完整性约束条件三部分组成
五、常用的数据模型:层次模型,网状模型,关系模型——二维表格,面向对象数据模型。
六、关系模型的数据结构:元组:表中的行为即为一个元组,
属性:表中的一列即为一个属性。
七、数据库系统的结构
:在数据模型中有“型(type)”和“值(value)”的概念。
模式是相对稳定的,而实例是相对变动的。
八、数据库系统的三级模式结构
:三级模式,两层映像。
外模式(如视图)—(逻辑独立性)—模式(如关系表)—(物理独立性)—内模式(存储方式)
九、数据库系统一般由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员构成。
十、目前数据库中最常用到的逻辑数据模型是层次模型、网状模型、关系模型
问题
1、试述数据库系统的特点。
答:整体结构化、冗余度小,共享性高,高度的物理和逻辑独立性。
2、试述关系数据库的特点。
答:(1)关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的
** (2)关系模型的概念单一,无论实体还是实体之间的联系都用关系表示**
** (3)关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性**
(4)但查询效率往往不如非关系数据模型
3、试述数据库系统的三级模式结构,并说明这种结构的优点是什么?
答:数据库系统的三级模式结构由外模式、模式、内模式组成;外模式亦称子模式或用户模式,是与某应用有关的数据的逻辑表示;模式,亦称逻辑模式,是数据中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。内模式,亦称存储模式,对数据的物理结构和存储方式的描述。
三级模式使用户能抽象地处理数据,而不必关心数据在计算机中的表示和存储。
两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性
4、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据和程序的独立性。
答:逻辑独立性:当模式改变时,有数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。
** 物理独立性:**数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
第二章
关系数据库
1、一个域允许的不同数值个数称为这个域的基数。
2、 基本关系具有以下6条性质
- 列是同质的
- 不同的列可出自同一个域,称其中的每一条列为一个属性
- 列的顺序无所谓,即列的次序可以任意交换
- 任意两个元组的候选码不能取相同的值。
- 行的顺序无所谓,即行的次序可以任意交换
- 分量必须取原子值,即每一个分量都必须是不可分割的数据项。
3、关系数据库中,关系模式是型,关系是值。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的,稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断的更新着数据库中的数据。
所有数据的集合构成一个关系数据库
4、关系模型中常用的关系操作包括查询(query)操作和插入(insert)、删除(delete)、修改(update)操作两大部分
查询操作:关键的是选择、投影。
SQL语言是一种高度非过程化的语言。
5、关系模型中有三类完整性约束:实体完整性、参照完整性、用户定义完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性。
6、数据库管理系统的主要功能是数据库定义、存取、数据库运行管理、数据库的建立和维护。
第三章
关系数据库标准语言SQL
1、SQL的特点:
综合统一:数据库系统的主要功能是通过数据库支持的数据语言来实现的
高度非过程化:存储路径的选择以及SQL的操作过程都是由系统自动完成。
面向集合的操作方式:SQl采用集合操作方式,不仅操作对象,查找结果可以是元组的集合
以同一种语法结构提供多种使用方式:
2、视图:它是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。
数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
建立视图;视图上建立视图。
3、SQL具有两种使用方式,分别为交互式SQL和嵌入式SQL
①单表查询
(1)选择表中的若干列:
查询指定列:
例:查询全体学生的学号与姓名
SELECT Sno,Sname
FROM Student;
查询所有列:(将<目标列表达式>指定为 *)
例:查询全体学生的详细记录。
SELECT * FROM Student;
查询结果计算的值:
例:查全体学生的姓名及其出生年份。
SELECT Sname,2012-Sage /假定当年的年份为 2012 年,减去年龄即得出生年份/
FROM Student;
第四章
数据库安全性
1、数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。数据库的数据保护主要包括数据的安全性和完整性。
2、数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改和破环。
3、保护数据安全性的一般方法是设置用户标识和存储权限控制
4、数据库安全性控制:主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密安全技术五级安全措施。
第五章
数据库完整性
1、数据库的完整性是指数据的正确性和相容性。
数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
数据库的安全性是保护数据库防止恶意破坏和非法存取。
2、数据库管理系统必须能够实现如下功能:
- 提供定义完整性约束条件的机制
- 提供完整性检查方法
- 进行违约处理
3、触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。
4、触发器又叫做事件—条件—动作规则。当特定的系统事件发生时,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则不执行该动作。
第六章
关系数据理论
1、作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项。
满足了这个条件的关系模式就属于第一范式(INF)
2、属性列间可互相推出结果的关系。
3、书上的Student关系模式存在的问题
:数据冗余;更新异常;插入异常;删除异常;
4、规范化主要的理论是关系规范化理论
5、规范化过程主要为了克服数据库逻辑结构中的插入异常,删除异常以及冗余度大的缺陷
6、第二范式(2NF):若关系模式 R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式 R ∈2NF 。(即 1NF 消除了非主属性对码的部分函数依赖则成为 2NF)。
第七章
数据库设计
1、数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
2、数据库设计步骤:
- 需求分析
- 概念结构设计;
- 逻辑结构设计;
- 物理结构设计;
- 数据库实施;
- 数据库运行和维护;
3、E—R图
:提供了表示实体型、属性和联系的方法。
实体型用矩形表示
属性用椭圆表示
联系用菱形表示
4、逻辑结构设计
第十章
数据库恢复技术
1、事务的基本概念
:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
它是DBMS的基本单位,它是用户定义的一组逻辑独立的序列。
2、begin;commit;rollback;
3、事务的ACID特性
:四个特性;原子性,一致性,隔离性和持续性(也称永久性)。
4、故障的种类
:事务内部的故障
系统故障
介质故障
计算机病毒
各类故障对数据库的影响有两种可能性,一是数据库本身被破坏,二是数据库没有被破坏
5、建立冗余数据最常用的技术是数据转储和登记日志文件
:静态转储;动态转储
登记日志文件:为保证数据库是可恢复的,登记日志文件时必须遵循两条原则
:登记的次序严格按并发事务执行的时间次序。
必须先写出日志文件,后写数据库。
第十一章
并发控制
1、事务可以一个一个地串行执行,及每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方可运行。
2、事务是并发控制的基本单位。
3、并发操作带来的数据不一致性包括丢失修改,不可重复复读和读“脏”数据。
:丢失修改;不可重复读;读“脏”数据
并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。
4、并发控制的主要技术有封锁、时间戳、乐观控制法和多版本并发控制等。
5、封锁
:封锁是实现并发控制的一个非常重要的技术
排他锁(又称写锁,X锁);共享锁(又称读锁,S锁)
:封锁协议:
一级封锁协议:先加X锁,直到事务结束才解放。
二级封锁协议:在一级封锁协议上增加事务,在读取数据之前必须先加S锁,读完后释放
三级封锁协议:在一级上增加事务,读取数据之前必须对其加S锁,直到事务结束释放。
6、避免活锁的简单方法是采用先来先服务的策略。
7、封锁对象的大小称为封锁粒度
封锁粒度与系统的并发度和并发控制的开销密切相关。
8、解决并发控制带来的数据不一致性,总是普遍采用封锁。
9、封锁就是事务T在对某个数据对象操作之前,先向系统发出操作请求,对其加锁。
10、**什么是活锁?什么是死锁? **
活锁:事务 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 两个事务永远不能结束,形 成死锁。
11、预防死锁的方法有一次性封锁法、顺序封锁法。
12、死锁的诊断与解除方法有超时法、等待图法。
13、试述两段锁协议的概念 所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。 获得封锁:在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁 释放封锁:在释放一个封锁之后,事务不再申请和获得任何其他封锁 若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的 若并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议
警言: 无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你。你抬头自卑,低头自得,唯有平视,才能看见真实的自己。
转载请注明原文链接:https://www.cnblogs.com/yuyueq/p/13129114.html
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢你的支持!