数据库基础
ACID,NULL,MVCC,约束、概念模型、第三范式、连接
ACID
ACID即数据库的四大特性:
- 原子性(Atomicity):指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency):指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性(Isolation):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
- 持久性(Durability):意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
NULL
在SQL中,NULL用于表示缺失的值,数据表中的 NULL 值表示该值所处的字段为空。
MVCC
MVCC是一种多版本并发控制机制。它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能。
- 大多数的MySQL事务型存储引擎,如InnoDB都不止使用简单的行加锁机制,都和MVCC-多版本并发控制一起使用。
- 锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销。
约束
数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。
完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。
约束类型:
- 唯一性 UNIQUE
- 主键约束 Primary Key
- 外键约束 Foreign Key
- 检查约束 CHECK
- 空值约束 NOT NULL
- 默认值约束 DEFAULT
三大模型
概念模型:对一个具体业务的抽象,确定领域实体属性关系,使用E-R图进行表示。
E-R图:由实体、属性和联系三个要素构成。
逻辑模型:将概念模型转化为具体的数据模型的过程,即按照概念结构设计阶段建立的基本E-R图,按选定的管理系统软件支持的数据模型(层次、网状、关系、面向对象),转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。目前最流行就是关系模型(也就是对应的关系数据库)
物理模型:根据逻辑模型对应到具体的数据模型的机器实现。
第一范式 1NF
强调的是列的原子性,即列不能够再分成其他几列
在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。
第二范式 2NF
数据库表中的每个实例或行必须可以被惟一地区分,并且有一个唯一的属性去标记该行(实体),这个属性一般被称为主键
实体的属性完全依赖于其。
- 表必须有一个主键
- 没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分
第三范式
3NF在2NF的基础之上,消除了非主属性对于主键的传递函数依赖。也就是说, 如果存在非主属性对于主键的传递函数依赖,则不符合3NF的要求。