第三章:数据库系统
考点1:数据库模式
- 三级模式
- 外模式:用户与数据库系统的接口,对应视图
- 概念模式:数据库中全部数据的整体逻辑结构描述,对应数据库表
- 内模式:数据库在物理存储方面的描述,包括定义的内部数据类型、索引、文件的组织方式,对应物理文件
- 两级映射
- 外模式-概念模式:存在于外部级和概念级之间,实现了外部模式到概念模式之间的相互转换
- 概念模式-内模式:存在于概念级3和内部级之间,实现了概念模式到内部模式之间的相互转换
- 作用:保证数据库中的数据具有较高的逻辑独立性和物理独立性
- 数据独立性
- 逻辑独立性:逻辑结构发生改变时,用户程序对外模式的调用可以不做修改
- 物理独立性:数据库的内模式发生改变时,数据的逻辑结构不变
考点2:ER模型(内部实体之间有联系)
-
ER图各元素的定义
-
实体:现实世界中可以区别于其他对象的“事件”或“物体”,用矩形表示
-
弱实体:与依赖的实体以带圆形的线连接,与实体有很强的依赖关系,单独存在没有意义,用双边矩形表示
-
属性:实体的特性,体现为表中的属性列名,用椭圆表示
-
联系:反应实体与实体之间的联系,用菱形表示
-
考点3:关系代数
-
并:结果为二者元组之和去除重复行
-
交:结果为二者重复行
-
差:前者去除二者重复行
-
笛卡尔积:结果列数为二者属性列数之和,行数为二者元素数乘积
-
投影:对属性列的选择列出
-
选择:对元素行的选择列出
-
自然连接:结果列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。笛卡尔积、选择、投影的组合表示可以与自然连接等价
考点4:规范化理论
-
键的求取
- 候选键(候选码)是能够唯一标识元素却无冗余的属性组合,可以有多种不同的候选键,在其中任选一个作为主键。候选键的求取可以利用图示法找入度为0的属性集合,并在此基础上进行扩展,最终找到能够遍历全图的最小属性组合作为候选键,对于入度为0在关系依赖集中可以理解为从未在箭线右侧出现。
- 组成候选码的属性就是主属性,其他为非主属性。
- 外键是其他关系模式的主键。
-
范式
-
第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据
-
第二范式(2NF):当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时
-
第三范式(3NF):当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时
-
BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码
-
-
规范化过程
- 保持函数依赖:设数据库模式ρ={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解ρ保持FD。
- 无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。(表格法,公式法-仅限分解为2个子关系)
考点5:SQL语言
-
数据表操作
-
1
创建数据表:create table 表名( 字段名 数据类型 [非空约束][auto_increment] primary key(字段名) constraint 外键名 foreign key(字段名) references 主表名(主键) );
-
修改表名:alter table 旧表名 rename 新表名
-
修改字段名:alter table 表名 change 旧字段名 新字段名 新数据类型;
-
修改字段数据类型:alter table 表名 modify 字段名 数据类型;
-
添加字段:alter table 表名 add 字段名 数据类型
-
删除字段:alter table 表名 drop 字段名;
-
删除外键约束:alter table 表名 drop foreign key 外键名
-
删除表:drop table 表名
-
-
表数据的增删改
- 增加数据:insert into 表名(字段1,字段2,…) values(值1,值2,…)
- 删除数据:delete from 表名 where 表达式
- 修改数据:update 表名 set 字段=新值 where 表达式
-
查询数据
考点6:并发控制
-
事务特性
- 原子性:事务是原子的,要么都做,要么都不做
- 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性的状态
- 隔离性:事务相互隔离,当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的
- 持续性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效
-
并发产生的问题
-
封锁协议
- 共享锁(S锁):若事务T对数据对象A添加了S锁,则只允许T读取A,但不能修改A。并且其他事务只能对A加S锁,不能加X锁
- 排他锁(X锁):若事务T对数据对象A添加了X锁,则只允许T读取和修改A,其他事务不能再对A加任何锁
考点7:数据库完整性约束
- 实体完整性:规定其主属性不能去空值
- 参照完整性(也称为引用完整性):规定其外键为参照表的主键值或为空值
- 用户自定义完整性(函数):用户针对某一具体的关系数据库的约束条件
- 触发器:一种复杂的完整性约束。
视频来源 软件设计师