数据库模式
数据的逻辑独立性:模式改变时,对应的外模式/模式映像发生改变。应用程序是根据外模式编写的,从而应用程序不必,保证了数据与程序的逻辑独立性
数据的物理独立性:数据库的物理结构改变时,对应的模式/内模式映像发生改变,可以使模式保持不变,从而应用程序保持不变,保证了数据与应用程序的物理独立性。
牛客网–小王子X
传统数据模型
层次模型: 按照层次结构组织数据库数据,用树形结构表示实体集与实体集之间的联系。
网状模型: 利用网状结构表示实体集与实体集之间联系的模型。
关系模型: 以集合论中的关系概念为基础发展起来的一种数据模型,用二维表表示现实世界实体集与实体集间的联系。
完整性约束
- 实体完整性约束: 关系的主关键字不能重复也不能为空。
- 域完整性约束: 数据字段的取值范围、字段单位等方面的合理性。
- 参照完整性约束: 主关键字与外部关键字之间的约束。
- 用户完整性约束: 根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。
数据库设计流程
- 需求分析: 通过自上向下或自下向上分析需求,形成需求说明书。
- 概念设计阶段: E-R图。
- 逻辑设计阶段: 将E-R图转换为关系模型。
- 物理设计阶段: 为数据库选择合适的存储结构和存取路径。
- 系统实施: 数据载入,编程,测试,试运行。
- 运行维护: 功能扩展,数据库日常维护。
SQL语言
- 查询(DQL): select(既是DQL又是DML)
- 操作(DML): insert,update,delete,select
- 定义(DDL): create,drop
- 控制(DCL): grant,commit,rollback,revoke
SQL集合查询
并:union
交:intersect
差:except
视图
定义: 由一个表或多个表导出的虚拟的表,内容由查询定义,具有普通表的结构,但是不存储数据。
修改: 对视图的修改最终会转换为对基本表的修改。
锁
共享锁(S): 多个事务可以封锁一个共享页;
允许所有事务读但不允许修改共享页;
该页读取完毕之后释放共享锁。
排它锁(X): 只允许一个事务对页进行封锁。
该事务可以对页进行读或写,其它事务在排它锁释放之前无法访问该页;
该事务结束之后释放排它锁。
更新锁(U): 添加U锁的页不可以添加X或U锁;
允许其它事务读,一事务当要修改数据U锁会升级为X锁;
该事务结束后释放U锁。
表的属性
- 候选码: 能够唯一地标识一个元组的最小属性组。
准确定义:设关系R有属性A1,A2,…,An,其属性集K=(Ai,Aj,…,Ak)当且仅当满足下面的条件时,K被称为候选键。
(1)唯一性:关系R的任意两个不同的元组,其属性集K的值是不同的。
(2)最小性:组成关系键的属性集(Ai,Aj,…,Ak)中,任一属性都不能从属性集K中删掉,否则将会违反唯一性原则。
2.主键: 如果一个关系有多个候选码,选中的其中一个作为主码。
3.主属性: 包含在任何一个候选键中的属性为主属性。
4.非主属性: 不包含在任何一个候选键中的属性为非主属性。
5.外键: 关系模式R中属性或属性组X并非R的键,但X是另一个关系模式的键,则称X是R的外部键,简称外键。
函数依赖公理
闭包算法
//输入:X,函数依赖F
//输出:X+,
//步骤
X+:=X
while(X+发生变化)do
begin for each 函数依赖A->B in F do
begin
if A包含于X+
then X+:=X+∪B
end
end
end
ACID
原子性: 要么全做要么全不做,通过事务管理子系统实现
一致性: 事务执行的结果要从一个一致性状态变到另一个一致性状态,一致性是指数据库中数据满足完整性约束,通过完整性约束子系统实现
隔离性: 并发执行的事务应该相对独立,一个事务的执行不能被其它事务干扰,通过并发控制子系统实现
持久性: 指一个事务一旦提交,它对数据库的改变应该是永久的,其它任何故障或操作不应该对其执行结果有任何的影响,通过恢复管理子系统实现
并发带来的问题
分为三类,丢失或覆盖更新,脏读,不可重复读
可串行化调度
多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行结果相同。