第三章 数据库技术基础
第一节 三级模式-两层映射
三级模式:一个数据库只有一个内模式和一个概念模式,可以有多个外模式。
-
概念模式(又叫概念数据库,是全局数据落结构的描述,是全体用户的公共数据视图)处于中层:反映设计者的数据的全局逻辑要求。
-
内模式(物理数据库,给出数据库物理存储结构与存取方式。针对数据库本身)
-
外模式(又称为子模式或用户模式,是用户的数据视图。针对用户,反映用户对数据的要求)。
两级映射:外模式——概念模式映射,概念模式——内模式映射。
两级映射保证了数据库中数据具有较高的逻辑独立性和物理独立性。
第二节 数据库设计过程
下午会考的题:数据流图,ER模型
第三节 ER模型
属性:椭圆形
实体:长方形
联系:菱形
弱实体:长方形加两条杠
ER模型:反映的事是实体与实体之间的关系
ER之间的联系:1:1 1:N N:N
联系转关系模式【一个实体型转换为一个关系模式】
- 1:1联系,可将联系合并至任意一端的实体关系模式中
- 1:n,可将联系合并至N端实体关系模式中
- m:n,联系必须单独转换成关系模式
第三节 关系代数
1,关系代数的基本操作:插入、删除、修改、查询(包含投影预算,选择运算、笛卡尔积运算就是连接运算)。
2,关系代数中的扩充运算:交运算,除运算,连接与自然连接运算。
关系代数的五种基本运算:差,并,笛卡尔积,选择,投影。
3,投影是指从关系模型中指定若干个属性组成行的关系。投影就是选择列。
4,选择是指从关系中找出满足给定条件的元组。选择就是选择行。
投影和选择针对两个表。差,并,积,交,自然连接针对3个表。
5,笛卡尔积T=R×S
6,并:T=R+S 就像数学里的并集一样。
7,差T=R-S
8,交:和数学中的交集一样
9,除T=R÷S和笛卡尔积反向操作。满足行,除去列。
10,自然连接 ▷◁ :中间有共同属性进行连接。
第四节 规范化理论
只要数据冗余,就会产生、修改、插入删除异常
1,键
候选键:唯一标识元组,且无冗余,可以有多个
主键:任选一个 【特点:唯一非空】
外键:其他关系的主键
题目:求候选键【上午下午都会考】
图示法求候选键
- 用有向图的方式表示函数的依赖关系
- 找出入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集为关系模式的候选键
- 若入度为0的属性集不能遍历图中所有的结点,则需要尝试性的将一些中间结点(既有入度,也有出度的阶段)并入入度为0的属性集中,直至该集合能遍历所有的结点,集合为候选键
答案:A ABCD B
主属性与非主属性
定义:组成候选码的属性就是主属性,其它的就是非主属性
2,范式
完全依赖:(AB->C)
- 只有A,B能够得到C,则称C完全依赖于AB
部分函数依赖:(AB-> C , A-> C)
- A,B能都得到C,A能够得到C ,就称C部分依赖于AB
传递函数依赖:(A->B, B->C)A推导出B,B推导出C
第一范式(1NF):在关系模式R中,当且仅当所有域包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式
例题:如图所示,A->C、AB->D,存在着部分依赖,不满足第二范式,所以属于第一范式
第二范式(2NF):当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式R是第二范式:
某企业的培训关系模式R(培训科目,培训师,学生,成绩,时间,教室),R的函数依赖集F={培训科目→培训师,(学生,培训科目)→成绩,(时间,教室)→培训科目,(时间,培训师)→教室,(时间,学生)→教室}。关系模式R的主键为(),其规范化程度最高达到()。
画图分析了之后,可以知道,主键是时间和学生,该图中没有部分依赖,其他属性都依赖于主键,属于第二范式。有图可知 (时间,教室)→培训科目,培训科目→培训师,存在着传递依赖,不属于第三范式
第三范式(3NF):当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。
BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF,当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
总结
- 第一范式中存在着部分依赖
- 第二范式中存在着传递依赖
- 做题的时候找依赖,就可以区分不同的范式了
3,模式分解
- 保持函数依赖分解
设数据库模式p={R1,R2,…,Rk}是关系模式R的一个分解,F是R上函数依赖集,p中每个模式Ri上的FD集是Fi,如果{F1,F2,…,Fk}与F时等价的(即相互逻辑蕴涵),那么称分解P保持FD
答案:是 否
- 无损分解
有损:不能还原 无损:可以还原
无损连接分解:指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式 - 表格法
- 公式法【只适用于两个关系模式】
如果R的分解为P={R1,R2},F为R所满足的函数依赖集合,分解P具有无损连接的必要条件是
R 1 ∩ R 2 → ( R 1 − R 2 ) R_1\cap R_2 \to ( R_1 - R_2 ) R1∩R2→(R1−R2) 或 R 1 ∩ R 2 → ( R 2 − R 1 ) R_1 \cap R_2 \to ( R_2 - R_1) R1∩R2→(R2−R1)
- 公式法【只适用于两个关系模式】
如果R1和R2的公共属性能函数决定R1中或R2中的其他属性,这样的分解就具有无损连接
例题:设 R = A B C R=ABC R=ABC, F = { A → B } F= \{ A \to B \} F={A→B},则分解 ρ 1 = { R 1 ( A B ) , R 2 ( A C ) } \rho_1 = \{ R_1(AB),R_2(AC) \} ρ1={R1(AB),R2(AC)}与分解 ρ 2 = { R 1 ( A B ) , R 2 ( B C ) } \rho_2 = \{ R_1(AB),R_2(BC) \} ρ2={R1(AB),R2(BC)}是否都为无损分解?
问题1:如下图公式得出,问题1的连接是无损连接
R 1 ∩ R 2 = A R 1 − R 2 = B R 2 − R 1 = C R_1\cap R_2 = A\\R_1 - R_2 = B\\R_2 - R_1 = C R1∩R2=AR1−R2=BR2−R1=C
问题2:如下图公式得出,问题2的连接是有损连接
R 1 ∩ R 2 = B R 1 − R 2 = A R 2 − R 1 = B R_1\cap R_2 = B\\R_1 - R_2 = A\\R_2 - R_1 = B R1∩R2=BR1−R2=AR2−R1=B
第五节 SQL语句
1,SQL语句
表 【增删改】
create table <表名> (列名……);
-- 例如:创建student表
CREATE TABLE Student (
Sno char(5) PRIMARY KEY , -- 主键
Sname char (8) NOT NULL, -- 不为空
SD char (10) ,
Sage int ,
Sex char (2));
create table SC(
Sno char(5),
Cno char(2) unique, -- 不重复
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno)); -- 外键
-- 新增表
alter table <表名>
-- 删除表
drop table <表名>
-- 例如:删除学生表
drop table Student;
-- 授权语句的格式如下: GRANT〈权限> [,<权限>]...[ON<对象类型><对象名>] TO <用户>[,<用户][WITH GRANT OPTION];
-- 若在授权语句中指定了 “WITH GRANT OPTION”子句,那么,获得了权限的用户还可以将该权限赋给其他用户。
数据–增删改查
2,并发控制
事务:原子性,一致性,隔离性,持续性
- 原子性(Atomicity):事务是原子的,要么做,要么都不做。
- 一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
- 隔离性隔离性(lsolation):事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事物都是不可见的。
- 持久性(Durability):一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。题干描述的是持久性。
并发产生的问题:丢失更新,不可重复读问题(验算不对),读 “ 脏 ” 数据(ROLLBACK)。
解决方案【封锁协议】:S封锁,X封锁,两段锁协议
3,数据库完整性约束
实体完整性约束:主键(唯一非空)
参照完整性约束:外键(一旦有,必须正确)
用户自定义完整性约束:例如,限制用户年龄在6~23
第六节 真题
- 采用二维表格结构表达实体类型及实体间联系的数据模型是关系模型
- E-R模型向关系模型转换时,两个以上实体之间多对多的联系应该转换为一个独立的关系模式,且该关系模式的关键字由这些实体的关键字组成。
- 在关系数据库系统中,全码(All-key)是指关系模型的所有属性组是这个关系模式的候选键。
- 概念模式设计阶段是根据对用户信息需要的分析设计E-R图,对于属性的分析,派生属性是指可以由其他属性经过运算得到的属性,因而派生属性产生冗余,通常不存储, 如员工实体Emp的年龄,可以通过出生日期推导出来;多值属性是指一个实体在该属性上会同时取多个属性值,这些值也都必须存储,如员工实体Emp的联系方式。
- 在多对多联系转换为关系模式时,应该将两个实体分别转换为一个关系模式,并将其联系也转换为一个独立的关系模式,该关系模式的属性包括联系本身的属性以及两实体的主键。
- 根据主属性的定义,“包含在任何一个候选码中的属性叫做主属性(Prime attribute),否则叫做非主属性(Nonprime attribute)”,所以,关系中的3个属性都是主属性
- 哈希表和二叉排序树都可以在查找过程中动态创建,属于动态查找表。顺序查找方法按照设定的次序依次与查找表中元素的关键字进行比较,在顺序存储结构和链表结构上都可以实现该查找过程。二分查找需要对中间元素进行快速定位,在链表结构上无法实现。
WITH CHECK OPTION表示对UPDATE,INSERT,DELETE操作时保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
OLAP工具是针对特定问题的联机数据访问与分析。它通过多维的方式对数据进行分析、查询和报表。比如,从时间、地区和商品种类三个维度来分析某家电商品的销售数据 OLAP OLTP ETL
物理独立性是指的内模式发生变化,只需要调整模式与内模式之间的映像,而不用修改应用程序。
逻辑独立性是指的模式发生变化,只需要调整外模式与模式之间的映像,而不用修改应用程序。
数据库设计的六个阶段:
- 需求分析: 对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解现行系统的概况,确定新系统功能的过程中, 确定系统边界、收集支持系统目标的基础数据及其处理方法。并形成需求说明文档、数据字典和数据流程图。用户需求分析阶段形成的相关文档用以作为概念结构设计的设计依据。
- 概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
- 逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换,进行关系规范化;
- 数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存储路径;
需求分析阶段的任务是:对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解现行系统的概况,确定新系统功能的过程中,确定系统边界、收集支持系统目标的基础数据及其处理方法。
逻辑设计阶段的任务之一是对关系模式进一步的规范化处理。因为生成的初始关系模式并不能完全符合要求,会有数据冗余、更新异常存在,这就需要根据规范化理论对关系模式进行分解,以消除冗余和更新异常。不过有时根据处理要求,可能还需要增加部分冗余以满足处理要求。逻辑设计阶段的任务就需要作部分关系模式的处理,分解、合并或增加冗余属性,提高存储效率和处理效率。
数据加了共享锁,就只能在加共享锁,其他锁都不能加。 数据加了排它锁,什么锁都不能加,包括排它锁。
数据库管理系统利用日志文件来进行事务故障恢复和系统故障恢复。在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。当系统正常运行时,按一定的时间间隔,把数据库缓冲区内容写入数据文件;一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。
为了保证数据库中数据的安全可靠和正确有效,数据库管理系统(DBMS)提供数据库恢复、并发控制、数据完整性保护与数据安全性保护等功能。数据库在运行过程中由于软硬件故障可能造成数据被破坏,数据库恢复就是在尽可能短的时间内,把数据库恢复到故障发生前的状态。具体的实现方法有多种,如:
- 定期将数据库作备份;在进行事务处理时,对数据更新(插入、删除、修改)的全部有关内容写入日志文件;
- 当系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;
- 当发生故障时,根据现场数据内容、日志文件的故障前映像和检査点文件来恢复系统的状态
DDBS的基本特点:
- 物理分布性:数据不是存储在一个场地上,而是存储在计算机网络的多个场地上。
- 逻辑整体性:数据物理分布在各个场地,但逻辑上是一个整体,它们被所有用户(全局用户)共享,并由一个DDBMS统一管理。
- 场地自治性:各场地上的数据由本地的DBMS管理,具有自治处理能力,完成本场地的应用(局部应用)。
- 场地之间协作性:各场地虽然具有高度的自治性,但是又相互协作构成一个整体。
数据库管理系统的安全措施有3个方面:
- 权限机制:通过权限机制,限定用户对数据的操作权限,把数据的操作限定在具有指定权限的用户范围内,以保证数据的安全。在标准SQL中定义了授权语句GRANT来实现权限管理。
- 视图机制:通过建立用户视图,用户或应用程序只能通过视图来操作数据,保证了视图之外的数据的安全性。
- 数据加密:对数据库中的数据进行加密,可以防止数据在存储和传输过程中失密
在数据库系统中,如果对数据库的一张表创建聚簇索引,意味着重新确定表中数据的物理顺序,即需要改变的是数据库的内模式。聚簇索引对于那些经常要搜索范围值的列特别有效。使用聚簇索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。
- 分片透明:是指用户不必关系数据是如何分片的,它们对数据的操作在全局关系上进行,即关系如何分片对用户是透明的,因此,当分片改变时应用程序可以不变。分片透明性是最高层次的透明性,如果用户能在全局关系一级操作,则数据如何分布,如何存储等细节自不必关系,其应用程序的编写与集中式数据库相同。
- 复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络传输数据,提高了系统的运行和查询效率。但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新。
- 位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的 局部映像透明性(逻辑透明)是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关系局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。