软件设计师(九)数据库技术基础

数据库技术是研究数据库的结构、存储、设计、管理和应用的一门软件学科

一、基本概念

1、数据库和数据库系统

数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量数据,方便多用户访问的计算机系统。DBS 是由数据库、硬件、软件和人员组成

(1)数据库(DataBase,DB)

数据库是相关数据的集合

(2)硬件

硬件是构成计算机系统的各种物理设备,包括存储数据所需的外部设备

(3)软件

包括操作系统、数据库管理系统(DBMS)和应用程序

数据库系统DBS
数据库DB
数据库管理系统DBMS

(4)人员

  • 系统分析员和数据库设计人员
  • 应用程序员
  • 最终用户
  • 数据库管理员(DBA)

2、数据库管理系统的功能

主要实现对共享数据有效的组织、管理和存取

(1)数据定义

数据定义语言DDL

(2)数据库操作

数据操作语言DML
DML分为两类:

  • 宿主型:指将 DML 语句嵌入某种主语言 (如 C、COBOL 等)中使用
  • 自含型:指可以单独使用DML 语句,供用户交互使用。

(3)数据库运行管理

(4)数据的组织、存储和管理

(5)数据库的建立和维护

(6)其他

3、数据库管理系统的特征及分类

(1)特征

  • 数据结构化且统一管理
  • 有较高的数据独立性(物理独立性和逻辑独立性)
  • 数据控制功能(安全性、完整性、并发控制和故障恢复)

(2)分类

  • 关系数据库系统 (Relation DataBase Systems,RDBS)
  • 面向对象的数据库系统 (Object-Oriented DataBase System,OODBS)
  • 对象关系数据库系统(Obiect-Oriented Relation DataBase System,ORDBS)

4、数据库系统的体系结构

数据库系统是数据密集型应用的核心。

角度 体系结构
最终用户 集中式、分布式、客户端/服务器、并行结构
数据库管理系统 三级模式结构

(1)最终用户角度

  • 集中式数据库系统
    不仅数据是集中的,数据的管理也是集中的,数据库系统的所有功能(从形式的用户接口到 DBMS 核心)都集中在 DBMS 所在的计算机上。
    软件设计师(九)数据库技术基础_第1张图片

  • 客户端/服务器数据库系统
    客户端请求被送到服务器上执行。
    客户端主要负责数据表示服务;服务器主要负责数据库服务。
    软件设计师(九)数据库技术基础_第2张图片
    数据库服务器分为事务服务器和数据服务器

  • 并行数据库系统
    并行体系结构是多个物理上连载一个的CPU,分布式系统是多个地理上分开的CPU.
    并行体系结构分为共享内存式多处理器和无共享式并行体系结构
    软件设计师(九)数据库技术基础_第3张图片

  • 分布式数据库系统
    分布式DBMS分为两种:

  • 物理上分布、逻辑上集中的分布式

  • 物理上分布、逻辑上分布的分布式

(2)数据库管理系统 角度

三级模式和两级映像
软件设计师(九)数据库技术基础_第4张图片
软件设计师(九)数据库技术基础_第5张图片

数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式提供了连接这两级模式的相对稳定的中间层,并使得两级中任意一级的改变都不受另一级影响。

  1. 概念模式
    也称模式,它是数据库中全部数据的逻辑结构和特征的描述,由若干个概念记录类型组成,只涉及型的描述,不涉及值。
    具体值称为模式的一个实例,可以有多个实例。
    描述概念记录类型,还要描述记录间的联系、操作以及数据的完整性和安全性等要求。

  2. 外模式
    也称用户模式或子模式,是用户与数据库系统的接口,由若干个外部记录类型组成

  3. 内模式
    也称存储模式,是数据物理结构和存储方式的描述,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

  4. 两级映像

映像分类 说明
概念模式/内模式映像 存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转换
外模式/概念模式映像 存在于外部级和概念级之间,实现了外模式和概念模式之间的相互转换

两级映像保证了数据库中的数据独立性。
数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去。
独立性包括数据的物理独立性和数据的逻辑独立性。

5、大数据

定义:是指“无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的、复杂的数据集合”。
特征:大量化(Volume)、多样化(Variety)、价值密度低(Value)、快速化(Velocity)

二、数据模型

1、定义

数据模型是对现实世界数据特征的抽象。

分类 说明
概念数据模型 也称信息模型,是按用户的观点对数据和信息建模,主要用于数据库设计。最著名的是实体-联系模型,简称E-R模型
基本数据模型 按计算机系统的观点对数据建模。基本的数据模型有层次模型、网状模型、关系模型和面向对象模型

2、数据模型的三要素

数据库结构的基础是数据模型,数据模型的三要素是数据结构、数据操作和数据的约束条件

三要素 说明
数据结构 数据结构是所研究的对象类型的集合,是对系统静态特性的描述。
数据操作 数据操作是对数据库中各种对象 (型) 的实例(值) 允许执行的操作的集合,包括操作和操作规则。
数据的约束条件 数据的约束条件是一组完整性规则的集合。对于具体的应用数据必须遵循特定的语义约束条件

3、E-R模型

概念数据模型是对信息世界建模,最常用的是实体-联系模型(E-R模型)

(1)实体

在E-R模型中,实体用矩形表示,通常矩形框内写明实体名。
实体是现实世界中可以区别其他对象的事件或物体。
实体集市具有相同属性的实体集合。

(2)联系

在E-R模型中,联系用菱形表示,通常菱形框内写明联系名。并用无向边分别与实体连接,在无向边旁标注联系的类型。
实体的联系分为实体内部的联系和实体与实体之间的联系

  1. 两个不同实体集之间的联系
    存在3中联系类型:一对一、一对多、多对多
    软件设计师(九)数据库技术基础_第6张图片

  2. 多个不同实体集之间的联系
    多个不同实体集之间存在 1:1:1、1:1:n、1Ⓜ️n 和rⓂ️n 的联系。
    软件设计师(九)数据库技术基础_第7张图片

  3. 同一实体集内的二元联系
    同一实体集内的各实体之间也存在 1:1、1:n 和 m:n 的联系
    软件设计师(九)数据库技术基础_第8张图片

(3)属性

属性是实体某方面的特性。

分类 说明
简单属性和复合属性 简单属性是原子的、不可再分的。复合属性可以细分为更小的部分
单值属性和多值属性 一个属性可能对应一组值。例如职工家属属性
NULL属性 当实体在某个属性上没有值或属性值未知时,使用 NULL 值,表示无意义或不知道
派生属性 派生属性可以从其他属性得来,根据生日获取年龄

(4)实体-联系方法

构件 说明
矩形 表示实体集
双边矩形 表示弱实体集
菱形 表示联系集
双边菱形 表示弱实体集对应的标识性联系
椭圆 表示属性
线段 将屈性与相关的实体集连接,或将实体集与联系集相连
双椭圆 表示多值属性
虚椭圆 表示派生属性
双线 表示一个实体全部参与到联系集中

(5)扩充的E-R模型

包括弱实体、特殊化、普遍化

  1. 弱实体
    软件设计师(九)数据库技术基础_第9张图片

  2. 特殊化

学生实体集可以分为研究生、本科生和大专生等子集。将这种从普遍到特殊的过程称为“特殊化”
将几个具有共同特性的实体集概括成一个更普遍的实体集的过程称为“普遍化’。

设有实体集E,如果S是E的某些真子集的集合,记为 S={ S i S_i Si | S i ⊂ E , i = 1 , 2 , … , n S_i \subset E,i=1,2,\ldots,n SiEi=1,2,,n },则称S是E的一个特殊化,E是 S 1 , S 2 , … , S n S_1, S_2,\ldots, S_n S1,S2,Sn的超类, S 1 , S 2 , … , S n S_1, S_2,\ldots, S_n S1,S2,Sn称为E的子类
如果 ⋃ i = 1 n S i = E \displaystyle\bigcup_{i=1}^{n} S_i= E i=1nSi=E ,则称S是E 的全特殊化,否则是E 的部分特殊化。
如果 S i ⋂ S j = Φ S_i \bigcap S_j = \Phi SiSj=Φ i ≠ j i≠j i=j,则S 是不相交特殊化,否则是重叠特殊化。

4、关系模型

最常用的数据模型之一。
关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。

三、关系代数

1、关系数据库的基本概念

(1)属性和域

描述一个事物的特征,称为属性。
每个属性的取值范围对应一个值的集合,称为该属性的域。

(2)笛卡尔积与关系

(3)关系的相关名词

  • 目或度、
  • 候选码:若关系中的某一属性或属性组的值能唯一的标识一个元祖(记录),则称该属性或属性组为候选码,例如身份证号
  • 主码:若一个关系有多个候选码,则选定其中一个为主码。
  • 主属性:包含在任何候选码中的所有属性称为主属性。不包含在任何候选码中的属性称为非码属性。
  • 外码:如果关系模式 R 中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式 R而言是外码。
  • 全码:关系模型的所有属性组是这个关系模式的候选码,称为全码。

(4)关系的3种类型

  1. 基本关系:通常又称为基本表或基表,它是实际存在的表,是实际存储数据的逻辑表示。
  2. 查询表:查询表是查询结果对应的表。
  3. 视图表:视图表是由基本表或其他视图表导出的表。由于它本身不独立存储在数据库数据库中只存放它的定义,所以常称为虚表。

(5)关系数据库模式

在数据库中要区分型和值。

(6)完整性约束

完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。因此,完整性规则防止的是对数据的意外破坏。
关系的完整性分为3类:实体完整性、参照完整性、用户定义完整性

(7)关系运算

关系操作的特点是操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。
关系数据语言分为3类::关系代数语言,关系演算语言,具有关系代数和关系演算双重特点的语言(SQL)
关系演算语言包含元组关系演算语言 (例如 Aplha、Quel) 和域关系演算语言 (例如 QBE)

关系代数运算符包括4类:集合运算符、专门的关系运算符、比较运算符、逻辑运算符
软件设计师(九)数据库技术基础_第10张图片

2、基本的关系代数运算

(1)并

关系R与S具有相同的关系模式,即 R与S的元数相同(结构相同)。关系R与S的并是由属于 R 或属于 S的元组构成的集合,记作 R U S。

(2)差

关系 R与 S 具有相同的关系模式,关系 R 与 S 的差是由属于 R 但不属于 S 的元组构成的集合,记作 R-S

(3)广义笛卡尔积

两个元数分别为 n 目和 m 目的关系 R 和 S的广义笛卡儿积是一个(n+m)列的元组的集合。元组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组,记作 RXS

(4)投影

投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A组成新的关系,记作 π A ( R ) \pi_A(R) πA(R)

(5)选择

选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的诸元组,记作 σ F ( R ) \sigma_F(R) σF(R).

3、拓展的关系代数运算

(1)交

关系 R与 S具有相同的关系模式,关系 R与 S 的交是由属于 R 同时又属于 S 的元组构成的集合,记作 R ⋂ S R \bigcap S RS

(2)连接

连接分为 θ \theta θ 连接、等值连接和自然连接 3 种

(3)除 待学习

(4)广义投影

(5)外连接

外连接运算是连接运算的扩展,可以处理由于连接运算而缺失的信息。
外连接运算有3种:左外连接、右外连接和全外连接。

四、关系数据库SQL语言简介

1、SQL数据库体系结构

SQL主要有3个标准: ANSI SQL;SQL-92(SQL2);SQL-99(SQL3)

(1)SQL的特点

  1. 综合统一
  2. 高度非过程化
  3. 面相集合的操作方式
  4. 两种使用方式
  5. 语言简洁、易学易用

(2)SQL支持三级模式结构

试图对应外模式,基本表对应模式、存储文件对应内模式。
软件设计师(九)数据库技术基础_第11张图片

2、SQL的基本组成

  1. 数据定义语言。SQL DDL 提供定义关系模式和视图、删除关系和视图、修改关系模式的命令。
  2. 交互式数据操纵语言。SQL DML 提供查询、插入、删除和修改的命令
  3. 事务控制 (Transaction Control)。SQL 提供定义事务开始和结束的命令。
  4. 嵌入式 SQL 和动态 SQL (Embeded SQL and Dynamic SQL)。用于嵌入到某种通用的高级语言(C、C+、Java 等) 中混合编程。其中,SQL 负责操纵数据库,高级语言负责控制程序流程
  5. 完整性(Integrity)。SQL DDL 包括定义数据中的数据必须满足的完整性约束条件的命令,对于破坏完整性约束条件的更新将被禁止。
  6. 权限管理 (Authorization)。SQL DDL 中包括说明对关系和视图的访问权限

3、SQL数据定义

SQL的数据定义包括对表、视图、索引的创建和删除。

(1)表

  • 创建表(create table)
  • 修改表 (alter table)
  • 删除表 (drop table)

(2)索引

  1. 创建索引 (create [unique] [cluster] index)
  2. 删除索引 (drop index )

(3)视图

  1. 创建视图 (create view xx as select 查询子句)
  2. 删除视图 (drop view)

(4)SQL数据查询

(5)SQL数据更新

(6)SQL访问控制

(7)嵌入式SQL

SQL 提供了将 SQL 语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法识别嵌入到高级语言中的 SQL 语句。
嵌入式SQL与主语言之间的通信通常有3种方式:

  1. SQL 通信区 (SOL Communication Area,SQLCA) 向主语言传递 SQL 语句执行的状态信息,使主语言能够根据此信息控制程序流程。
  2. 主变量也称共享变量。主语言向 SQL 语句提供参数主要通过主变量,主变量由主语言的程序定义,并用 SQL的 DECLARE 语句说明。在引用时,为了与 SQL 属性名相区别,需要在主变量前加“.”
  3. 游标 SQL 语言是面向集合的,一条 SQL 语句可产生或处理多条记录,而主语言是面向记录的,一组主变量一次只能放一条记录。所以,引入游标,通过移动游标指针来决定获取哪一条记录。

五、关系数据库的规范化

1、函数依赖

2、规范化

(1)1NF(第一范式)

定义:若关系模式 R 的每一个分量是不可再分的数据项,则关系模式 R 属于第一范式。

(2)2NF(第二范式)

(3)3NF(第三范式)

3、模式分解及分解应具有的特性 待学习

(1)分解

六、数据库的控制功能

1、事务管理

事务是一组操作的集合,要么都做,要么都不做。

  • BEGIN TRANSACTION: 事务开始
  • COMMIT:事务提交
  • ROLLBACK:事务回滚

事务原子性:原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolation) 和持久性(Durability)

2、数据库的备份和恢复

数据库的关键技术在于建立冗余数据,即备份数据。
系统出现故障后,能够及时的使数据库恢复到故障前的正确状态,就是数据库恢复技术。

(1)故障类型

分类 说明
事务内部故障 有的可以通过事务程序本身发现,有的是非预期的,例如运算溢出、并发事务发生死锁等
系统故障 通常称为软故障,是指造成系统停止运行的任何事件,使得系统要重新启动,如CPU故障、操作系统故障、断电
介质故障 通常称为硬故障,如磁盘损坏、磁头碰撞和瞬时强磁干扰
计算机病毒 计算机病毒是一种人为的故障和破坏

(2)备份方法

分类 说明
静态转储和动态转储 静态转储是指在转储期间不允许对数据库进行任何存取、修改操作;动态转储是在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并发执行。
海量转储和增量转储 海量转储是指每次转储全部数据;增量转储是指每次只转储上次转储后更新过的数据。
日志文件 在事务处理的过程中,DBMS 把事务开始、事务结束以及对数据库的插入删除和修改的每一次操作写入日志文件。

(3)恢复

  1. 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
  2. 对事物的更新操作执行逆操作。
  3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。

(4)数据库镜像

数据库镜像是通过复制数据实现的,用于数据库恢复。

3、并发控制

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

(1)带来的问题

就是数据的不一致,分为三类:丢失更新、不可重复度、读脏数据
软件设计师(九)数据库技术基础_第12张图片

(2)并发控制技术

并发控制的主要技术是封锁。基本封锁的类型有排它锁(简称 X 锁或写锁)和共享锁 (简称 S 锁或读锁)。

封锁

排它锁
共享锁

三级封锁协议

  • 一级封锁协议。事务在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。事务结束包括正常结束(COMMIT) 和非正常结束(ROLLBACK)。一级封锁协议可以解决丢失更新问题。
  • 二级封锁协议。在一级封锁协议的基础上,加上事务 T在读数据 R之前必须先对其加S 锁,读完后即可释放 S 锁。二级封锁协议可以解决读脏数据的问题。但是,由于二级封锁协议读完了数据后即可释放 S 锁,所以不能保证可重复读。
  • 三级封锁协议。在一级封锁协议的基础上,加上事务工在读数据 R之前必须先对其加S 锁,直到事务结束时释放 S 锁。三级封锁协议除了防止丢失修改和不读“脏”数据外,还进一步防止了不可重复读。

(3)活锁死锁

所谓活锁,是指当事务 T1封锁了数据 R 时,事务 T2请求封锁数据 R,于是 T2等待,当T1释放了 R 上的封锁后,系统首先批准了 T3请求,于是 T2仍等待,当 T3释放了 R 上的封锁后,又批准了 T4请求,依此类推,使得 T2可能永远等待的现象。
所谓死锁,是指两个以上的事务分别请求封锁对方已经封锁的数据,导致了长期等待而无法继续运行下去的现象。

你可能感兴趣的:(软件设计师,数据库)