1 计算、数据与数据管理
1.1 数据库的4个基本概念
数据、数据库、数据库管理系统和数据库系统是与数据库技术密切相关的4个基本概念。
1.1.1 数据
Data
数据是数据库中存储的基本对象,对数据我们可以做如下定义:描述事务的符号记录称为数据。数据的含义称为数据的语义,数据与其语义是不可分的。
(李明,男,199505,江苏省南京市,计算机系,2013)这一串数据的语义即代表姓名,性别,出生年月,出生地点,所在院系,入学时间。
1.1.2 数据库
Database,DB
数据库是存放数据的仓库,且数据是按照一定格式存放的。严格地讲,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度(redundancy)、较高的数据独立性(data independency)和易扩展性(scalability)并可为各种用户共享。数据库数据具有永久存储、有组织和可共享三个基本特点。
数据库的特点
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
1.1.3 数据库管理系统
Database Management System, DBMS
数据库管理系统是一个用来科学地组织和存储数据,高效地获取和维护数据的系统软件,是位于用户和操作系统之间的一层数据管理软件。它的功能主要有以下几个方面:
- 数据定义功能:数据库管理系统提供数据定义语言(Data Definition Language, DDL),用户通过它可以方便地对数据库中的数据对象的组成与结构进行定义
- 数据组织、存储和管理:实现数据之间的联系
- 数据操纵功能:数据库管理系统还提供数据操纵语言(Data Manipulation Language, DML),用户可以使用它实现对数据库的基本操作,如查询、插入、删除和修改等。
- 数据库的事务管理和运行管理
- 数据库在建立、运行和维护时由数据库管理系统统一管理和控制
- 保证数据的安全性、完整性、多用户对数据的并发使用
- 发生故障后的系统恢复
- 数据库的建立和维护功能
- 数据库初始数据的装载和转换
- 数据库转储、恢复功能
- 数据库的重组织
- 性能监视、分析等
- 其他功能
1.1.4 数据库系统
Database System, DBS
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(Database Administrator, DBA)共同组成的存储、管理、处理和维护数据的系统。
1.2 数据管理技术的产生和发展
历史发展,略
大概要说明的是数据库发展经历了 人工管理阶段 - 文件系统阶段 - 数据库系统阶段。
1.3 数据库系统的特点
1.3.1 数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。所谓“整体”结构化是指数据库中的数据不再仅仅针对某一个应用,而是面向整个组织或企业;不仅数据内部是结构化的,而且整体是结构化的数据之间是具有联系的。
1.3.2 数据的共享性高、冗余度低且易扩充
数据共享可以大大减少数据冗余,节约存储空间。数据共享还能避免数据之间的不相容性与不一致性。
多个用户所拥有的同个对象的信息不同,该如何确定?首先,用户从数据库取出的对象信息是一致的,然后在自己的作用域中进行修改,在存储过程中,数据库管理系统发挥作用来判断哪个用户的更改是有效的,哪个用户的更改是无效的。
1.3.2 数据独立性高
数据独立性包括物理独立性和逻辑独立性
- 物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。也就是说用户不需要了解数据在数据库中是怎样存储的。
- 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。也就是说,数据的逻辑结构改变时用户程序也可以不变。
2 数据模型
数据模型是对现实世界数据特征的抽象,用以抽象、表示和处理现实世界中的数据和信息。
数据模型应该要满足三方面的要求:
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
数据模型是数据库系统的核心和基础
2.1 数据模型的分类
数据模型分成概念、逻辑、物理模型三大类。
-
概念模型,也称为信息模型。是按照用户的观点来对数据和信息建模,用于数据库设计
-
逻辑模型是按照计算机系统的观点对数据建模,用于DBMS实现
主要包括:
- 网状模型
- 层次模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
- …
-
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法。
2.2 客观对象的抽象过程 – 两部抽象
-
现实世界中的客观对象抽象为概念模型
将现实世界抽象为信息世界
-
把概念模型转换为特定DBMS支持的数据模型
将信息世界转换为机器世界
2.3 数据模型的组成要素
2.3.1 数据结构
数据模型的数据结构:描述数据库的组成对象,以及对象之间的联系。
描述的内容:
- 与对象的类型、内容、性质有关
- 与数据之间的联系有关
数据结构是对系统静态特征的描述
2.3.2 数据操作
数据操作是对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据操作的类型:
- 查询
- 更新:包括插入、删除、修改
数据模型对操作的定义:
- 操作的确切含义、操作符号、操作规则(如优先级)
- 实现操作的语言
数据操作是对系统动态特性的描述
2.3.3 数据的完整性约束条件
数据的完整性约束条件是一组完整性规则的集合
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则
- 用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型对完整性约束条件的定义:
- 反映和规定必须遵守的基本的通用的完整性约束条件
- 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
3 概念模型
3.1 概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
3.2 对概念模型的基本要求
- 较强的语义表达能力
- 简单。清晰、易于用户理解
3.3 信息世界中的基本概念
- 实体(Entity):客观存在并可相互区别的事物称为实体。可以是具体的人。事、物或抽象的概念
- 属性(Attribute):实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画
- 码(Key):唯一标识实体的属性集称为码
- 实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体称为实体型
- 实体集(Entity Set):同一类型实体的集合称为实体集
- 联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
3.3 实体联系方法
Entity-Relationship Approach
- 用E-R图来描述现实世界的概念模型
- E-R方法也称为E-R模型
- 实体:方形
- 属性:椭圆
- 联系:菱形
4 逻辑模型
常用数据模型
- 格式化模型
- 层次模型(Hierarchical Model)
- 网状模型(Network Model)
- 关系模型(Relational Model)
- 对象模型
- 面向对象数据模型(Object Oriented Data Model)
- 对象关系数据模型(Object Relational Data Model)
4.1 关系模型
关系模型中数据的逻辑结构是一张二维表,它由行和列组成
行代表元组,列代表属性
4.1.1关系模型中的一些概念
- 关系(Relation):一个关系对应通常说的一张表
- 元组(Tuple):表中的一行即为一个元组
- 属性(Attribute):表中的一列即为一个属性,给每个属性起一个名称即属性名
- 主码(Key):也称为码键。表中的某个属性组,它可以唯一确定一个元组
- 域(Domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 分量:元组中的一个属性值
- 关系模式:对关系的描述,关系名(属性1,属性2,…,属性n)
关系必须是规范化的,满足一定的规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
4.1.2 关系模型的操作与完整性约束
- 数据操作(查询、插入、删除、更新)是集合操作,操作对象和操作结果都是关系
- 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
- 关系的完整性约束条件
- 实体完整性
- 参照完整性
- 用户定义的完整性
4.1.3 关系模型的优缺点
优点:
- 建立在严格的数学概念的基础上
- 概念单一:
- 实体和各类联系都用关系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对用户隐蔽
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
缺点
- 存取路径对用户隐蔽,查询效率往往不如格式化数据模型
- 为提高性能,必须对用户查询请求进行优化,增加了开发DBMS的难度
4.2 NoSQL
-
基于 Key-Value 存储模型
-
BigTable模型
在关系模型的基础上加了第三个轴:时间轴,来记录时间变化过程中对表的更改
-
基于文档模型
-
基于图模型:记某个图为 , 为结点集合,每个结点具有若干属性, 为边集合,也可以具有若干属性
5 关系、关系模式和关系数据库
5.1 域(Domain)
域是一组具有相同数据类型的值的集合。例:
- 整数
- 实数
- 介于某个取值范围的整数
- 指定长度的字符串集合
- …
5.2 笛卡尔积
-
笛卡尔积(Cartesian Product):给定一组域 ,允许其中某些域是相同的。
-
的笛卡尔积为
$D_1 \times D_2 \times \dots \times D_n = $
{}
-
所有域的所有取值的一个组合
-
不能重复
-
元组(Tuple)
-
笛卡尔积中每一个元素() 叫做一格 元组或简称元组
例如:
(张青梅,计算机专业,李勇)
(张青梅,计算机专业,刘晨)
-
-
分量(Component)
-
笛卡尔积元素()中的每一个值 叫做一格分量
例如:张青梅,计算机专业,李勇,刘晨等
-
-
基数(Cardinal number)
- 若 为有限集,其基数为 ,则 的基数 为
-
笛卡尔积的表示方法
- 笛卡尔积可表示为一张二维的表
- 表中的每一行对应一个元组,表中的每列对应一个域
5.3 关系
关系(Relation): 的子集叫做在域 上的关系, 表示为
-
:关系名
-
:关系的目或度(Degree)
当 时,成该关系为单元关系或一元关系
当 时,称该关系为二元关系
元组:关系中的每个元素是关系中的元组,通常用 表示
关系的表示:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
属性:
- 关系中不同列可以对应相同的域
- 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
- 目关系必有 个属性
5.3.1 码
候选码(Candidate Key)
- 若关系中的某一属性组(即多个属性构成的组合)的值能唯一地标识一个元祖,则称该属性组为候选码
- 简单的情况:候选码只包含一个属性
- 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)
主属性:
- 候选码中的属性称为主属性(Prime attribute)
- 不包含在任何候选码中的属性称为非主属性或非码属性
5.3.2 关系的类别
- 基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
5.3.3 基本关系的性质
- 列是**同质(Homogeneous)**的:每一列中的分量是同一类型的数据,来自同一个域
- 不同的列可出自同一个域:
- 其中的每一列称为一个属性
- 不同的属性要给予不同的属性名
- 列的顺序无所谓:列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓:行(元组)的次序可以任意交换
- 分量必须取原子值
5.4 关系模式
**关系模式(Relation Schema)**是型,关系是值
关系模式是对关系的描述
-
元祖集合的结构:
- 属性组成
- 属性来自的域
- 属性与域之间的映像关系
-
完整性约束条件
-
关系模式可以形式化地表示为:
:关系名
:组成该关系的属性名集合
: 中属性所来自的域
:属性向域的映像集合
:属性间数据的依赖关系的集合
-
关系模式通常可以简记为 或
-
:关系名
-
:属性名
注:域名及属性向域的映像常常直接说明为属性的类型,长度
-
5.4.1 关系模式与关系
-
关系模式:
- 对关系的描述
- 静态的,稳定的
-
关系
- 关系模式在某一时刻的状态或内容
- 动态的、随时间不断变化的
-
关系模式和关系往往笼统称为关系
通过上下文加以区别
5.5 关系数据库
关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型与值:
- 关系数据库的型:关系数据库模式,是对关系数据库的描述
- 关系数据库的值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库的值
6 关系的完整性
6.1 关系的三类完整性约束
- 实体完整性
- 参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性(即1,2),应该由关系系统自动支持
- 用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束
6.2 实体完整性
实体完整性规则(Entity Integrity):若属性 是基本关系 的主属性,则属性 不能取空值。
空值就是“不知道”或“不存在”或“无意义”的值
例:选修(学号,课程号,成绩)
- “学号、课程号”为主码,则这两个属性都不能取空值
6.2.1 实体完整性规则的说明
- 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
- 关系模型中以主码作为唯一性标识。
- 主码中的属性即主属性不能取空值。
主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第二点是矛盾的。
6.2.2 关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。
例:学生实体、专业实体以及专业与学生间的一对多关系,学生关系引用了专业关系的主码“专业号”
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
6.2.3 外码
-
设 是基本关系 的一个或一组属性,但不是关系 的码。如果 与基本关系 的主码 相对应,则称 是 的外码(Foreign Key)
- 基本关系 称为参照关系(Referencing Relation)
- 基本关系 称为被参照关系(Referenced Relation)或目标关系(Target Relation)
-
其中:
-
关系 和 不一定是不同的关系
-
目标关系 的主码 和参照关系的外码 必须定义在同一个(或一组)域上
-
外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
-
例:学生关系的“专业号”与专业关系的主码“专业号”相对应
“专业号”属性是学生关系的外码
专业关系是被参照关系,学生关系为参照关系
6.3 参照完整性规则
参照完整性规则:若属性(或属性组) 是基本关系 的外码,且与基本关系 的主码 相对应(基本关系 和 不一定是不同的关系),则对于 中每个元组在 上的值必须为:
- 或者取空值( 的每个属性值均为空值)
- 或者等于 中某个元组的主码值
例:,学生关系中每个元组的“专业号”属性只取两类值:
空值,表示尚未给该学生分配专业
非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业
6.4 用户定义的完整性
-
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
-
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
例:课程(课程号,课程名,学分)
“课程名”属性必须取唯一值
非主属性“课程名”也不能取空值
“学分”属性只能取值 { }
7 关系代数
7.1 基本的关系操作
常用的关系操作:
-
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积
选择、投影、并、差、笛卡尔积是5种基本操作
-
数据更新:插入、删除、修改
关系操作的特点:集合操作方式,操作的对象和结果都是集合,一次一集合的方式
- 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
- 关系代数
- 运算对象是关系
- 运算结果亦为关系
- 关系代数的运算符有两类:集合运算符和专门的关系运算符
- 传统的集合运算是从关系的“水平”方向即行的角度进行
- 专门的关系运算不仅涉及行而且涉及列
7.2 并
并(Union):
- 和 具有相同的目 (即两个关系都有 个属性),且相应的属性取自同一个域
- 仍为 目关系,由属于 或属于 的元组组成
7.3 差
差(Difference):
-
和 具有相同的目 ,且相应的属性取自同一个域
-
仍为 目关系,由属于 而不属于 的所有元组组成
-
7.4 交
交(Intersection):
-
和 具有相同的目 ,且相应的属性取自同一个域
-
仍为 目关系,由既属于 又属于 的元组组成
-
-
7.5 笛卡尔积
严格来讲应该是广义的笛卡尔积(Extended Cartesian Product)
-
: 目关系, 个元组,: 目关系, 个元组
-
:
- 列: 列元组的集合
- 元组的前 列是关系 的一个元组
- 后 列是关系 的一个元组
- 行: 个元组
- 列: 列元组的集合
7.6 使用的记号
7.6.1 元组的连接
-
为 目关系, 为 目关系。
-
,称为元组的连接。
-
元组的连接是一个 列的元组,前 个分量为 中的一个 元组,后 个分量为 中的一个 元组。
7.6.2 象集
-
给定一个关系 , 和 为属性组。
-
当 时, 在 中的象集(Images Set)为:
- 它表示 中属性组 上值为 的诸元组在 上分量的集合
7.7 选择
选择(Selection)又称为限制(Restriction)
选择运算符的含义:
- 在关系 中选择满足给定条件的所有元组
- :选择条件,是一个逻辑表达式,取值为“真”或“假”
- 基本形式为:, 表示比较运算符,它可以是
- 在基本的选择条件上可以进一步进行逻辑运算(与,或,非)
7.8 投影
投影(Projection):
-
从 中选择出若干属性列组成新的关系
-
: 中的属性列
-
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
7.9 连接
连接(Join)也称为 连接
- 连接运算的含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
-
- :分别为 和 上度数相等且可比的属性组
- :比较运算符
- 连接运算从 和 的广义笛卡尔积 中选取 关系在 属性组上的值与 关系在 属性组上的值满足比较关系θ的元组
7.9.1 等值连接
- 为“=”的连接运算称为等值连接
- 从关系 与 的广义笛卡尔积中选取 、 属性值相等的那些元组,即等值连接为:
7.9.2 自然连接
一种特殊的等值连接
-
两个关系中进行比较的分量必须是相同的属性组
-
在结果中把重复的属性列去掉
-
自然连接的含义: 和 具有相同的属性组
7.9.3 悬浮元组
两个关系 和 在做自然连接时,关系 中某些元组有可能在 中不存在公共属性上值相等的元组,从而造成 中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
7.9.4 外连接
Outer Join
-
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
-
左外连接(LEFT OUTER JOIN或LEFT JOIN):只保留左边关系 中的悬浮元组
-
右外连接(RIGHT OUTER JOIN或RIGHT JOIN):只保留右边关系 中的悬浮元组
7.10 除运算
-
给定关系 和 ,其中 为属性组。
-
中的 与 中的 可以有不同的属性名,但必须出自相同的域集。
-
与 的除运算得到一个新的关系 , 是 中满足下列条件的元组在 属性列上的投影:
-
元组在 上分量值 的象集 包含 在 上投影的集合,记作:
-
: 在 中的象集,
-
Reference
- 数据库系统概论(第五版)
- 数据库系统概念
- 南京大学软件学院2022春季学期数据管理基础课程