内容概要
数据库基本知识、关系数据库、SQL语言、数据库安全性、数据库完整性、关系数据理论、数据库设计、数据库编程、关系查询的处理和优化、恢复技术、并发控制
绪论
目标:主要基本概念的理解和记忆,要注意区分归纳
基本概念⭐️
- 数据:是描述事物的符号记录。数据的含义称为数据的语义,数据与其语义是不可分的。
- 数据库:是长期存储在计算机内、有组织的、可共享的大量数据的集合。
- 数据库管理系统:是位于用户与操作系统之间的一层数据管理软件。它具有数据的定义、组织、存储、管理、操纵功能,数据库的建立、运行、管理、维护功能。
- 数据库系统:是由数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员组成的存储、管理、处理和维护数据的系统。
- 数据库系统结构图(五层)
- 计算机层次结构(五层)
数据库管理技术
- 数据库管理技术的三个阶段:人工管理、文件系统、数据库系统
- 各阶段特点
人工管理阶段 | 文件系统阶段 | 数据库系统阶段 | |
数据的管理者 | 用户(程序员) | 文件系统 | 数据库管理系统 |
数据面向的对象 | 某一应用程序 | 某一应用程序 | 现实世界 |
数据的共享程度 | 无共享,冗余度极大 | 共享性差,冗余度大 | 共享性高 |
数据的独立性 | 不独立,完全依赖于程序 | 独立性差 | 高度的物理独立性和一定的逻辑独立性 |
数据的结构化 | 无结构 | 记录内有结构、整体无结构 | 整体结构化 |
数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | 由数据库管理系统统一管理和控制 |
数据库系统的特点⭐️
- 数据结构化:实现整体数据的结构化
- 高共享、低冗余:数据共享可减少数据冗余,节约空间;易于扩充
- 数据独立性高:包括物理独立性和逻辑独立性
- 由DBUS统一管理和控制:数据的安全性保护、完整性检查、并发控制、数据库恢复
数据模型⭐️
数据模型是对现实世界数据特征的抽象
现实世界→概念模型→逻辑模型→物理模型
根据模型应用的不同,模型划分成两类:
- 概念模型:也称信息模型,从用户的观点来对数据和信息建模,主要用于数据库设计;
- 逻辑模型和物理模型
- 逻辑模型主要包括:层次模型、网状模型、关系模型、面向对象模型和对象关系模型等;
- 物理模型是对数据最低层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
概念模型⭐️
概念模型的表示方法:E—R方法(实体—联系)
- 实体:客观存在并可相互区别的事物。可是具体的人、事、物或抽象概念
- 属性:实体所具有的某一特性。一个实体可以有若干个属性刻画。
- 用椭圆形表示,并用无向边将其与相应的实体连接起来
- 码:唯一标识实体的属性集
- 域:属性的取值范围。称为属性的域
- 实体型:同类实体称为实体型。
- 用矩形表示,矩形框内写实体名。
- 实体集:同型实体的集合称为实体集
- 联系:现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系
- 联系本身:用菱形表示,菱形框内写明联系名, 并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)
- 联系的属性:联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要 用无向边与该联系连接起来
实体集间联系
- 一对一联系 (一个班级只有一个正班长)
- 一对多联系(一个班级中有若干名学生)
- 多对多联系(一门课可被若干学生选修,一名学生也可选修多门课)
数据模型
包括逻辑模型和物理模型
组成要素
- 数据结构:描述数据库组成对象以及对象之间的联系
- 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则
- 完整性约束: 一组完整性规则的集合
常用的数据模型
- 层次模型(树)
- 网状模型(图)
- 关系模型(表)
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
层次模型
满足下面两个条件的基本层次联系的集合为层次模型。
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
表示方法
- 实体型:用记录类型描述。 每个结点表示一个记录类型。
- 属性:用字段描述。每个记录类型可包含若干个字段。
- 联系:用结点之间的连线表示记录(类)型之间的一对多的联系
对于多对多联系,将其分解成一对多联系
方法:冗余结点法、虚拟结点法
层次模型的数据操纵
- CRUD
层次模型的完整性约束
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
层次模型的优缺点
- 优点
- 层次数据模型简单,对具有一对多的层次关系的部门描述自然、直观,容易理解
- 性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
- 缺点
- 多对多联系表示不自然
- 对插入和删除操作的限制多
- 查询子女结点必须通过双亲结点
- 层次命令趋于程序化
网状模型
满足下面两个条件的基本层次联系的集合为网状模型。
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲
表示方法(与层次数据模型相同)
- 对于多对多联系,将其分解成一对多联系
网状模型的数据操纵
- CRUD
网状数据模型的完整性约束
- 允许插入尚未确定双亲结点值的子女结点值
- 允许只删除双亲结点值
网状模型的优缺点
- 优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲
- 具有良好的性能,存取效率较高
- 缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握
- DDL、DML语言复杂,用户不容易使用
关系模型⭐️
关系模型的基本概念
- 关系(Relation ):一个关系对应通常所说的一张表。
- 元组(Tuple ):表中的一行即为一个元组。
- 属性(Attribute ):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
- 码(Key ):表中的某个属性组,它可以唯一确定一个元组。
- 域(Domain ):属性的取值范围。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述
- 关系名(属性 1,属性 2,…,属性 n )
例:学生(学号,姓名,年龄,性别,系,年级)
关系术语 | 一般表格的术语 |
关系名 | 表名 |
关系模式 | 表头(表格的描述) |
关系 | (一张)二维表 |
元组 | 记录或行 |
属性 | 列 |
属性名 | 列名 |
属性值 | 列值 |
分量 | 一条记录中的一个列值 |
非规范关系 | 表中有表(大表中嵌有小表) |
关系模式由五部分组成,即它是一个五元组:
- R(U,D,DOM,F)
- R:关系名
- U:组成该关系的属性名集合
- D:属性组U中属性所来自的域
- DOM:属性向域的映象集合
- F:属性间数据的依赖关系集合
关系模型的数据操纵
- 查询、插入、删除、更新
- 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
- 存取路径对用户隐蔽,用户只要指出 “干什么”,不必详细说明“怎么干“
完整性约束
- 实体完整性、参照完整性、用户定义的完整性
关系数据模型的存储结构
- 表以文件形式存储
- 有的DBMS一个表对应一个操作系统文件
- 有的DBMS自己设计文件结构
关系模型的优缺点
- 优点
- 建立在严格的数学概念的基础上
- 概念单一,数据结构简单、清晰,用户易懂易用
- 实体和各类联系都用关系来表示。
- 对数据的检索结果也是关系。
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
- 缺点
- 存取路径对用户透明导致查询效率往往不如非关系数据模型
- 为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度
数据库的系统结构
DB系统内部的模式结构⭐️
从数据库管理系统角度看
数据库系统模式的概念
- “型” 和“值” 的概念
- 型 (Type ) 对某一类数据的结构和属性的说明
- 值 (Value ) 是型的一个具体赋值
例如:学生记录
记录型:
(学号,姓名,性别,系别,年龄,籍贯)
该记录型的一个记录值
(900201,李明,男,计算机,22,江苏)
- 模式(Schema )
- 数据库逻辑结构和特征的描述
- 是型的描述
- 反映的是数据的结构及其联系
- 模式是相对稳定的
- 模式的一个实例(Instance )
- 模式的一个具体值
- 反映数据库某一时刻的状态
- 同一个模式可以有很多实例
- 实例随数据库中的数据的更新而变动
数据库系统的三级模式与两级映象
- 外模式
外模式也称子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)最终能够看见的和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式面向具体的应用程序,它定义在模式之上,但独立于存储模式和存储设备。设计外模式时应充分考虑到应用的扩充性。外模式通常是模式的子集。一个数据库可以有多个外模式。外模式是保证数据库安全性的一个有力措施。 - 模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具以及高级程序设计语言无关。模式是数据库的中心与关键,它独立于数据库的其他层次。设计数据库模式结构时应首先确定数据库的模式。
模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。数据库模式以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。模式定义包括数据的逻辑结构定义、数据之间的联系定义以及安全性、完整性要求的定义。 - 内模式
内模式也称存储模式(Storage Schema),一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图即外模式,也独立于具体的存储设备。
例如,记录的存储方式是顺序存储、按照B树结构存储还是按HASH方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定等。
数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。
为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了二级映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性(外模式/模式映象)和物理独立性(模式/内模式映象)。
DB系统外部的体系结构
从数据库最终用户角度看
- 单用户结构
- 主从式结构
- 分布式结构
- 客户/服务器结构
- 浏览器/应用服务器/数据库服务器结构
关系数据库
目标:基本概念理解,关系代数查询语言会写
关系代数⭐️
关系代数:是一种抽象的查询语言,用对关系的运算来表达查询。
关系代数运算的三个要素:
- 运算对象:关系
- 运算结果:关系
- 运算符:四类
- 集合运算符
- 专门的关系运算符
- 算术比较符
- 逻辑运算符
选择
- 选择又称为限制(Restriction)
- 选择运算符的含义
- 在关系R中选择满足给定条件的诸元组
σ F ( R ) = \sigma_{F}(R)=σF(R)={t ∣ t ∈ R ∧ F ( t ) = {t|t\in{R}\wedge{F(t)=}}t∣t∈R∧F(t)=‘真’} - F:选择条件,是一个逻辑表达式,基本形式为: X1θY1
θ:比较运算符(>,≥,<,≤,=或<>)
X1,Y1等:属性名、常量、简单函数;属性名也可以用它的 序号来代替
- 选择运算是从行的角度进行的运算
投影
- 选择运算符的含义
- 从R中选择出若干属性列组成新的关系
∏ A ( R ) = \prod_{A}(R)=∏A(R)={t [ A ] ∣ t ∈ R t[A]|t\in{R}t[A]∣t∈R}
A:R中的属性列
- 投影操作主要是从列的角度进行运算
连接
- 连接也称为θ连接
- 连接运算的含义
- 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
- R ⋈ A θ B S = R\mathop{\bowtie}\limits_{A\theta{B}}S=RAθB⋈S={t r t s ^ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] \widehat{t_rt_s}|t_r\in{R}\wedge{t_s}\in{S}\wedge{t_r[A]\theta{t_s[B]}}trts∣tr∈R∧ts∈S∧tr[A]θts[B]}
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
- 连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。
- 两类常用连接运算
- 等值连接(equijoin)
- 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,
- θ为“=”的连接运算称为等值连接
- 自然连接(Natural join)
- 自然连接是一种特殊的等值连接
- 两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉
- 一般的连接操作是从行的角度进行运算
自然连接还需要取消重复列,所 以是同时从行和列的角度进行运算 - 悬浮元组(Dangling tuple)
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。 - 外连接(Outer Join)如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
- 左外连接(LEFT OUTER JOIN或LEFT JOIN) :只保留左边关系R中的悬浮元组
- 右外连接(RIGHT OUTER JOIN或RIGHT JOIN) :只保留右边关系S中的悬浮元组
除
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分 量值x的像集Yx包含S在Y上投影的集合。
R ÷ S = R\div{S}=R÷S={t r [ X ] ∣ t r ∈ R ∧ ∏ Y ( S ) ⊆ Y x t_r[X]|t_r\in{R}\wedge{\prod_Y(S)\subseteq{Y_x}}tr[X]∣tr∈R∧∏Y(S)⊆Yx}
Y x Y_xYx:x在R中的像集,x = tr[X ]
完整性约束⭐️
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
实体完整性
若属性A是基本关系R的主属性,则属性A不能取空值或重复
参照完整性
限制一个关系引用与之联系关系中不存在的元组数据
用户定义的完整性
若R表中F外键对应S表中Ks主键,则R表中外键要么取空值要么等于S表中主键值
若属性(或属性组)F是基本关系R的外码 它与基本关系S的主码Ks相对应,则对 于R中每个元组在F上的值必须为:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值。
含外键的R叫参照关系,S叫被参照关系
- 候选码:属性或属性集,唯一标识元组
- 主码:候选码中的一个作为主码
- 主属性:包含在候选码中的属性为主属性
- 外码:一个关系中的属性不是该关系的码,但是是其他关系的码,则是该关系的外码
- 全码:所有属性集是这个关系的候选码
用户定义的完整性包括NOT NULL约束、UNIQUE约束、值域约束等