数据库系统概论介绍
树图思维导图提供 数据库系统概论 在线思维导图免费制作,点击“编辑”按钮,可对 数据库系统概论 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:47cdba9e897efbadf8fd158ee5ce3f08
数据库系统概论思维导图模板大纲
数据库的基本概念
数据
数据库中存储的基本对象,描述事物的符号记录。
数据库
长期存储在计算机内,有组织,可共享的大量数据的集合。
数据库管理系统
位于用户和操作系统之间的一层数据管理软件,是系统软件。
数据库系统(DBS)
主要由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成。
数据库系统的特点
数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
数据共享性高,冗余度低且易扩充
数据共享性高可以减少数据冗余,避免数据不一致性,使系统易于扩充
数据独立性高
包括物理独立性和逻辑独立性,确保应用程序与数据的存储和结构相互独立。
数据由数据库管理系统统一管理和控制
数据库管理系统负责数据的安全性、完整性、并发控制和恢复。
数据模型
概念模型
也称信息模型,按用户的观点来对数据和信息建模,用于数据库设计。
逻辑模型和物理模型
逻辑模型按计算机系统的观点对数据建模,用于数据库管理系统的实现。物理模型描述数据在系统内部的表示方式和存取方法。
常用的数据模型
包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。
数据库的系统结构
三级模式结构
包括外模式、模式(逻辑模式)、内模式(存储模式)。
二级映像功能
确保数据的物理独立性和逻辑独立性。
数据库系统的组成
硬件平台及数据库
数据库存储的物理载体。
软件
包括操作系统、数据库管理系统、应用程序等。
人员
包括数据库管理员(DBA)、应用程序员、最终用户。
关系数据库的基本概念
关系模型的数据结构:关系模型是关系数据库的基础,其数据结构非常简单,只包含单一的数据结构——关系。这种数据结构在用户看来就是一张二维表,由行和列组成,其中每一列被称为一个属性,而行则代表元组或记录。
关系操作:关系数据库中的关系操作包括查询操作和数据更新两大类。查询操作有选择、投影、连接等形式,而数据更新则包括插入、删除和修改操作。
系的完整性约束:为了保证数据的一致性和准确性,关系模型定义了几种完整性约束规则,包括实体完整性、参照完整性和用户定义的完整性。这些规则限制了数据在数据库中的存储和修改方式。
数据模型的分类
概念模型:也称为实体-联系模型,它通过实体、属性、码、实体型、实体集和联系等基本概念来描述现实世界中的事物及其联系。
逻辑模型和物理模型:逻辑模型描述了数据库中数据的逻辑结构,而物理模型则是对数据最底层的抽象,描述了数据在系统内部的表示方式和存取方法。
关系代数
传统的集合运算:并集、差集、交集以及笛卡尔积构成了关系代数中的基本集合运算。
专门的关系运算:除了集合运算外,选择、投影、连接等运算是专门为关系模型设计的,用以更精确地处理二维表格形式的数据
关系的完整性规则
实体完整性:若属性A是基本关系R的主属性,则A不能取空值。
参照完整性:涉及两个或多个关系之间的数据一致性问题,确保外码的值要么为空,要么必须对应于相关主码中的值。
用户定义的完整性:允许用户根据自身需求,为特定的应用设定一些特殊的数据约束条件。
数据定义语言
模式定义:使用CREATE SCHEMA语句定义模式,可以包含表定义、视图定义和授权定义等子句。
表定义:使用CREATE TABLE语句定义基本表,包括列名、数据类型和完整性约束条件。
视图定义:使用CREATE VIEW语句定义视图,视图是基于现有表的虚拟表。
索引定义:使用CREATE INDEX语句定义索引,索引可以加快查询速度
模式删除:使用DROP SCHEMA语句删除模式及其包含的所有数据库对象
表删除:使用DROP TABLE语句删除表。
视图删除:使用DROP VIEW语句删除视图。
索引删除:使用DROP INDEX语句删除索引。
数据操纵语言
数据查询:使用SELECT语句查询数据,可以结合WHERE、GROUP BY、HAVING和ORDER BY子句进行复杂查询。
数据插入:使用INSERT INTO语句向表中插入数据。
数据更新:使用UPDATE语句更新表中的数据。
数据删除:使用DELETE语句删除表中的数据。
数据控制语言
授权:使用GRANT语句授予用户对数据库对象的访问权限,使用REVOKE语句撤销权限。
数据查询的特殊操作
连接查询:可以通过JOIN语句进行表之间的连接查询。
嵌套查询:可以在SELECT语句中嵌套另一个SELECT语句
集合操作:可以使用UNION、INTERSECT、MINUS等操作符进行集合运算。
空值处理
使用IS NULL和IS NOT NULL来检测和处理空值。
视图
视图是虚拟表,可以简化复杂查询,提供数据抽象,保护数据隐私。
数据库的不安全因素及应对措施
非授权用户对数据库的恶意存储和破坏:通过用户身份鉴别、存取控制、视图等措施进行防范。
数据库中重要或敏感的数据被泄露:采用强制存取控制、数据加密存储、加密传输等方法进行保护。
安全环境的脆弱性:加强计算机系统的安全性保证,如使用防火墙、入侵检测系统等。
数据库安全性控制技术
用户身份鉴别:包括静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别等方法。
存取控制:分为自主存取控制和强制存取控制。自主存取控制允许用户对不同数据对象有不同的权限,而强制存取控制则为数据对象和用户分别赋予密级和许可证。
授权:通过GRANT和REVOKE语句向用户授予或收回对数据库的操作权限。
数据库角色:用于管理具有相同权限的用户群体,简化权限管理。
强制存取控制方法:对数据本身进行密级标记,只有符合密级标记要求的用户才能操作数据。
视图机制:通过定义不同的视图,限制用户对数据的访问范围,提供数据保护。
审计:记录用户对数据库的所有操作,便于监控和事后分析
数据加密:对存储和传输的数据进行加密处理,防止数据内容被未授权访问。
其他安全性保护措施
推理控制:防止通过已知信息推断出未知信息。
隐蔽信道:防止通过非正常渠道传递信息。
数据隐私保护:保护个人隐私不被侵犯。
数据库完整性的概念
数据库完整性是指数据库中的数据必须满足的一系列语义约束条件,它确保了数据的正确性和相容性。数据的正确性意味着数据符合现实世界的语义,反映了当前实际状态;数据的相容性则指数据库中同一对象在不同关系表中的数据必须符合逻辑关系。
数据库完整性的分类
实体完整性:确保每个表的主键值是唯一的,并且不允许有空值。主键是用来唯一标识表中每一行记录的属性或属性组合。
参照完整性:确保表间的引用关系正确无误。即一个表中的外键值必须在另一个表的主键中有对应的值,否则会违反参照完整性。
用户定义的完整性:根据具体应用的需求,对数据库中的数据施加额外的约束条件。这些约束条件可以是属性级别的,也可以是元组级别的
数据库完整性的实现
定义完整性约束条件:通过SQL的数据定义语言(DDL)语句来定义实体完整性、参照完整性和用户定义的完整性约束条件。
完整性检查:DBMS在数据的插入、更新和删除操作后进行完整性检查,以确保数据满足定义的约束条件
违约处理:当发现数据操作违反了完整性约束时,DBMS会采取相应的措施,如拒绝操作、级联更新或删除、设置为空值等。
数据库完整性的维护
触发器:用户可以定义在关系表上的特殊过程,当满足特定条件时自动执行,帮助维护数据库的完整性。
断言:用于定义更复杂的完整性约束,特别是涉及多个表的约束,DBMS在相应的表操作时会自动检查断言。
域:可以定义数据的取值范围,并在创建表时声明这些范围,以确保数据的合法性。
数据依赖
数据依赖是关系模式中属性之间的一种约束关系,它描述了属性之间的依赖性。常见的数据依赖类型包括函数依赖、多值依赖和传递依赖。
函数依赖
函数依赖是指在一个关系模式中,一个属性集(称为决定因素)能够唯一确定另一个属性集(称为依赖因素)。例如,如果学号可以唯一确定一个学生的姓名,那么学号和姓名之间就存在函数依赖。
范式
定义
子主题 1
1NF
每个表的每个列都是不可分割的基本数据项。
表中的所有列都应该只包含原子性数据,即不能再分解。
2NF
在1NF的基础上,要求表中的每个实例或行必须可以被唯一地区分,即表中必须有一个主键。
所有非主键属性完全依赖于主键。
3NF
在2NF的基础上,要求非主键属性之间不能相互依赖,即非主键属性应该直接依赖于主键,而不是依赖于其他非主键属性。
4NF
要求表中不存在多值依赖,即一个表中不应该有两个或多个独立的多值事实关于同一个主键
数据库设计的基本概念
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求.
数据库设计的特点
基本规律:三分技术、七分管理、十二分基础数据。
结构(数据)设计和行为(处理)设计相结合:结构设计包括模式结构设计、概念结构设计、逻辑结构设计和物理结构的设计;行为设计指应用程序设计,包括功能组织和流程控制
数据库设计的方法
手工设计法:设计质量与设计人员的经验和水平有直接关系,缺乏科学理论和工程方法的支持,工程的质量难以保证,数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价.
规范设计法:包括新奥尔良法、基于E-R模型的设计方法、3NF(第三范式)的设计方法、面向对象设计法等。这些方法将数据库设计分为若干阶段和步骤,采用辅助手段实现每一过程,按设计规程用工程化方法设计数据库.
数据库设计的基本步骤
1.需求分析 2.概念结构设计 3. 逻辑结构设计4.物理结构设计5.数据库实施数据库的运行和维护
数据库设计过程中的各级模式
数据库设计过程中形成了数据库的概念模式、模式、外模式、内模式。这些模式分别对应于数据库设计的不同阶段,从需求分析阶段的概念模式到物理设计阶段的内模式,每个阶段都有其特定的设计目标和任务.
数据库编程的基本概念
数据库编程涉及将SQL语言嵌入到宿主语言(如C、C++、Java等)中,以便在程序设计环境下操作数据库。这种编程方式允许开发者在高级语言程序中直接执行SQL语句,从而实现对数据库的访问和操作。
嵌入式SQL
嵌入式SQL是将SQL语句嵌入到宿主语言中的编程方式。为了区分SQL语句和宿主语言语句,所有SQL语句必须以EXEC SQL开头,并以分号;结束。嵌入式SQL的处理过程包括预编译、SQL语句转换为函数调用、宿主语言编译程序生成目标语言程序。
动态SQL
动态SQL是指在程序运行时动态生成SQL语句的编程技术。这种技术允许根据程序的运行状态或用户输入来构建SQL命令,从而提供更大的灵活性和适应性。
游标
游标是一种数据库编程工具,用于逐条检索结果集中的记录。在使用游标时,需要首先声明游标,然后打开游标,接着通过循环结构逐条获取记录,最后关闭游标。游标常用于处理查询结果为多条记录的场景。
存储过程
存储过程是一组为了完成某项任务而预先编写好的SQL语句集合。它们可以接受输入参数,返回输出参数,甚至可以有复杂的业务逻辑。存储过程可以提高代码的重用性和执行效率。
条件控制和循环控制语句
在数据库编程中,条件控制语句(如IF-THEN、IF-THEN-ELSE)和循环控制语句(如LOOP、WHILE-LOOP、FOR-LOOP)用于控制程序的流程,使得程序能够根据不同的条件执行不同的操作或者重复执行某些操作。
查询处理
查询处理包括查询解析、查询优化和查询执行三个阶段。
查询优化
查询优化是在保证查询结果正确性的前提下,寻找最优的查询执行计划,以提高查询效率。
查询优化器通常采用基于代价的方法,通过估算不同执行计划的代价来选择最优计划。
查询优化的关键步骤包括搜索策略、代价估算和最优计划选择。
查询执行
查询执行是将优化后的查询计划转换为实际的物理操作序列,并在数据库中执行这些操作以获取查询结果。
- 常见的查询执行算法包括嵌套循环、索引扫描、排序合并和哈希连接等
查询优化技术
关系代数优化:根据关系代数的性质和等价变换规则,对查询进行重写和简化。
物理优化:根据数据存储和访问的特点,选择合适的执行算法和索引结构,以提高查询效率
参数化查询优化:针对具有相同结构和不同参数值的查询,预先计算并存储优化结果,以避免重复优化。
并发控制的必要性:解释为什么需要并发控制,主要是为了防止数据不一致和确保事务的原子性。
事务(Transaction):定义事务的概念,它是数据库操作的一个单元,具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)这四个属性,简称ACID属性。
并发操作带来的问题:
脏读(Dirty Read):一个事务读取了另一个事务未提交的数据。
不可重复读(Non-repeatable Read):在一个事务中,多次读取同一数据集合,但得到的结果不一样,因为其他事务在这期间修改了数据。
幻读(Phantom Read):一个事务在查询一个范围内的记录时,另一个事务插入了新的记录,导致第一个事务再次查询时出现了“幻影”记录。
锁机制
介绍了不同类型的锁,如共享锁(Shared Lock)和排它锁(Exclusive Lock)。
锁的粒度可以是行级、表级或者数据库级。
两阶段锁定协议
确保事务在执行过程中不会违反数据的一致性。
时间戳
使用时间戳来对事务进行排序,以避免死锁和保证事务的可串行化。
可串行化
一种事务调度方式,使得并发执行的结果与某个事务序列的执行结果相同。
死锁
解释死锁的概念,即两个或多个事务互相等待对方持有的资源。
死锁的检测和预防策略。
乐观并发控制
与悲观锁(Pessimistic Locking)相对,乐观锁假设冲突很少发生,只在事务提交时检查是否有冲突。
多版本并发控制
一种用于提高数据库系统并发性能的技术,通过保存数据的多个版本来允许读写操作并发执行。
隔离级别
数据库事务的隔离级别,如读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
恢复的重要性
解释为什么数据库恢复是必要的,以及它如何帮助维护数据的完整性和可用性
故障类型
事务故障:事务在执行过程中被中断
系统故障:数据库系统崩溃,如操作系统崩溃或硬件故障。
介质故障:存储介质损坏导致数据丢失。
事务日志
事务日志记录了所有事务对数据库所做的修改,是恢复技术的核心。
日志的记录包括开始事务、修改数据和提交或回滚事务。
恢复策略:
向前恢复(Forward Recovery):在系统故障后,使用日志来重做(Redo)未完成的事务。
向后恢复(Backward Recovery):在事务故障后,使用日志来回滚(Undo)已部分完成的事务。
检查点
定期将内存中的数据刷新到磁盘,并记录检查点信息,以减少系统故障后的恢复时间。
日志记录技术:
包括写前日志(Write-Ahead Logging, WAL)原则,确保在修改数据前日志已经写入
日志的类型,如DML日志、DDL日志等。
恢复算法:
详细描述了如何使用事务日志进行重做和回滚操作。
数据备份与恢复:
定期备份数据库,包括全备份、增量备份和差异备份。
恢复策略,如从备份中恢复数据。
一致性问题:
确保在恢复过程中数据库保持一致性状态。
高可用性与灾难恢复
介绍高可用性的概念,以及如何在发生灾难时恢复数据库。
故障检测与预防
如何检测故障并采取预防措施,以减少故障发生的概率
事务的持久性:
确保事务一旦提交,其结果就是永久性的,即使系统发生故障。