【软件设计师—基础精讲笔记3】第三章 数据库系统

简介: 【软件设计师—基础精讲笔记3】第三章 数据库系统

温馨提示:

       完整笔记已设置成专栏,欢迎各位点击右上角“订阅专栏”,收藏完整笔记。



一、基本概念

1、数据库三级模式

【1】外模式:对应视图,是用户与数据库系统的接口,是用户永达的那部分数据的描述

【2】模式:对应数据库表,是数据库中全部数据的逻辑结构和特征描述

【3】内模式:对应物理文件,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式

2、两层映像:

【1】外模式/模式映像:存在于外部级和概念级之间,实现了外模式和概念模式之间的相互转换

【2】模式/内模式映像:存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转换

两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。

【1】物理独立性:即数据库的内模式发生改变时,数据的逻辑结构不变

【2】逻辑独立性:即逻辑结构发生改变时,用户程序对外模式的调用可以不作修改

二、数据模型

1、E-R模型
(1)实体

在 E-R 模型中,实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。实体集是具有相同属性的实体集合。我们常见的实体意义应该是实体集。(比如某一个学生是实体,所有学生都具有一些相同的属性,因此学生的集合可以定义为一个实体集。也可以对应到具体数据库,实体集是表,而实体是其中特定的条目元组

(2)联系

在 E-R 模型中,联系用菱形表示,通常菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:n、n:m)。

【1】两个不同实体之间的3种联系

  • 一对一(1:1)。指实体集E1中的一个实体最多至于实体集E2中的一个实体有联系
  • 一对多(1:n)。表示实体集E1中的一个实体最多至于实体集E2中的多个实体有联系
  • 多对多(m:n)。表示实体集E1中的多个实体最多至于实体集E2中的多个实体有联系

【2】同一实体集内的二元联系

【3】两个以上不同实体集之间的联系

【语义表示】

P_D:表示一个病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房。

SP_P:表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应。

【判定方法】

以三元关系中的一个实体作为中心,假设另两个实体都只有一个实例:

若中心实体只有一个实例能与另两个实体的一个实例进行关联,则中心实体的连通数为“一”。

若中心实体有多于一个实例能与另两个实体实例进行关联,则中心实体的连通数为“多”。

(3)属性

属性是实体某方面的特性。在 E-R 图中用椭圆表示,并以无向边与对应实体进行连接。每个属性都有其取值范围。属性具有以下分类:

【1】简单属性和复合属性。单独属性是原子的、不可再分的,复合属性可以分解为更小的部分。一般对于复合属性会在题干中给出其分解特性,若不特别声明,通常指的是简单属性。

【2】单值属性和多值属性。对于一个特定的实体都只有一个特定的值,则为单值属性;在某些特殊的情况下,一些属性可能对应一组值,这样的属性为多值属性。比如对于职工家属,可能有多名成员,会有一组取值,这里即为多值属性。

【3】派生属性。派生属性可以从其他属性得来。比如出生年月可以计算得出年龄,当出生年月属性已记录时,年龄可以计算出来,为派生属性。

【4】NULL属性。当实体在某个属性上没有特定值或属性值未知时,使用 NULL 值,表示无异议或不知道。

(4)扩展的 E-R 模型

【1】弱实体:在现实世界中有一种联系比较特殊,这种联系代表实体间的所有关系。这种实体对于另一些实体存在很强的依赖关系,即一个实体的存在必须以另一个实体为前提,将这类实体称为弱实体。比如附件是邮件的弱实体。弱实体一般以双矩形表示,与其依赖的实体之间存在联系。

【2】特殊化:特殊化主要描述的是子类和父类之间的关系。子类是超类的特殊化,子类继承超类的所有属性和联系,并且还有自己特殊的属性和联系。比如经理是员工的特殊化。特殊化实体一般以双边矩形表示,与其超类以线圈的方式连接。

【3】聚集:一个联系作为另一个联系的一端。

2、E-R图转关系模式

(1)每个实体型转换为一个关系模式

(2)联系转关系模式:

【1】一对一联系的转换有两种方式。

独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)

归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)

【2】一对多联系的转换有两种方式。

独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)

归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)

(3)多对多联系的转换只有一种方式

独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)

三、关系代数

1、基本概念

属性:在现实世界中,要描述一个失误尝尝取若干特征来表示,这些特征称为属性

:每个属性的取值范围对应一个值的集合,称为该属性的域

2、关系名词

关系模式:【1】学生(学号,姓名,系,年龄,性别) 【2】选课(学号,课程号,成绩)

(1)候选码。若关系中的某一个属性或属性组的值能唯一标识这个元组,则称该属性或属性组为候选码。

(2)主码。若一个关系有多个候选码,则可选择一个作为主码。

(3)主属性。包含在任何候选码中的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。

(4)外码。如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言即是外码。

(5)全码。关系哦行中的所有属性组是这个关系模式的候选码,称为全码。

3、完整性约束(★)

(1)实体完整性:规定关系的主属性不能取空值。

(2)参照完整性(也称为引用完整性):规定关系的外键为参照表的主键值或为空值。

(3)用户定义完整性:反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。

4、关系运算

(1)并(结果为二者元组之和去除重复行)

(2)交(结果为二者重复行)

(3)差(前者去除二者重复行)

(4)笛卡尔积x:结果列数为二者属性列数之和,行数为二者元素数乘积。

(5)投影π:对属性的选择,列出。

(6)选择σ:对元组的选择,列出。

(7)自然连接:结果中,列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。

笛卡尔积、选择、投影的组合表示可以与自然连接等价。

四、SQL语言

1、数据定义

(1)创建表: create table 表名(列名1,列名2,列名3....)

(2)修改表:alter table 表名 [add 新列名] [drop < 完整性约束 >] [modify 列名 数据类型]

(3)删除表:drop table 表名

(4)建立索引:create index 索引名 on 表名

(5)删除索引:drop index 索引名

(6)创建视图:create view 视图名 as select 查询子句

(7)删除视图:drop view 视图名

2、数据查询

(1)简单查询:select 列名1,列名2,..... from 表名 [ where 条件表达式]

(2)连接查询: select 编号,姓名,成绩表 from 用户表,成绩表 where 用户表.编号=课程表.编号 and 成绩表.成绩>90

(3)子查询:select 编号,姓名 from 用户表 where 编号 in( select 编号 from 成绩表 where 成绩>90)

(4) 聚集函数:select max(成绩),min(成绩),max(成绩)-min(成绩) from 成绩表 where 课程=‘计算机’

(5)分组查询:

【1】group by 子句:对元组进行分组 >>>> select 编号,avg(成绩) from 成绩表 group by 课程名

【2】 having 子句:在分组为空的情况,可以通过having子句设置查询条件 >>>SELECT ip, COUNT( username ) AS total FROM user GROUP BY ip HAVING total >=2;

(6)更名运算:as 子句 >>> select sname as 姓名,age as 年龄 from 学生表

(7)模糊查询:like子句(%---匹配任意字符串;_ ---- 匹配任意一个字符) >>> select 姓名 from 学生表 where addr like '%科技路%'

3、数据更新

(1)插入:insert into 表名(字段名1,字段名2,....)values(值1,值2,...)

(2)删除:delete from 表名

(3)修改:update 表名 set 列名=值

4、访问控制

(1)授权: grant 权限1,权限2,.... on 对象名 to 用户1,.... with grant option [with grant option:获得权限的用户可以将权限付给其他用户]

(2)收回:revoke 权限1,权限2,... on 对象名 from 用户1,...

5、exits用法

语法: EXISTS subquery

参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。

结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。

可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。

五、规范化理论

1、函数依赖

(1)函数依赖:某个属性集X决定另一个属性集Y时,称Y函数依赖于X,即:X→Y(在属性U上有两个子集属性X,Y,由X属性可以获得一个元组,而X属性对应的Y属性获得相同的元组)

(2)完全依赖:Y存在依赖X,且X的真子集都不能决定Y

(3)部分依赖:{AB→C,A→C}【如果X→Y,且X中存在一个真子集X’,使得X’→Y成立,则称Y部分依赖于X。】

(4)传递依赖:{A→B,B→C} 可推出:A→C

(5)候选键(候选码)是能够唯一标示元组却无冗余的属性组合,可以有多种不同的候选键,在其中任选一个作主键。【候选键的求取可以利用图示法找入度为 0 的属性集合,并在此基础上进行扩展,最终找到能够遍历全图的最小属性组合作为候选键,对于入度为 0 在关系依赖集中可以理解为从未在箭线右侧出现。】

(6)组成候选码的属性就是主属性,其他为非主属性

(7)外键是其他关系模式的主键。

2、规范化

规范化过程是为了解决数据冗余、删除异常、插入异常、更新异常等问题。

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

(2)第二范式(2NF):当且仅当关系模式 R 是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式 R 是第二范式。

(3)第三范式(3NF):当且仅当关系模式 R 是第二范式(2NF),且 R 中没有非主属性传递依赖于候选键时,则称关系模式 R 是第三范式。

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

【总结】:一范:原子不可分;二范:消除部分依赖;三范:消除传递依赖

规范化过程:

3、模式分解

规范化过程:分解关系模式。P511

(1)保持函数依赖:设数据库模式ρ={R1,R2,.,Rk}是关系模式 R 的一个分解,F 是 R 上的函数依赖集,ρ中每个模式 Ri 上的 FD 集是 Fi。如果{F1,F2,.,Fk}与 F 是等价的(即相互逻辑蕴涵),那么称分解ρ保持 FD。

(2)无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。(表格法,公式法——仅限分解为 2 个子关系)

4、数据库控制功能
(1)事务管理

事务是一个操作序列,这些操作”要么都做,要么都不做“

【1】事务特性(ACID):

1、原子性:事务是原子的,要么都做,要么都不做。

2、一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性的状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。

3、隔离性:事务相互隔离,当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的。

4、持续性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。

(2)备份和恢复

【1】故障类型:事务内部故障、系统故障、介质故障、计算机病毒

【2】备份方法:建立冗余数据 >>> 数据转储、登记日志文件

【3】恢复:步骤:1.反向扫描文件日志并查找该事务的更新操作 >>> 2.对事务的更新操作执行逆操作 >>> 3.重复12,直到事务开始标志

【4】镜像: 是为了避免磁盘介质故障影响数据库可用,采用镜像来做数据库恢复。镜像是通过复制数据实现的。

(3)并发控制

并发操作,是指在多用户共享的系统中许多用户可能对同一数据进行操作。

【1】并发产生的问题

(1) 丢失更新/丢失修改

(2) 不可重复读

(3) 读“脏”数据

【2】并发控制技术

并发控制的主要技术时封锁。基本封锁的类型有排它锁和共享锁。

共享锁(S锁):若事务 T 对数据对象 A 添加了 S 锁,则只允许 T 读取 A,但不能修改 A。并且其他事务只能对 A 加 S 锁,不能加 X 锁。

排他锁(X锁):若事务 T 对数据对象 A 添加了 X 锁,则只允许 T 读取和修改A,其他事务不能再对 A 加任何锁。

六、考点补充

1、数据库备份

(1)完全备份:备份所有数据。即使两个备份时间点之间数据没有任何变动,所有数据还是会被备份下来。

(2)增量备份:跟完全备份不同,增量备份在做数据备份前会先判断数据的最后修改时间是否比上次备份的时间晚。如果不是,则表示该数据并没有被修改过,这次不需要备份。所以该备份方式,只记录上次备份之后的变动情况,而非完全备份。

(3)差异备份:差异备份与增量备份一样,都只备份变动过的数据。但前者的备份是针对上次完整备份后,曾被更新过的。

2、分布式数据库透明性

主要是指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关系全局数据的分布情况。

(1)分片透明:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的,因此,当分片改变时应用程序可以不变。分片透明性是最高层次的透明性,如果用户能在全局关系一级操作,则数据如何分布,如何存储等细节自不必关心,其应用程序的编写与集中式数据库相同。

(2)复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络传输数据,提高了系统的运行和查询效率。但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新。

(3)位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。

(4)局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部 DBMS 支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。

3、分布式数据库特点

(1)数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。

(2)集中与自治共享结合的控制结构。各局部的 DBMS 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 DBMS 的工作,执行全局应用。

(3)适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。)

(4)全局的一致性、可串行性和可恢复性。

七、总 结

       笔记总结不易,如果喜欢,请关注、点赞、收藏。

完整笔记下载地址:(后续完成后更新)

基础精讲课件地址:(请关注、点赞、收藏后,私信我)

基础精讲视频地址:(请私信我)

目录
相关文章
|
2月前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
31 1
Cassandra数据库与Cql实战笔记
|
3月前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
3月前
|
前端开发 应用服务中间件 API
|
7月前
|
存储 SQL 关系型数据库
【软件设计师】一篇文章带你了解数据库
【软件设计师】一篇文章带你了解数据库
|
4月前
|
算法 安全 数据库
【第三章】软件设计师 之 数据库系统
由于提供的内容不包含文章的正文或具体信息,无法生成摘要。请提供文章的详细内容或正文部分,以便我能够根据文章的实际内容提供一个准确的摘要。
【第三章】软件设计师 之 数据库系统
|
6月前
|
SQL 安全 API
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
|
5月前
数据库系统工程师考点笔记
数据库系统工程师考点笔记
465 0
|
5月前
|
编解码 算法 vr&ar
软考中级之数据库系统工程师笔记总结(六)多媒体基础
软考中级之数据库系统工程师笔记总结(六)多媒体基础
34 0
|
5月前
|
网络协议 安全 网络安全
软考中级之数据库系统工程师笔记总结(五)网络基础
软考中级之数据库系统工程师笔记总结(五)网络基础
47 0
|
5月前
|
人工智能 数据管理 Java
软考中级之数据库系统工程师笔记总结(四)程序设计基础
软考中级之数据库系统工程师笔记总结(四)程序设计基础
33 0