一、事务是什么?
简单来说,事务是数据库中执行事件的最小单位,要保证一组数据库操作,要么全部成功,要么全部失败。
二、事物操作数据库的四大特性(ACID)
谐音记忆(一致认为原子应该持续隔离。 OS: 原子弹太可怕了,大家一致觉得需要将原子弹 持续地隔离起来,不能用于战争!最好用英文记忆,记不住用谐音加强记忆)
- 原子性 (Atomicity)
原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚。
- 一致性 (Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。
一致性:简单来说就是在事物执行前和执行后,必须保持数据的一致。
举个例子:A和B之间进行转账,A和B的钱加起来一种是2000块钱,那么无论他们之间 进行了多少次的转账操作,最后的钱数加起来应该还是等于2000。
- 隔离性 (Isolation)
隔离性:一个事物执行的过程当中,不能被其他的事物干扰。MySQL的隔离性主要由锁加MVCC实现。 锁:比如有事物A和事物B,相对于A来说,你B想要执行,要么在我执行之前执行,要么在我执行完毕之后,你再开始执行。 MVCC:多版本并发控制,事务读到的数据总是以自己事务开始时为准,除非是自己对数据做了操作;否则别人的操作对我不可见。
- 持久性 (Durability)
持久性:事物被提交之后,应被永久的存储到了数据库当中。一经提交,永久有效,不用担心数据的丢失问题。
数据库事务四个特性及实现其的子系统: 原子性:一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要么全部执行,要么什么也不做(由DBMS的事务管理子系统来实现); 一致性:一个事务独立执行的结果,应(由DBMS的完整性子系统执行测试任务); 隔离性(由DBMS的并发控制子系统实现); 持久性(由DBMS的恢复管理子系统实现的)
共享锁
- 共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
- S锁共享锁事务可以读一行,其他事务不能获得排它锁 X可以读也可以写,其他事务不能获得排它锁x也不能获得共享锁s
- 基本的封锁类型有两种:排它锁(X锁)和共享锁du(S锁).所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,…所谓S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁
若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A
范式
- 三范式,1原子性2非部分函数依赖3非传递函数依赖(非主属性对码的)。
- 1范式,原子性,每一属性都是不可分隔的;2范式,无非主属性对码的部分函数依赖;第3范式,无非主属性对码的传递函数依赖;BCNF,无主属性对码的部分函数依赖和传递函数依赖。
数据模型
关系数据模型的逻辑结构是关系结构 二维表结构 层次数据模型的逻辑结构是二叉树 网状数据结构的逻辑结构是图
数据库语言
DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。
外模式也称子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据逻辑表示。对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。
关系模式
一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系 的属性转化为关系的属性,该关系的码则有三种情况: 若联系为1:1,则每个实体的码均是该关系的后选码。 若联系为1:n,则关系的码为n端实体的码。 若联系为m:n,则关系的码为诸实体码的组合。
二维表
自20世纪80年代以来,新推出的数据库管理系统几乎都支持关系模型。Visual FoxPro就是一种关系数据库管理系统,它所管理的关系是若干个二维表。 在关系模型的概念中,一个关系就是一张二维表,每个关系有一个关系名。在Visual FoxPro中,一个关系存储为一个文件,文件名扩展名为.dbf,称为“表”。
两段锁
两段锁协议(Two-Phase Locking――2PL) 两段锁协议规定所有的事务应遵守的规则: ① 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。 ② 在释放一个封锁之后,事务不再申请和获得其它任何封锁。 即事务的执行分为两个阶段: 第一阶段是获得封锁的阶段,称为扩展阶段。 第二阶段是释放封锁的阶段,称为收缩阶段。 定理:若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的。 对于遵守两段协议的事务,其交叉并发操作的执行结果一定是正确的。值得注意的是,上述定理是充分条件,不是必要条件。一个可串行化的并发调度的所有事务并不一定都符合两段锁协议,存在不全是2PL的事务的可串行化的并发调度。 同时我们必须指出,遵循两段锁协议的事务有可能发生死锁。
此时事务T1 、T2同时处于扩展阶段,两个事务都坚持请求加锁对方已经占有的数据,导致死锁。 为此,又有了一次封锁法。一次封锁法要求事务必须一次性将所有要使用的数据全部加锁,否则就不能继续执行。因此,一次封锁法遵守两段锁协议,但两段锁并不要求事务必须一次性将所有要使用的数据全部加锁,这一点与一次性封锁不同,这就是遵守两段锁协议仍可能发生死锁的原因所在。 两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。 事务的两段锁协议是保证可串行化调度的充分条件。
删除
drop trigger 删除触发器 Drop用于删除数据表或数据库,或删除数据表字段。 remove:删除数据库文件 Truncate:删除数据表中的数据(仅数据表中的数据,不删除表)。 delete 和drop 最本质的区别在于,delete是数据操纵语言,即DML,而drop是数据定义语言,即DDL。因此,当我们需要删除或者创建一个东西,如表/视图/触发器等等,用的是数据定义语言。当我们对已经存在的表/视图/触发器进行修改/更新时,用的是数据操纵语言。以表为例,如果你不想将表真的删掉,只是想删除其中某些特定的记录,则应该用delete,此时,表的其他数据以及表的结构还在。反之,如果你是整个表都不想要了,则可以用drop。
设计模式
数据库设计包括六个主要步骤: 1、需求分析:了解用户的数据需求、处理需求、安全性及完整性要求; 2、概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型; 3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图; 4、物理结构设计:设计数据的存储结构和存取方法,如索引的设计; 5、系统实施:组织数据入库、编制应用程序、试运行; 6、运行维护:系统投入运行,长期的维护工作。
外模式是窗(逻辑表示),模式是房子(逻辑结构),内模式是房子的结构(物理结构)
数据库的设计分为:概念设计,逻辑设计,内部设计和外部设计。
外模式 外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行操作。外模式反映了数据库的用户观。
概念模式 模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。
内模式 内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。 在一个数据库系统中,只有唯一的数据库, 因而作为定义 、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。
ER图
E-R图 用矩形表示实体型;用椭圆表示实体的属性;用菱形表示实体型之间的联系 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,三者分别用矩形、椭圆、菱形表示
数据完整性
四类数据完整性: 实体完整性,确保不出现完全相同的数据记录 区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现 参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。 用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。
数据独立性
数据独立性包括物理独立性和逻辑独立性。
物理独立性指应用程序与存储在磁盘的数据库中数据相互独立,即数据物理存储改变时应用程序不变。 逻辑独立性指应用程序与数据库逻辑结构相互独立,即数据逻辑结构改变时,应用程序可以不变。
数据库三级模式的概念好混乱。
默念三遍:
外模式——子模式——用户模式,用户级;
概念模式——模式——逻辑模式,概念级;
内模式——存储模式,物理级。
可以这样来记:内模式,内部用的,底层描述,和存储相关,物理级别的;
概念模式是数据库设计者DBA从用户需求分析中提取的概念级的模式,然后划出一个子模式便于程序员增删改查的用户模式。
DDBS:Distributed DataBase System 分布式数据库系统
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、选择(σ)、投影(π) 四个组合操作: 交(∩)、连接(cross )、除法(÷) σ表示关系代数选择操作 ; σ3<'4’? 代表:从R中选择第三列的属性值小于4的行; 所以选择D.
关系运算包括选择、投影、连接以及除法。 集合运算是二目运算,包括并、差、交、广义笛卡尔积四种运算。
候选码(Candidatekey)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。 简单的情况:候选码只包含一个属性。
在关系模式 R分解成数据库模式ρ时,谈论无损联接的先决条件是存在泛关系。
完整性
完整性控制目的在于保证数据库里的数据语意是正确的,和安全性控制一起属于DBMS提供的数据保护机制。完整性控制包括:完整性约束,并发控制,故障恢复。 完整性约束: 完整性约束是完整性控制的核心。DBMS要提供各种完整性约束的实现机构,保证对数据库的任何更新操作都不会破坏数据语意的正确性和准确性。 并发控制: 并发机制不正确可能导致 脏读 、 幻读 和 不可重复读 等此类问题。 并发控制 的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。在某些情况下,这些措施保证了当用户和其他用户一起操作时,所得的结果和她单独操作时的结果是一样的。在另一些情况下,这表示用户的工作按预定的方式受其他用户的影响。 故障恢复: 故障恢复是第三种完整性控制。在应用系统中,数据库往往是最核心的部分,一旦数据库损坏,将会带来巨大的损失,所以 数据库恢复 越来越重要。使用数据库的过程中,由于断电或其他原因,有可能导致数据库出现一些小错误,比如检索某些表特别慢、查询不到符合条件的数据等。出现这些情况的原因往往是数据库有些损坏或索引不完整。任何 数据恢复 的方法都基于 数据备份 。
数据库安全性机制:
- 自主安全性机制:通过权限在用户之间传递,使用户自己来管理数据库;(权限)
- 强制安全性机制:通过对数据和用户强制分类,使不同类别的用户能访问到不同类型的数据;(数据分类)
- 推断控制机制:防止推断出不该被知道的数据;(推断)
- 数据加密存储机制:对数据加密。(加密)
多级安全是指:给每一类数据设定一个安全级别,同时给每一类用户也设定安全级别,以此来控制什么级别的数据能被什么级别的用户访问。
三种常用抽象 ? 分类 ? 聚集(Aggregation) ? 概括(Generalization)
数据库的完整性是指数据一致性,正确性,有效性,相容性。
这是啥???
层次模型可以表示一对多的联系
网状模型可以表示多对多的联系
|