1. ER图转换原则
- 一个实体转换为一个关系模式,实体的属性就是关系模型的属性
- 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性都是关系模型的属性。
- 一个1:1的联系可以转换成一个独立的关系模型,也可以与任意一端对应的关系模型合并。如果转换成一个独立的关系模型,与该联系相连的实体的码以及联系的属性都是该关系模型的属性,每个实体的码均是该关系模型的候选码。
- 一个1:n的联系可以转换成一个独立的关系模型,也可与n端的实体的关系模型合并。如果转换成一个独立的关系模型,则与该联系相连的各实体的码和联系本身的属性都是该关系模型的属性,而关系的码为n端实体的码。如果与n端对应的关系模型合并,则应该在n端实体对应的关系模型中加入1端实体所对应的关系模式的码,以及联系自身的属性。
- 一个n:n的联系转换成一个关系模式。与该联系相连的各实体的码以及该联系自身的属性都是该关系模式的属性,而关系的码就是各实体的码的组合。
- 同一实体集的实体间的联系,即子联系,也可按上述1:1,1:n,n:m三种情况分别处理。
- 具有相同码的关系模式可以合并,即如果两个关系模式具有相同的主码,可以考虑将它们合并为一个关系模式。合并方法是将其中一个关系模式的全部属性加入到另一个关系模式种,然后去掉其中的同义属性(可能同名可能不同名),并适当调整属性的次序。
2. 数据库并发机制
当多个用户并发地存取数据库时,就会产生多个事务同时存取同一数据的情况。若对并发操作不加以控制,就可能会存取和存储不正确的数据,因此,为了保证事务的隔离性和一致性,数据库管理系统必须提供并发控制机制。
并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。
并发控制的主要技术有封锁,时间戳,乐观控制法和多版本并发控制。
- 封锁:事务transaction在对某个数据操作之前,必须向系统发出请求,对数据上锁。加锁后事务就对该对象有了控制权,在事务t释放它的锁之前,其他事务不能更新此造作对象。
- 封锁的类型:有排他锁和共享锁两种
- 排他锁:又称写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他人和其他任何事物都不允许对该数据对象加任何类型的锁,直到T释放A上的锁位置。
- 共享锁:又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能对A加S锁,而不能加X锁,直到T释放A上的S锁位置。这就保证了其他事务可以读A,但在T释放A伤的锁之前不能对A做任何修改。
- 封锁协议
3. 建立数据库的流程
- 需求分析
- 概念设计
- 逻辑设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
4. 数据库范式
1NF 所有属性都不可再分(每个数据项都不可以再分)
2NF 消除了1NF中非主属性对码的部分函数依赖
3NF 消除了2NF中非主属性对码的传递函数依赖
BCNF 消除了3NF中 主属性对码的部分,传递函数依赖,每一个决定因子中都包含码
只含有两个属性的二元关系一定是BCNF。 全码一定是BCNF。
全部是主属性的关系模式一定能达到3NF不一定达到BCNF。
5. 数据库的索引
- 索引的数据结构
- B+树索引和hash索引
- B+树索引
B+树具有有序性,所有数据存放在叶子节点。B+树的索引又可以分为主索引和辅助索引。主索引为聚簇索引,辅助索引为非聚簇索引。
聚簇索引和非聚簇索引的区别:
聚簇索引和非聚簇索引最主要的区别是数据和索引是否分开存储。
- 聚簇索引:将数据和索引放在一起存储,明显上图是聚簇索引。
- 非聚簇索引:将数据和索引分开存储,索引叶子节点存储的是指向索引的指针,下图为非聚簇索引。
上图的非聚簇索引是以非主键作为B+树的索引的键值构成的B+树索引,非聚簇索引的叶子节点存放着主键值。所以使用非聚簇索引查找时,会先找到主键值,然后根据聚簇索引找到主键对应的数据。
6. 数据库的视图
视图是从一个或几个基本表(或视图)导出的表。与基本表不同,视图是一个虚表。
数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图一经定义,就可以和基本表一样被查询,被删除。
- 创建视图
create view <视图名> [<列名>...]
as <子查询>
[with check option]
with check option 表示对视图进行update、insert、delete操作时保证更新、插入、删除的行满足视图定义的子查询中的条件表达式。
关系数据库管理系统在执行create view
语句的结果知识把视图的定义存入数据字典,并不执行其中的select
语句。
2. 删除视图
drop view <视图名> [cscade]
- 查询视图
用户可以像对基本表查询一样查询视图。
查询步骤:- 首先进行有效性检验,检查查询涉及的表和视图是否存在
- 从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起,转化成等价的对基本表的查询,然后再执行修正了的查询语句。这一转换过程叫视图消解
- 更新视图
包括update、insert、delete。由于视图中是不实际存储数据的虚表,因此对视图的更新最终都要转换为对基本表的更新。
7. 数据库的完整性
数据库的完整性包括实体完整性,参照完整性和用户自定义完整性。
- 用户定义的完整性规则属于列式完整性约束
- 而实体性完整性和参照性完整行都属于表级完整性约束。
-
实体完整性。(主属性不能为空)若属性a是基本关系r的主属性,则a不能取空值。
所谓空值就是不知道或不存在或无意义的值。 -
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。(学生的成绩应该大于或等于零,职工的工龄应小于年龄。)
-
参照完整性。(不允许引用一个不存在的实体)
外码的值 或者取空值,或者等于s中某个元组的主码值。
8. 数据库触发器
9. delete和drop的作用
10. 数据库的三级模式和两级印象
- 三级模式
- 模式也称逻辑模式,概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
- 内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。是DBMS管理的最底层。
外——模式——内
逻辑(用户)数据库——概念数据库——物理数据库
- 两级映像
外模式模式映像。当模式改变时,由数据库管理员对各个外模式模式印象做相应的改变。
可以使外模式保持不变。应用程序是依赖数据的外模式编写的,从而应用程序不用修改,保证了数据与程序的逻辑独立性。
模式内模式映像。当数据库的存储结构改变时,由数据库管理员对模式内模式映像做相应的改变,可以使模式保持不变,从而应用程序保持不变,保证了数据与程序的物理独立性。
11. 数据库死锁
-
死锁:如果系统中又两个或两个以上的事务都处于等待状态,每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何事务都无法推进,这种现象称为系统进入了死锁。
-
死锁的预防(不太适合数据库的特点)
- 一次封锁法:要求每个事务必须一次性将所有要用的数据全部加锁,否则就不能继续执行。
优点:有效避免了死锁的发生。
缺点:扩大了封锁的范围,降低里系统的并发度。 - 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事物都按这个顺序实行封锁。
缺点:封锁对象多,且不断变化,维护封锁顺序成本太高;事务的封锁请求可以随着事务执行而动态决定,很难事先确定每一个事务要封锁哪些对象,因此很难按规定的顺序加锁。
- 一次封锁法:要求每个事务必须一次性将所有要用的数据全部加锁,否则就不能继续执行。
-
死锁的诊断与接触(常用方法)
- 超时法:如果一个事物的等待实践超过了规定的时限,就认为发生了死锁。时限设置的大小决定了封锁的效率。太小会增加死锁的误判,太太大发现死锁的滞后实践过长。
- 等待图法:如果发现图中存在回路,则表示系统中出现了死锁,选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁,是其他事务得以继续运行下去。
-
可串行化调度:多个事务并发执行的结果与按某一次串行执行这些事务的结果一致我们就说它是正确的。
如何实现可串行化调度
- 冲突可串行化:通过调换那些非冲突操作使得事务调度的变成可串行化调度
- 两段锁协议
-
封锁对象的大小称为封锁粒度:
- 封锁粒度越大,数据库能够封锁的数据单元就越少,并发度就越小,系统开销越小。
- 封锁粒度越小,并发度越高,系统开销越大
12. 主键和外键
13. 数据库DBA、DBMS的作用
数据库的特点:
- 数据结构化:数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统最本质的区别。
- 数据的共享性高,冗余度低且易扩展
- 数据独立性高
- 数据由DBMS统一管理
数据库管理系统(DBMS):DBMS在数据库建立、运行和维护时对数据进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。- 数据的安全性保护:保护数据以防不合法使用造成的数据泄密和破坏。
- 数据的完整性检查:指数据的正确性、有效性和相容性。
- 并发控制:当多个用户的并发进程同时存取和修改数据库时,可能会因为互相干扰而得到错误的结果使得数据库的完整性遭到破坏,所以必须对多用户的并发操作加以控制和协调。
- 数据库恢复:计算机系统的硬件故障、软件故障、操作员的事务以及故意破坏都会影响数据库中数据的正确性。将数据的错误状态恢复到某一已知的正确状态。
1. 用户能不能对数据库进行增删改查
14. 数据库的存储过程
15. 数据库的事务
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务是恢复和并发控制的基本单位。
事务和程序是两个概念,一般来讲,一个程序中包含多个事务。
- Sql Server中事务的语句有哪些
16. 数据库中怎么消除冗余,举个例子
17. 数据库的ACID特性,什么是数据库一致性
事务的ACID特性
原子性:事务是数据库的逻辑工作单位,事务中的诸操作要么都做,要么都不做。
由DBMS事务子系统实现
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
由系统检查完整性约束来自动完成。
隔离性:并发执行的事物是相对独立的。一个事务的执行不能被其他事务干扰,各个事务的内部操作是相互隔离的。
由DBMS的并发控制子系统实现。
持久性:一个事务一旦提交,它对数据库中数据的改变就是永久性的。
由DBMS的恢复管理子系统实现。