数据库管理系统 DBMS Database Management System分为三类:
关系数据库系统(Relation Database System)
面向对象数据库系统 (Object-Oriented Database System)
对象关系数据库系统 (Object-Oriented Relation Database System)
数据库设计过程
需求分析
需求说明书
数据流图
数据流图的设计原则
- 数据守恒原则,对于任何一个加工来说,其所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者说是通过该加工能产生的数据。
- 守恒加工原则,对同一个加工来说,输入与输出的名字必须不相同,即使他们的组成成分相同。
- 对于每个加工,必须既有输入数据流,又有输出数据流
- 外部实体与外部实体之间不存在数据流
- 外部实体与数据存储之间不存在数据流
- 数据存储与数据存储之间不存在数据流
- 父图与子图的平衡原则,子图的输入数据流父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡,父图与子图之间的平衡原则不存在于单张图。
- 数据流与加工有关,且必须经过加工
父图:只有实体和数据流
子图:对父图的细分
数据流图的主要组成部分:
数据流(Data Flow):数据流是系统中数据的流动,它可以是输入、输出或存储在系统中的数据。(起点或终点必须有一个是加工)
加工(Process):数据处理过程是对数据进行处理的单元,它可以是一个物理设备或软件模块。(至少有一个输入和输出)
数据存储(Data Store):数据存储是系统中存储数据的单元,它可以是一个文件、数据库或内存中的变量。
外部实体(Element Agent):外部实体是与系统进行信息交流的外部机构或个人,它可以是一个用户、另一个系统或传感器等。
对基本加工的说明有三种描述方式:
结构化语言、判断表(决策表)、判断树(决策树)。
基本加工逻辑描述的基本原则为:
1.对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。
2.基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。
3.加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。(考点)
4.加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。
创建数据流图的一般步骤如下:
①确定外部实体:确定与系统进行信息交流的外部机构或个人,例如用户、另一个系统或传感器等。
②确定数据流:根据外部实体和系统的需求,确定需要交互的数据流。
③确定数据处理过程:根据系统的功能需求和数据流,确定数据处理过程,例如计算、查询、存储等。
④确定数据存储:根据数据处理过程的需求,确定需要存储的数据项和存储方式,例如文件、数据库或内存变量等。
⑤绘制图形:使用数据流图的图形符号,绘制出外部实体、数据流、数据处理过程和数据存储的图形表示。
⑥完善细节:在绘制完初步的数据流图后,根据系统的实际情况和完善需求,完善图中的细节,例如添加注释、标明数据类型和格式等。
异常现象
黑洞:一个加工只有输入数据流而无输出数据流。
奇迹:一个加工只有输出数据流而无输入数据流。
灰洞:若一个加工的输入数据流无法通过加工产生输出流
加工 3.1.2 有输入但是没有输出,我们称之为“黑洞”。因为数据输入到过程,然后就消失了。在大多数情况下,建模人员只是忘了输出。
加工 3.1.3 有输出但没有输入。在这种情况下,输入流似乎被忘记了。
加工 3.1.1 中输入不足以产生输出,我们称之为“灰洞”。这有几种可能的原因:一个错误的命名过程;错误命名的输入或输出;不完全的事实。灰洞是最常见的错误,也是最使人为难的错误。一旦数据流图交给了程序员,到一个加工的输入数据流必须足以产生输出数据流。
数据字典
概要结构设计
ER模型
实体-联系模型(E-R模型),包含实体,联系,属性(简单属性、复合属性、单值属性、多值属性、派生属性)
集成产生的冲突以及解决办法:(针对同一对象)
属性冲突:包括属性阈冲突和属性取值冲突
命名冲突:包括同名异意,异名同意
结构冲突:同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
逻辑结构设计
关系模式
目或度:关系模型中属性的个数
候选码(候选键):唯一标识元组,且无冗余。
主键:在候选码中任选一个
主属性和非主属性:组成候选码的属性就是主属性,其他的就是非主属性
外码(外键)
关系模式可以有3种类型:
- 基本关系(通常又称为基本表或基表)基本表是实际存在的表,它是实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
物理设计
三级模式
内模式(文件级):数据物理结构和存储方式的描述,存储文件。
概念模式(表级):对应数据表,全体数据的逻辑结构和特征的描述
外模式(视图级): 对应视图,是用户与数据库系统的接口,用户用到的那部分数据的描述(用户模式)。
两级映射
两级映射:
模式/内模式映射:实现概念模式到内模式之间的相互转换。(保证物理独立性)
外模式/模式映射:实现外模式到概念模式之间的相互转换。(保证逻辑独立性)
关系代数
并(Union)
关系R 与关系S 的并记作:R ∪ S = { t ∣ t ∈ R ∨ t ∈ S }
交( Intersection)
关系R 与关系S的交记作:R ∩ S = { t ∣ t ∈ R ∧ t ∈ S }
差(Difference)
关系R与关系S的差记作:R − S = { t ∣ t ∈ R ∧ t ∉ S }
广义笛卡尔积(Extended Cartesian Product)
R×S={(a1,a2,…am,b1,b2,…bn)∣(a1,a2,…am)∈R∧(b1,b2,…bn)∈S}。
选择运算
σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ‘真’ }
投影(Projection)
连接(Join)
连接也称为θ连接
连接运算从R 和 S 的广义笛卡尔积R × S 中选取(R 关系)在A 属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组
等值连接(equijoin)
自然连接(Natural join)
- 自然连接是一种特殊的等值连接
-
- 两个关系中进行比较的分量必须是相同的属性组
- 在结果中把重复的属性列去掉
- 自然连接的含义
-
- R和S具有相同的属性组B
除(Division)
规范化理论
关系模式的存储异常问题
设有一个关系模式R(SNAME,CNAME,TNAME,TADDRESS)
其属性分别表示学生姓名、选修的课程名、任课教师姓名和任课教师地址。
仔细分析,这个模式存在着下列存储异常的问题:
数据冗余:如果某门课程有100个学生选修,那么在R的关系中就要出现100个元组,这门课程的任课教师姓名和地址也随之重复出现100次。
修改异常:由于上述冗余问题,当需要修改这个教师的地址时,就要修改100个元组中的地址值,否则就会出现地址值不一致的现象。
插入异常:如果不知道听课学生名单,则这个教师的任课情况和家庭地址就无法进入数据库;
否则就要在学生姓名处插入空值。
删除异常:如果某门课程的任课教师要更改,那么原来任课教师的地址将随之丢失。
因此,模式R虽然只有4个属性,但却是性能很差的模式。
如果把R分解成下列两个关系模式:
R1(SNAME,CNAME)和R2(CNAME,TNAME,TADDRESS)
则能消除上述提出的存储异常现象。
为什么会产生这些异常呢?与关系模式属性值之间的联系直接有关。
在模式R中,学生与课程有直接联系,教师与课程有直接联系,而教师与学生无直接联系,这就产生了模式R的存储异常。
因此,模式设计强调"每个联系单独表达"是一条重要的设计原则,把R分解成R1和R2是符合这条原则
函数依赖
假设存在关系:
R(学号,姓名,性别,班级,班主任,课程号,课程名,学时数,成绩)
主键:学号+课程号
主属性:{学号,课程号}
非主属性有:{姓名,性别,班级,班主任,课程名,学时数,成绩}
完全函数依赖分析
成绩依赖于学号和课程号两个字段的组合;但只知道学号无法确定成绩,同理只知道课程号也无法确定成绩;只有学号和课程号组合在一起才能标识哪个学生哪门课程的成绩;
因此(学号,课程号)---->成绩 是“完全函数依赖”。
部分函数依赖分析
姓名、性别和班级三个属性只依赖于主键中的学号,与“课程号”无关。
因此(学号,课程号)---->姓名是“部分函数依赖”
(学号,课程号)---->性别是“部分函数依赖”
(学号,课程号)----->班级是“部分函数依赖”
课程名和学时数只依赖于课程号,
因此(学号,课程号)----->课程名是“部分函数依赖”
传递函数依赖分析
班主任依赖于班级,与学号无关,与课程号也无关
又因班级依赖于学号所以班主任间接依赖于学号
因此,(学号,课程号)----->班主任是“传递函数依赖”
范式
1NF:无重复的列(数据库表中的每一列都是不可分割的基本数据项)
2NF:满足1NF且非主键列都完全函数依赖于主键。(缺点:插入异常,删除异常以及冗余问题)
3NF:满足2NF且非主属性列都不传递依赖于主键。
BCNF(巴斯克斯):满足3NF且不允许主键的一部分被另一部分或其它部分所决定(即满足3范式,并且主属性之间没有依赖关系)。
关系模式分解:把一个关系模式分解成若干个关系模式的过程
数据库事务
数据库管理系统运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。
事务具有以下特性。
- 原子性(Atomicity):数据库的逻辑工作单位。
- 一致性(Consistency):使数据库从一个一致性状态变到另一个一致性状态。
- 隔离性(Isoation):不能被其他事务干扰。
- 持续性(永久性)(Durabiity):一旦提交,改变就是永久性的。
并发控制
在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为"并发操作"
数据库的并发操作带来的问题:
- 丢失更新问题
- 不一致分析问题(读过时的数据)
- 依赖于未提交更新的问题(读了"脏"数据)
处理并发控制的主要方法是采用封锁技术。
排他型封锁(简称X封锁):其含义是如果事务T对数据A(可以是数据项、记录、数据集以至整个数据库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。可见X封锁只允许一个事务独锁某个数据,具有排他性。
共享型封锁(简称S封锁):X封锁只允许一个事务独锁和使用数据,要求太严。需要适当从宽,例如可以允许并发读,但不允许修改,这就产生了S封锁概念。S封锁的含义是如果事务T对数据A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A,在所有S封锁解除之前决不允许任何事务对数据A实现X封锁。
在多个事务并发执行的系统中,主要采取封锁协议来进行处理。一级封锁协议:事务T在修改数据R之前必须先对其加X封锁,直到事务结束才释放。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。但不能保证可重复读和不读"脏"数据。
二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。二级封锁协议可防止丢失修改,还可防止读"脏"数据。但不能保证可重复读。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失修改、防止读"脏"数据与防止数据重复读。
两段锁协议:所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁。
分布式数据库 DDBS
分布式数据库Distributed Database System是针对地理上分散,而管理上又需要不同程度集中管理的需求而提出的一种数据管理信息系统。满足分布性、逻辑相关性、场地透明性和场地自治性的数据库系统被称为完全分布式数据库系统。分布式数据库系统的特点是数据的集中控制性、数据独立性、数据余可控性、场地自治性和存取的有效性。
分布式抽象为4层的结构模式
分布透明性
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节也不必关心局部场地上数据库的数据模型。分布透明性包括分片透明性、位置透明性和局部数据模型透明性。
(1)分片透明性。分片透明性是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片式改变时,只要改变全局模式到分片模式的映射,而不影响全局模式和应用程序。全局模式不变,应用程序不必改写。
(2)位置透明性。位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映射,而不影响应用程序。同时,若片段的重复副本数目改变了,数据的冗余改变了,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。
(3)局部数据模型透明性。局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。
商业智能BI
商业智能(Business Intelligence,BI)是企业对商业数据的搜集、管理和分析的系统过程,目的是使企业的各级决策者获得知识或洞察力,帮助他们做出对企业更有利的决策。它是数据仓库、联机分析处理(OnlineAnalyticalProcessing,OLAP)和数据挖掘等相关技术走向商业应用后形成的一种应用技术。商业智能系统主要实现将原始业务数据转换为企业决策信息的过程。它主要包括数据预处理、建立数据仓库、数据分析及数据展现4个主要阶段。一般认为数据仓库、联机分析处理和数据挖掘技术是商业智能的三大组成部分。
数据仓库
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile),且随时间变化的(Time Variant)数据集合,支持管理部门的决策过程。数据仓库的关键特征为面向主题、集成的、非易失的、时变的。采用三层结构,底层是数据仓库服务器、中间层是OLAP服务器、顶层是前端工具
数据仓库的实现步骤有规划、需求研究、问题分析、数据的抽取清洗集成装载、数据仓库设计、数据仓库管理、分析报表查询、数据仓库性能优化及数据仓库的部署发布等几个步骤。实现方法有自顶向下方法、自底向上方法及二者混合方法。对于开发数据仓库系统,一个推荐的方法是以递增、进化的方式实现数据仓库。
多维分析海量数据分析器--OLAP
OLAP(联机分析处理,Online Analytical Processing)是一种用于快速分析多维数据的技术。对于 TB 级的海量数据,联机分析处理 OLAP 利用多维的概念,提供了切片、切块、下钻、上卷和旋转等多维度分析与跨维度分析功能。它允许用户从不同的角度和层次对数据进行查询和分析,通常用于商业智能和数据仓库环境中。
OLAP 系统架构主要分为基于关系数据库的ROLAP(RelationalOLAP)、基于多维数据库的 MOLAP(Multidimensional OLAP)和基于混合数据组织的 HOLAP(HybridOLAP)三种。
OLAP广泛应用于财务分析、市场研究、销售分析等领域,帮助企业做出数据驱动的决策。
数据挖掘(data mining)
数据挖掘(data mining)是从大量的、不完全的、有声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。从商业的角度来看,数据挖掘是一种新的商业信息处理技术,其主要特点是对大量业务数据进行抽取、转换、模型化处理,从中提取辅助商业决策的关键性数据。我们采用数据挖掘的广义观点:数据挖掘是从存放在数据库、数据仓库或其他信息库中的大量数据中挖掘有趣知识的过程。
数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要功能有5类:自动预测趋势和行为、关联分析、聚类、概念描述和偏差检测。
常用的数据挖掘技术包括关联分析、序列分析、分类分析、聚类分析、预测以及时间序列分析等。
数据挖掘的流程为确定挖掘对象、准备数据、建立模型、数据挖掘、结果分析和知识应用。