数据库复习知识点纲要

数据库原理

第一章 绪论(考填空和简答)
一、概念与术语
	1、数据
	2、数据库
	3、数据库管理系统(DBMS)
		DBMS的功能:对数据统一管理和控制的软件系统(考点)
			(1)数据库定义功能
			(2)数据库操纵功能
			(3)数据库运行控制功能
			(4)数据通信功能
			(5)支持存取海量数据
	4、数据库系统的构成
		(1)数据库
		(2)数据库管理系统
		(3)数据库应用(application)
		(4)数据库管理员
		(5)计算机系统平台:硬件
				
二、数据管理发展
	人工管理阶段
	'文件管理阶段''数据库管理阶段'的对比:
		文件阶段:数据冗余度大、数据一致性和完整性差、数据与程序缺乏独立性
		数据库阶段:数据组织结构化,数据冗余度小,具有较高的数据与程序的独立性,具有统一的数据控制

三、数据库管理系统(DBMS)的构成(考点)
	1、查询(DBMS输入)
	2、查询处理程序(解释每一部分的功能)
	3、事务管理程序
		事务:完成某一逻辑的一段代码,具有原子性、一致性、隔离性、持久性
	4、存储管理程序
	5、元数据数据
	
四、数据库系统的模式(schema)结构
	抽象过程
	DBMS: |用户
		  |外模式	:视图(局部逻辑层)	  
		  |模式:全局逻辑层
		  |内模式:物理层,存储结构
		  |数据库:硬件
	
	二级映像
		两个映像(接口):
		1、外模式/模式映像
		2、模式/内模式映像
	
	数据独立性:在某一层上修改该层模式定义不影响位于上一层模式的能力(考点)
		逻辑独立性:外模式/模式映像
		物理独立性:模式/内模式影响
	
	计算模型(了解)
		C/S
		B/S


第二章 数据库建模

	数据库设计步骤:
				人的抽象
		现实世界--------->概念模型->数据模型	
	
	概念模型:用E-R图表示
		1、实体
		2、属性
		3、实体集
		4、域
		5、键码:能够唯一识别一个实体的最小属性集
		6、候选码:多个键码统称候选码(这些键码的属性个数相同)
		7、主码:在候选码中选出一个当做主键
		8、联系
			一元递归:
			二元联系:
				一对一
				一对多
				多对多
			多元联系
			
			多元联系体现在题目中为:xx、xx、xx之间的关系为....
			
		9、子类
			继承了父类的属性和联系
		10、弱实体集
			组成一个实体集‘键码属性’中的一部分来自其他实体集的键码属性。
			联系必须是单值(一对一或一对多)
		11、约束
			(1)键码约束(实体完整性约束) -- 一种单值约束
				单值约束:属性的单值约束、联系的单值约束
			(2)参照完整性约束 -- 外键约束
			(3)用户定义完整性约束 -- 域的约束	

	E-R图设计原则:
		1、忠实性
		2、避免冗余
		3、尽量简单
			能用多元联系,必须用多元联系
		4、选择合适的事物类型
			
	
	
第三章 数据模型(关系)
	
	数据模型三要素:(考)
		1、数据结构:数据库中的数据及之间的联系
		2、数据操作:update,select等
		3、数据的约束条件:
		
	数据模型:
		1、关系(表)
		2、属性
		3、域
		4、元组
		5、元组分量
		6、键码,候选码,主码,主属性
			能够唯一标识一个元组的最少属性集合--键码
				特性:唯一性、最小性
			多个键码统称候选码
			候选码中选出一个当主键/主码
			所有候选码的属性成为主属性
		7、全码
			一个关系的键码包括关系的所有属性,这样的键码为全码
		8、超码
			能够唯一标识一个元组的属性组,可能比键码多,因此叫超码
		
	关系模式:R(U,F)          关系名(属性名1,属性名2,……,属性名n)抽象的
	
	关系实例:关系模式的实例,元组的集合
		
	关系数据库模式:若干个关系模式集合,构成了一个关系数据库模式
	
	关系的性质:
		任何时候都不能同时出现取值相同的两个元组(关系是元组的集合)
		关系是随时间变化的。
		属性的域必须是简单域
	
	概念模型到关系数据模型的转换(考大题)
		1、实体集->关系模式
		2、联系
			一对一:可以两个键码同时当做键码
			多对一:多的一方的键码当做联系的键码(一元递归联系同样适用)
			多对多:同时当键码
		3、子类
			isa联系无需转换
			注意:子类要继承全部父类的属性和联系
			(1)E—R法(default)子类只需要加父类的键码
			(2)OO方法(子树)
			(3)空值法:转换成一个关系模式,包括所有属性,没用的置NULL
		4、弱实体集
			弱实体集的联系无需转换
			只需要加上强实体集的键码即可。
			

第四章 关系代数运算

抽象的关系操作语言,mysql是实例
对象与结果都是关系。

	关系代数运算的分类:
		1、二元集合运算
			并,差,交,笛卡尔积
			并兼容:两个关系的属性个数相同,对应属性的域也相同
		2、一元运算
			选择,投影
		3、连接运算
			一般连接
			自然连接(同名属性上的等值连接)
		4、命名运算
	
	
	
第五章 SQL

SQL语言使用的三种表:
	视图--外模式	
	基本表--模式
	存储文件--内模式
	
	基本表:实际存在的表
	查询表:存储中间结果
	视图表:“虚”表,指针
	
	like % _
	
	order by
	
	distinct:消去重复的元组
	
	group by 与 聚集函数 时常在一起出现
	每个group只输出一条语句
	
	having 与 where的区别:having对每一个group做限制,where对每一个元组做限制
	
	
	https://blog.csdn.net/qq_38962853/article/details/73838626
	
	如果使用了分组子句(group by),则查询列表中的每个列必须:
		(1)要么是分组所依据的列(group by 后边跟着的列)
		(2)要么是聚集函数
	
	聚集函数不能用于where子句
	
	连接表达式经常用于select语句的from子句
	
	嵌套查询经常在where或 group by 的having中
	
	不等于 "<>"
	
	1、数据定义(create / drop / alter)
	表:
		create table <表名>(<属性> <类型> |属性约束|, ..., <属性> <类型>, 表约束)
		alter table <表名> add column <属性名> <类型>
		drop table <表名>
	索引:
		1、加快给定属性值的查询时间
		2、增加更新数据操作的系统开销
		
		create [unique] [clustered] index <索引名> on <表名>(<属性名> [asc|desc],..., <属性名> [asc|desc])
		drop index <索引名>
	
	视图:
		create view <视图名>(<列名>, ..., <列名> ) as 查询子句
		drop view <视图名>
		有的视图可以更新,有的不可以更新
	2、查询语句(select)
		(1)单表查询
		(2)多表查询与连接查询
		(3)嵌套查询
			in/any/all/some/exists 谓词
		(4)集合查询(union/interset/except)
		(5)视图查询(view)
	3、数据库更新(insert / delete / update)
		insert into <表名>(<属性名>,..., <属性名>) values (,...,)
		update <表名> set <属性名> = (), ..., <属性名> = () where 
		delete from <表名> where 


	
第六章 SQL中的数据约束

一、数据约束的作用
	1、实现“数据的完整性”
		(1)实体完整性:键码约束、单值约束
		(2)参照完整性:外键约束
		(3)用户定义完整性:属性、关系、元组上的约束
	2、实现数据库的主动服务
	
二、实体完整性约束(键码约束和单值约束)
	紧跟在属性后面,或者在属性下面定义

	primary key
	default 值
	unique

三、参照完整性约束
	外键可以为NULL
	一般在联系实例化后的表中出现外键约束。
	
	维护策略:
		1、缺省策略(被参照关系元组被修改,参照关系不做任何处理)
		2、级联策略(被参照关系元组被删改,级联的删改参照关系)
		3、置空策略(被参照关系元组被修改,参照关系置NULL)
	例:
		foreign key(本表属性名字)references 表名(属性名)
		on delete no action on update cascade(删除和更新策略)

四、用户定义完整性约束
		not null
		check(表达式)
		或在创建表的下面,check(表达式)
	
		

第七章 关系数据库设计理论

规范化的原因:
	1、数据冗余太大
	2、修改异常,导致数据库数据不一致
	3、删除异常,可能导致数据库丢失数据

一、函数依赖:是现实世界数据关联的表现形式
	定义:一个属性依赖于另一个属性,X->Y(表示数据的关联性)
	判断是否是函数依赖:
		找X中是否有相等的元组分量,如果都不相等,一定X->Y。
			如果有相等的X,再看Y是否相等.
			如果任意元组Y相等,则X->Y;如果存在相等的元祖Y,X-\>.
	
	部分函数依赖与完全函数依赖
		部分函数依赖是不好的(代表有冗余信息)
	
	传递函数依赖
	
	非平凡函数依赖 与 平凡函数依赖
	
	多值函数依赖:X->->Y
	
二、关系模型的规范化
	11NF(各属性域是“原子”的,不可分的)
	22NF(首先属于1NF)
		定义:每一个非主属性完全函数依赖于键码
			不存在非主属性对键码的部分函数依赖
		推论:当键码中只有一个属性时,必是2NF
		
		思考:如果有部分函数依赖,应该把那个函数依赖分出去
		
	33NF(首先属于2NF)
		不存在非主属性对键码的传递函数依赖
		
		推论:如果所有属性都是主属性,则必是3NF
		
		思考:如果有传递函数依赖,则应该把两个依赖分成两个关系。
		
	4、BCNF(判断完3NF后,再判断BCNF)
		定义:对于R的每一个函数依赖X->Y,X都含有键码(候选码)(X是超码)
		
		约束主属性之间的依赖关系,消除主属性之间的部分函数依赖和传递函数依赖
	
三、模式分解	
	1、预备知识
	
	函数依赖的逻辑蕴涵:从函数依赖集F中能推出的函数依赖
	
	函数依赖Armstrong公理:
		自反性
		增广性: X->Y => XZ->YZ
		传递性
	推论规则:
		合并规则
		分解规则
		伪增广规则
		伪传递规则		
		
	函数依赖集F的闭包:F+
	属性集关于函数依赖集F的闭包:XF+
	
	判断一个函数依赖(X->Y)是否被函数依赖集F所蕴涵:
		(1)计算	XF+2)检查Y是否属于XF+
		
	函数依赖的等价:
		F+ = G+ 则F=G
		证明:集合相等的证明方法。
			检查差异集是否被另外一个集合逻辑蕴涵
			逻辑蕴涵要用到属性集关于函数依赖集的闭包
		
	极小函数依赖集Fm:(像极了mgu)
		右部仅含有一个属性,左部没有多余的属性,没有多余的函数依赖

	计算Fm的算法:
		右部多余一个属性,分解
		左部多余一个属性,看去掉一个后是否等价
		消除多余的函数依赖
		最好的方法还是‘瞪眼法’
		
	从函数依赖集确定关系模式的键码:
		首先用推论缩小键码范围
			(1)如果X只出现在左部,X必是主属性
			(2)如果X既没出现在左部,又没出现在右部,X必是主属性
			(3)如果X只出现在右部,X必不是主属性
		然后从一个元素开始枚举算XF+,注意键码的最小性。

	2、模式分解算法
		(1)函数依赖集的投影(分解)
				每个子模式的属性集已知,只需要求函数依赖集在每个子模式上的投影。
				投影步骤:
					(i)'子模式'中所有子属性集对F的闭包 ∩ 子模式属性集
					(ii)根据闭包,写出Fi
			
		(2)关系模式的分解
			从属性入手:保证子模式通过属性连接后可以恢复原模式---无损连接
			从函数依赖入手:保证有依赖关系的属性分到一起。----保持函数依赖性
		
			(i)“无损连接”的分解(BCNF)(有可能损失函数依赖关系)
				
				判断分解是否具有‘无损连接性’算法:
					二维表方法
				
				分解算法:
					先分解出属性集,再函数依赖集投影,再分......直到是BCNF为止
					要用到的算法:
						1、计算属性在F上的闭包
						2、函数依赖集在属性集上的投影(硬算)
						3、求键码
						
						
			(ii)"保持函数依赖性"的分解(3NF)
				
				判断分解是否具有‘保持函数依赖性’算法:
					并起来的闭包是否与原函数依赖集的闭包等价。
					只需要检查‘原函数依赖集’是否是‘并集的闭包’的子集
				
				分解算法:
					计算Fm
					根据Fm中左部的不同属性划分子模式
					如果存在属性集的子集关系,合并Fi
						
			(iii)既“无损连接”又“保持函数依赖”的分解(3NF)
					


第八章 数据库系统控制

一、数据库安全性
	概念:保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
	安全性控制的一般方法:存取权限控制
	
	授权指令:
	权限类型:select insert delete update
		grant <权限类型> on <数据库> to <用户> |with grant option|(是否给这个用户grant的权利)
	
	收回指令:
		revoke <权限类型> on <数据库> from <用户> |cascade|
		revoke <grant option for select> on <student> from <User2> |cascade|
		
二、事务管理
	概念:事务是访问并可能更新数据库数据的一个程序执行单元
	begin transaction
	commit
	rollback
	end transaction
	
	性质:(ACID)
		1、原子性
		2、一致性
		3、隔离性
		4、持久性
		
	日志文件,先写日志文件,再执行数据库更新。事务故障根据日志文件恢复

三、并发
	问题:两个事务同时读写相同的数据,带来数据一致性问题
		1、丢失修改(写 写)
		
		2、读入‘脏’数据(写 读 回滚)
		
		3、不可重复的读(读 写 读)
	
	解决:封锁
		排他锁(X)(写锁)
		共享锁(S)(读锁)

	三级锁协议
		一级锁协议:修改之前加写锁,事务结束后释放写锁 ---> 1
		二级锁协议:一级 + 读入之前加读锁,读后立即释放读锁 ---> 2
		三级锁协议:一级 + 读入之前加读锁,整个事务结束后,才释放读锁 ---> 3
	
	先判断什么类型的问题,再用相应的协议解决问题
	
	可串行化的定义:多个事务的一个交错执行的结构与串行执行结果相同。
	
	可串行化的必要条件:两阶段锁协议
		两阶段锁协议:所有事务分为两个阶段,申请锁阶段和释放锁阶段。
	
	SQL标准的隔离性级别(4个)
		1. SERIALIZABLE(可串行化)-------缺省值
		2. READ UNCOMMITTED (允许读“脏”数据)
		3. READ COMMITTED(禁止读“脏”数据,但允许不可重复的读)
		4. REPEATABLE READ (只允许可重复的读)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值