数据库技术基础
基本概念
数据库系统DBS:是一个采用了数据库技术,有组织地、动态地存储大量相关的数据,方便多用户访问的计算机系统。
其由下面四个部分组成:
数据库:统一管理、长期存储在计算机内的,有组织的相关数据的集合。
硬件:构成计算机系统包括存储数据所需的外部设备。
软件:操作系统、数据库管理系统及应用程序。
人员:系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA
数据库管理系统DBMS的功能:
实现对共享数据有效的组织、管理和存取。
包括数据定义、数据库操作、数据库运行原理、数据库的存储原理、数据库的建立和维护等。
三级模式-两级映像
内模式:管理如何存储物理的数据,对应的是物理存储文件。
模式:又称为概念模式,对应的是基本表,根据应用、需求将物理数据划分成一张张表。
外模式:对应数据库中视图的级别,将表进行一定的处理后再提供给用户使用。
外模式-模式映像:是表和视图之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而不需要修改应用程序。‘
模式-内模式映像:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。
数据库设计
E-R模型
数据模型三要素:数据结构(所研究的对象类型的集合)、数据操作(对数据库中各种对象实例允许执行的操作的集合)、数据的约束条件(一组完整性规则的集合)。
E-R模型:即实体-联系模型,使用椭圆表示属性(一般没有),长方形表示实体,菱形表示联系,联系两端要标注联系类型。
联系类型:1:1,1:N,M:N.
属性分类:简单属性和复合属性(属性是否可分割)、单值属性和多值属性(属性有多个取值)、NULL属性(无意义)、派生属性(可由其他属性生成)。
关系模型
即数据库中的表,包括实体属性,标识出实体的主键和外键。
模型转换
E-R图转换为关系模型:每个实体都对应一个关系模式;联系分为三种:
1:1联系,联系可以放到任意的两端实体中,作为一个属性
1:N联系,联系可以单独作为一个关系模式,也可以在N端加入1端实体的主键。
M:N联系,联系必须作为一个单独的关系模式,其主键是M和N端的联合主键。
关系代数运算
并:两张表中所有的记录集合,相同的记录只显示一次
交:两张表中相同的记录。
差:S1-S2,S1中有的,S2中没有的。
笛卡尔积:S1 X S2,列数为S1+S2,记录数为S1*S2.
投影:按条件选择某些关系式中的某列,列也可以用数字表示。符号:п
选择:按条件选择某些关系式中的某条记录。符号:ρ
自然连接:显示全部的属性列,但是相同属性列只显示一次,显示两个关系模型中属性相同且值相同的记录。
函数依赖
给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依赖于X,例如Y=X*X。
函数依赖扩展的两个规则:
部分函数依赖:A可以确定C,(A,B)也可以确定C,(A,B)中的一部分(即A)可以确定C,称为部分函数依赖。
传递函数依赖:A可以确定B,B可以确定C,则A可以直接确定C是传递函数依赖;若A和B等价,则不存在传递,可直接确定C。
键与约束
超键:能唯一标识此表的属性组合。
候选键:超键中去掉冗余的属性,剩下的就是超键。
主键:任意一个候选键,即可作为主键。
外键:其他表中的主键。
主属性:候选键内的属性为主属性,其他属性为非主属性。
实体完整性约束:即主键约束,主键的值不能为空,也不能重复。
参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空。
用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。
第一范式
1NF,关系中的每一个分量必须是一个不可分的数据项。通俗的说,第一范式中不允许有小表的存在。
第二范式
2NF,如果关系R属于1NF,且每一个非主属性完全依赖于任何一个候选码,则R属于2NF。通俗的说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。
第三范式
在满足1NF的基础上,表中不存在非主属性对码的传递依赖。
事务管理
事务提交 commit ,事务回滚 rollback
事务:由一系列操作组成,这些事务要么全做,要么全不做,拥有四种特性,详解如下:
(操作)原子性:要么全做,要么全不做。
(数据)一致性:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没有收到的情乱。
(执行)隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉。
(改变)持续性:事务操作的结果是持续性的。
并发控制
事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题。
丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2写回的数据覆盖了事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
读脏数据:事务1对数据A进行修改之后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据。
三级封锁协议
X锁是排它锁。若事务T对数据对象A加上X锁,则只允许T修改和读取A。其他事务不能对A加任何类型的锁,知道T释放A上的锁。
S锁是共享锁。若事务T对数据对象A加上X锁,则只允许T读取A,不能修改A。其他事务只能对A加S锁(能读不能改),知道T释放A上的锁。
一级封锁协议:数据在修改R之前必须先对其加X锁,直到事务结束才释放。可解决丢失更新的问题。
二级封锁协议:一级封锁协议的基础上加上事务T在读取数据R之前必须先对其加上S锁,读完之后即可释放S锁。可解决丢失更新、读脏数据的问题。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加上S锁,直到事务结束才释放。可解决丢失更新、读脏数据、数据重复读的问题。
数据故障
数据库备份
静态转储:即冷备份,指在转储期间不允许对数据库进行任何存取、修改操作;
优点:非常快速的备份方法、容易归档(直接物理复制操作)。
缺点:只能提供到某一时间点上的恢复,不能做其他的工作,不能按表或按用户恢复。
动态转储:即热备份,在转储期间允许对数据库进行读取、修改操作,因此转储和用户事务可并发执行;
优点:可在表空间或数据库文件及备份,数据库仍可用,可达到秒级恢复;
缺点:不能出错,否则后果严重,若热备份不成功,所得结果几乎全部失效。
完全备份:备份所有数据。
差量备份:仅备份上一次完全备份之后变化的数据。
增量备份:备份上一次备份之后变化的数据。
日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。
分布式数据库
局部数据库位于不同的物理位置,使用一个全局DBMS将所有局部数据库联网管理,这就是分布式数据库。其体系结构如图所示:
分片模式
水平分片:将表中的水平记录分别存放在不同的地方。
垂直分片:将表中的垂直列值分别存放在不同的地方。
分布透明性
分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
位置透明性:应用程序不关心数据存储物理位置的改变。
逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型。
复制透明性:用户或应用程序不关心复制的数据从何而来。
数据仓库
数据仓库是一种特殊的数据库,也是按数据库形式存储数据的。数据库经过长时间的运行,里面的数据会保存的越来越多,就会影响系统运行效率,对于某些程序而言,很久之前的数据库并非必要的,因此可以删除掉以减少数据,增加效率。考虑到删除这些数据比较可惜,一般都将这些数据从数据库中提取出来保存到另外一个数据库中,称为数据仓库。
数据仓库的目的不是为了应用,是面向主题的,用来做数据分析,集成不同表,而且是相对稳定的,一般不会做修改,同时会在特定的时间点,做大量的插入,反映历史的变化。
面向主题:按照一定的主题域进行组织的。
集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致性的全局信息。
相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量的分析和预测。
数据仓库的形成过程:
数据挖掘
形成数据仓库后,有两个作用,一个是用来做数据的查询、分析、生成报表 。另一个是使用数据挖掘工具对这些历史数据进行挖掘,查找数据间的关系,发现剩余价值。
数据挖掘的分析方法:
关联分析:主要用于发现不同事件中的关联性,即一个事件发生的同时,另一个事件也经常发生。
序列分析:主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义。
分类分析:通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。
聚类分析:根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。
商业智能
BI系统主要包括数据预处理、建立数据仓库、数据分析和数据展现四个阶段。
数据预处理是整合企业原始数据的第一步,它包括数据的抽取(Extraction)、转换(Transformation)和加载(Load)三个过程(ETL过程)。
数据分析是体现系统智能的关键,一般采用联机分析处理(OLAP)和数据挖掘两大技术。联机分析处理不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以方便地对海量数据进行多维分析。数据挖掘的目标则是挖掘数据背后隐藏的知识,通过关联分析、聚类和分类等方法建立分析模型,预测未来发展趋势和将要面临的问题;
在海量数据和分析手段增多的情况下,数据展现则主要保障系统分析结果的可视化。
反规范化技术
目的是提高查询效率。
技术手段:增加派生性冗余列,增加冗余列,重新组表,分割表。
主要就是增加冗余,提高查询效率,为规范化操作的逆操作。
SQL语言
关键词:
创建表:create table
指定主键:primary key();
指定外键:foreign key();
修改表:alter table;
删除表:drop table
索引:index,视图view;