数据库导论 关系数据库理论

article/2025/10/9 17:26:50

1. 数据库理论

数据库是 一系列有价值的信息组成的结构化的集合 (A structured collection of meaningful data).

我们称任何有价值的信息为 数据, (Data) 用于构建和维护数据库的软件为 数据库管理系统 (DBMS, Database Management System), 而 数据库管理系统数据 共同组成 数据库系统 (Database System).

我们还称 标准化的, 用于 管理关系数据库操作关系数据库数据 的计算机语言为 SQL, 而不完全遵循关系模型的数据库 (如以 MongoDB, Couchbase, Redis 为例的文件型数据库, 以 Neo4j 为例的图数据库).

CREATE, ALTER, DROP, RENAME 等建表相关的語句為 数据定义语言 DDL, 也就是 Data Definition Language; INSERT, UPDATE, DELETE 等直接对 数据 进行操作的语句为 数据操作语言 (DML, Database Manipulation Language), 以 SELECT 语句为例的, 用于执行信息查询的语句为 数据库查询语言 (DQL, Data Query Language). SQL 是由上述三种语句组合而成的.

1.1 概念和逻辑模型

在本课程中, 我们着重介绍的数据库类型是 关系数据库. 因此, 我们需要先将需求提炼为一种称为 实体-关系模型 的概念模型 (Conceptual Schema), 并将概念模型具体实现为关系数据库.

定义 1.1.1 (概念模式)

概念模式 (Conceptual Schema / Conceptual Schema) 是对用户数据需求的 精确描述, 包括 实体类型 (Entity Type), 实体之间关系的类型 (Relation Type) 和 对关系的约束 (Constraints). 用户数据需求使用不涉及具体实现细节的概念表示, 本质上是对现实的抽象和简化, 便于理解.

数据库设计人员可使用概念模式作为和甲方的交流手段, 并可通过检查所构造的概念模式确保甲方的所有数据需求是否得到满足.

定义 1.1.2 (逻辑模式)

逻辑模式 (Logic Schema / Logic Schema) 是指可被商用 DBMS 直接运行的数据库实现.

将概念模式这种 抽象化的高级数据模型 转换为逻辑模式这种 具体的实现化数据模型 的步骤称为 逻辑设计 (Logical Design), 该步骤得到的结果就是数据库的 逻辑模式.

我们下面简介本课程中介绍的唯一一种概念模型: 实体-关系模型.

1.2 实体-关系 (E-R) 模型

定义 1.2.1 (E-R 模型)

实体-关系模型 (Entitiy-Relationship Model) 是通过从现实世界中抽象出 实体类型, 实体的属性实体间的关系, 从而对现实世界建模的概念模式.

定义 1.2.2 (实体)

实体E-R 模型所表示的最基本对象, 它是现实世界中 独立存在的事物, 可以是物理存在, 也可以是概念存在.

定义 1.2.3 (实体类型)

实体类型 定义为一个 具有相同属性的实体组成的集合. 每个实体都具有一种 类型, 某个实体类型可以具有多个实例.

定义 1.2.4 (码)

(Key) 定义为 在实体-关系模型中可用于唯一确定 (Uniquely Identify) 某个实体的属性, 也就是说每个不同实体的这个属性值都不相同.

对任何实体类型而言, 其中的每个实体实例都必须能通过某个码唯一确定. 对实体类型而言, 码 可以不唯一.

若某个实体类型 本身既没有可作为码的属性, 又没有被赋予的码 (Assigned Key), 则称该类型为 弱类型 (Weak).

需要注意: E-R 模型中 的概念和关系数据库中的 主键/外键 定义有 明显区别, 不可混淆, 但是可以适当地将 备选键 (Candidate Key) 类比.

定义 1.2.5 (属性)

属性 是用来描述 实体 的某些 具体性质 的数据. 对特定的实体而言, 其每个属性都具有特定的值.

E-R 模型通常使用的属性类型有: 简单/复合属性, 单值/多值属性, 存储/派生属性:

定义 1.2.6 (简单/复合属性)

不可被继续划分的属性简单属性原子属性, 复合属性 由组成它的简单属性的值组合而成.

定义 1.2.7 (单值属性/多值属性)

某个特定实体只具有一个值 的属性为 单值属性, 而该实体的 具有多个值的属性多值属性, 如 某个人学位 (这个人可以没有学位, 也可以拿了双学位).

定义 1.2.8 (存储属性/派生属性)

在某些情况下多个属性的值是相关的, 如我们可以从某人的生日计算出此人的年龄.

称如 “年龄” 这样的, 可以由某个其他属性计算得出的属性为 派生属性, 而称 “生日” 这样作为派生依据的属性为 存储属性.

在某些情况下, 某些属性值还可由 相关实体 派生得到.

定义 1.2.9 (空值)

空值 NULL对某个实体而言没有适用的值该实体的这个属性值缺失 时应用, 其语义依具体情况差异而有不同.

定义 1.2.10 (复杂属性)

由复合属性和多值属性嵌套得到的组合称为 复杂属性.

定义 1.2.11 (关系)

关系 描述 不同实体类型 之间的联系, 将两个或更多实体类型使用某种含义 (Meaning) 相连接, 如考虑实体: AxtonCOMP23111, 在 “Axton 通过了 COMP23111” 中, 通过 就是一个 二元关系.

注: E-R 模型中的关系受 基数约束 (Cardinality Constraint), 它由所被建模的关系而决定 (回顾一下一对多, 一对一, 多对一等基数约束类型). 我们将在数据库建模一节中详细描述如何在 E-R 表 (Entity-Relationship Diagram) 中表示实体类型之间的关系所受的基数约束.

1.3 数据库的关系模型

数据库的三种基本模型是 层次模型, 网状模型, 关系模型, 其中以 数据库的关系模型 应用最为广泛.

定义 1.3.1 (数据库的关系模型)

关系模型 将数据库表示为 由关系组成的集合.

若我们将每个关系视为一个 表格 (Table)时, 每个表都表示一个相关数据集的集合 (某个实体集), 每一行表示一个实体, 其内容的实质是抽象而来的 事实, 一般对应现实世界中的某个实体或者某个联系.

20220113113232

如上图所示, 对某个关系而言, 其表名和列名分别用来解释每一行/列的值所代表的含义.

需要注意, 关系模型本身只是对某种关系的建模, 并不包含实际的数据本身.

在正式的关系模型术语中, 行称为 元组 (Tuple), 列标题称为 属性 (Attribute), 表称为 关系, 数据类型称为 (Domain):

20220113114155

下面我们对这些术语进行定义:

定义 1.3.2 (域)

不可再分的原子值 组成的集合.

一般而言, 指定一个域的通常方法是 指定某个数据类型 , 从而确保 构成这个域的数据值都来自这个数据类型.

在本课程中, 我们可以近似地认为域就是数据类型.

定义 1.3.3 (关系模式, Relational Schema)

关系模式 R R R 表示为

R ( A 1 , A 2 , ⋯ , A n ) , R(A_1, A_2, \cdots, A_n), R(A1,A2,,An),

由关系名 R R R 和属性列表 A 1 , A 2 , ⋯ , A n A_1, A_2, \cdots, A_n A1,A2,,An 共同构成. 每个属性 A i A_i Ai 都是一个变量名, 它可取的值在某个域 D : = dom ( A i ) D := \text{dom}(A_i) D:=dom(Ai) 中.

关系的 度/元 (DegreeArity) 是该关系模式中 属性的个数 n n n.

在上面的例子中, 我们描述了一个名为 Student, 度为 4 4 4 的关系, 在 E-R 模型中, Student 被解释为 实体类型. 在关系模型中, 原先的 “实体类型” 被解释为 “关系”, 也就是说实体的本质被视为是将某种和一系列不同 属性 聚合的关系, 而原先实体类型之间的关系被用主键和外键表示.

定义 1.3.4 (键/超键)

称在某个关系表中的, 能够用于唯一标识元组 (也就是实体集中的某个特定实体)的属性集 为 .

定义 1.3.5 (主键)

称在候选键组成的集合中被 选定 用来唯一标识某个元组的键为 主键 (Primary Key).

定义 1.3.6 (超键, Super Key)

能唯一标识元组 的属性集为 超键.

定义 1.3.7 (候选键, Candidate Key)

能唯一标示元组不含多余属性 的属性集 为 候选键.

注: Gareth把 超键候选键 的定义搞反了. 正常的候选键就是如 定义 3.7 这样定义的.

20220113125232

由于Stewart在讨论函数依赖和范式时仍然沿用了正常的候选键和超键的定义, 本人姑且认为Gareth的Slide里出现的Candidate Key定义是错的, 一切以 Wikipedia 和其他经典数据库教材为准.

参考 这里 和 这里

定义 1.3.8 (外键)

称某个元组中, 出现在其他元组里且作为其他元组的主键的属性为 外键. 外键具备连接元组与元组的职能.

20220113125750

定义 1.3.9 (数据库模式)

数据库模式 (Database Schema) 定义了数据库中各表的结构和他们之间的关系, 本质上是对关系模式 (Relational Schema) 的提炼: 它只包含对各个关系所定义的规则, 而不包含实际的数据.

20220113130917

下面讨论关系模型中的数据完整性约束:

关系模式中涉及的操作包括 CRUD: 插入 (Create), 查找 (Retrieval),修改 (Update), 删除 (Delete). 而数据库在执行这些操作前都会检查操作是否满足数据库的 完整性约束 (Integrity Constraint), 从而防止用户在修改数据库时不会破坏 数据库的一致性. 完整性约束包含下面的几种类型:

  1. 主键约束 (Primay Key Constraint): 确保数据字段的 唯一性非空性.

  2. 唯一约束 (Unique Constraint): 确保数据字段的 唯一性. (但是可为空)

  3. 检查约束 (Check Constraint): 限制该数据字段的范围和格式.

  4. 默认约束 (Default Constraint) 赋予该数据字段规定好的默认值.

  5. 外键约束 (Foreign Key Constraint): 需要建立两表间的关系并引用主表的列.

最后简单总结:

20220113130605

1.4 函数依赖 (Functional Dependencies) 和范式 (Normal Form)

我们先讨论 函数依赖, 它是关系模式设计理论中的重要概念:

定义 1.4.1 (函数依赖)

若在某张表中, 在 属性集 X X X 的值确定的情况下, 必能 唯一确定 属性 Y Y Y 的值, 则称 属性 Y Y Y函数依赖于 属性 X X X 的, 记为

X → Y . X \rightarrow Y. XY.

或称属性 X X X 函数决定了 属性 Y Y Y.

20220113171957

定义 1.4.2 (完全函数依赖)

若某张表满足函数依赖关系 X → Y X \rightarrow Y XY, 则若对于属性组 X X X 的任何一个 真子集 X ′ X' X, 满足

X ′ ↛ Y X' \nrightarrow Y XY

则称 Y Y Y 对于 X X X 完全函数依赖, 记作

X → F Y . X \overset{F}{\rightarrow} Y. XFY.

定义 1.4.3 (部分函数依赖)

完全函数依赖 相对地, 若属性 Y Y Y函数依赖于 属性 X X X, 但并不 完全函数依赖于 它, 则称 Y Y Y 部分函数依赖于 X X X, 记为

X → P Y . X \overset{P}{\rightarrow} Y. XPY.

定义 1.4.4 (传递函数依赖)

若:

  1. Y Y Y 函数依赖于 X X X;
  2. Z Z Z 函数依赖于 Y Y Y,

则称 Z Z Z 传递函数依赖于 X X X, 记为

X → T Z . X \overset{T}{\rightarrow} Z. XTZ.

定义 1.4.5 (主属性)

包含在任意一个候选键 (属性集) 中的属性主属性.

定义 1.4.6 (非主属性)

不包含在任意候选键中的属性非主属性.

我们可以通过一系列推理规则, 从已知的一些函数依赖推导出另外一些函数依赖, 而这些规则就被称为 Armstrong 公理:

20220113173309

其推论:

20220113173334

20220113173346

20220113173357

在此基础上, 对任何由一系列函数依赖规则组成的集合 U U U , 对于该集合中的任意一个真子集 F F F 而言, 我们都可以 使用上面提到的规则 计算出 基于全体规则 U U U, 从 F F F 出发可被逻辑推导出的全部函数依赖规则. 在解决一些题目时, 可以用这种方式快速确定超键.如:

20220113174051

我们下面给出不同级别范式的定义与它们的转换原则:

为了确保我们设计得到的关系模式 (Relational Schema) 具备最小的数据冗余且存在最少的 CRUD 异常, 需要通过对给定的关系模式进行一系列的检验, 以 “验证” 我们的关系模式是否符合某些特定的标准, 也就是所谓的 “范式”.

随后, 我们可以基于不同范式的相应标准对我们的关系模式进行验证和评估, 并根据实际需要对我们的关系模式中不满足标准的某些关系进行进一步分解, 从而将其规范化.

定义 1.4.7 范式

范式符合某种级别的关系模式的集合, 表示了某个关系内部各个属性之间的联系的合理化程度, 换做人话来说就是 关系模式的表结构所符合的设计标准的级别.

关系的范式 则是该关系所能满足的最高的范式条件, 表现了这个关系规范化的程度.

在本课程中, 我们关心的范式分为 第一范式 (1NF) , 第二范式 (2NF) 和 第三范式 (3NF).

定义 1.4.8 (第一范式)

第一范式基于 原子化 的概念: 它规定属性域只能包含不可再分的 (原子化的) 值, 且元组中任一属性的值必须是一个来自于该属性域的, 单个的值.

换言之, 1NF 不允许 “关系中嵌套关系” 或 “元组中任何一个属性值是关系”.

比如, 考虑下图所示的关系模式 Department, 假设属性 Dlocations 值不唯一, 则该关系模式不满足 1NF:

20220113175935

在本课程中, 我们介绍了下述的, 将这样的关系模式转换为 1NF 的方式:

从这个关系模式中移除导致违背 1NF 要求的属性 (在我们的例子中是 Dlocations), 并将它和原模式 DEPARTMENT 的主码 Dnumber 放在单独的一个新关系中, 这个新关系的主码依据实际情况决定, 在本例中则为 {Dnumber, Dlocations}. 这一方法的实质是: 将某个非 1NF 的关系分解为多个 1NF 关系.

定义 1.4.9 (第二范式)

第二范式基于 完全函数依赖 的概念:

若关系模式 R R R 中的每个非主属性 A A A完全依赖于 R R R 的主键, 则该关系模式属于 2NF.

换言之, 如果给定的关系模式的主键的任何一个真子集能够唯一确定某个不在主键内的属性, 则这个关系模式就不是 2NF.

如果主键只由单个属性组成, 则无需进行 2NF 检验, 这个关系模式一定是 2NF.

本课程中所介绍的, 将 1NF 转化为 2NF 的流程是: (注意: 不要跨级转化范式!)

考虑某个不属于 2NF 的关系模式, 我们需要:

  1. 找到那些部分依赖主键的属性.

  2. 确定它们分别 完全依赖于主键的哪个组成部分.

  3. 将原来的关系进行拆分, 每个部分依赖主键的属性都要被从原关系中拆分出来, 和它所完全依赖的那一部分主键组合在一起形成一个满足 2NF 的, 更小的关系.

20220113182028

定义 1.4.10 (第三范式)

第三范式基于 传递依赖 的概念:
若某个关系模式 R R R 满足 2NF 范式, 且 R R R 中不存在 非主属性传递依赖于主码 的情况, 则 R R R 属于 3NF.

换言之, 关系模式中所有的非主属性都应该直接依赖于主键. 若存在某两个非主属性 Y , Z Y, Z Y,Z, 对于主键 X X X, 有

  1. X → Y X \rightarrow Y XY
  2. Y → Z Y \rightarrow Z YZ

则这个关系模式就不是 3NF.

本课程中介绍了下述的 3NF 转换方法:

  1. 找到间接依赖主键的属性链条.

  2. 拆分关系, 打散链条.对于间接依赖链条上除了主键以外的每个节点, 都要单独分解为 3NF 模式进行规范化.

20220113182914

综上所述, 我们可以将基于主码的范式和相应的规范化的检验条件和规范化方法总结如下:

20220113183006



REFERENCE

Entity Relationship Diagram (ERD) Tutorial - Part 1

Entity Relationship Diagram (ERD) Tutorial - Part 2

Wikipedia: Conceptual schema


http://chatgpt.dhexx.cn/article/3X6wj4MN.shtml

相关文章

数据库设计——关系数据理论(超详细)

?问题——什么是一个好的数据库逻辑设计? ●关系型数据库逻辑设计: ➠针对一个具体问题应如何构造一个适合于它的数据模式,即应构造几个关系,每个关系由哪些属性组成等 eg: ?这样的设计是一个…

关系数据库理论

关系数据库理论 关系模式的组成 一个关系模式应当是一个五元组R(U,D,DOM,F) 这里R是符号化的元组语义 U为一组属性D为属性组U中的属性所来自的域DOM为属性到域的映射F为属性组U上一组数据依赖(是一组数据依赖的集合) 由于D,DOM与模式涉及关系不大&a…

【数据库】关系数据理论

问题的提出 一、概念回顾 关系:描述实体、属性、实体间的联系。 从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。 关系模式:用来定义关系。 关系数据库:基于关系模型的数据库,利用关系来描…

数据库原理(2)关系型数据库理论

二、关系型数据库理论 2.1 关系型数据库中基本概念 关系(Relation) 一个关系就是一张二维表,每个关系都有一个关系名元组 二维表中的行称为元组属性 二维表中的列称为属性关系模式 关系模式是对关系的描述。一般格式为R(D1,D2,D3..) R关系名…

锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)

做锂电池测试的相关标准 锂离子电池相关标准: 国家标准公开系统:国家标准全文公开 国家标准|GB 31241-2022下载和预览 GB31241-2022《便携式电子产品锂离子电池和电池组 安全技术规范》与2014变化内容 GB31241-2022国家强制标准,2024年1月1…

IEC 60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验

IEC 60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验 IEC60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验-咨询文档类资源-CSDN下载IEC60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验&…

IEC60958/61937协议

目录 第零节 本文内容 第一节 IEC60958/61937协议概述 第二节 IEC60958/61937硬件接口 第三节 IEC60958数据格式 第四节 IEC61937数据格式 第零节 本文内容 IEC60958/61937协议是我们音频开发中常见的一种协议,本文就叙述一下该协议的架构&#…

c 17 语言标准下载,C++ 17 标准手册(含C++ 17 STL Cookbook) 官方pdf原版

这里提供C 17 标准手册:Working Draft, Standard for Programming Language C 和C 17 STL Cookbook下载,包含C17 标准 ISOIEC 14882 2017 官方pdf文档,需要的朋友可下载试试! C17 是继 C14 之后,C 编程语言 ISO/IEC 标…

漫谈工业软件(2)-IEC61499标准

IEC 61499是用于分布式工业过程测量与控制系统(IPMCSs)功能块的标准。该标准的名称表明了两个重要的概念 -分布式工业过程测量与控制系统 (IPMCSs)表明该标准针对的是工业分布式系统-由多台设备通过网络构成的系统。相比之下,IEC61131 PLC 标准针对的是单台设备的…

行业认证标准:IEC 62304-医疗设备软件安全分类标准

什么是IEC 62304? IEC 62304标准在医疗设备行业中使用,它是一种软件安全分类,它为软件生命周期过程提供了一个框架,其中包含为安全设计和维护医疗设备软件所必需的活动和任务。美国FDA接受IEC 62304合规性作为证明医疗设备软件已根据要求的法规/标准进行设计的证据,因为它…

c语言c11标准 下载,【整理】C语言的各种版本:C89,AMD1,C99,C11

【背景】 之前就知道了有个C90和C99。 后来又在: 期间知道有C11。 现在去整理一下,关于C语言的版本方面的更详细的内容。 参考内容: C语言版本历史 C语言主要有三个版本: ANSI CC89C90 ANSI C standardX3.159-1989 1989年批准通过…

iec611313标准下载_IEC 60249-1-1982(R1993)

基本信息 标准号:IEC 60249-1-1982(R1993) 标准名称:Base Materials For Printed Circuits. Part 1: Test Methods 外文名: Base Materials For Printed Circuits. Part 1: Test Methods 标准状态: 废止 被以下替代标准&#xff1…

iec611313标准下载_IEC 61730-1-2016

基本信息 标准号:IEC 61730-1-2016 标准名称:Photovoltaic (Pv) Module Safety Qualification – Part 1: Requirements For Construction 外文名: Photovoltaic (Pv) Module Safety Qualification – Part 1: Requirements For Construction…

iec611313标准下载_IEC 62108-2016

基本信息 标准号:IEC 62108-2016 标准名称:Concentrator Photovoltaic (Cpv) Modules And Assemblies – Design Qualification And Type Approval 外文名: Concentrator Photovoltaic (Cpv) Modules And Assemblies – Design Qualification…

国际著名标准化组织及ISO/IEC/ASTM/IEEE等国际标准免费下载地址

在知识经济时代,标准已被称作世界的通用语言。你看不懂语言没关系,但是一个标准的图形符号,你就能看明白,很快能GET到你需要的信息。在没有标准的世界,不仅人与人之间难以沟通,机器、零部件以及产品之间的联…

光伏产品标准 - IEC 61215:2021版系列简介及标准下载

光伏产品标准 - IEC 61215:2021版全系列简介及标准下载 2021年初,IEC正式发布了光伏产品IEC 61215:2021相关系列标准的更新版本,这也是IEC 61215:2016发布以来的首次更新。近五年来光伏行业技术发展迅猛,新标准的推出也迫在眉睫,历…

Java入门教程(二)程序设计基础

Java入门 二.Java程序设计基础1.标识符和关键字1.1标识符概述1.2标识符1.3关键字概述1.4关键字特点: 2.注释2.1概述2.2注释分类 3.Java常量3.1常量概述3.2常量分类 4.数据类型4.1计算机存储单元4.2数据类型4.3内存占用和取值范围 5.Java变量5.1变量概述5.2变量定义5…

Java程序设计教程——第四、六章习题

1、判断题 下标是用于指出数组中位置的数字或变量。(X)同一个数组中可以存放多个不同类型的数据。(X)[数组是相同数据类型的数据元素的集合]数组的下标可以是int型或float型。(X)数组可声明为任何数据类型…

Java程序设计与实践教程

Java简介: Java的名字来源于印度尼西亚爪哇岛的英文名,这个小岛因盛产咖啡而闻名。JavaBeans(咖啡豆),Sun和Java的标识也正是一杯冒着热气的咖啡。Sun(Stanford University Network)公司被美国…

java入门-java程序

前言 java入门系列,自我学习总结,用来记录一些入门简单的知识点和自己的思考总结,不会很详细的进行记录。 参考文档地址:菜鸟教程 参考文档地址:廖雪峰 Java 教程 参考视频笔记:b站尚硅谷 什么是计算机程…