软件设计师考试-数据库部分的笔记

1. 数据库模式

1.1 三级模式-两级映射

在这里插入图片描述

  • (视图级)外模式
    外模式又称子模式或用户模式,对应于用户级。==它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。==外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行操作。外模式反映了数据库系统的用户观。

  • (表级)概念模式
    概念模式又称模式或逻辑模式,对应于概念级。==它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。==它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的。概念模式反映了数据库系统的整体观。

  • (文件级)内模式
    内模式又称存储模式,==对应于物理级。它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。==内模式由内模式描述语言来描述、定义的。内模式反映了数据库系统的存储观。
    在一个数据库系统中,只有唯一的数据库, 因而作为定义 、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。

1.2 数据库设计过程

在这里插入图片描述

2. ER模型

实体-联系模型(简称E-R模型)它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。

E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:
(1) 实体集用矩形框表示,矩形框内写上实体名。
(2) 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。
(3) 实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。
因此,E-R模型也称为E-R图。

E-R模型图示例:
在这里插入图片描述

ER模型-1:1联系
在这里插入图片描述

1:1关系模式在表设计层面,只需要两个表,如校长表中包含有校名和任职时间字段或者学校表中包含有校长表的姓名和任职时间。

ER模型-1:n联系

在这里插入图片描述
ER模型-m:n联系

在这里插入图片描述

总结:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
答案:C

3. 关系代数与元组演算

关系代数运算:并、交、差、笛卡尔积、投影、选择、联接。

3.1 并、交、差

在这里插入图片描述
差:
在这里插入图片描述

3.2 笛卡尔积

两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}

或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)

r,s为R和S中的相应分量。

简单来说,就是把R表的第一行与S表第一行组合写在一起,作为一行。然后把R表的第一行与S表第二行依此写在一起,作为新一行。以此类推。当S表的每一行都与R表的第一行组合过一次以后,换R表的第二行与S表第一行组合,以此类推,直到R表与S表的每一行都组合过一次,则运算完毕。

如果R表有n行,S表有M行,那么笛卡尔积R×S有n×M行。
在这里插入图片描述

3.3 投影

投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:ΠA®={t[A]|t∈R}

其中A为R中的属性列,Π为投影运算符。

从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算和投影运算的区别所在。选取运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。

简单地说,就是选取符合筛选条件的列,然后按照你所需要的顺序重新排列。

3.4 选择

选取运算是单目运算,是根据一定的条件在给定的关系R中选取若干个元组,组成一个新关系,记作:σF®={t|t∈R∧F(t)为真}

其中,σ为选取运算符,F为选取的条件,它由运算对象(属性名、常数、简单函数)、算术比较运算符( > ,≥,<,≤,=,≠)和逻辑运算符(∨ ∧ ┐)连接起来的逻辑表达式,结果为逻辑值“真”或“假”。

选取运算实际上是从关系R中选取使逻辑表达式为真的元组,是从行的角度进行的运算。

简单地说,运算结果就是符合筛选条件的行

笛卡尔积,投影,选择的示例图:
在这里插入图片描述

3.5 自然连接

连接运算是二目运算,是从两个关系的笛卡尔积中选取满足连接条件的元组,组成新的关系。

所谓自然连接就是在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:R*S={t r⌒ts |tr∈R∧ts∈S∧tr[Y]=ts[Y]}

自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。
在这里插入图片描述

4. 规范化理论

4.1 函数依赖

在这里插入图片描述
在这里插入图片描述

规范化的关系模式的价值与用途
使用规范化的关系模式,可以避免问题:数据冗余、更新异常、插入异常、删除异常。
在这里插入图片描述

4.2 键

各种键的定义:

  • 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。

  • 候选键:不含多余属性的超键被称为候选键。

  • 主键:用户选作元组标识的一个候选键 称为主键

  • 外键:其他关系的主键吗,关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键则该属性集是关系模式R1的外键。

4.3 求候选键

在这里插入图片描述

练习题:
1.在这里插入图片描述
答案:A
2.
在这里插入图片描述

答案:{ABD,C}
3.

在这里插入图片描述
答案:B

4.4 主属性与非主属性

在这里插入图片描述
候选键有(CITY,ST)和(CITY,ZIP),所以CITY,ST,ZIP是主属性

4.5 范式

在这里插入图片描述

第一范式

第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R位第一范式。

在这里插入图片描述

教授和副教授作为单独的属性

第二范式

第二范式:当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式。
在这里插入图片描述

拆分为两个表(学号,课程号,成绩)和( 课程号,学分)

第三范式

第三范式(3NF):当且仅当R是1NF,且E中没有非主属性传递依赖于码时,则称R是第三范式。
在这里插入图片描述
学号-》系号推出非主属性,存在传递依赖。

拆分为(学号,姓名,系号)和(系号,系名,系位置)解决。

BC范式

BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每一个依赖的决定因素必定包含R的某个候选码。
在这里插入图片描述

练习题:
在这里插入图片描述

4.6 模式分解

保持函数依赖分解

在这里插入图片描述
例题:

在这里插入图片描述
答案:是,否

函数依赖的推理规则

从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则。

函数依赖的推理规则,也称为“公理”,包括有:

  • 合并规则:若X->Y,X->Z同时在R上成立,则X->YZ在R上也成立。
  • 分解规则:若X->W在R上成立,且属性集Z包含于W,则X->Z在R上也成立
  • 伪传递规则:若X->Y在R上成立,且WY->Z,则XW->Z。

无损分解

有损:不能还原,无损:可以还原。

无损连接分解:指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原成原本的关系模式。

例题1:

在这里插入图片描述
是无损压缩。

(1)表格法

表格法判断模式分解是有损压缩还是无损压缩。
在这里插入图片描述
在这里插入图片描述
(2)公式法
公式法只适用于一个关系模式拆分为两个关系模式。

在这里插入图片描述
分解不具有无损联接性

5. 数据库并发控制

基本概念

在这里插入图片描述

事务

  • 原子性:事务是原子的,要么都做,要么都不做
  • 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
  • 隔离性:事务相互隔离,当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的
  • 持久性:一旦事务成功提交,即使数据库崩溃,该事务对数据库的更新操作的结果也不会丢失。

存在的问题

并发事务会引起的脏读、丢失修改、不可重复读、幻读等问题 ,对应的概念:

  • 脏读:A事务执行过程中,B事务读取了A事务的修改。但是由于某些原因,A事务可能没有完成提交,发生RollBack了操作,则B事务所读取的数据就会是不正确的。这个未提交数据就是脏读(Dirty Read)。
  • 丢失修改:指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。
  • 不可重复读:B事务读取了两次数据,在这两次的读取过程中A事务修改了数据,B事务的这两次读取出来的数据不一样。B事务这种读取的结果,即为不可重复读(Nonrepeatable Read)。不可重复读的产生的流程如下:
  • 幻读:B事务读取了两次数据,在这两次的读取过程中A事务添加了数据,B事务的这两次读取出来的集合不一样

在这里插入图片描述

封锁协议

在这里插入图片描述

事务的隔离级别

  • 读未提交Read uncommitted
    B事务未提交的数据 A事务可以读取到其修改的值。在B事务开启后,对一行进行了修改,但是未进行提交,此时A事务可以读取到此行 B事务未提交的数据,这发生了脏读想象,A事务也会发生 【不可重复读】现象,即多次读取同一行得到的结果不相同,和【幻读】现象,即A事务之前读取到的数据被修改改后,此条数据不是真实的数据是虚幻的,这与脏读是不相同的情况下读取数据所发生的的不相同的现象,区别是一个已经被提交一个可能会回滚。

  • 读已提交 Read committed
    A事务在开启后,只能读取到已经被提交的数据,未被提交的数据或者B事务中正在修改的数据但为提交的数据,A事务读取不到。但是A事务在结束之前再次读取此表时,如果B事务对表中的条数或者数据进行了修改,A在此读取时会发生两次读取到的值或者行数不相同,此时发生了【不可重复读】的现象,且在B提交之前所读取到的值是脏数据,又发生了【脏读】现象。

  • 可重复读Repeatable read
    A事务开启后,无论在任何时间,任何次数读取一条或者多条数据得到的结果都是相同的。在A事务未结束前,B事务对表中的数据和条数进行修改后,A事务读取到的数据仍然是A 事务开启前最后一次事务提交后表中数据的状态,直到A事务结束后再次读取时才能得到被B事务修改的数据,这样避免了【脏读】【不可重复读】的问题,但是会产生新的问题:【幻读】,即B事务在A事务中读取数据时修改了表中的数据,A事务并不能读到修改内容,在此之间A事务读到的数据都是虚幻的

  • 可串⾏化Serializable
    指A事务和B事务不能同时执行,必须排队依次执行,如果A事务先被开启,则B事务不能做任何操作且包括读操作,此时事务间不会有任何交集,不会发生【脏读】【幻读】【不可重复】现象,每个事务中的操作都是安全的,但是会导致并发效率大大降低。

锁机制

共享锁:又称读锁或者S锁,若事务T对数据加上共享锁,其他事务也只能在对该数据加共享锁。
排他锁:又称写锁或X锁,若事务T对数据加上排他锁,其他事务不能再对该数据加任何锁,直到事务T释放加在数据上的锁。

6. 数据库完整性约束

关系模型中三类完整性约束:

  • 实体完整性(Entity Integrity)
  • 参照完整性(Referential Integrity)
  • 用户定义的完整性(User-defined Integrity)
    实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

6.1 实体完整性约束

• 保证关系中的每个元组都是可识别的和唯一的,指关系数据库中所有的表都必须有主键,而且表中不允
许存在如下记录:
– 无主键值的记录
– 主键值相同的记录
• 原因:实体必须可区分

6.2 参照完整性约束

参照完整性约束也称为引用完整性约束
• 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用
• 参照完整性就是描述实体之间的联系的
• 参照完整性一般是指多个实体或关系之间的关联关系

此完整性涉及到了外键:
• 参照完整性规则就是定义外键与被参照的主键之间的引用规则
• 外键一般应符合如下要求:
– 或者值为空
– 或者等于其所参照的关系中的某个元组的主键值

6.3 用户自定义完整性约束

• 也称为域完整性或语义完整性
• 是针对某一具体应用领域定义的数据约束条件
• 反映某一具体应用所涉及的数据必须满足应用语义的要求
• 实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾
• 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能

6.4 触发器

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。

触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。

7. 数据库安全

在这里插入图片描述

7.1 数据库命令

授权命令GRANT命令的语法格式如下:
GRANT <权限> ON 表【<列名>】 TO 用户 【WITH GRANT OPTION】

8. 数据备份

8.1 冷备份与热备份

在这里插入图片描述
在这里插入图片描述

8.2 数据库故障与恢复

在这里插入图片描述

9. 分布式数据库

分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

根据我国制定的《分布式数据库系统标准》,分布式数据库系统抽象为4层的结构模式。这种结构模式得到了国内外的支持和认同。
4层模式划分为全局外层、全局概念层、局部概念层和局部内层,在各层间还有相应的层间映射。这种4层模式适用于同构型分布式数据库系统,也适用于异构型分布式数据库系统。

在这里插入图片描述

10. 数据仓库与数据挖掘

在这里插入图片描述

10.1 数据挖掘方法分类

在这里插入图片描述

11. 反规范化

在这里插入图片描述

12. 大数据

在这里插入图片描述

13. SQL语言

13.1 建表

在这里插入图片描述

13.2 修改与删除表

在这里插入图片描述

13.3 查询

在这里插入图片描述

13.4 操作数据

在这里插入图片描述

视图的创建
with check option ,可以保证通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你插入,那么插入的这条记录在刷新视图后必须可以看到;如果是修改,那么修改完的结果也必须能通过该视图看到。

该命令需要区分with grant option,数据库添加用户语句:

grant all privileges on testdb.* to ‘test_user’@’localhost’ identified by “jack” with grant option;

WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
如果不想这个用户有这个grant的权限,可以不加这句

猜你喜欢

转载自blog.csdn.net/huangjhai/article/details/115984504