关于模式分解的几个事实
(1)分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。 (2)若要求分解具有无损连接性,那么模式分解一定可以达到BCNF。
(3)若要求分解保持函数依赖,那么模式分解可以达到3NF,但不一定能达到BCNF。 (4)若要求分解既具有无损连接性,又保持函数数依赖,则模式分解可以达到3NF,但不一定能达到BCNF 6、数据库的分析与设计
(1)数据库设计的6个阶段:需求阶段、概念结构阶段、逻辑结构设计、物理结构设计、数据库实施、运行维护
(2)设计概念结构通常有4类方法:自顶向下、自底向上、由里向外和混合策略。
E-R模型为工具来描述概念结构。最常用的设计策略是自底向上设计策略 E-R方法的步骤
a.设计局部E-R图 b.设计全局E-R图 解决属性冲突、结构冲突、命名冲突 c.全局E-R图的优化
(3) 逻辑结构设计
E-R模型向关系模型转换: a.实体转换为关系,属性转换为关系的属性,实体码转换为关系的码
b.1:1的联系,可以转换为一个关系,也可以与联系的任意一端实体关系模式合并
c.1:n的联系可以转换为一个独立关系(属性为1端和n端实体的码和联系本身属性)(码为n端实体码),也可以与联系的n端实体关系模式合并(加入1端实体码) d.m:n联系转换为一个关系模式(码为各实体码组合)
e.3个或3个以上的多元联系转换为一个关系模式,模式的码由联系的实体码组成。 7、物理结构设计
(1)存储记录的格式设计:记录的垂直分割法、记录的水平分割法。 (2)存储方法设计:顺序存放、散列存放和聚簇存放。
(3)存取方法设计:索引是一种非常重要的存取路径(建立在经常查询和连接的属性组上) 8、规范化理论是数据库设计的理论基础,可以应用到数据库设计的不同阶段。
第8章 数据库系统实现技术
1、数据库管理系统概述
(1)DBMS的基本功能:a. 数据库定义功能(DDL):外模式、模式、内模式、完整性、
安全保密、索引、视图定义,定义存储在数据字典(系统目录),是DBMS运行的基本
依据。
b. 数据操纵功能(DML):检索、插入、更新和删除操作。 c.数据存储和管理:
d.事务管理:并发和故障恢复。 e. 通信功能和数据转换功能等
(2)DBMS的程序模块:数据定义模块、数据操纵模块、数据库运行管理模块、数据库组
织、存储和管理模块、数据库建立、维护和其他方面模块。 (3)DBMS的层次结构:最上层是应用层位于DBMS核心之外。 (2)第二层是语言翻译处理层它处理的对象是数据库语言 SQL,
(3)第三层是数据存取层:该层处理的对象是单个元组。
(4)第四层是数据存储层。该层处理的对象是数据页和系统缓冲区。
(5)操作系统是DBMS的基础。提供的存取原语和基本的存取方法通常作为与DBMS存
储层的接口。它处理的对象是数据文件的物理块。 2、数据库管理系统的主要成分:
三个主要成分:存储管理器(负责外存和内存缓冲区管理)、查询处理器(DDL编译、安全定义和查询、完整定义和控制、查询编译优化和执行)、事务管理器(ACID特性,事务管理、并发控制、日志管理和故障恢复)
存储管理器重要模块:存储管理、缓冲区管理、索引/文件/记录管理器 查询处理器重要模块:DDL编译器、查询编译器、执行引擎
事务管理器重要模块:事务管理、日志和恢复、并发控制。 缓冲区和锁表是DBMS管理的重要内存结构。
(1)存储管理器:负责管理的数据包括:目标数据、元数据、索引和日志等。
a.物理存储介质层次:高速缓冲存储器、主存储器、第二级存储器、第三级存储器,依次访问速度降低,价格也降低。
其中高速缓冲存储器、主存储器为基本存储(易失性存储),第二级存储器(例如磁盘)称为辅助存储器或联机存储器,第三级存储器(如磁带、光盘机)也叫脱机存储器。第二级和第三级存储器为外存。
磁盘块为磁盘空间分配的基本单位,也是磁盘与主存传输数据的逻辑单元。 b. 数据组织: 一个数据库映为多个不同文件, 为了将不同大小记录组织在同一个磁盘块中,常采用分槽的页结构,即块开始有块头(包括块中记录个数、块中空闲空间尾指针、记录的位置和大小的数组)、中间为空闲区、尾部为分配的记录。 C. 缓冲区管理:缓冲区替换策略(最近最少使用LRU,先进先出FIFO、时钟算法、系统控制法等.
d.数据字典:存储关于数据库的描述信息。必须存储的目录信息包括:关系基本信息、用户信息、索引信息和统计信息。
e. 索引结构:支持对所要求的数据进行快速定位的附加数据结构称为索引。
一个文件可以有多个索引,一个索引包括一个属性和多个属性(查找码或搜索码),以及对应记录的位置。
顺序索引:查找码按顺序存储如B+树索引,在顺序索引中,如果对应的记录也按查找码排列,则称为聚集索引(主索引)。
对单个关系中元组的查询可分为点查询和范围查询: 点查询:查询特定属性上指定值的元组,一般为查询结果为单个记录 比如 select * from student from s#=’001’
范围查询:查询给定属性值在指定范围的所有元组,一般查询结果为多个记录 select * from student from s# between ‘001’ and ‘009’
顺序索引支持点查询和范围查询,散列索引支持点查询,不支持范围查询(注意) (2) 查询处理: 查询处理器最主要的模块查询编译器和查询执行引擎.
a.查询处理过程:分析查询语句语法(生成语法分析树,翻译为关系表达式,形成初始查询计划)、选择逻辑查询计划(生成逻辑查询计划树或扩展的关系代数表达式)、选择物理查询计划(生成物理查询计划树)、查询执行。
逻辑查询选择:初始查个询计划转化为一个预期执行执行时间较小的等价计划过程。 b.选择逻辑查询计划和选择物理查询计划的步骤通称为查询优化。
物理查询计划选择常采用基于代价的查询计划选择方法(根据选定的逻辑查询计划派生多个不同物理查询计划,并选择代价最小或接近最小的物理查询计划)。
关系代数表达式等价:选择运算对并、交、差具有分配律:
σP(E1 ∪ E2)=σP(E1)∪ σP(E2) σP(E1 ∩ E2)=σP(E1)∩ σP(E2)
σP(E1 - E2)=σP(E1)- σP(E2)
投影对并运算分配律:∏L(E1 ∪ E2)=∏L(E1) ∪ ∏L(E2)
c.查询执行:查询执行的最基本动作是关系运算的执行。选择运算的两种实现方式:全表扫描(依次访问表中的每一块),索引扫描。 (3)事务管理
a.事务的概念:数据库的一些操作的集合通常是一个独立单元,这种具有独立性的逻辑单元即是事务
b.事务的特性:
1)原子性(Atomicity )。事务的所有操作在数据库中是不可分割的,或全部反映出来或全部不反映。
2)一致性( Consistency)。事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。即数据库中只包含成功事务提交的结果。
3)隔离性(Isolation)。事务的执行不能被其他事务所干扰,一个事务内部的操作及使用的数据对其他并发事务是隔离的,互不影响。
4)持久性(Durability)。事务一旦提交并执行后,它对数据库中数据的改变是永久的。 事务特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(durability)。
原子性、持久性:事务管理器中故障恢复机制责任。一致性:应用程序员的责任。隔离性:事务管理器中并发控制部件责任。 (4)事务的并发控制 a.事务的并发执行
并发执行时可能会破坏数据库的一致性,主要问题包括以下三方面:
1)丢失更新。 2)对未提交更新的依赖。(读脏数据) 3)不一致的分析。(不可重复读)
b.并发事务的调度
如果多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行结果相同,则称这个调度为可串行化的调度。若用等价的概念来表示就是指某个调度等价于一个串行调度。
可串行化是多个事务并发执行的正确性准则。
事务的可恢复调度:对于每对事务Ti和Tj,如果Tj读取了Ti所写的数据,则Ti先于Tj提交。
级联回滚:一个事务导致依赖它的一系列事务回滚的现象。
无级联回滚(调度):由于级联回滚导致大量工作撤销,所以对调度加以限制,避免级联回滚发生,这样的调度为无级联调度。
可串行化且无级联(可恢复)调度保证数据库一致性,是我们所需要的。 (5).封锁
在事务的并发执行过程中为保证数据库的一致性,常采用封锁的方法来限制其他事务对该事务数据项的访问。对数据项加锁的方式主要有两种。 1)共享锁。如果事务T获得了数据项Q上的共享型锁(记为S),则Ti可读Q但不能写e。
2)排他锁。如果事务Ti获得了数据项Q上的排他型锁(记为X),则T既可读Q又可写Q。
注意:加了共享锁的数据项可以再加共享锁,不能加排他锁。
加了排他锁的数据项不能再加共享锁和排他锁。 简言之:共享锁与共享锁相容,与排他锁不相容
排他锁与任何锁不相容。
两阶段封锁协议保证可串行性,它要求每个事务分两个阶段提出加锁和解锁申请。可保证可串行化。
1)增长阶段。事务可以获得锁,但不能释放锁。
2)缩减阶段。事务可以释放锁,但不能获得新锁。
两阶段封锁增强协议:严格两阶段封锁协议和强两阶段封锁协议
严格两阶段封锁协议:在遵循两阶段封锁协议下,要求事务的排他锁在事务提交后才能释放。
强两阶段封锁协议:在遵循两阶段封锁协议下,要求事务的所有锁在事务提交前不能释放。
两阶段封锁协议不能保证死锁发生。 (6)故障恢复
a.故障的类型
1)事务故障可分为逻辑错误和系统错误,它们都可能造成事务执行失败。事务没有达到预期的终点。 2)系统故障:硬件故障或者是数据库软件或操作系统的错误,致使系统停止运行。主存储器内容丢失,而外存储器完好无损。
3)磁盘故障。数据传送操作过程中由于磁头损坏或故障而造成的数据内容丢失。 b.基于日志的恢复
日志包括事务开始日志记录、更新日志记录、事务提交日志记录和事务终止日志记录。 登记日志记录原则:先写日志原则
发生事务故障后,事务故障恢复的步骤如下: (1)反向扫描日志,查找该事务的更新记录C
(2)对事务的更新操作执行逆操作,将日志记录中的“改前值”写人数据库。 (3)反复进行直到恢复到该事务的开始日志,则事务故障恢复结束。
对于系统的故障恢复步骤如下:
(1)正向扫描日志文件,将在故障发生前提交的事务的标识记入REDO队列;将故障发生时尚未完成的事务的标识记人UNDO队列。
(2)对UNDO队列中的事务进行反向扫描,执行逆操作。
(3)对REDO队列中的事务进行正向扫描,重新执行日志记录登记操作。 介质故障恢复:系统备份后,装入后备副本和日志副本,由系统恢复。
第9章 主流关系数据库管理系统、工具及新技术
第一部分 主流关系数据库管理系统
1、主要的关系数据库产品:前流行的数据库管理系统绝大多数是关系型数据库管理系统,一般可分为如下3类:
(1)以PC机、微型机系统为运行环境的数据库管理系统。
(2)以Oracle为代表的数据库管理系统,这类系统还有IBM DB2,Sybase,Microsoft SQI.
Server等,也被称为主流数据库管理系统。 2、新应用需求对关系DBMS的挑战:
高可靠和高安全,多媒体、大容量、复杂数据应用,可伸缩协同服务,高性能管理大系统能力,支持互联能力,联机事务处理和决策、联机分析处理能力。
3、关系DBMS发展趋势:智能化、集成化,支持互联网应用,产品系列化,支持扩展关系,保证安全性。
4、SQL Server 2000
体系结构:支持客户机/服务器体系结构
(1)三部分组成:客户机端组件、服务器端组件和通信服务组件。
(2)客户机端组件:企业管理器、查询分析器、数据传输服务DTS、客户端网络实用工具、联机丛书。
(3)服务端组件:SQL服务器服务、SQL服务器代理、分布式事务协调服务、服务器网络使用工具
通信组件: (4)、SQL Server2000功能特点:1)充分的Web支持 2)高度可伸缩和可靠性 3)完善的数据库功能
4)数据仓库功能 5)易于使用和管理 6)网络无关性
(5)、SQL数据库组成:系统数据库(Master(基本配置信息)、Model(用户数据库模版)、Tempdb(临时表)、Msdb(调度和历史作业)和用户数据库。
(6)SQL Server2000中常用数据库对象:表、数据类型、约束、规则、视图、索引、默认值、触发器、存储过程和用户自定义函数。 SQL Server 2000多版本支持
SQL Server 2000提供了各种不同的版本,包括SQL Server 2000企业版、SQL Server 2000标准版、SQLServer 2000个人版、SQL Server 2000开发人员版,SQL Server 2000企业评估版,SQL Server 2000桌面引擎和SQL Server 2000 Windows CE版。
(7)从Internet访问SQL Server2000数据库:1)Windows2000和IIS作为Internet平台 2)用ISAPI(Internet Server API函数调用集)访问SQL Server 3)ASP(Active Server Pages服务端脚本)访问SQL Server 4)XML(可扩展标记语言,交换数据和文件的标准)访问SQL Server
5、Oracle数据库系统
(1)目前比较新的版本为 Oracle 11g,Oracle最初被设计为关系数据库管理系统,自版本8起,Oracle定位成一个对象-关系数据库管理系统。 (2)Oracle体系结构
Oracle服务器由Oracle数据库(Oracle Database)和Oracle实例(Oracle Instantce)组成。Oracle数据库是存储数据的集合,包括日志文件和控制文件。Oracle实例包括系统进程和该数据库的所有用户进程。
(3)Oracle数据库结构
Oracle数据库的逻辑结构由数据库定义构成,涉及模式对象和多个表空间。 Oracle的表空间、段和盘区用于描述Oracle物理存储结构的术语。 1)数据库、表空间和数据文件的关系 表空间是逻辑存储单元,有如下特性:
每个Oracle数据库由被分成一个或多个表空间,分为一个SYSTEM表空间和至少一个用户表空间。
每个表空间包括一个或多个数据文件,是一对多的关系。
一个Oracle数据库总存储容量是该数据库所有表空间的存储容量之和。
Oracle数据库的物理存储按数据块、盘区和段来组织。Oracle使用以下四种类型段:数据段、索引段、临时段和回滚段。 (5)Oracle实例
Oracle实例:由系统全局区(SGA)、用户进程和Oracle进程(分为服务器进程和后台进程)组成。