由《数据库系统概论(第5版)》总结而来,用于研究生复试准备。欢迎各位准研究生们学习使用。
1、数据(data):数据是数据库中存储的基本对象。
2、数据库(DataBase, DB):数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
3、数据库管理系统(DataBase Management System, DBMS):位于用户和操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基本软件。
4、数据库系统(DataBase System, DBS):数据库系统是由数据库、数据库管理系统(以及应用开发工具)、应用程序和数据库管理员(DataBase Administrator, DBA)组成的存储、管理、处理和维护数据的系统。
(1)外模式:又称用户模式,它是数据库用户能够看见和使用的数据视图。
(2)模式:是对数据库中全体数据的**逻辑结构和特征**的描述。
(3)内模式:又称为存储模式,它是数据物理结构和存储方式的描述。
一个数据库只有一个模式和一个内模式,可以有多个外模式。
外模式/模式映像的优点:当模式改变时,通过数据库管理员对外模式/模式映像做相应的改变,外模式可以保持不变。应用程序是根据外模式而编写的,因而应用程序不必修改,保证了数据的逻辑独立性;
内模式/模式映像的优点:当数据库的存储结构改变时,通过对模式/内模式映射作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据的物理独立性。
实体完整性:关系模式中的主码不能为空值;
参照完整性:关系模式中的外码只能是空值或者另一关系模式的主码;
用户定义完整性:关系模式中针对某一属性的约束。
(1)综合统一。集DCL,DML,DDL功能于一体;
(2)高度非过程化。只需要提出“做什么”,而不需要指明怎么做;
(3)面向集合的操作方式。
(4)提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作;
- DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
- DML: 数据操作语言,用来对数据库表中的数据进行增删改
- DQL: 数据查询语言,用来查询数据库中表的记录
- DCL: 数据控制语言,用来创建数据库用户、控制数据库的访问权限
自然连接是等值连接的一种特殊情况;
等值连接要求连接的是值相等的分量,两个关系中可以没有相同的属性;进行自然连接的两个关系中必须有相同的属性。
等值连接不要求去掉重复属性列;自然连接时需要除掉重复的属性列。
外连接是指两个表在进行操作时,不仅返回符合连接的元组,还返回不符合条件的一些元组;
(1)左外连接是指列出左表的全部元组,若右表无对应记录,则为NULL;
(2)右外连接是指列出右表的全部元组,若左表无对应记录,则为NULL;
全外连接是左外连接+右外连接。
当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。
优点:加速查询速度;
缺点:索引需要占一定的存储空间,且基本表更新时需要维护索引表。
B+树索引:B+树是对B树优化处理了的多路搜索树,与B树的区别在于,B树的每个结点都可以存储数据,而B+树只有叶子结点可以存储数据,且每个叶子结点都用链表链接。在数据库的查询中一般都是批量查询数据,采用B+树一次查询多条时,确定首尾位置,便可以方便的确定多条数据位置,提高查询效率。
Hash索引:通过一定的算法计算出哈希值,然后映射出对应的数据存储位置。检索速度快,但是哈希值可能存在碰撞。
视图是从一个或几个基本表中导出的表,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据。基本表中的数据发生变化时,从视图中查询出来的数据也就随之发生变化。
作用:(简化操作、不同角度、逻辑独立性、安全保护)
能够简化用户的操作;
使用户能以多种角度看待同一数据;
在一定程度上提供了数据的逻辑独立性;
能够对秘密数据提供安全保护;
数据库的安全性是指保护数据库不被恶意破坏和非法存取。
安全性技术:用户标识和鉴别、多层存取控制、审计、视图、数据加密。
存取控制是指确保只授权给有资格的用户访问数据库的权限,且令所有未被授权的人员无法接近数据。
两个部分:定义用户权限和合法权限检查;
两种方法(两种不能都用):
(1)自主存取控制(DAC):用户对不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限
(2)强制存取控制(MAC):每一个数据库对象被标以一定的密级,每一个用户也被授予一定级别的许可证,只有具有合法许可证的用户才可以进行存取。
可以对不同的用户定义不同的视图,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来。
审计功能是把用户对数据库的一系列操作自动记录到审计日志中,审计员可以利用审计日志监控数据库中的各种行为,找出导致数据库发生异常的事件。
数据库的完整性是指数据的正确性和相容性,防止数据库中存在不正确的数据。
断言是指更具有一般性的约束,断言创建后,任何涉及到断言中的关系的操作都会引发数据库对断言的检查,任何使断言为假的操作都会被拒绝执行。
触发器是用户定义在关系表上的一类由事件驱动的特殊过程,类似于约束,但是比约束更灵活,是保证数据库完整性的一种方法。任何用户对表进行增删改操作都会激活相应的触发器,之后触发器会对数据库进行相应的检查和操作。
候选码(候选键):唯一标识元组的属性或属性集,可能不止一个。选取其中一个作为主码(主键)。
主属性:包含在任何一个候选码中的属性。反之非主属性。
由1NF到2NF,消除了非主属性对候选码的部分函数依赖; 即非主属性完全函数依赖于候选码。
由2NF到3NF,消除了非主属性对候选码的传递函数依赖;
由3NF到BCNF,消除了主属性之间的部分函数依赖和传递函数依赖。
(1)需求分析:了解和分析用户需求(建立数据字典);
(2)概念结构设计:根据用户需求转换成E-R图;
(3)逻辑结构设计:将E-R图转换为关系模型;
(4)物理结构设计:设计存储结构和存取方法;
(5)数据库实施阶段:编写数据库,编写和调试应用程序;
(6)数据库运行和维护:正式投入运行。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。(用E-R图来描述现实世界的概念模型)
属性冲突。不同的实体对同一属性的定义不同;
命名冲突。同名异义、异名同义;
结构冲突。同一实体在不同的局部E-R图中有不同的抽象。
一个实体型转换为一个关系模式。
1、一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;
2、一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;
3、一个m:n联系可以转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
查询分析:对查询语句进行词法分析、语法分析;
查询检查:对合法的查询语句进行语义检查;
查询优化:选择一个高效执行的查询处理策略;
查询执行:依据优化得到的执行策略生成查询执行计划,并生成相应代码。
事务是数据库进行操作的一个基本单位。
ACID特性包括:
原子性(Atomicity):事务是一个不可分割的单位,要么全做,要么全不做;
一致性(Consistency):事务完成后,必须使所有数据都保持一致状态
隔离性(Isolation):一个事务的执行不受外部并发操作影响
持久性(Durability):一旦事务被提交,它对数据库的改变就是永久的。
事务的基本操作:回滚(roolback)和提交(commit).
有封锁、时间戳、乐观控制法、和多版本并发控制等。
锁是最常用的并发控制技术,是防止其他事务访问指定资源,实现并发控制的一种手段。
排他锁(X写锁):当数据被加上写锁,其他事务不能对该数据进行读和写;
共享锁(S读锁):当数据被加上读锁,允许其他事务对该数据进行读,不允许写。
一级封锁协议:事务在修改数据之前加写锁,直到事务结束才释放。该协议可以防止丢失修改;
二级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,读完后即可释放读锁。该协议避免了读脏数据;
`
三级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,直到事务结束才释放。该协议解决了不可重复读问题。
丢失修改:指事务1和事务2同时读入相同的数据并进行修改,事务2提交的结果破坏了事务1提交的结果,导致事务1进行的修改丢失。
问题 | 描述 |
---|---|
脏读 | 一个事务读到另一个事务还没提交的数据 |
不可重复读 | 一个事务先后读取同一条记录,但两次读取的数据不同 |
幻读 | 一个事务按照条件查询数据时,没有对应的数据行,但是再插入数据时,又发现这行数据已经存在 |
冗余数据:例如 学生-2 出现了两次。
修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。
删除异常:删除一个信息,那么也会丢失其它信息。例如删除了课程-1需要删除第一行和第三行,那么学生-1的信息就会丢失。
插入异常:例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。
为了解决这些问题,从而引入了规范化。
数据字典的内容包括数据项、数据结构、数据流、数据存储、处理过程五个部分。
数据字典是对数据库中数据的描述,即元数据,而不是数据本身。数据字典在需求分析阶段建立。
事务隔离级别 | 读脏 | 不可重复读 | 幻读 |
---|---|---|---|
(1)读未提交(read-uncommitted) | 是 | 是 | 是 |
(2)不可重复读(read-committed) | 否 | 是 | 是 |
(3)可重复读(repeatable-read)(默认) | 否 | 否 | 是 |
(4)串行化(serializable) | 否 | 否 | 否 |