数据库中死锁产生的原因是两个或多个数据事务都已封锁了一些数据对象,然后又都请求已为其它事务封锁的数据对象加锁,从而出现死等待。
死锁的诊断方法一般由超时法和等待图法。
三类数据库系统体系结构:
Ø 集中式:DBMS和应用程序都存放在一台计算机上;
Ø 主从式(客户机/服务器):DBMS存放在服务器上,应用程序存放在客户机上;
Ø 分布式:数据库在物理上分布在不同的场地,而逻辑上属于一个整体。
对于分布式数据库,分布透明性是指用户不必关心数据的逻辑分片,不必关心数据物理位置分配的细节,也不必关心各个场地上的数据库数据模型。
分布透明性和归入物理独立性的范围,包括三个层次:
Ø 分片透明性:最高层次的分布透明性,用户或应用程序只对全局关系进行操作,不必考虑数据分片;
Ø 位置透明性:用户或应用程序应当了解分片情况,但不必了解片段的存储场地;
Ø 局部数据模型透明性:用户或应用程序要了解分片及各片段存储的场地,但不必了解局部场地上使用的是何种数据模型。
Ø 1NF à2NF :消除部分函数依赖
Ø 2NFà 3NF :消除传递函数依赖
Ø BCNF :每个决定因素都包含码
如果一个关系模式R的决定因素都是单属性,那就意味着不可能由部分函数依赖,那就是说至少是2NF。
如果一个关系R不属于2NF,则存在以下几个问题(举例,R(仓库号,仓库地址,商品号,商品属性1,商品属性2),主键是(仓库号,商品号)):
1. 插入异常:新建一个仓库,没有商品,就无法插入仓库数据;
2. 删除异常:当一个仓库的所有商品被删掉时,仓库也随之被删掉;
3. 修改复杂:某个仓库地址改变,需要修改所有与该仓库有关的元组。
数据仓库是一个面向主题的、集成的、相对稳定且随时间变化的数据集合,用于支持管理决策。
Ø 面向主题:操作型数据库的数据组织面向事务处理(应用),而数据仓库面向主题(有可能横跨多个应用的同类、基础数据集合)。就保险公司来说,事务是指汽车保险、人寿保险,而主题是指顾客、保单、保费。
Ø 集成:最重要的特性。操作型数据库与特定应用相关,不同应用系统的数据库相互独立、异构。数据仓库中的数据是经过对各类分散的操作型数据库进行抽取、清理、加工、汇总得到的,消除了数据不一致性,数据仓库中的信息是企业内全局一致的。
Ø 相对稳定:数据仓库的数据主要供决策分析用,所以不会像操作型数据库那样频繁更新。数据仓库中的查询操作很多,但修改、删除操作很少,通常只需定期加载、刷新。
Ø 随时间变化:传统数据库只保留当前值,数据不一定有时间属性;数据仓库保存的是从建库时间起,到目前为止的数据变化过程,目的是对企业发展历程和未来趋势做出定量分析和预测,数据仓库的数据必然包含时间属性,是一系列传统数据库的数据快照。
从结构来看,有3种数据仓库模型:企业仓库、数据集市、虚拟仓库:
Ø 企业仓库:包含整个企业的各个主题的数据信息;
Ø 数据集市:包含对特定用户有用的,企业仓库数据的子集,限定于选定的主题;
Ø 虚拟仓库:传统数据库视图的集合。
数据清洗:从多个数据源中提取数据,解决不同数据源格式不统一的问题。
常见的数据挖掘算法有:决策树、神经网络、遗传算法、关联规则挖掘算法。
数据挖掘分析方法:
Ø 关联分析:挖掘出藏在数据间的相互关系;
Ø 序列模式分析:挖掘出藏在数据间的前后关系、因果关系;
Ø 分类分析:首先为每一个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述这些记录的特征;
Ø 聚类分析:分类分析的逆过程,首先输入原始记录(未标定,不做任何处理),然后根据一定得规则,划分记录集合,并用显示或隐式方法描述不同类别。
数据清洗:解决不同数据源格式不统一的问题。
局部ER图合成为总ER图时,会发生一些冲突:
Ø 命名冲突:同名异议,异名同义;
Ø 属性冲突:同一属性在不同分ER图中的变量类型、取值范围和数据单位等不一致;
Ø 结构冲突:同一实体在不同ER图中的有不同属性;同一对象在某一分ER图中被抽象为实体,而在另一份ER图中又被抽象为属性。
Ø 联系冲突:实体间的联系在不同分ER图中是不同类型,需根据语义对实体进行综合或调整。
分ER图中可能存在一些冗余的数据及冗余的实体间联系,合并ER图时应当予以消除。
R分解为R1和R2是无损分解就必须满足:
(R1∩R2)à(R1-R2) 或者 (R1∩R2)à (R2-R1)
无损分解得到的子关系必须要能通过自然连接恢复到原关系!
分解是否保持函数依赖:是否存在跨越了不同的子模式的函数依赖,如果存在,则说明不保持函数依赖。注意:不是所有的函数依赖都要在每一个子模式中保持,毕竟模式分解后每个子模式拥有的属性都不全,只要每一个函数依赖都能找到一个子模式能保持就行!!!
最小函数依赖集:所有依赖的右侧只有1个属性,消除冗余、重复的依赖。
笛卡尔积:R(A,B,C,D) X S(C,D,E) 得到的是7元关系,即逐个用R中的每条数据与S中的每条数据直接拼接起来。如果R中有r条数据,S中有s条数据,那R X S中就有r*s条数据。
自然连接:自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。
等值连接与自然连接的区别:
1. 等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
2. 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。
投影 (π): 的一元运算,这里的 是属性名字的集合,投影是对R关系的列的映射。
选择 (σ): 是对关系R的行的映射,选出满足 关系的行。
外模式、模式、内模式
外模式/模式映射、模式/内模式映射
Ø 外模式:External Schema或Sub Schema,用户模式,是数据库用户能看见和使用的局部数据的逻辑结构,与某一应用有关的数据逻辑表示。外模式通常是模式的子集,一个数据库有多个外模式。概念结构设计阶段的产物,E-R图。
Ø 模式:Schema,也成为逻辑模式,数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图。模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。逻辑结构设计阶段的产物,表结构。
Ø 内模式:Storage Schema,存储模式。一个数据库只有一个内模式,数据物理结构和存储方式的描述,数据在数据库内部的表示方式。物理设计阶段产物。物理设计阶段产物。
两类独立性:
Ø 数据的物理独立性:当内模式(物理模式)发生改变时,数据的逻辑结构(模式)保持不变。需要修改模式/内模式映射。
Ø 数据的逻辑独立性:数据的逻辑结构(模式)发生变化时,应用程序不用修改。需要修改外模式/模式映射。
(XX独立性,就是指XX变化时,上级模式不用变!!!!!)
数据库设计阶段:
[1] 需求分析:得到数据要求、处理要求。使用数据流图描述业务流程。
[2] 概念结构设计:得到E-R图,数据字典。与具体DBMS无关。对应“外模式”。
[3] 逻辑结构设计:将概念结构模型转换成一般的关系(E-R图转换成表结构)、网状、层次模型,然后再向特定DBMS支持下的数据模型转换,最后对数据模型进行优化(模式分解、合并、增加部分必要冗余)。与具体DBMS有关。对应“模式”。
[4] 物理设计:基于具体数据库设计实现,包括文件结构,索引等。对应“内模式”(存储模式)。
数据库恢复是指在数据库中的数据被破坏时,在尽可能短的时间内,把数据库恢复到故障发生前的状态。
在进行事务处理时,对数据更新的全部有关操作内容都要写入日志文件;当系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到该文件;当发生故障时,根据现场数据内容及相关文件来恢复系统的状态。
检查点记录的内容包括:
[1] 建立检查点时刻所有正在执行的事务清单。
[2] 这些事务最近一个日志记录的地址。
数据库安全性包括两方面:
Ø 内部安全:数据库运行过程中,由于自身的问题、错误而引起故障造成的问题,主要是由故障引起,事务故障、系统故障(数据库系统、操作系统、硬件崩溃)、介质故障;
Ø 外部安全:SQL注入攻击,黑客软件攻击,病毒、木马攻击。
数据库备份划分为:冷备份、热备份和数据导出。
数据导出根据导出数据的范围又分为:完全导出、增量导出(只导出上一次导出的基础上把变化的数据导出)、累计导出(在上次完全导出的基础上,把变化的所有数据都导出来)。
导出备份是一种逻辑备份,冷备份和热备份是物理备份。
冷备份:冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。
冷备份的优点是:
1.是非常快速的备份方法(只需拷贝文件)
2.容易归档(简单拷贝即可)
3.容易恢复到某个时间点上(只需将文件再拷贝回去)
4.能与归档方法相结合,作数据库“最新状态”的恢复。
5.低度维护,高度安全。
但冷备份也有如下不足:
1.单独使用时,只能提供到“某一时间点上”的恢复。
2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
4.不能按表或按用户恢复。
热备份:数据库运行中对数据库关键数据进行的备份,要求数据库管理系统提供支持。
热备份的优点是:
1.可在表空间或数据文件级备份,备份时间短。
2.备份时数据库仍可使用。
3.可达到秒级恢复(恢复到某一时间点上,主要由日志来实现)。
4.可对几乎所有数据库实体作恢复。
5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。
热备份的不足是:
1.不能出错,否则后果严重。
2.若热备份不成功,所得结果不可用于时间点的恢复。
3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。
(1) 故障
最严重的数据库故障是介质故障。
(2) 属性类型
Ø 简单属性:原子的,不可再分;
Ø 单值属性:对于特定的实体都只有单独的一个值;
Ø 多值属性:如果某个属性可能有多重取值,则这样的属性称为多值属性。比如:联系方式、兴趣爱好。多值属性一般抽取为独立的实体(属性值、实体id)。
Ø 复合属性:可以细分为更小的部分,可以划分为多个属性。比如,通信地址可以划分为邮编、省、市、接到等;
Ø 派生属性:其值可以从一个相关属性和属性集的值派生得到的属性,这个属性在实体中不是必须的。比如:age,可以由birthday派生得到。
(3) 关系的三种类型
Ø 基本关系:基本表、基表。实际存在的表,实际存储数据的逻辑表示。
Ø 查询表:查询结果对应的表。
Ø 视图表:由基本表或其它视图表导出的表,虚表,不对应实际存储的数据。(有物化视图)
基本关系六条性质:
[1] 列是同质的,每一列中的分量是同一类型数据,来自同一个域;
[2] 不同列可出自同一个域,每一列为一个属性,不同属性要给予不同属性名;
[3] 列的顺序无所谓;
[4] 行的顺序无所谓;
[5] 任意两行不能完全相同;
[6] 分量必须取原子值。
(4) 数据库完整性
数据库完整性是指数据库中数据的正确性、有效性、相容性(一致性)。
(5) 基本概念
包含在任何一个候选关键字(候选关键字可能是属性集合)中的属性称为主属性。不包含在任何候选关键字中的属性称为非主属性。