【系统分析师之路】系统分析师必知必会(数据库下篇)

本文详细讲解了规范化理论的键概念,事务的四大特性,并发控制难题与解决策略,反规范化技术,数据库主从复制,联邦数据库系统,数据库分区与集群,以及数据挖掘和数据库缓存技术。深入理解这些内容有助于提升系统分析师的专业素养。
摘要由CSDN通过智能技术生成

【系统分析师之路】系统分析师必知必会(数据库下篇)

系统分析师必知必会 数据库下篇

十七. 规范化理论的键

1. 超键

它的特征是可以唯一标识元祖。
超键跟候选键相比,可能有冗余的属性。

2. 候选键

超键消除冗余属性之后得到。
比如学号,性别,姓名的关系表中,学号和姓名就是超键,但不是候选键,只有学号才是这个关系表的候选键。

3. 主键

候选键当中任选一个。
候选键可以有多个,但是关系表的主键肯定只有一个。

4. 外键

其他关系的主键。

5. 求候选键

将关系模式的函数依赖关系用有向图的方式表示;
找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中的所有结点,则该属性集为关系模式的候选键。
若入度为0的属性集不能遍历图中所有的结点,则需要尝试将一些中间结点(既有入度又有出度的结点),并入入度为0的属性集中,直至该结点能够遍历所有的结点,此时的集合就是候选键

十八. 事务的基本特征

事务是把多个操作封装起来,把它当作一个整体来工作。
因为很多操作具有关联性,可以被看作是一个整体。
事务的四个特征:原子性,一致性,隔离性,持续性。

1. 原子性

事务里面的操作,要么全做要么全不做。

2. 一致性

事务在执行之前,保持一致的状态,事务在执行之后,也需要保证一致的状态。

3. 隔离性

事务之间是相互隔离的,互不影响。

4. 持续性

事务执行之后其影响和结果是持续的。

十九. 并发控制存在的问题

1. 丢失更新

事务T1读取a的值之后,到a的值更新之前,事务T2也读取a并更新的话,那么事务T1的更新就丢失了。

2. 不可重复读

不可重复读主要是出现在验算不一致的情况下发生。比如事务T1读取a的值和b的值,把它们进行累加操作,事务T2更新了a的值并写回,这之后再演算时就会出现不一致的情况。演算无效就是不可重复读。

3. 读脏数据

不是真正的数据,只是在事务处理时产生的数据。在RollBack的时候产生。比如从数据库读取了数据a,并执行了对a的更新操作之后,在执行Rollback之前,如果事务T2也读取了a的值,那么事务T2读取的值就是脏数据

4. 死锁

数据库产生死锁的原因是两个或多个数据事务都已经封锁了一些数据对象,然后又都请求已为其他事务封锁的数据对象加锁,从而出现死等待。
死锁的诊断方法,一般有超时法和等待图法。

5. 防死锁机制

通过提供读锁和写锁的相互阻塞,来解决并发问题。
锁机制的基本概念是读取操作之前先加锁,成功后方能读写数据。
读操作加读锁,写操作加写锁。读锁会阻塞写锁,即加了读锁的数据,在未释放读锁之前不能加写锁,可以加读锁;
同样,写锁会阻塞读锁,在写锁未释放前,不能再加读锁和写锁。
其实质是使得相互冲突的并发读写操作,变为串行化读写操作,来解决并发问题。
采用封锁的方法虽然可以有效防止数据的不一致性,但封锁本身也会产生一些麻烦,最主要就是死锁问题。
也就是说,多个事务申请不同封锁,由于申请者均拥有一部分封锁权,而又需等待另外事务拥有的部分封锁而引起的永无休止的等待

二十. 反规范化

1. 反规范化概念

也叫逆规范化或解除规范化方法
指的是将一个规范化的关系模式变成非规范化的关系模式
或者降低某个关系模式的范式标准(例如从3NF降低为1NF)的过程。

1)优点

避免进行表之间的连接操作,可以提高数据操作的性能

2)缺点

是随着范式标准的降低,必然会带来数据冗余、更新异常、插入异常和删除异常等问题

2. 反规范化诞生背景

关系数据库通过多表连接查询来用户查询需求,而表与表之间的连接操作会带来较大的性能开销。
系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降。

3. 增加派生性冗余列

增加派生列指增加的列来自其它表中的数据,由它们计算生成
它的作用是在查询时减少连接操作,避免使用聚集函数。

4. 增加冗余列

增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作

5. 重新组表

重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

6. 分割表

表分割包括水平分割与垂直分割两种形式

1)水平分割

根据一列或多列数据的值把数据行放到两个独立的表中。
按记录进行分割,不同的记录可以分开保存,每个子表的列数相同。
分割的条件可能是某列或多列数据的值,如时间参数。
水平分割优缺点 理由
优点 水平分割后可以降低在查询时需要读取的数据和索引的页数,同时也降低了索引的层数,提高查询速度
缺点 水平分割会给应用增加复杂度,在查询时需要多个表名,查询所有数据需要union操作

2)垂直分割

把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
即把一条记录分开多个地方保存,每个子表的行数相同。
把主键和一些行放到一个表,然后把主键和另外的列放到另一个表中,通过主键进行关联。

7. 解决数据完整性

无论使用何种反规范技术,都需要一定的管理来维护数据的完整性
常用的方法是批处理维护、应用逻辑和触发器。

1)批处理维护

是指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改
这只能在对实时性要求不高的情况下使用。

2)应用逻辑实现

要求必须在同一事务中对所有涉及的表进行增、删、改操作。
用应用逻辑来实现数据的完整性风险较大,因为同一逻辑必须在所有的应用中使用和维护,容易遗漏,
特别是在需求变化时,不易于维护。

3)触发器

对数据的任何修改立即触发对复制列或派生列的相应修改。
触发器是实时的,而且相应的处理逻辑只在一个地方出现,易于维护。
一般来说,是解决这类问题的最好的办法。

二十一. 数据库主从复制策略

1. 主从复制概念

是用来建立一个和主数据库完全一样的数据库环境,称为主从数据库
主数据库一般是准实时的业务数据库。

2. 主从复制作用

做数据的备份
架构的扩展,提高IO性能
读写分离,使数据库能支撑更大的并发。

3. 主要原理

数据库有个bin-log二进制文件,记录了所有sql语句。
我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可

4. 主从复制策略

读写分离设置物理上不同的主/从服务器,让主服务器负责数据的写操作,从服务器负责数据的读操作,从而有效减少数据并发操作的延迟,但却带来了不一致性的风险。因此,需要采用主从复制策略保持数据的一致性。
在MYSQL数据库中是通过binary log来实现主从服务器的数据同步,MySQL数据库支持的三种复制类型分别是基于SQL语句复制,基于行的复制,混合模式复制。

5. 关系与非关系数据库数据同步策略

通过定时任务机制做定期数据更新。
通过触发器完成数据同步。
通过数据库插件完成数据同步。

二十二. 联邦数据库系统

1)概念定义

联邦数据库系统是一个彼此协作,又相互独立的数据库的集合,它将成员数据库系统按不用程度进行集成。
数据库之间通过接口查询,互相通信,数据分布在不同地方的计算机或数据库服务器上,通过网络连接。
联邦数据库集成是把多个数据库系统联合在一起,构成“联邦数据库系统”
对该系统整体提供控制和协同操作的软件叫做联邦数据库系统(FDMBS)。

2)分类特征

联邦数据库的分类:紧耦合和松耦合。
联邦数据库的特征:分布性,异构性,自治性,透明性。
联邦数据库会有公共的标准的接口。

3)特点

联邦数据库提供集成的数据格式,对用户提供统一的访问,屏蔽了各个数据库的复杂性和分布情况,简化了开发数据库查询和对数据统一理解的工作。这种分布的数据集成,更加符合应用系统的实际情况。
异构数据源不仅仅是数据库系统,通过中间件可以扩展到传感器,文件和应用程序等。

二十三. 数据库分区

1)数据库分区的概念

将一个表或索引物理地分解为多个更小,更可管理的部分。
就访问数据库的应用而言,逻辑上讲只有一个表或者一个索引,但在物理上这个表或索引可能由数十个物理分区组成。
每个分区都是一个独立的对象。可以独自处理也可以作为一个更大对象的一部分进行处理。

2)数据库分区的好处
1. 提高数据可用性

无论在数据仓库还是OLTP系统中都提高了数据的可用性。
可用性的提高来源于每个分区的独立性。

2. 减少管理负担

由于从数据库中去除了大段,相应的减轻了管理的负担,在一个100GB的表上管理操作肯定比在各个10GB的表上执行10次相同的操作负担要大得多。

3. 改善某些查询的性能

主要是在大型仓库环境中有此好处。通过使用分区,可以消除很大的数据区间,从而不必考虑它们,相应的不必访问这些数据,但在事务性系统中并不适用。
因为在这些系统中本身就只是访问少量的数据。

4. 减少大容量OLTP系统上的竞争

可以把修改分布到多个单独的分区上,从而减少大容量OLTP系统的竞争,如果一个段遭遇了激烈的竞争,可以把它分为多个段,从而成比例的减少竞争。

3)按时间分区的优点

很容易的完成净化(即删除一个分区)
归档也很轻松,只需先重新复制一个备份的表空间后再恢复。
通过实现压缩可以减少空间的占用,备份的工作量会减少。

4)分区的段压缩技术

段压缩技术主要用于对数据进行压缩,以减少磁盘占用的空间。

5)数据物理分区

物理数据分区技术一般分为水平分区和垂直分区,数据库中常见的是水平分区。水平分区分为范围分区、哈希分区、列表分区等

范围分区哈希分区列表分区
数据值连续连续离散均可
数据管理能力
实施难度与可维护性
数据分布不均匀均匀
1. 范围分区

就是根据数据库表中某一字段的值的范围来划分分区。
范围分区优点:实现容易、数据管理能力强、提高查询效果、利于维护如备份恢复时间都可缩短、利于做过期过处理
范围分区缺点:数据分布不均匀所以可以与哈希分区组合应用

2. 散列分区

散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。

3. 列表分区

列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

二十四. 并发控制的封锁协议

1. 一级封锁协议

一级封锁协议:事务T在修改R之前,必须先对其加X锁,直到事物结束的时候释放。它可以防止丢失修改。

2. 二级封锁协议

二级封锁协议:在一级封锁协议的基础上,加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。它可以方式丢失修改和读脏数据的情况。

3. 三级封锁协议

三级封锁协议:在一级封锁协议的基础上,加上事务T在读取数据R之前先对其加S锁,直到事务结束之后才释放S锁。它不但可以防止丢失更新,读脏数据,还可以解决不可重复读的情况。

4. 两段锁协议

两段锁协议:可串型化的,可能发生死锁。

二十五. 数据库集群技术

1. 概念

利用多台数据库服务器,构成一个虚拟单一的数据库逻辑映像,如同单数据库一样,向客户端提供透明的服务。

2. 背景

数据库系统是大多数商业信息系统的核心,除了业务逻辑之外,企业对数据库系统的系统性能,系统可靠性和服务可用性都提出了较高要求。

3. 特徴

1)两台或者多台数据库服务器
如果只有一台数据库服务器是不能称其为集群的。
2)透明服务
集群向客户端提供的服务与单机系统向客户端提供的服务,从通讯协议上保持二进制兼容。

4. 按数据库集群的架构分类

数据库集群的架构可分为共享磁盘型和非共享磁盘型数据库集群.

1)共享磁盘型数据库集群系统

只有一个单一的数据集,不存在节点之间的数据同步。

2)非共享磁盘型数据库集群系统

包含多个物理机器,为保持统一的逻辑数据视图,数据同步是一个核心问题。

5. 数据库集群系统中同步机制
1)串行异步复制

主要采用数据库日志传送或者硬盘传送块传送技术来实现。
主数据库完成事务处理后,生成事务日志或将数据写入到数据块中,
通过FIFO队列的形式,将数据传送到备份数据库并得到一致数据。
存在的主要问题有异步会存在时间差,会带来主从数据库的不一致,也可能会丢失数据;同时会带来额外开销。

2)串行同步复制

此类集群往往由昂贵的专用软硬件构成,采用专用的高速网络和软件技术,
将每个数据库的请求,通过同步复制技术,将每个数据库的请求通过同步的方式,同步在主备两台数据库服务器执行正确后,才将结果返回给数据库客户。
其主要特点是主备服务器同时处理,性能低,而且专用系统造价昂贵。

3)基于共享存储技术

典型的产品就是数据库的双机容错技术,也包括Oracle的RAC产品。
该系统的架构是多个机器共享一个磁盘阵列,服务器通过虚拟IP提供服务,形成单一的逻辑数据库。
一旦某一个机器异常,则通过心跳检测或其他信息交换协议,完成主备机器的切换。
主要特点就是单一数据存储,存在数据同步问题,但是单一数据往往成为整个系统的单点错误源;
通过数据库中常用的备份或复制方法获取第二份数据,以保证数据的安全。
因此所有复制或备份方法的缺点,此类系统都存在。
另外主备机器切换也需要时间开销。

4)基于实时数据同步技术

此类集群的基本特征是结点有自己独立的存储设备,数据采用非共享存储。
因此该集群一般提供负载均衡技术,采用的负载均衡技术有基于连接的负载均衡和基于请求的负载均衡。
在结点之间的书同步上,或者通过专门的高速数据同步技术,或者通过分布式数据库中的两阶段提交协议来实现。
此类数据库集群的特点:
实时冗余一致的数据存储,理论上实现了数据的零丢失,可以做到高可用性。
由于需要额外的数据同步操作,因此性能会受到一定的影响,如采用两阶段提交来实现同步,则慢一些;同时,额外的数据同步也限制了集群中的结点数目。

6. 数据库集群与分布式数据库系统
1)区别

特征 数据库集群 分布式数据库
数据存储 具有单份数据集,有的具有两份或多份相似的数据集 具有完全不同的数据集,是将几台服务器集中在一起
同构异构 往往是同构系统,具有相同的操作系统和数据库系统版本 可以是异构系统,包含不同的操作系统和不同的数据库系统
配置部署 建立在一个网段内的高速局域网中 一般是跨网段,需要路由
可用容错 一台节点跨了,其他节点顶上 一个节点跨了,这个节点的数据服务不可用
数据处理 不一定需要要分布式协作就能出结果 需要多个节点分布式执行,协同配合才能出结果

2)共性特点

分布式数据库中的每一个数据节点,为提升高可用和性能,都可以做成数据库集群。
为保证分布式数据库的高可靠、每一个数据节点都做成数据库集群,因此,目前主流的分布式数据库,应该叫分布式数据库集群

二十六. 数据库ER模型

一个实体可以分解成一个关系模式;1对1的联系,既可以是单独转成一个关系模式,也可以将联系放在任何一边的实体上。
1对多的联系至少也需要转成两个关系模式,联系和实体放在一个关系模式中;
多对多的关系模式至少可以转成三个关系模式。

二十七. NoSQL

1. 产生背景

随着互联网Web2.0网站的兴起,传统的关系数据库在应付web2.0网站特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不重新,暴露了很多难以克服的问题。
而非关系型数据库则由于其自身的特点,得到了非常迅速的发展。

2. NoSQL优点

避免了不必要的复杂性
高吞吐量
高水平扩展能力和低端硬件集群
避免了昂贵的关系对象映射

3. NoSQL缺点

不支持事务的ACID
功能简单
没有统一的查询
数据模型和查询语言没有经过数学验证
成熟度不够,大多关键特征有待实现;
开源数据库产品支持力度有限。
数据挖掘和商务智能支持不足,现有的产品无法直接使用NoSQL数据库;
NoSQL的专家现在还比较少,大部分都处于学习阶段;

4. NoSQL与关系型数据库

相比传统的关系型数据库,NoSQL在高并发支持,高效率存储查询访问,可扩展性方面都有很大的优势。
关系型 非关系型
并发支持 支持并发效率低 并发性能高
存储与查询 关系表方式存储,SQL查询 海量数据存储,查询效率高
扩展方式 向上扩展 向外扩展
索引方式 B树,哈希 键值索引
应用领域 面向通用领域 特定应用领域

5. NoSQL的特征

特征 关系型数据库 NoSQL
数据一致性 强一致性 弱一致性
数据类型 结构化数据 非结构化数据
事务 高事务性 弱事务性
水平扩展 弱 强
数据容量 有限数据 海量数据

6. 非关系数据库分类
1)键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表。
这个表中有一个特定的键和一个指针指向特定的数据。
键值模型对于IT系统来说优势在于简单容易部署。
但是如果DBA只对部分值进行查询和更新的时候,键值就显得效率低下了。
支持的数据库产品包括:TokyoCabinet/Tyrant,Redis,Voldemort,Oracle BDB。

2)列存储数据库

用来应对分布式存储海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。
数据库产品包括:Cassandra,HBase,Riak。

3)文档型数据库

文档型数据库的灵感来自于Lotus Notes办公软件,而且它同第一种键值存储相类似。
该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。
文档型数据库可以看作是键值数据库的升级版,允许中间嵌套键值。而且它的查询效率比KeyValue数据库的查询要来得高。
数据库产品包括:CouchDB,MongoDB,SequoiaDB。

4)图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。
NoSQL数据库没有标准的查询语言(SQL),因此进行数据库査询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。数据库产品包括:Neo4J,InfoGrid,Infinite Graph。

7. 支持的存储类型

支持的数据存储类型有:

1)表格/列存储

存储稀疏表格数据,类似于传统的二维表格式存储;

2)文档存储

用于存储非结构化或半结构化文件;

3)图像存储

利用节点、边和属性的方式存储图片类数据,常被用于存储社交网络服务中;

4)键值存储

类似哈希表一样存储简单的键值对,有基于内存和基于磁盘两种实现方式;

5)对象和多值存储

对象数据库存储面向对象语言中的对象,多值数据库存储表格型数据,每个单元格中可存储多个值。

二十八. 内存数据库

内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存,快速算法,并行操作方面也进行了相应的改进,所以数据处理速度比传统的数据库的处理速度要快很多,一般都在十倍以上。
内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。
常见的内存数据库有:Redis,eXtremeDB,TT,FastDB,SQLite,Microsoft SQL Server Compact,MySQL的MEMORY存储引擎等。
内存数据库和NoSQL有重叠的部分。虽然它叫内存数据库,但它也会定期写数据到硬盘的。
Memcahe/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web等应用速度,提高可扩展性。

二十九. 大数据

其实它是一个对大量数据进行海量存储的这么一个技术。
大数据具有的特征有:
高度可扩展性
高性能
高度容错
支持异构环境
较短的分析延迟
易用且开放的接口
较低成本
向下兼容性
比较维度 传统数据 大数据
数据量 GB或TB级 PB或以上
数据分析需求 现有数据的分析和检测 深度分析(关联分析回归分析)
硬件平台 高端服务器 集群平台

三十. 数据库缓存技术

1)Redis的定义

redis是一个开源的,使用C语言编写的,支持网络交互的,可基于内存也可持久化的key-Value数据库。
它是一个高性能的键-值数据库。也是一种内存数据库。
redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化
与memcached这种纯内存数据库不同,它是一种磁盘内存同步数据库。

2)Redis的特点

丰富的数据结构
支持持久化
支持事务(事务:一个完整的动作,要么全部执行,要么什么都没做。)
支持主从

3)memcached的概念

Memcached是一个开源的,支持高性能,高并发的分布式内存缓存系统,由C语言编写,总共2000多行代码。
从软件名称上看,前3个字符“Mem”就是内存的意思,而接下来的后面5个字符“cache”就是缓存的意思,最后一个字符d,是daemon的意思,代表是服务器端守护进程模式服务。

4)memcached的作用

通过在自身内存中缓存关系型数据库的查询结果,减少数据库被访问的次数,以提高动态Web应用的速度,提高网站架构的并发能力和可扩展性。
Memcached服务的运行原理是通过在事先规划好的系统内存空间中临时缓存数据库中的各类数据,以达到减少前端业务服务对数据库的直接高并发访问,从而提升大规模网站集群中动态服务的并发访问能力

5)redis和memcached比较

memcached redis
类型 纯内存数据库 内存磁盘同步数据库
数据类型 在定义value时就要固定数据类型 不需要
虚拟内存 不支持 支持
过期策略 支持 支持
存储数据安全 不支持 可以将数据同步到dump.db中
灾难恢复 不支持 可以将磁盘中的数据恢复到内存中
分布式 支持 主从同步
订阅与发布 不支持 支持

三十一. 数据挖掘方法

从大量的,不完全的,有噪音的,模糊的,随机的实际应用数据中,提取隐含在其中的人们事先不知道的,但又是潜在有用的知识或信息的过程。
数据挖掘通过预测未来趋势及行为,做出前摄的,基于知识的决策。
挖掘先前未知的,有效的,可实用的信息

1. 关联分析

数据关联是数据库中存在的一类重要的可被发现的知识,做两次或多个变量的取值之间存在某种规律性就称为关联
挖掘出隐藏在数据间的相互关系
关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。
关联分析的重点在于快速发现那些有实用价值的关联发生的事件。

2. 序列模式分析

侧重点是分析数据之间的前后关系和因果关系。
序列分析技术主要用于发现一定时间间隔内接连发生的事件。
这些事件构成一个序列,发现的序列应该具有普遍意义。
其依据除了统计上的概率之外,还要加上时间的约束。

3. 分类分析

为每个记录赋予一个标记再按标记进行分类
分类分析通过分析具有类别的样本的特点,得到决定样本,属于各种类别的规则或方法。
利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。
其主要方法有基于统计学的贝叶斯方法,神经网络方法,决策树方法等。

4. 聚类分析

是分类分析法能力过程。先进行分类,再根据分类的结果进行标记。
是根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对每一个这样的组进行描述的过程。
其主要的依据是聚到同一个组中的样本应该彼此相似,而属于不同组的样本应该足够不相似

5. 预测

预测与分类分析相似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程。而分类则只是用于判别样本所属的离散类别而已。
预测常用的技术是回归分析

6. 时间序列分析

是随着时间的变化的事件序列,目的是预测未来发展趋势
或者寻找相似发展模式或者是发现周期性发展规律

7. 数据挖掘的流程

问题定义
建立数据挖掘库
分析数据
调整数据
模型化
评价和解释

三十二. 规范化理论—公式法模式分解

1. 保持函数依赖的分解
无损分解

将一个关系模式,分解成若干个关系模式以后,通过自然连接和投影的运算,仍然能还原到原来的关系模式。

有损分解

如果不能还原到原来的关系模式,就是有损分解。

保持函数依赖的分解

设数据库模式P={R1,R2,Rk};是关系模式R的一个分解,F是R上的一个函数依赖集,P中每个模式Ri上的FD集是Fi。如果{F1,F2,Fk}与F是等价的(即相互逻辑蕴含),那么称分解p保持FD。
冗余的函数依赖可以从既有的函数依赖中推出来,可以不用保存的。比如A-》B;A-〉C,那么A-》C就是冗余的函数依赖。

2. 公式法模式分解

公式法模式分解只适用于一分为二的情况。
定理:如果R的分解为P={R1,R2};F为R所满足的函数依赖集合,P具有无损连接性的充分必要条件是:
R1交R2=R1-R2
或者R1交R2=R2-R1;
其中R1交R2表示由R1和R2的公共属性构成;R1-R2表示在R1中去掉两者之间的公共部分后组成;如果R1和R2的公共属性能够决定R1或R2中的其他属性,这样的分解就具有无损连接性。
例题:
设R=ABC,F={A-》B},则P1={R1(AB)-R2(AC)};
P2={R1(AB)-R3(BC)};
R1-R2=B;R2-R1=C;R1交R2=A,因为A-〉B,A-〉C;所以P1是无损连接。
R1交R3=B;R1-R3=A;R3-R1=C;推出B决定A,B决定C,但这两个依赖都没有出现在F中,所以P2是有损连接。

三十三. 物化视图

1)物化视图的概念定义

物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。
物化视图存储基于远程表的数据,也可以称为快照(类似于MYSQL Server中的snapshot,静态快照) 。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。
如果你想修改本地副本,必须用高级复制的功能。
当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
物化视图,说白了,就是物理表,只不过这张表通过oracle的内部机制可以定期更新,将一些大的耗时的表连接用物化视图实现,会提高查询的效率。当然要打开查询重写选项;

2)物化视图和视图的区别

物化视图和视图类似,反映的是某个查询的结果,
但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图。

三十四. 数据库视图

1)视图的概念

它是从一个表或多个表(或视图)导出的表。
视图与表(有时为与视图区别,也称为基本表)不同,视图是一个虚表
视图所对应的数据不进行实际存储,数据库中只存储视图的定义
在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

2)视图的优点

视图能简化用户操作;
可以使用户以不同的方式查询同一数据
视图对数据库重构提供了一定程度的逻辑独立性
视图可以对机密的数据提供安全的保护

三十五. 解决数据冗余的问题

1)应用程序实现

在进行基本表的添加,修改删除操作时,从应用程序中控制两个数据表都进行相关的操作,以保障数据的一致性。

2)触发器实现

在应用程序中,只对一个基本表进行操作。但写触发器,当这个基本表发生变化时,把当日数据更新内容同步更新到当天货物销售,存货情况表中。

3)物化视图实现

建立当天货物销售,存货情况的物化视图,物化视图会把相应的数据物理存储起来,而且在订单表发生变化时会自动更新

三十六. 数据库权限

grant<权限>on 表名[(列名)]to 用户 With grant option。
可能的权限有:
权限 说明
SELECT 访问声明的表/视图的所有列/字段
INSERT 向声明的表中插入所有列字段
UPDATE 更新声明的表所有列/字段
DELETE 从声明的表中删除所有行
RULE 在表/视图上定义规则
ALL 赋予所有权限
在进行权限赋予的时候,可带一个附加选项,其选项内容包括:
附加选项 说明
CHARACTERSET 允许使用声明的字符集
COLLATION 允许使用声明的集合序列
TRANSLATION 允许使用声明的字符集转换.
DOMAIN 允许使用声明的域
WITH GRANT OPTION 允许向别人赋予同样权限

三十七. 事务服务器

事务服务器包括多个在共享内存中访问数据的进程:
服务器进程:接收用户查询(事务)、执行查询并返回结果的进程。
锁管理器进程:包括锁授予、释放锁和死锁检测。
数据库写进程:有一个或多个进程用来将修改过的缓冲块输出到基于连续方式的磁盘中。
日志写进程:该进程将日志记录从日志记录缓冲区输出到稳定存储器上。
检查点进程:定期执行检查点操作。
进程监控进程:监控其他进程。一旦有进程失败,它将为失败进程执行恢复动作。

三十八. 对象/关系映射

1. 概念

O/R映射指的是对象/关系映射,是一种编程技术
将关系数据库中的关系型数据与面向对象编程语言中类型系统定义的数据进行格式转换。

2. 优势特点

可以将业务逻辑与数据逻辑分离;
可以使得开发人员采用面向对象的方式访问底层关系型数据库。
能够做到上层应用与底层的具体数据库无关,两者解耦合

三十九. 关系数据库基本概念

1)基本关系5条性质

分量必须是原子的,即每一个分量必须是不可再分的数据项。
列是同质的,即每一列中的分量必须是同一类型的数据,来自同一个域。
属性不能重名。
行列的顺序无关。因为关系是一个集合,所以不考虑元组间的顺序。属性理论上讲也是无序的,但使用时,往往会考虑顺序。
任何两个元组不能完全相同。

2)关系数据库的属性

关系数据库中,实现实体之间的联系是通过表与表之间的公共属性。
实体间的联系反映在数据上是记录之间的联系。
实体的联系有两类,一类是实体内部的联系,一类是实体间的联系。
实体间的联系有两种:一种是同一实体集中各个实体之间的联系,另一种是不同实体集的各个实体之间的联系。

四十. 数据库故障与恢复

1. 事务故障

分为了可预期的故障和不可预期的故障两种。

1)不可预期的故障

事务本身不可预期的故障原因是违反了存储保护,计算溢出
碰到这种情况,可以让DBMS通过重做日志,撤销事务对数据库的修改,回退到事务初始状态

2)可预期的故障

事务本身可预期的故障一般是本身逻辑问题造成的
在程序中预先设置Rollback语句就可以解决问题了

2. 系统故障

原因是系统停止运转
解决办法有使用检查点的方法

3. 介质故障

最严重的故障是介质故障。一般是外存遭到了破坏
一般使用日志重做的方式来恢复

4. 数据库恢复

数据库恢复是指当数据库中的数据遭到破坏时,在尽可能短的时间内,把数据库恢复到故障发生前的状态。
在进行事务处理时,对数据更新的全部有关操作内容都要写入日志文件,当系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到该文件
当发生故障时,根据现场数据内容及相关文件来恢复系统的状态。
检查点记录的内容包括
建立检查点时刻所有正在执行的事务清单
这些事务最近一个日志记录的地址

四十一. 数据库索引

1. 索引的概念

索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。
使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

2. 索引的分类

可以分类为聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
非聚集索引与聚集索引具有相同的B树结构。如果经常使用范围查询,则B树索引比散列索引更加高效。
区别1:基础表的数据行不按非聚集键的顺序排序和存储。
区别2:非聚集索引的叶层是由索引页而不是由数据页组成。
将有利于大多数数据查询和更新的索引设置为聚簇索引。

3. 使用索引的代价

索引需要占用数据表以外的物理存储空间
创建索引和维护索引要花费一定的时间
当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。
如果建立索引不当,数据库管理系统将会不利用已经建立的索引,而采取全表扫描

4. 索引的原理

如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就「平衡树」结构
换句话说,就是整个表就变成了一个索引。主流的RDBMS都是把平衡树当做数据表默认的索引数据结构的。
在 SQL Server中,索引是按B树结构进行组织的
通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值