《大学计算机—计算思维导论》(战德臣 哈尔滨工业大学)
《10.3 关系模型-什么是关系》
一、引言
本章介绍数据库的基本数据模型:关系模型。
二、什么是数据模型?
我们说研究数据库,研究数据的集合,数据集合如何管理,很重要的就是研究它的数据模型。那么什么是数据模型呢?
数据模型
数据模型:刻画信息世界或数据世界的一组严格定义的概念的集合
数据模型包括了这样几个方面:数据结构、数据操作和完整性约束。
数据模型的三个要素:
- 数据结构:有哪些格式的数据
- 数据操作:对这些格式的数据都可能有哪些操作
- 完整性约束:为保证操作后和操作过程中产生的数据仍符合规定所必须遵守的约束条件
数据结构包含两个方面:其一是数据的逻辑结构,其二是数据的存储结构。数据的逻辑结构是为了描述数据之间的语义关系;而数据的存储结构是为了便于计算机进行处理。这两个方面共同构成了数据结构这一概念,分别从逻辑层面和物理层面描述了数据的组织和管理方式。
数据模型,通常包含了若干个数据结构。
现实世界,信息世界,数据世界
在数据库的设计与实现过程中,数据通常需要经历从现实世界到信息世界再到数据世界的两次抽象转换。
首先,构建的是描述信息世界的模型,即概念数据模型,简称为概念模型。这一模型抽象并组织了现实世界的实体、属性以及它们之间的关系。
随后,构建的是描述数据世界(也就是计算机世界)的模型,即逻辑数据模型,简称为逻辑模型。为了使计算机能够有效地处理信息,我们需要将概念模型进一步转化为适合计算机存储和处理的形式。这个模型是在概念模型的基础上实现的,它描述了数据在计算机中的组织、存储以及内部逻辑结构,但不涉及具体的物理存储细节。
在计算机世界中,有三种经典的数据模型:层次模型、网状模型和关系模型。其中,关系模型最为广泛使用且重要,因此我们重点介绍关系模型,而对其他两种模型则不做详细介绍。
AI详解:现实世界,信息世界,数据世界
现实世界,信息世界,数据世界。请介绍一下
现实世界、信息世界和数据世界,是 信息技术领域
中,描述从客观存在的物理实体到计算机内部处理的数据表示这一过程的三个不同层面或维度。
-
现实世界:
- 现实世界是指我们日常生活中所处的物质环境,包括人、物、事件及其相互关系等所有实际存在并可以感知的事物。它是客观存在的,并不依赖于人的意识或计算机系统而独立存在。
-
信息世界:
- 信息世界是对现实世界的抽象和模拟,是人们通过观察、理解、分析现实世界后在头脑中构建的知识体系和信息模型。它包含了对现实世界中的实体、属性以及实体间关系的概念化表达。例如,在设计数据库时,会基于业务需求和领域知识建立一个信息模型(如E-R模型),用实体、实体集、属性和实体标识符来描述事物及其联系。
-
数据世界:
-
数据世界则是信息世界在计算机中的具体实现和表现形式,是信息经过数字化转换和结构化组织之后存储在计算机系统中的状态。数据世界中的数据模型(如关系模型)是对信息世界模型的一种逻辑化和数学化的表示方法,它可以被计算机程序理解和操作。
-
在数据库设计与管理过程中,先将现实世界的实体转化为信息世界的概念模型,再将这个概念模型进一步转化为适合于特定数据库管理系统(DBMS)的逻辑模型,比如关系模型,最后这些逻辑模型在物理设备上以特定的存储结构和存取方式实现,形成物理模型,即数据世界的物理层。
-
总结来说,现实世界是我们生活的基础,信息世界是人类思维对现实世界的认知映射,而数据世界则是这种映射在数字技术中的实际体现,它们共同构成了从真实实体到可计算数据的一系列转换和抽象层次。
三、关系的术语
数据库的关系模型起源于规范化 “表(Table)” 的处理。
Table: 以按行按列形式组织及展现的数据
Table中描述了一批相互有关联关系的数据 ==> 关系
一行,在学术上通常称为一个元组
。在应用当中,在工业界,通常称为一条记录
。
一列,在学术上通常称为属性
或数据项
。在工业界当中又称为字段
,尤其是在一些数据库管理系统当中,把它称为字段(field)
。
四、用数学定义关系
怎样把一张表格定义清楚呢?
- 指出有多少列;
- 值域(Domain):说清楚每一列数据可能的取值;
- 指出所有可能的元组:元组是值的一个组合;值域中值的所有可能的组合----笛卡尔积;
- 指出关系中的元组:关系中元组是有意义的组合----笛卡尔积的子集
域(Domain)
首先定义“列”的取值范围“域(Domain)”
- 一组值的集合,这组值具有相同的数据类型
- 如整数的集合、字符串的集合、全体学生的集合
- 再如, 由8位数字组成的数字串的集合,由0到100组成的整数集合
- 集合中元素的个数称为域的基数(Cardinality)
笛卡尔积
再定义“元组”及所有可能组合成的元组:笛卡尔积
笛卡尔积(Cartesian Product)
- 一组域D1 , D2 ,…, Dn 的笛卡尔积为:
D1×D2×…×Dn = { (d1 , d2 , … , dn ) | di∈Di , i=1,…,n } - 笛卡尔积的每个元素(d1 , d2 , … , dn )称作一个n-元组(n-tuple)
关系(Relation)
- 一组域D1 , D2 ,…, Dn 的笛卡尔积的子集:
- 笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)
- 由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为
属性名
。不同列名的列值可以来自相同域。例如:家庭(丈夫:男人,妻子:女人, 子女:儿童)或家庭(丈夫,妻子, 子女)
列名:属性名
列值:来自域
五、关系的性质
- 列是同质的(Homogeneous),即每一列中的分量是同一类型数据,来自同一个域
- 不同的列可出自同一个域,每一列称为属性,要给予不同的属性名
- 列的顺序可以任意交换,行的顺序也可以任意交换
- 任意两个元组不能完全相同
- 每一分量必须是不可分的数据项
六、候选码(Candidate Key)/候选键
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
候选键要满足两个特性:
- 唯一性
- 最小性
七、外码(Foreign Key)/外键
- 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
- 外码是两个关系(数据表)的连接纽带。
八、小结
数据库设计与本文理论的对应
在设计一张表的结构时,主要设计表名和字段。字段最主要设计字段名和字段属性(数据类型+长度+小数位数)。其中,字段名就是列名(属性名),字段属性就是“域”。
候选码(Candidate Key)和主键(Primary Key)
- 在实际开发中,一般都说“主键”,很少听到候选码(Candidate Key)/候选键,为什么会这样呢?
- 候选码这个名字,“候选”是什么意思?
在数据库理论中,候选码(Candidate Key)和主键(Primary Key)是描述表结构设计时用来唯一标识记录的不同概念。虽然候选码和主键都具有唯一性和非空性,但它们的使用方式和角色有所不同:
-
候选码(Candidate Key)是指能够唯一标识表中每一行记录的一组属性(列),并且该组属性是最小的,即不能再删减任何属性而不丢失其唯一标识能力。一个表可以有多个候选码。
-
主键(Primary Key)则是从候选码中选定的一个作为表的主要标识符,它在逻辑上扮演了最重要的角色。主键用于强制数据完整性,并且常常作为其他表外键(Foreign Key)引用的基础,以建立表之间的关联关系。
在实际开发中之所以更多地提及“主键”,原因可能包括:
-
简化交流与理解:主键是一个更为直观的概念,尤其是在团队沟通和技术文档中,开发者们更容易快速理解并聚焦于那一组特定的、被选择来唯一标识记录的属性。
-
实际应用的需要:数据库管理系统通常要求每个表定义一个主键,以确保实体的唯一性和查询性能优化。而候选码尽管理论上存在多个,但在实际使用时往往只需要指定一个作为主键即可满足需求。
-
系统设计规范:在许多数据库设计规范中,主键的选择对于整个数据库架构的设计至关重要,因为它直接影响到数据组织、查询效率以及表间关系的建立。
所以,“候选码”这个名字,体现了它是成为主键的备选资格,但在日常工作中,因为主键的实践意义更加明确和重要,因此成为了更常用的说法。