数据库技术基础【软考】

文章目录

计算机技术与软件专业技术资格(水平)考试目录

一、 基本概念

1. 数据库与数据库系统

  数据库系统(DataBase System,DBS):一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。

  • 数据库(DataBase,DB)
      是统一管理的、长期储存在计算机内的、有组织的相关数据的集合。特点【数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享】。
  • 硬件
      是构成计算机系统的各种物理设备,包括存储数据所需的外部设备。
  • 软件
      包括操作系统、数据库管理系统【简称DBMS】及应用程序
  • 人员
      主要有四类:第一类【系统分析员和数据库设计人员】;第二类【应用程序员】;第三类【最终用户】;第四类【数据库管理员(Data Base Administrator,DBA)】。

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

  数据库管理系统(DataBase Management System,DBMS):主要实现对共享数据有效地组织、管理和存取。

(1)数据定义

  数据定义语言(Data Definition Language,DDL):用户可以对数据库的结构进行描述。

(2)数据库操作

  数据操纵语言(Data Manipulation Language,DML):实现对数据库中数据的基本操作。

(3)数据库运行管理

  数据库在运行期间多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等是 DBMS 的重要组成部分,保证数据库系统的正常运行。

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

  实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。

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

  包括:数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。

(6)其他功能

  包括:DBMS 的网络通信功能,一个 DBMS 与另一个 DBMAS 或文件系统的数据转换功能,异构数据库之间的互访和互操作能力等。

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

(1)DBMS 的特征

  • 数据结构化且统一管理
      数据库中的数据由DBMS统一管理。
  • 有较高的数据独立性
      指数据与程序独立,包括:数据的物理独立性和数据的逻辑独立性。
  • 数据控制功能
      ① 数据库的安全性:指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。
      ② 数据的完整性:指数据库的正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据,保证数据库中的数据是正确的,避免非法的更新。
      ③ 并发控制:在多用户共享的系统中,许多用户可能同时对同一数据进行操作。
      ④ 故障恢复:包括【事务内部故障、系统故障、介质故障及计算机病毒】,主要指恢复数据库本身,即在故障引起数据库当前状态不一致时将数据库恢复到某个正确状态或一致状态。恢复的原理就是要建立冗余数据。

(2)DBMS 的分类

  • 关系数据库系统(Relation DataBase Systems,RDBS)
      也称关系数据库模式,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,它是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。
  • 面向对象的数据库系统(Object-Oriented DataBase System,OODBS)
      是支持以对象形式对数据建模的数据库管理系统,包括对对象的类、类属性的继承和子类的支持。特点【面向对象数据模型能完整地描述现实世界的数据结构,能表达数据间的嵌套、递归联系;具有面向对象技术的封装性和继承性提高了软件的可重用性】。
  • 对象关系数据库系统(Object-Oriented Relation DataBase System,ORDBS)
      在传统的关系数据模型基础上提供元组、数组、集合等更为丰富的数据类型以及处理新的数据类型操作的能力,基于对象关系数据模型的 DBS 称为对象关系数据库系统。

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

  是数据密集型应用的核心,其体系结构受数据库运行所在的计算机系统的影响很大,尤其是受计算机体系结构中的连网、并行和分布的影响。

(1)集中式数据库系统

  不仅数据是集中的,数据的管理也是集中的,数据库系统的所有功能(从形式的用户接口到 DBMS 核心)都集中在 DBMS 所在的计算机上。
在这里插入图片描述

(2)客户端 / 服务器结构

  一个处理机(客户端)的请求被送到另一个处理机(服务器)上执行。特点【客户端与服务器CPU之间的职责明确,客户端主要负责数据表示服务,服务器主要负责数据库服务】。

  • 事务服务器
      也称查询服务器。提供一个接口,使得客户端可以发出执行一个动作的请求,服务器响应客户端请求,并将执行结果返回给客户端。客户端可用SQL,也可通过应用程序或使用远程过程调用机制来表达请求求。
  • 数据服务器
      使得客户端可以与服务器交互,以文件或页面为单位对数据进行读取或更新。提供数据的索引机制和事务机制,使得客户端或进程发生故障时数据也不会处于不一致状态。
    在这里插入图片描述

(3)并行数据库系统

  是多个物理上连在一起的CPU。

  • 共享内存式多处理器
      指一台计算机上同时有多个活动的 CPU,它们共享单个内存和一个公共磁盘接口。
  • 无共享式并行体系结构
      指一台计算机上同时有多个活动的CPU,并且它们都有自己的内存和磁盘。粗线表示。
    在这里插入图片描述

(4)分布式数据库系统

  是多个地理上分开的 CPU。

  • 物理上分布、逻辑上集中
      指导思想是把单位的数据模式(称为全局数据模式)按数据来源和用途合理地分布在系统的多个结点上,使大部分数据可以就地或就近存取。数据在物理上分布后,由系统统一管理,使用户不感到数据的分布

  • 物理上分布、逻辑上分布
      一般由两部分组成:本结点的数据模式;本结点共享的其他结点上有关的数据模式,结点间的数据共享由双方协商确定。优点【有利于数据库的集成、扩展和重新配置】。
      局部数据库位于不同的物理位置,使用一个全局的 DBMS 将所有局部数据库联网管理,这就是分布式数据库。其体系结构如下所示:

  • 分片模式
      水平分片:将表中水平的记录分别存在不同的地方。
      垂直分片:将表中的垂直的列值分别存在不同的地方。

  • 分布式透明性
      分片透明性:最高层次的透明性,用户不必知道数据是如何分片的,它们对数据的操作在全局关系上进行,即关系如何分片对用户是透明的,因此,当分片改变时,应用程序可以不变。
      位置透明性:用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。
      复制透明性:用户不用关心数据库在网络中各个结点的复制情况,被复制的数据的更新都由系统自动完成。
      逻辑透明性:最低层次的透明性,该透明性提供数据到局部数据库的映像,用户或应用程序无需知道局部使用的是哪种数据结构。

5. 数据库的三级模式结构

  数据的存储结构也各不相同,但体系结构基本上都具有相同的特征,采用“三级模式和两级映像”。
在这里插入图片描述
  数据库系统采用三级模式结构,这是数据库管理系统内部的系统结构,"型"是指对某一数据的结构和属性的说明,“值”是型的一个具体赋值。

(1)概念模式

  也称模式,即数据库中的”表“,它是数据库中全部数据的逻辑结构和特征的描述。概念模式反映的是数据库的结构及其联系,所以是相对稳定的;而实例反映的是数据库某一时刻的状态,所以是相对变动的。

(2)外模式

  也称用户模式或子模式,处于用户的应用层次,即数据库中的“视图”,是用户与数据库系统的接口,是用户用到的那部分数据的描述。

(3)内模式

  也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(存储文件),定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。负责管理存储数据的方式,即数据应以什么格式存放在物理文件上面,以及如何优化这些存储方式;该模式的关注点在于数据如何存放上面。

(4)两级映像

  保证了数据库中的数据具有较高的逻辑独立性【用户的应用程序与数据库的逻辑结构是相互独立的】和物理独立性【当数据库的内模式发生改变时,数据的逻辑结构不变】。

① 模式 / 内模式映像

  存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转换,系即“视图”和“表”之间的映射关系。

② 外模式/模式映像

  存在于外部级和概念级之间,实现了外模式和概念模式之间的相互转换

6. 大数据(Big Data)

  指无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的、复杂的数据集合。

(1)大数据产生的背景

  • 数据来源和承载方式的变革
  • 全球数据量出现爆炸式增长
  • 大数据已经成为一种自然资源
  • 大数据日益重要,不被利用就是成本

(2)大数据的特征

  • 多样化(Variety)
      指数据类型繁多。
  • 价值密度低(Value)
      指大量的不相关信息导致价值密度的高低与数据总量的大小成反比。
  • 快速化(Velocity)
      指处理速度快。

(3)理解大数据

  大数据不仅仅是指海量的信息,更强调人类对信息的筛选、处理,保留有价值的信息,即让大数据更有意义,挖掘其潜在的"大价值"。
  大数据时代主要面临三大挑战:软件和数据处理能力、资源和共享管理以及数据处理的可信力。

(4)大数据产生的安全风险

  • 大数据加大了隐私泄露风险
  • 大数据技术成为黑客的攻击手段
  • 大数据成为网络攻击的显著目标
  • 大数据威胁现有的存储和安防措施
  • 大数据成为高级可持续攻击的载体
  • 大数据技术为信息安全提供新支撑

二、 数据模型

1. 基本概念

  模型:对现实世界特征的模拟和抽象。
  数据模型:对现实世界数据特征的抽象。
  基本数据模型:按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现。
  概念数据模型:也称信息模型,按用户的观点对数据和信息建模;是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解;是用户和数据库设计人员交流的语言,主要用于数据库设计。

2. 数据模型的三要素

  • 数据结构
      是所研究的对象类型的集合,是对系统静态特性的描述。
  • 数据操作
      是对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。
  • 数据的约束条件
      是一组完整性规则的集合。

3. E - R 模型(Entity-Relationship Model,实体 - 联系)

  概念模型是对信息世界建模,所以概念模型能够方便、准确地表示信息世界中的常用概念。
  E - R 模型:是软件工程设计中的一个重要方法,容易理解且与计算机无关,用户容易接受,是用户和数据库设计人员交流的语言;但只能说明实体间的语义联系,还不能进一步地详细说明数据结构

(1)实体

  是现实世界中可以区别于其他对象的“事件”或“物体”,通常用矩形表示,框内写明实体名。

(2)联系

  分为实体内部的联系【反映数据在同一记录内部各字段间的联系】和实体与实体之间的联系,通常用菱形表示,框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型 【 1 : 1 、 1 : n 、 m : n 】 【1 : 1、1 : n 、 m : n】 1:11:nm:n

  • 两个不同实体之间的联系
      一对一 ( 1 : 1 ) (1 : 1) 1:1:指实体集 E 1 E_1 E1 中的一个实体最多只与实体集 E 2 E_2 E2 中的一个实体相联系。
      一对多 ( 1 : n ) (1 : n) 1:n:表示实体集 E 1 E_1 E1 中的一个实体可与实体集 E 2 E_2 E2 中的多个实体相联系。
      多对多 ( m : n ) (m : n) m:n:表示实体集 E 1 E_1 E1 中的多个实体可与实体集 E 2 E_2 E2 中的多个实体相联系。
  • 两个以上不同实体集之间的联系
      两个以上不同实体集之间存在 1 : 1 : 1 、 1 : 1 : n 、 1 : m : n 、 r : m : n 1 : 1 : 1、1 : 1 : n、1 : m : n、r : m : n 1:1:11:1:n1:m:nr:m:n 的联系。
  • 同一实体集内的二元联系
      同一实体集内的各实体之间也存在 1 : 1 、 1 : n 、 m : n 1 : 1、1 : n、m : n 1:11:nm:n 的联系。
    在这里插入图片描述

(3)属性

  是实体某方面的特性。

  • 简单属性和复合属性。
      简单属性:原子的、不可再分的;复合属性:可以细分为更小的部分(即划分为别的属性)。
  • 单值属性和多值属性
      单值属性:定义的属性对于一个特定的实体都只有单独的一个值;多值属性:一个属性对应一组值。
  • NULL属性
      当实体在某个属性上没有值或属性值未知时,使用 NULL 值,表示无意义或不知道。
  • 派生属性
      派生属性可以从其他属性得来。

(4)实体 - 联系方法

  概念模型中实体 - 联系方法是最常用的方法,该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的 E - R 图来表示数据模型,E - R 模型强调的是语义,与现实世界的问题密切相关。在 E - R 图中有下所示的几个主要构件:
在这里插入图片描述

学校有若干个系,每个系有若干名教师和学生;每个教师可以担任若干门课程,并参加多个项目;每个学生可以同时选修多门课程。设计该学校教学管理系统的 E - R 模型,并给出每个实体、联系的属性。


该学校教学管理系统的 E - R 模型应该有 5 个实体:系、教师、学生、项目和课程。
  ① 设计各实体属性:系(系号,系名,主任名)、教师(教师号,教师名,职称)、学生(学号,姓名,年龄,性别)、项目(项目号,名称,负责人)、课程(课程号,课程名,学分)
  ② 各实体之间的联系:“教师”和“课程”的“任课”联系【 1 : n 1 : n 1:n】;“教师”和“项目”的“参加”联系【 n : m n : m n:m】;“学生”和“选修课程”的“选修”联系【 n : m n : m n:m】;“教师”、“学生”、“系”之间的“领导”联系【 1 : n : m 1 : n : m 1:n:m】,其中,“参加”联系有一个排名属性,“选修”联系有一个成绩属性。
在这里插入图片描述

(5)扩充的 E - R 模型

  • 弱实体
      在现实世界中有一种特殊的联系,这种联系代表实体间的所有(Ownership)关系,这种实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,用双线矩形框表示。
    在这里插入图片描述
  • 特殊化
      某些实体一方面具有一些共性,另一方面还具有各自的特殊性。这样,一个实体集可以按照某些特征区分为几个子实体。将几个具有共同特性的实体集概括成一个更普遍的实体集的过程称为“普遍化”。
    在这里插入图片描述
      在扩充的 E - R 图中:超类 - 子类关系模型使用特殊化圆圈和连线的一般方式来表示;超类到圆圈有一条连线,连线为双线表示全特殊化,连线为单线表示部分特殊化;双竖边矩形框表示子类;有符号“U”的线表示特殊化;圆圈中的d表示不相交特殊化;圆圈中的o表示重叠特殊化;超类与圆圈用单线相连,表示部分特殊化。

4. 数据模型

  • 层次模型(Hierarchical Model)
      采用树型结构表示数据与数据间的联系,每一个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其他结点有且仅有一个双亲结点。
  • 网状模型(Network Model)
      也称 DBTG 模型,该是一个比层次模型更具有普遍性的数据结构,是层次模型的一个特例,允许两个结点之间有多种联系(称之为复合联系)。
  • 关系模型(Relational Model)
      是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。
  • 面向对象模型(Object Oriented Model)
      采用面向对象的方法来设计数据库。面向对象的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。

5. 关系模型(Relation Model)

  由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。给定变量的值随时间可能发生变化,类似地,当关系被更新时,关系实例的内容也随时间发生了变化。

教学数据库的 4 4 4 个关系模式如下,其中关系模式中有下划线的属性是主码属性:在这里插入图片描述


在这里插入图片描述

三、 关系代数

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

(1)属性和域

  现实世界中,描述一个事物常常取若干特征来表示,这些特征称为属性(Attribute)。
  每个属性的取值范围对应一个值的集合,称为该属性的域(Domain)。
  在关系数据模型中,通常对域加了一个限制,所有的域都应是原子数据(Atomic Data)。

(2)笛卡儿积与关系

  【定义】 :设 D 1 , D 2 , … , D i , … , D n D_1,D_2,…,D_i,…,D_n D1D2Di,Dn,为任意集合,定义 D 1 , D 2 , … , D i , … , D n D_1,D_2,…,D_i,…,D_n D1D2Di,Dn的笛卡儿积为
D 1 × D 2 × … × D i × … × D n = { d 1 , d 2 , … , d i , … , d n ∣ d i ∈ D i , i = 1 , 2 , 3 , . . . , n } D_1 × D_2 × … × D_i × … × D_n = \{d_1,d_2,…,d_i,…,d_n | d_i ∈ D_i,i = 1,2,3,...,n\} D1×D2××Di××Dn={d1d2di,dndiDii=123...n}
  其中,每一个元素 ( d 1 , d 2 , … , d i , … , d n ) (d_1,d_2,…,d_i,…,d_n) d1d2di,dn 称为一个 n n n 元组(n-tuple 属性的个数), 元组的每一个值 d i d_i di 称为元组的一个分量,若 D i ( i = 1 , 2 , 3 , . . . , n ) D_i(i = 1,2,3,...,n) Dii=123...n 为有限集,其基数(Cardinal number元组的个数)为 m i ( i = 1 , 2 , 3 , … , m ) m_i(i = 1,2,3,…,m) mii=123m,则 D 1 × D 2 × … × D i × … × D n D_1 × D_2 × … × D_i × … × D_n D1×D2××Di××Dn 的基数 M M M M = ∏ i = 1 n m i M = \prod_{i = 1}^{n} m_i M=i=1nmi ,笛卡儿积可以用二维表来表示。

D 1 = { 0 , 1 } , D 2 = { a , b } , D 3 = { c , d } D_1 = \{0,1\},D_2 = \{a,b\},D_3 = \{c,d\} D1={01}D2={ab}D3={cd} ,求: D 1 × D 2 × D 3 D_1 ×D_2 × D_3 D1×D2×D3


根据定义,笛卡儿积中的每一个元素应该是一个三元组,每个分量来自不同的域,因此结果为: D 1 × D 2 × D 3 = { ( 0 , a , c ),( 0 , a , d ),( 0 , b , c ),( 0 , b , d ),( 1 , a , c ),( 1 , a , d ),( 1 , b , c ),( 1 , b , d ) } D_1 × D_2 × D_3 = \{(0,a,c),(0,a,d),(0,b,c),(0,b,d),(1,a,c),(1,a,d),(1,b,c),(1,b,d)\} D1×D2×D3={0ac),(0ad),(0bc),(0bd),(1ac),(1ad),(1bc),(1bd}
二维表:在这里插入图片描述

  【定义】 : D 1 × D 2 × … × D i × … × D n D_1 × D_2 × … × D_i × … × D_n D1×D2××Di××Dn,的子集称为在域 D 1 × D 2 × … × D i × … × D n D_1 × D_2 × … × D_i × … × D_n D1×D2××Di××Dn 上的关系,记为 R ( D 1 × D 2 × … × D i × … × D n ) R(D_1 × D_2 × … × D_i × … × D_n) RD1×D2××Di××Dn,称关系 R R R n n n 元关系。

(3)关系的相关名词

  • 目或度(Degree)
       R R R 表示关系的名字, n n n 是关系的目或度。
  • 候选码(Candidate Key)
      若关系中的某一属性或属性组的值能唯一地标识一个元组,则称该属性或属性组为候选码。
  • 主码(Primary Key)
      若一个关系有多个候选码,则选定其中一个为主码。
  • 主属性(Non-Key attribute)
      包含在任何候选码中的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。
  • 外码(Foreign Key)
      如果关系模式 R R R 中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式 R R R 而言是外码。
  • 全码(All-Key)
      关系模型的所有属性组是这个关系模式的候选码,称为全码。

(4)关系的 3 种类型

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

(5)关系数据库模式

  在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库结构的
描述。它包括若干域的定义以及在这些域上定义的若干关系模式。实际上,关系的概念对应于程
序设计语言中变量的概念,而关系模式对应于程序设计语言中类型定义的概念。关系数据库的值
是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
  【定义】:关系的描述称为关系模式 ( R e l a t i o n S c h e m a ) (Relation Schema) RelationSchema,可以形式化地表示为:
R ( U , D , d o m , F ) R(U,D,dom,F) RUDdomF
  其中, R R R 表示关系名; U U U 是组成该关系的属性名集合; D D D 是属性的域; d o m dom dom 是属性向域的映像集合; F F F 为属性间数据的依赖关系集合。
  通常将关系模式简记为:
R ( U )或 R ( A 1 , A 2 , A 3 , … , A n ) R(U) 或 R(A_1,A_2,A_3,…,A_n) RU)或RA1A2A3An
  其中, R R R 为关系名, A 1 , A 2 , A 3 , … , A n A_1,A_2,A_3,…,A_n A1A2A3An 为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下划线表示该属性为主码属性。

学生关系 S S S 有学号 S n o Sno Sno、学生姓名 S a m e Same Same、系名 S D SD SD、年龄 S A SA SA 属性;课程关系 C C C有课程号 C n o Cno Cno、课程名 C n a m e Cname Cname、选修课程号 P c n o Pcno Pcno 属性;学生选课关系 S C SC SC 有学号 S n o Sno Sno、课程号 C n o Cno Cno、成绩 G r a d e Grade Grade 属性。求:定义关系模式及主码如(本题未考虑 F F F 属性间数据的依赖)


① 学生关系模式: S ( Sno ‾ , S n a m e , S D , S A ) S(\underline{\text{Sno}},Sname,SD,SA) SSnoSnameSDSA
② 课程关系模式: C ( Cno ‾ , C n a m e , P c n o ) D o m ( P c n o ) = C n o C(\underline{\text{Cno}},Cname,Pcno)Dom(Pcno)= Cno CCnoCnamePcnoDomPcno=Cno
   P c n o Pcno Pcno 是选修课程号,来自 C n o Cno Cno 域,由于 P c n o Pcno Pcno 属性名不等于 C n o Cno Cno 值域名,所以要用 D o m Dom Dom 来定义。不能将 P c n o Pcno Pcno直接改为 C n o Cno Cno,因为在关系模型中,各列属性必须取相异的名字。
③ 学生选课关系模式: S C ( Sno ‾ , Cno ‾ , G r a d e ) SC(\underline{\text{Sno}},\underline{\text{Cno}},Grade) SCSnoCnoGrade
   S n o 、 C n o Sno、Cno SnoCno 为外码,因为它们分别是 S 、 C S、C SC 关系中的主码。

(6)完整性约束

  ① 实体完整性约束:即主键约束,即主键不能为空,也不能为空。
  ② 参照完整性约束性(也称引用完整性):即外键约束,外键必须是其他表中已经存在的主键的值,或者为空。
  ③ 用户自定义完整性约束:针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。

(7)关系运算

  关系操作的特点是操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。关系数据语言分为三类:关系代数语言、关系演算语言【含元组关系演算语言和域关系演算语言】和具有关系代数和关系演算双重特点的语言。
在这里插入图片描述

2. 5 种基本的关系代数运算

(1)并(Union)

  关系 R R R S S S 具有相同的关系模式,即 R R R S S S 的元数(结构)相同,结果是两张表所有记录的合并,相同记录只显示一次,记作: R ∪ S R ∪ S RS

(2)差(Difference)

  关系 R R R S S S 具有相同的关系模式,结果是由属于 R R R 但不属于 S S S 的元组构成的集合,记作: R − S R - S RS

(3)广义笛卡儿积(Extended Cartesian Product)

  两个元数分别为 n n n 目和 m m m 目的关系 R R R S S S 的广义笛卡儿积是一个 ( n + m ) (n + m) n+m列的元组的集合。元组的前 n n n 列是关系 R R R 的一个元组,后 m m m 列是关系 S S S 的一个元组,记作: R × S R × S R×S
  如果 R R R S S S 中有相同的属性名,可在属性名前加关系名作为限定,以示区别。若 R R R K 1 K_1 K1,个元组, S S S K 2 K_2 K2 个元组,则 R R R S S S 的广义笛卡儿积有 K 1 × K 2 K_1 × K_2 K1×K2 个元组。

(4)投影(Projection)

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

(5)选择(Selection)

  选择运算是从关系的水平方向进行运算,是从关系 R R R 中选择满足给定条件的诸元组,记作: σ F ( R ) σ_F(R) σFR
  其中, F F F 中的运算对象是属性名(或列的序号)或常数,运算符、算术比较符 ( < 、 ≤ 、 > 、 ≥ 、 ≠ ) (<、≤、>、≥、≠) <>= 和逻辑运算符 ( ∧ 、 ∨ 、 ¬ ) (∧、∨、¬) ¬

设有关系 R 、 S R、S RS如下所示,求: R ∪ S 、 R − S 、 R × S 、 π A , C ( R )、 σ A > B ( R )和 σ 3 < 4 ( R × S ) R ∪ S、R - S、R × S、π_{A,C}(R)、σ_{A > B}(R) 和 σ_{3 < 4}(R × S) RSRSR×SπACR)、σA>BR)和σ3<4R×S
在这里插入图片描述


R × S R × S R×S 生成的关系属性名有重复,按照关系“属性不能重名”的性质,通常采用“关系名.属性名”的格式。
σ 3 < 4 ( R × S ) σ_{3 < 4}(R × S) σ3<4R×S的含义: R × S R × S R×S 后“选取 第3个属性值 < 第4个属性值 的元组。在这里插入图片描述

3. 扩展的关系代数运算

(1)交(Intersection)

  关系 R R R S S S 具有相同的关系模式,结果是两张表中相同的记录,记作: R ∩ S R ∩ S RS
  显然有: R ∩ S = R − ( R − S ) R ∩ S = R -(R -S) RS=RRS R ∩ S = S − ( S − R ) R ∩ S = S -(S - R) RS=SSR

(2)连接(Join)

  • θ连接
      从 R R R S S S 的笛卡儿积中选取属性间满足一定条件的元组,记作:
    在这里插入图片描述
      其中, X θ Y XθY Y 为连接的条件, θ θ θ 是比较运算符, X X X Y Y Y 分别为 R R R S S S 上度数相等且可比的属性组。 t n [ X ] t^n[X] tn[X] 表示 R R R t n t^n tn 元组的对应于属性 X X X 的一个分量。 t m [ Y ] t^m[Y] tm[Y] 表示 S S S t m t^m tm 元组的对应于属性 Y Y Y 的一个分量。 θ θ θ 连接可以由基本的关系运算笛卡儿积和选取运算导出, θ θ θ 连接可表示为:
    在这里插入图片描述
  • 等值连接
      当 θ θ θ “ = ” “ = ” = 时,称之为等值连接,记作:
    在这里插入图片描述
    -内连接(Inner Jion)
      也称连接,普通连接或者自然连接,是最早的一种连接,一种特殊的等值连接。内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉,所以内连接可能会丢失信息,记作: R ⋈ S R ⋈ S RS

(3)除(Division)

  除运算是同时从关系的水平方向和垂直方向进行运算。给定关系 R ( X , Y ) R(X,Y) RXY S ( Y , Z ) S(Y,Z) SYZ X 、 Y 、 Z X、Y、Z XYZ 为属性组。应当满足元组在 X X X 上的分量值 x x x 的象集 Y Y Y,包含关系 S S S 在属性组 Y Y Y 上投影的集合,记作: R ÷ S R ÷ S R÷S

(4)广义投影(Generalized Projection)

  广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。若有关系 R R R,条件 F 1 , F 2 , . . . , F n F_1,F_2,...,F_n F1F2...Fn 中的每一个都是涉及 R R R 中常量和属性的算术表达式,那么广义投影运算的形式定义为: π F 1 , F 2 , . . . , F n ( R ) π_{F_1,F_2,...,F_n}(R) πF1F2...FnR

(5)外连接(Outer Jion)

  外连接运算是连接运算的扩展,可以处理由于连接运算而缺失的信息。
在这里插入图片描述

  • 左外连接/左连接(Left Outer Jion)
      取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值 null 充填所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  • 右外连接/右连接(Right Outer Jion)
      取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值 null 填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  • 全外连接/全连接(Full Outer Jion)
      完成左外连接和右外连接的操作,即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,并填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。

设有关系R、S如下所示,求:R、S 的左外连接、外连接、全外连接
在这里插入图片描述


在这里插入图片描述

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

  SQL(Structured Query Language),是关系数据库中最普遍使用的语言,包括数据查询(Query)、数据操纵(Manipulation)、数据定义(Definition)和数据控制(Control)功能,是一种通用的、功能强大的关系数据库的标准语言。

1. SQL 数据库体系结构

(1)SQL 的特点

  • 综合统一
      非关系模型的数据语言分为模式定义语言和数据操纵语言,缺点【当要修改模式时,必须停止现有数据库的运行,转储数据,修改模式编译后再重装数据库】。SQL集数据定义、数据操纵和数据控制功能于一体,语言风格统一,可独立完成数据库生命周期的所有活动。
  • 高度非过程化
      非关系数据模型的数据操纵语言是面向过程的,若要完成某项请求,必须指定存储路径。SQL语言是高度非过程化语言,当进行数据操作时,只要指出“做什么”,存储路径对用户来说是透明的,提高了数据的独立性。
  • 面向集合的操作方式
      非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。而SQL 语言采用面向集合的操作方式,其操作对象、查找结果可以是元组的集合。
  • 两种使用方式
      第一种方式【用户可以在终端键盘上输入 SQL 命令,对数据库进行操作,称为自含式语言】;第二种方式【将SQL语言嵌入到高级语言程序中,称嵌入式语言】。
  • 语言简洁、易学易用
      SQL语言功能极强,完成核心功能只用了 9 9 9 个动词,包括:数据查询【SELECT】、数据定义【CREATE、DROP、ALTER】、数据操纵【INSERT、UPDATE、DELETE】、数据控制【GRANT、REVORK】。

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

  SQL 语言支持关系数据库的三级模式结构,其中,视图对应外模式、基本表对应模式、存储文件对应内模式。
在这里插入图片描述

2. SQL 的基本组成

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

3. SQL 数据定义、查询和更新

  SQL 语句
  SQL 数据定义包括:对表、视图、索引的创建和删除;SQL 数据操纵功能包括: SELECT(查询)、INSERT(插入)、DELETE(删除)和UPDATE(修改)。
  一个基本表可以存储在一个或多个存储文件中,一个存储文件也可以存储一个或多个基本表。一个表可以带若干索引,索引也存储在存储文件中。每个存储文件就是外部存储器上的一个物理文件,存储文件的逻辑结构组成了关系数据库的内模式。
  基本表【实际存储在数据库中的表】和视图【虚表,从基本表或其他视图中导出的表,数据库中只存放视图的定义,不存放视图的数据】都是表,用户可用 SQL 语句对基本表和视图进行查询等操作。

4. SQL 访问控制

  数据控制控制的是用户对数据的存储权力,是由 DBA 决定的。但是,某个用户对某类数据具有何种权利,是个政策问题而不是技术问题。DBMS的功能就是保证这些决定的执行,DBMS数据控制具有以下功能:

  • 通过 GRANT 和 REVOKE 将授权通知系统,并存入数据字典。
  • 当用户提出请求时,根据授权情况检查是否执行操作请求。

  SQL标准包括 DELETE、INSERT、SELECT【对应于READ权限】和 UPDATE 权限,还包括了 REFERENCES 权限,用来限制用户在创建关系时定义外码的能力。嵌入式SQL与主语言之间的通信通常有以下方式:

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

5. 嵌入式 SQL

  SQL 提供了将 SQL 语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法识别嵌入到高级语言中的SQL语句。该方法的关键问题是必须区分主语言中嵌入的SQL语句,以及主语言和SQL间的通信问题。

五、 关系数据库的规范化

  在关系模型中,一个数据库模式是关系模式的集合。关系数据理论是指导数据库设计的基础,是数据库语义学的问题。
  关系数据库设计理论的核心【数据间的函数依赖】;衡量的标准【关系规范化的程度及分解的无损连接和保持函数依赖性】;目标【生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,并可方便地获取信息】。

1. 函数依赖

  数据依赖:通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现,函数依赖是一种最重要、最基本的数据依赖

  • 函数依赖
      设 R ( U ) R(U) RU 是属性集 U U U 上的关系模式, X 、 Y X、Y XY U U U 的子集。若给定一个 X X X,能唯一确定一个 Y Y Y,就称 X X X 确定 Y Y Y,或 Y Y Y 依赖于 X X X,记作 X → Y X→Y XY
  • 部分函数依赖
       A A A可以确定 C C C ( A , B ) (A,B) AB 也可以确定 C C C ( A , B ) (A,B) AB 中的一部分可以确定 C C C,称为部分函数依赖。
  • 传递依赖
      当 A A A B B B 不等价时, A A A 可确定 B B B B B B 可确定 C C C,则 A A A 可以确定 C C C,是传递函数依赖。
    在这里插入图片描述

2. 键


  •   ① 超键:能唯一标识此表的属性的组合。
      ② 候选键:超键中去掉冗余的属性,剩余的属性就是候选键
      ③ 主键:任选一个候选键,即可作为主键
      ④ 外键:其他表中的主键。
      ⑤ 主属性和非主属性:候选键内的属性为主属性,其他属性为非主属性。
  • 求候选键
      ① 将关系模式的函数依赖关系用“有向图”的方式表示
      ② 找入度为 0 0 0 的属性并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
      ③ 若入度为 0 0 0 的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为 0 0 0 的属性集中,直至该集合能遍历所有结点,集合为候选键。

(1)给定关系 R ( A 1 , A 2 , A 3 , A 4 ) R(A1,A2,A3,A4) RA1A2A3A4 上的函数依赖集 F { A 1 → A 2 , A 3 → A 2 , A 2 → A 3 , A 2 → A 4 } F\{A1→A2,A3→A2,A2→A3,A2→A4\} F{A1A2A3A2A2A3A2A4},求: R R R 的候选关键字
(2)关系 R ( A , B , C ) R(A,B,C) RABC 满足下列函数依赖: F { B → C , B → A , A → B C } F\{B→C,B→A,A→BC\} F{BCBAABC},求:关系 R R R 的候选关键字
(3)关系模式 P ( A , B , C , D , E , F , G , H , I , J ) P (A,B,C,D,E,F,G,H,I,J) P(ABCDEFGHIJ满足下列函数依赖: F { A B D → E , B → F , C → J , C J → I , G → H } F\{ABD→E,B→F,C→J,CJ→I,G→H\} F{ABDEBFCJCJIGH},求:候选码


(1)关系模式的函数依赖关系如下图,因为属性 A 1 A1 A1 决定全属性,所以 A 1 A1 A1 为候选关键字。
(2)关系模式的函数依赖关系如下图,因为属性 A A A 决定全属性,且属性 B B B 决定属性 A A A ,所以 A 和 B A和B AB 为候选关键字。
(3)关系模式的函数依赖关系如下图,因根据关系模式的函数依赖关系得,候选码为 A B C D ABCD ABCD在这里插入图片描述

3. 规范化

  关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程度。通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式,这个过程称为规范化。

(1)1NF(第一范式)

  【定义】:在关系模式 R R R 中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称 R R R 是第一范式。
   1 N F 1NF 1NF存在 4 4 4个问题:冗余度大、插入异常、删除异常、引起修改操作的不一致性。

(2)2NF(第二范式)

  【定义】:当且仅当 R R R 1 N F 1NF 1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称 R R R 是第二范式。

(3)3NF(第三范式)

  【定义】:当且仅当 R R R 2 N F 2NF 2NF,且 E E E 中没有非主属性传递依赖码时,则称 R R R 是第三范式。

(4)BC范式(BCNF)

  【定义】:不存在函数依赖,也不存在传递依赖。

(5)反规范化

  由于规范化会使表不断的拆分,从而导致数据表过多。这样虽然减少了 数据元余,提高了增、删、改的速度,但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降。
  反规范化的提出:数据库规范化程度不高会有过多的数据冗余、插入异常、删除异常,但规范化程度过高会造成数据表过多,查询时的效率会极大的降低。
  反规范化的技术:① 增加派生性冗余:增加冗余;② 增加冗余列;③ 重新组表;④ 分割表:包括垂直分割和水平分割。

在这里插入图片描述

4. 模式分解及分解应具有的特性

(1)分解

  当模式不符合关系范式时,需要进行模式分解。
在这里插入图片描述

  • 模式分解的特性
      分解具有无损连接性:数据内容的等价性,分解后的数据内容与原始数据内容相比不能多,也不能少。
      分解要保持函数依赖性:数据约束的等价性,分解后的数据约束(依赖关系)等不能丢失。

(2)无损连接

  指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损连接分解。
在这里插入图片描述

(3)保持函数依赖

  若分解后的属性需要在一个关系模式里,则保持函数依赖。
在这里插入图片描述

六、 数据库的控制功能

1. 事务管理

  是一个操作序列,是数据库环境中不可分割的逻辑工作单位。事务和程序是两个不同的概念,一般一个程序可包含多个事务。在SQL语言中,事务定义的语句:① BEGIN TRANSACTION【事务开始】;② COMMIT【事务提交】;③ ROLLBACK【事务回滚】。
  事务具有:原子性【(Atomicity),事务是原子的,要么都做,要么都不做】、一致性【(Consistency),事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态】、隔离性【(Isolation),事务相互隔离】和持久性【(Durability),一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效】,这 4 4 4 个特性也称事务的 ACID 性质。

2. 数据库安全

在这里插入图片描述

3. 数据库的备份与恢复

  数据库的关键技术在于建立冗余数据,即备份数据。

(1)故障类型

  • 事务内部故障
      有的可以通过事务程序本身发现,但有些是非预期的,不能由事务程序处理。解决方法:在程序中预先设置 Rollback 语句;由DBMS的恢复子系统通过日志,撤消事务对数据库的修改,回退到事务初始状态。
  • 系统故障
      通常称为软故障,是指造成系统停止运行的任何事件,使得系统要重新启动。解决方法:通常使用检查点法。
  • 介质故障
      通常称为硬故障,此类故障发生的几率小,但破坏性最大。解决方法:一般使用日志重做业务。
  • 计算机病毒
      是一种人为的故障和破坏,是在计算机程序中插入的破坏,计算机功能或者数据可以繁殖和传播的一组计算机指令或程序代码。

(2)备份方法

  • 备份方式
      冷备份:也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复)下来。
      热备份:也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
    在这里插入图片描述
  • 转储方式
      ① 静态转储:指在转储期间不允许对数据库进行任何存取、修改操作。
      ② 动态转储:在转储期间允许对数据库进行存取、修改操作,转储和用户事务可并发执行。
      ③ 海量转储:指每次转储全部数据。
      ④ 增量转储:指每次只转储上次转储后更新过的数据。
      ⑤ 静态海量转储:在系统中无运行事务时进行每次转储全部数据库。
      ⑥ 静态增量转储:在系统中无运行事务时进行每次只转储上一次转储后更新过的数据。
      ⑦ 动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
      ⑧ 动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储后更新过的数据。
  • 日志文件
      在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。

(3)恢复

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

(4)数据库镜像

  为了避免磁盘介质出现故障影响数据库的可用性,许多 DBMS 提供数据库镜像功能用于数据库恢复,数据库镜像是通过复制数据实现的,但频繁地复制数据会降低系统的运行效率。

4. 并发控制

  并发操作:指在多用户共享的系统中许多用户可能同时对同一数据进行操作。
在这里插入图片描述

(1)并发操作带来的问题

  并发操作带来的数据不一致性有三类:丢失修改、不可重复读和读脏数据,其主要原因是事务的并发操作破坏了事务的隔离性。

(2)并发控制技术

  并发控制的主要技术是封锁。

  • 封锁
      ① 排它锁:简称 X 锁或者写锁,若事务 T 对数据对象 A 加上 X 锁,则只允许T读取和修改 A ,其他事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。
      ② 共享锁:简称 S 锁或者读锁,若事务 T 对数据对象 A 加上 S 锁,则只允许 T 读取 A ,但不能修改 A ,其他事务只能再对 A 加 S 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事务可以读 A ,但在 T 释放 A 上的 S 锁之前不能对 A 进行任何修改。
  • 三级封锁协议
      ① 一级封锁协议:事务 T在修改数据R之前必须先对其加X锁,直到事务结束才释放,可防止丢失修改
      ② 二级封锁协议:一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即可释放 S 锁,可防止丢失修改,还可防止读“脏”数据
      ③ 三级封锁协议:一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放,可防止丢失修改、防止读“脏”数据和防止数据重复读

(3)活锁与死锁

  活锁:指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试和失败。
  死锁:指两个以上的事务分别请求封锁对方已经封锁的数据,导致了长期等待而无法继续运行下去的现象。
  活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。

(4)并发调度的可串行性

  多个事务的并发执行是正确的,当且仅当其结果与某一次序串行地执行它们时的结果相同,称这种调度策略是可串行化的调度。
  可串行性是并发事务正确性的准则,按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的才认为是正确调度。

(5)两段封锁协议

  指所有事务必须分两个阶段对数据项加锁【事务可以获得任何数据项上的任何类型的锁,但不能释放】和解锁【事务可以释放任何数据项上的任何类型的锁,但不能申请】,可串行化的,可能发生死锁。

(6)封锁的粒度

  封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元,也可以是物理单元。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值