导图社区 数据库技术的基础只是
这是一篇关于数据库技术的基础只是的思维导图,数据库技术是信息系统的一个核心技术。是一种计算机辅助管理数据的方法,它研究如何组织和存储数据,如何高效地获取和处理数据。
编辑于2022-09-03 12:01:06 浙江省数据库技术基础
基本概念
数据库系统DBS
是一个采用数据库系统,有组织地动态地存储大量的相关数据,方便多用户访问的计算机系统
硬件
构成计算机系统包括存储数据所需的外部设备
软件
操作系统
数据库管理系统
应用程序
用户
系统分析和数据库设计人员
应用程序员
最终用户
数据库管理员DBA(最高权限)
功能
实现对共享数据的有效的组织,管理和存取
包括数据定义、数据操作、数据库运行管理、数据的存储管理、数据库的建立和维护
DBMS数据库管理系统软件
数据库的运行维护是由专门的数据库管理系统软件负责
C/S结构
客户机
B/S结构
Web服务器
负责构件用户界面与数据库的交互,客户端使用浏览器展现用户界面并获取用户输入
访问接口
ODBC、JDBC、ADO
数据字典(DD)
各类数据描述的集合,他是关于数据库中数据的描述(元数据),不是诗句本身,如果用户将向数据库输入信息,从数据库提取信息,各类信息的内容和结构,信息之间的联系等。
结构
数据项
数据项名
别名
数据类型
长度
取值范围
取值含义
其他数据项
数据结构
数据流
数据存储
处理过程
数据库(database DB)
统一管理、长期存储在计算机内的,有组织的相关数据的集合
数据库模型
非关系模型
层次模型
关系模型
网状模型
面向对象模型
三要素
数据结构
研究的对象类型的集合,是对系统静态特性的描述
数据操作
对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作谷子额,是对系统动态特性的描述
数据约束
是一组完整性的集合,也就是说,对于具体的应用数据必须遵循特点的语义约束条件,以保障数据的正确,有效,相容
特点
较小的冗余度
较高的数据独立性
易扩展性
数据(data)
描述事物的符号记录
数据库管理系统(database management system DBMS)
数据库系统(database system DBS)
由数据库,数据库管理系统及其应用开发工具,应用程序,管理员组成的存储管理,处理和维护数据的系统
数据库系统的数据类型
基本类型
整型
浮点型
字符型
枚举型
复杂类型
对象类型
聚集数据类型
数组、列表、包、集合、自带的数据类型
引用类型
联系
三级模式-两级映像
三级模式
内模式(存储模式)
管理如何存储物理的数据,对应具体的物理存储文件,聚簇索引会改变数据库的内模式
模式(概念模式)
是我们通常使用的基本表,根据应用、需求将物理数据划分成一张张表
外模式
对应数据库中的视图这个级别,将表进行一定的处理后再提高给用户使用
两级映像
外模式-模式映像
是表和视图之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,无需修改此映射,则无需修改应用程序,逻辑独立性
模式-内模式映像
是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,二不需要去修改应用程序,物理独立性
数据库设计
需求分析
即分析数据存储的需求,产出数据流图,数据字典,数据说明书
用户需求阶段形成的相关文档作为概念结构设计的依据
概念结构设计
就是设计E-R图,也即实体,属性图,与物理实现无关,说明有哪些实体,实体有哪些属性
逻辑结构设计
将E-R图,转换成关系模式,也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西
物理设计
根据生产的表等概念,生成物理数据库
模型
E-R模型
数据模型三要素
数据结构
所研究对象类型的集合
数据操作
对数据库中各种对象的实例允许执行的操作的集合
数据的约束条件
一组完整性规则的集合
实体联系模型,使用椭圆表示属性(一般没有)、长方形表示实体、菱形表示联系、联系两端要标注联系的类型
联系类型及实体间联系转换
一对一1:1
将任意1方加入对方的主码变为其外码,并加入联系本事的属性
一对多1:N
将1方的主键加入N方的作为其外键,并同时将联系的属性也加入N方
多对多M:N
单独转化成一个关系模式,联系双方的主码也加入其中,并将联系的属性也加入其中
三个或三个以上的实体间的一个多无联系
单独转化成一个关系模式,
属性分类
简单属性和复合属性/组合属性
属性是否可以分割
单值属性和多值属性
属性有多个取值
双线圆表示,转换过程中多值属性与实体的标识符转换成一个关系模式
NULL属性
无意义
派生属性
可由其他属性生成
用虚线椭圆表示,转换过程中丢弃
聚集
首先确定相关实体,即所有对象分类,然后根据各类确定的实体,找出每一实体应具有的属性
概括
从相关实体中抽象出子类和父类
无损连接性判断定理
R1 ∩ R2 -> R1 -R2或R1R2 -> R2 - R1被F逻辑蕴含的情况
同时F1 ∪F2!=F
关系模型
数据库中常用的表,包括实体的属性,标识出实体的主键和外键
S(Sno,Sname,SD,Sage,Sex)
学生关系模式,属性为学号、姓名系、年龄和性别
模型转换
每个实体都对应一个关系模式
1:1联系,联系可以放到任意的两端实体,作为一个属性,要保证1:! 的两端关系
1:N的联系中,联系可以独立作为一个关系模式,也可以在N端中加入1端实体的主键
M:N的联系中,联系必须作为一个单独的关系模式,其主键是M和N端的联合主键
规范化技术
关系代数运算
并(∪)
结果是两张表中所有记录数合并,相同记录只显示一次
交(∩)
结果是两张表中相同的记录
差(-)
S1-S2,结果是S1表中有而S2表中没有哪些记录
笛卡尔积(X)
S1*S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有的记录组合成一条记录,最终属性列为S1+S2记录数为S1*S2记录数
第一张表的每一条都要和第二张表的每一条进行组合
投影(π)
实际是按条件选择某关系模式中的某列,列也可以用数字表示
选择(σ)
实际是按条件选择某关系模式中的某条记录
自然连接(⋈)
显示全部的属性列,但是相同的属性列只显示一次,显示两个关系1模式汇中属性相同且值相同的记录
函数依赖
给定一个X能唯一确定一个Y就称X确定Y,或者说Y依赖于X,例如Y=X*X函数
规则
部分函数依赖
A可确定C,(A,B)中的一部分(即A)可以确定C
传递函数依赖
当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C
键和约束
键
超键
能唯一标识此表的属性的组合
候选键
超键中去掉冗余的属性,剩余的属性就是候选键
主键
任选一个为候选键,即可作为主键
外键
其他表中的主键
主属性
候选键内的属性为主属性,其他属性为非主属性
约束
实体完整性约束(主键约束)
主键值不能为空,夜不能重复
参照完整性约束(外键约束)
外键必须是其他表中已经存在主键的值,或者为空
用户自定义完整性约束(自定义表达式约束)
如设定年龄属性必须在0到150之间
范式
第一范式(1NF)
所有属性都不可以分割成两个或多个分量
第二范式(2NF)
当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,R就是2NF。如候选键就是单属性,单属性是不可能存在部分函数依赖的。
第三范式(3NF)
当且仅当R是2NF,且R中没有非主属性传递依赖于候选键时,R就是3NF(此时,也不会存在部分依赖)。一般解决方法是拆分传递依赖的非主属性为一个新的关系模式(主键要绝定所有非主属性,不能通过非主属性间接决定)
BC范式(BCNF)
R属于BCNF当且仅当其F中每一个依赖的决定因素必定包含R的某个完整的候选码
例题
设有关系模式R(S,T,J),依赖集为F={SJ->T,T->J}
求出候选键为(S,T),(S,J)
模式分解
范式之间的转换一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化
保持函数依赖分解
对于关系模式R,有依赖集F若对R分解,分解出来多个关系模式,保持原来的依赖集不变,则为保持依赖的分解,另外要注意消除冗余依赖(如传递依赖)
无损分解
分解后的关系模式能够还原出原关系模式,不能还原就是有损
表格法
定理法
若分解为两个关系模式
如果R分解为p={R1,R2},F为R所满足的函数依赖集合,分解P具有无损连接性的充分必要条件是R1 ∩ R2->(R1-R2)或者R1 ∩ R2->(R2-R1)
反规范化技术
规范化操作可以防止插入异常、更新删除异常和数据冗余,一般是通过模式分解,将表拆分,达到这个目的
表拆分后,解决上述异常,却不利于查询,每次查询时,可能都要关联很多表,严重降低了查询效率,将表拆分,来达到这个目的
技术手段
增加派生性冗余列
增加冗余列
重写组表
分割表
主要就是增加数据冗余,提高查询效率,为规范化操作的逆擦欧总
事务管理
事务
事务提交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对数据对象加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁
共享锁(S锁)
若事务T对数据对象加上S锁,则只允许T读取A,则不能修改A,其他事务只能对A锁加S锁(即能读不能修改),直到T释放A上的锁
协议
一级封锁协议
事务在修改数据R之前必须先对其加X锁,直到事务结束才能释放,可解决丢失更新问题
二级封锁协议
一级封锁协议的基础上加上事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁,可解决丢失更新,读脏数据问题
三级封锁协议
一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放,可解决更新、读脏数据、数据重复读问题
数据库安全
数据库备份
静态转储(冷备份)
在转储期间不允许对数据库进行任何存取、修改操作
优点
非常快速的备份方法、容易归档(直接物理复制操作)
缺点
只能提供到某一时间点上的恢复,不能做其他工作,不能按表或按用户恢复
动态转储(热备份)
在转储期间允许对数据库进行存取修改操作,因此,转储和用户事务可并发执行
优点
可在表空间或数据库文件级备份,数据库扔即可使用,可达到秒级恢复
缺点
不能出错,否则后果严重,若热备份不成功,所得结果全部无效
海量转储
每次转储全部数据,海量转储得到的后备父辈进行恢复一般1来说简单一些,但如果数据库很大,事务处理又十分繁琐,则增量转储方式更实用更有效
完全备份
备份所有数据
差量备份
仅备份上次完全备份之后变化的数据
增量备份
备份上次备份之后变化的数据
日志文件
在事务处理过程中,DBMS把事务开始,事务结束以及对数据库的插入,删除和修改的每一次操作写入日志文件,一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态操作相关
数据文件
备份操作的数据
GRANT
授权语句,通过数据对象的操作权限才能进行的xiang ying cao
安全验证的策略
用户标识与鉴别
由系统提供给用户标识自己的名字和密码,用户要求进入系统时,提供用户和密码,由系统和对以后才确定允许进入系统
存取控制
对数据库对象(表、视图等)的安全控制,只有有资格(权限、许可证)的用户才可以访问相关数据对象
数据加密
对存储和传输中的数据进行加密以防被窃取
审计
把用户对数据库的所有操作都记录下来,事后可以据此找出非法存取数据的人及时间内容
数据控制功能
安全性
保护数据库免受恶意访问,即防止不合法的使用造成的数据泄露更改和破坏,这样,用户只能在规定的权限范围内操纵数据库
完整性
数据库正确性和相容性,防止合法用户使用数据库时向数据库加入不符合语义的数据,保障数据库中的数据是正确的,比main非法的更新
并发控制
在多用户共享的系统中,许多用户可能同时对同一数据进行擦欧总。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据
故障恢复
恢复数据库本身到某一个正确的状态或一致状态
原理
建立冗余数据,确定数据库可恢复的方法就是包含每一条信息是否都可以利用荣誉存储在别处的信息重构
数据库故障
事务内部故障
本身逻辑(可预期)、运算溢出(不可预期)
系统故障
系统停止任何时间,如操作系统故障停电
介质故障
物理介质损坏,纪律小破坏性最大
计算机病毒
人为的故障和破坏,在计算机程序中插入的破坏
分布式数据库
局部数据库位于不同的物理位置,使用一个全局DBMS将所有局部数据库联网管理
分片模式
水平分片
将表中的记录分别存放在不同的地方
垂直分片
将表中的垂直的列值分别存放在不同的地方
分布透明性
分片透明性
用户或应用程序不需要知道逻辑上访问的表具体是Ruhr分块存储的
逻辑透明性
用户或应用程序无需知道局部使用的是那种数据模型
复制透明性
用户或应用程序不关心复制的数据从何而来
位置透明性
用户或应用程序不需要知道逻辑上访问表的具体是如何让分块存储的tp
数据仓库
是一种特殊的数据库,也就是按照数据库形式存储数据的,但是目的不同
数据库经长时间的运行,里面的数据会播啊存的越来越多,就会影响系统系统运行效率,对于某些程序而言,很久之前的数据并非必要的,因此可以删除掉以减少数据,增加效率,考虑到删除这些数据比较可惜,因此,一般都讲这些数据从数据库提取出来保存到另一个数据库
特点
面向主题
数据仓库的目的不是为了应用,是面向主题的
集成性
用来做数据分析,集成不同表
相对稳定性
相对稳定的,一般不会修改
反应历史变化
会在特定的时间点,做大量的插入反应历史的变化
作用
做数据查询、分析生成报表
使用数据挖掘工具对这些历史数据进行挖掘,查找数据间的关系,发现剩余价值
数据挖掘的分析方法
关联分析
关联分析主要是用于发现不同事件之间的关联性,即当一个事件发生时,另一个事件也经常发生
序列分析
主要用于发现一点时间间隔内接连发生的事情,这些事情构成一个序列,发现的序列应该具有普遍意义
分类分析
通过分析具有类别的样本特点,得到决定样本属于各种类别的规则和方法,分类分析时首先为每一个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标记的记录,描述这些记录的特征
聚类分析
根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组机械能描述的过程
商业智能
BI系统的四个阶段
数据预处理
整合企业原始数据的第一步,包括对数据的三个过程(ETL)
抽取(extraction)
转换(transformation)
加载(load)
建立数据仓库
处理海量数据的基础
数据分析
体现系统智能的关键,一般采取两大技术
联机分析处理(OLAP)
不仅对数据汇总/聚集,同时还提供切片切块、下钻、上卷和旋转等数据分析功能,用户可以方便的对海量的数据进行多维分析
数据挖掘
挖掘数据背后的隐藏的知识,通过关联分析,聚类和分类等方法建立分析模型,预测企业未来发展的趋势和将要面临的问题
数据展现
在海量数据和分析手段增多的情况下,数据展现主要保障系统分析结果的可视化
大数据
特点
大量化
多样化
价值密度低
快速化
大数据与传统数据比较
要处理大数据,一般使用,集成平台,称为大数据处理系统,其特征为
高度可拓展性
高性能
高度容错
支持异构环境
较短的分析延迟
易用且开放的接口
较低成本
向下兼容性
SQL语言
语法关键字
创建表
create table
指定主键
primary key()
指定外键
foreign key ()
修改表
alter table
ALTER TABLE S ADD Zap CHAR(6);
删除表
drop table
DROP TABLE Student
索引
index
CREATE UNIOUE INDEX S-SNO ON S(Sno);
如果查询是瓶颈,那么关系上创建适当的索引来加速查询
如果更新是瓶颈,那么可能是索引太多,这些索引在关系上被更新也必须被更新,此时则应删除一些索引以加速更新
将有利的大多数查询和更新的索引设为聚集索引
视图
view
CREATE VIEW CS-STUDENT
触发器(trigger)
是与表时间相关的特殊的存储过程,他的执行不是由程序调用,不会死手工启动,而是由时间直接触发
不能使用参数,不能使用事务控制语句,触发器中调用的过程,函数也不能包含事务控制语句
基本操作
数据库查询
select…from…where
分组查询
group by….having
分组要注意select后的列名要适应分组
having
分组查询的条件
select sno,avg(score) from student group by sno having(avg(score)>60)
更名运算(as)
select sno as “学号” from t1
字符串匹配(like)
%
匹配多个字符
_
匹配以恶搞字符串
select * from t1 where sname like ‘a_’
数据库插入(insert)
insert into…values()
Insert into t1 values (‘a’,66)
数据库删除(delete from… where)
Delete t1 where sno =4
数据库修改
delect from…where
delect t1 where sno=‘4’
数据库更新
update from…where
Update t1 set snake =‘aa’ where sno =3
排序(order by)
默认为升序
降序需要加关键字DESC
select * from t1 order by sno desc
distinct
过滤重复选项,只保留一条记录
union
出现在两个SQL语句之间,将两个SQL语句的查询结果取或运算,即值存在于第一句或第二句都会被选中
intersect
对于两个SQL语句的查询结果做与运算,即值同时存在于两个语句才被选出
min、avg、max
分组查询时的聚合函数