数据库系统概论 ---- 第二章 -- 关系数据库(2.1~2.3)

简介: 数据库系统概论 ---- 第二章 -- 关系数据库(2.1~2.3)

2.1 关系数据结构及形式化定义

关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

2.1.1 关系

关系模型的数据结构只包含单一的数据结构 – 关系。

关系模型中数据的逻辑结构就是一张二维表

关系模型就是处理表

接下来从集合论的角度给出关系数据结构的形式化定义:

1. 域

是一组具有相同数据类型的值的集合

域确定了关系(表)中各列的取值范围。

2. 笛卡尔积

笛卡尔积是域上的一种集合运算。

笛卡尔积:

笛卡尔积为两个集合(两张表)中的每条数据进行两两组合的结果

例如:

如下为三个集合进行组合产生的笛卡尔积

笛卡尔积即从每个域中取出一个值进行组合。

笛卡尔积确定了关系各行的取值可能。

一个域允许的不同取值个数称为这个域的基数,即基数为一个域中不同值的个数

Di(i=1,2,3,…)为有限集,基数为mi(i=1,2,3,…),D1 X D2 X D3 X … X Dn的基数M为M = m1 X m2 X m3 X … X mn,即笛卡尔积的基数各个域的基数相乘的乘积。

3. 关系

关系为笛卡尔积的有限子集

笛卡尔积本身在实体空间中是无意义的,关系为在笛卡尔积中取出有意义的子集

上图为从上一个表(笛卡尔积表)中取出各个域信息有对应关系的元组,组成一个子集,该子集为学生与专业和老师的对应关系,该表就有现实的意义。

子表中有几列就为几度或几目

子表中只有一行为单元关系或一元关系。有几行为几元关系。

关系为笛卡尔积的有限子集,关系也为一张二维表,表的每对应一个元组,表的每对应一个域,由于域可以相同(如,导师的名字和学生的名字都可以来自姓名这个域),为了加以区分,每列要取一个名字,称为属性n目关系有n个属性

若关系中的某一属性可以唯一标识一个元组,称该属性为候选码

若一个关系有多个候选码,选定其中一个为主码

候选码的属性为主属性,不包含任何候选码中的属性为非主属性或非码属性

如果关系模式的所有属性都是这个关系模式的候选码,为全码

关系可以有三种类型,基本关系(又称基本表或基表)、查询表、视图表

– 基本表是实际存在的表,是实际存储数据的逻辑表示;

– 查询表是查询结果对应的表;

– 视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

基本关系具有一下六条性质:

  1. 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
  2. 不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。(属性名唯一性)。
  3. 列的顺序无所谓,即列的次序可以任意交换。
  4. 任意的两个元组的候选码不能取相同的值
  5. 行的顺序无所谓,即行的次序可以任意交换。
  6. 分量必须取原子值,即每一个分量都必须取不可分的数据项(不能表中有表)。

关系模型要求关系必须规范化,即要求关系必须满足一定的规范条件。这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分割的数据项。规范化的关系简称为范式。

2.1.2 关系模式

关系模式是型,关系是值。关系模式是对关系的描述。

关系模式是静态的,是稳定的。

关系的描述称为关系模式,关系模式可以表示为R(U,D,DOM,F),其中

  • R为关系名
  • U为组成该关系的属性名集合
  • D为U中属性所来自的域
  • DOM为属性向域的映像集合(各行值对应域中的取值)
  • F为属性间数据的依赖关系集合

关系模式通常简记为R(U)R(A1,A2,...)其中Ai为属性名。

关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作不断的更新数据库中的数据。

关系模式可以理解为表头,关系为表中的值

2.1.3关系数据库

在关系模型中,实体以及实体之间的联系都是用关系来表示的

例如导师实体和研究生实体,导师和研究生之间的一对多的联系可以使用一个关系来表示(构建一张导师与研究生之间联系的二维表)。

在给定的应用领域中,所有关系的集合构成了一个关系数据库(所有表的集合)。

关系数据库的型也称为关系数据库模式,是对关系数据库的描述。

关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

关系数据库的型相当于对所有的数据库进行抽象,抽象出一个数据库的类;关系数据库的值相当于是对数据库这个类的实例化。

2.1.4 关系模型的存储结构

在关系数据库的物理组织中,一个表对应一个操作系统文件,将物理数据组织交给操作系统完成,从操作系统那申请若干个大文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。

2.2 关系操作

2.2.1 基本的关系操作

关系模型中常用的关系操作包括查询和插入、删除、修改两大部分

  • 插入、删除、修改 为 数据更新操作

关系的查询表达能力很强,是关系操作中最主要的部分。

查询操作又可以分为选择、投影、连接、除、并、差、交、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作,其他操作可以用基本操作来定义和导出。

关系操作的特点集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。非关系数据模型的数据操作方式为一次一记录的方式。

2.2.2 关系数据语言的分类

早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算

关系代数用对关系的运算来表达查询要求;关系演算谓词来表达查询要求。

关系演算可以按谓词变元的基本对象时元组变量还是与变量分为元组关系演算和域关系演算。

结构化查询语言(SQL):介于关系代数和关系演算之间

SQL是集查询、数据定义语言、数据操纵语言和数据控制语言与一体的关系数据语言。

SQL语言是一种高度非过程化的语言。

2.3 关系的完整性

关系模型中有三类完整性约束:

  1. 实体完整性
  2. 参照完整性
  3. 用户定义的完整性

其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,称为关系的两个不变性,由关系系统自动支持。

用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束


2.3.1 实体完整性

实体的完整性规则:

属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值,就是“不知道”或“不存在”或“无意义”的值。

主属性,具有唯一性,不能取空值。

对于实体完整性规则的说明:

  1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
  3. 关系模型中以主码作为唯一性标识
  4. 主码中的属性即主属性不能取空值。如果取了空值,就说明存在某个不能标识的实体。

2.3.2 参照完整性

现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这存在着关系与关系间的引用。

主码在一个关系中只有一个,外码可以有多个。

设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks对应,称F是R的外码,并称基本关系R为参照关系(关系R中的F参照了关系S中的Ks),基本关系S为被参照关系或目标关系

关系R和S不一定是不同的关系,可以在同一关系中,引用本关系,例如,学生与该学生对应的班长。

目标关系S的主码Ks和参照关系R的外码F必须定义在同一个或同一组域上。

外码并不一定要与相应的主码同名,在实际应用中为了便于识别,当外码与相应的主码属于不同关系时,往往给它们取相同的名字。

参照完整性规则:

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须

  • 或者取空值
  • 或者等于S中某个元组的主码值

2.3.3 用户定义的完整性

任何关系数据库系统都应该支持实体完整性和参照完整性,这是关系模型所要求的。

用户定义的完整性,是针对某一具体关系数据库的约束条件反映某一具体应用所涉及的数据必须满足的语义要求。例如,学生的成绩的取值应该在0~100之间。

用户定义的完整性是应用领域需要遵循的约束条件。

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
5天前
|
运维 关系型数据库 MySQL
自建数据库迁移到云数据库RDS
本次课程由阿里云数据库团队的凡珂分享,主题为自建数据库迁移至云数据库RDS MySQL版。课程分为四部分:1) 传统数据库部署方案及痛点;2) 选择云数据库RDS MySQL的原因;3) 数据库迁移方案和产品选型;4) 线上活动与权益。通过对比自建数据库的局限性,介绍了RDS MySQL在可靠性、安全性、性价比等方面的优势,并详细讲解了使用DTS(数据传输服务)进行平滑迁移的步骤。此外,还提供了多种优惠活动信息,帮助用户降低成本并享受云数据库带来的便利。
|
4月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
20天前
|
安全 关系型数据库 MySQL
体验自建数据库迁移到云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」正式开启!本方案旨在帮助用户将自建数据库平滑迁移至阿里云RDS MySQL,享受稳定、高效、安全的数据库服务,助力业务快速发展。完成指定任务即可赢取桌面置物架等奖励,限量供应,先到先得。活动时间:2024年12月3日至12月31日16点。
|
4月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
115 2
|
4月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
116 2
|
4月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
96 0
|
5月前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
266 49
|
6月前
|
消息中间件 关系型数据库 Serverless
函数计算产品使用问题之如何通过vpc来连接rds数据库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
关系型数据库 数据管理 数据库
数据管理DMS产品使用合集之如何极速恢复RDS(关系型数据库服务)中的数据表
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
117 3