关于数据库你需要知道的基础知识

第一章、绪论
1.数据库的特点
(1)数据库是长期储存在计算机内,有组织的、可共享的大量数据的集合,数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。(永久存储、有组织、可共享);lllll.
2.数据库的数据独立性(数据特点)
(1)逻辑独立性
(2)物理独立性:通过模式与内模式之间的映像把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。
3.数据库模型
(1)数据模型的分类:
最常用的数据模型是概念数据模型和结构数据模型:
①概念数据模型(信息模型):面向用户的,按照用户的观点进行建模,典型代表:E-R图
②结构数据模型:面向计算机系统的,用于DBMS的实现,典型代表有:层次模型,网状模型、关系模型,面向对象模型
(2)数据模型的三要素:
数据结构、数据操作、数据(完整性)约束。
这里写图片描述
3.模式分类
(1)外模式
外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。
(2)内模式
内模式又称存储模式,对应于物理级,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
(3)模式
对应于概念级,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

第二章、关系数据库
1.关系模式的写法及相关含义
(1)R(U,D,DOM,F)
R表示关系名,U表示组成关系的属性名集合,DOM表示属性域的映像集合,F表示数据的依赖关系集合。
2.关系基本的五种操作
查询、插入、删除、修改、
3.关系的三种完整性
(1)实体完整性
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。
(2)参照完整性
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(或者说F引用了K),则对于R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值。
(3)用户定义的完整性
针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

第三章、关系数据库标准语言SQL
1.看看实验报告
2.数据定义

第四章、数据库安全性
1.自主存取控制
用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转手给其他用户。
2.强制存取控制
每一个数据库对象被标有一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取因此安全性较高。
3.视图的创建
建立视图的语法:
Create view 视图名称[(字段1) (字段2) (字段3)…]
AS
Select 查询语句
[with check option]
参数:[with check option]可选项,防止用户对数据插入、删除、更新是操作了视图范围外的基本表的数据。

4.为什么有些可以更新,而有些却不能?
(1)因为有些视图的更新不能唯一的有意义的转成对相应的基本表的更新。
(2)例:学号和平均成绩表—更新某学号的平均成绩
无法转换成对基本表SC的更新=,因为系统无法修改各科成绩,以使平均成绩为某值。
(3)行列子集视图可更新
(4)若视图是由两个以上基本表导出的,则此视图不能更新。

第五章、数据库完整性
(1)触发器
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。
(2)关系规范化理论
一个低一级的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫做关系的规范化。
(3)关系范式
第六章、关系数据理论
1.范式


(1)1NF
每一个分量必须是不可分的数据项。
(2)2NF
若R属于1NF,且每一个非主属性完全函数依赖于码,则R属于2NF。
(3)3NF
若R属于2NF,且每一个非主属性不传递依赖于码。

①第二范式分解
第一步:找出数据表中所有的码。
第二步:根据第一步所得到的码,找出所有的主属性。
第三步:数据表中,除去所有的主属性,剩下的就都是非主属性了。
第四步:查看是否存在非主属性对码的部分函数依赖。
(假如A是码,那么所有包含了A的属性组,如(A,B)、(A,C)、(A,B,C)等等,都不是码了(因为作为码的要求里有一个“完全函数依赖”)。)
②3NF:若R属于3NF,则每一个非主属性既不传递依赖于码,也不部分依赖于码。
第七章、数据库设计
1.给出情况分析判断数据库设计的六个阶段
这里写图片描述
第八章、数据库编程
1.存储过程的概念
(1)由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。
1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
  2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
  3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
       4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。

第九章、关系查询处理和查询优化
1.关系的查询处理可以分为4个阶段:
(1)①查询分析②查询检查③查询优化④查询执行
(2)查询优化分类
①代数优化:关系代数表达式的优化,即按照一定的规则,通过对关系代数表达式进行等价代换,改变代数表达式中操作的次序和组合,使查询执行更高效。
②物理优化:指存取路径和底层操作算法的选择。
第十章、数据库恢复技术
1.作用:保证数据库的安全性、完整性,保证并发事务的正确执行。
2.建立冗余数据最常用的技术是数据转储和登记日志文件。
3.数据转储即数据库管理员定期的将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。
4. 并发操作带来的问题及解决方法?
1级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。1级封锁协议可防止丢失修改,并保证事务T是可恢复的。在1级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读”脏”数据。
2级封锁协议
2级封锁协议是:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。2级封锁协议除防止了丢失修改,还可进一步防止读”脏”数据。
3级封锁协议
3级封锁协议是:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。3级封锁协议除防止了丢失修改和不读’脏’数据外,还进一步防止了不可重复读。

第十一章、并发控制
1.避免活锁方法:先进先出策略
这里写图片描述
2.死锁的形成与解决方法
(1)一般情况只发生锁超时,就是一个进程需要访问数据库表或者字段的时候,另外一个程序正在执行带锁的访问(比如修改数据),那么这个进程就会等待,当等了很久锁还没有解除的话就会锁超时,报告一个系统错误,拒绝执行相应的SQL操作。
(2)方法-一次封锁法、顺序封锁法
① 按同一顺序访问对象
②避免事务中的用户交互
③保持事务简短并在一个批处理中
④使用低隔离级别
⑤使用绑定连接
3.封锁力度—>相容矩阵–>相关判断及原理加意向锁
锁兼容性控制多个事务能否同时获取同一资源上的锁。如果资源已被另一事务锁定,则仅当请求锁的模式与现有锁的模式相兼容时,才会授予新的锁请求。如果请求锁的模式与现有锁的模式不兼容,则请求新锁的事务将等待释放现有锁或等待锁超时间隔过期。例如,没有与排他锁兼容的锁模式。如果具有排他锁(X 锁),则在释放排他锁(X 锁)之前,其他事务均无法获取该资源的任何类型(共享、更新或排他)的锁。另一种情况是,如果共享锁(S 锁)已应用到资源,则即使第一个事务尚未完成,其他事务也可以获取该项的共享锁或更新锁(U 锁)。但是,在释放共享锁之前,其他事务无法获取排他锁
这里写图片描述
意向排他锁(IX 锁)与 IX 锁模式兼容,因为 IX 表示打算只更新部分行而不是所有行。还允许其他事务尝试读取或更新部分行,只要这些行不是其他事务当前更新的行即可。此外,如果两个事务尝试更新同一行,则将在表级和页级上授予这两个事务 IX 锁。但是,将在行级授予一个事务 X 锁。另一个事务必须在行级锁被删除前等待。
T1加S锁,T2只能加S和IS锁。
X锁排他,pass。
因为加S所后,对应数据的子节点都隐式的加了S锁,所以加IX锁表示其子节点拟加X锁(确实逻辑上可能不会对子节点加锁,但是只要有这个可能性就要保证正确性),X排他,pass。SIX锁同理。
T1加X锁,T2只能干等着。因为X锁排他,优先级最高
T1加IS锁,T2不能加X锁。因为T1有对其子节点加S锁的可能而T2扼杀了这个可能性。
至于T2为什么能加IX锁是因为I锁只是意向锁,所以是可行的,若事务有非意向锁,根据相容矩阵再次判定。SIX锁综上同理。
T1加IX锁,T2不能加S,X,SIX锁的原因不再赘述。(不能加SIX锁的原因,可参考不能加S锁)
T1加SIX锁,T2只能加IS锁。
不能加S,X,IX,SIX锁的原因分别是:
T2加S,T1无法完成SIX锁的IX部分
T2加X,T1首先就无法完成S锁,更别说SIX锁
T2加IX,表示T2意向修改对象子节点,而T1要读对象,若T2修改其子节点便产生并发错误。故pass
T2加SIX,综合上面S和IX的情况。pass

参考文档:
1.【数据库管理系统第五版】 作者王珊

发布了32 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Evan_love/article/details/78753397