关系模型
1. 关系模型的数据结构及形式化定义
关系(Relation)
- 现实世界的实体以及实体间的各种联系均用关系来表示。
- 从用户角度,关系模型中数据的逻辑结构是一张二维表。
n个域笛卡儿积的子集叫做域在D1,D2,…,Dn上的关系
表示为:R(D1,D2,…,Dn)
- 其中R表示关系名,n表示关系的目或度(Degree)
单元关系与二元关系
当n=1时,称该关系为单元关系(Unary relation)或一元关系
当n=2时,称该关系为二元关系(Binary relation)
关系与属性
- 关系中,不同列可以对应相同的域
- 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
- n目关系必有n个属性**
域(Domain)
域是一组有相同数据类型的值的集合。
如,整数集合、实数集合、{‘男’,‘女’}
笛卡儿积(Cartesian Product)
笛卡儿积是域上的一种集合运算。
笛卡尔积(Cartesian Product)是集合论中的一个概念,用于描述两个或多个集合之间的所有可能的组合。它是一种基本的组合操作,通常用符号 “×” 表示。
如果有两个集合 A 和 B,它们的笛卡尔积(A × B)将包含所有可能的有序对,其中第一个元素来自集合 A,第二个元素来自集合 B。换句话说,笛卡尔积是通过将 A 中的每个元素与 B 中的每个元素组合而成的集合。
数学上,可以用如下方式表示两个集合 A 和 B 的笛卡尔积:
A × B = {(a, b) | a ∈ A, b ∈ B}
这表示了一个包含所有可能的有序对 (a, b) 的集合,其中 a 属于集合 A,而 b 属于集合 B。
举例来说,如果有两个集合 A = {1, 2} 和 B = {x, y},它们的笛卡尔积 A × B 将包含以下四个有序对:
A × B = {(1, x), (1, y), (2, x), (2, y)}
- 这些域中可以相同
- 所有域的所有取值的一个集合
- 不能重复
元组(Tuple)
关系中的每个元素是关系中的元组,通常用t表示
- 笛卡儿积中每一个元素(d1,d2,…,dn)叫做一个n元组(n-tuple)或简称为元组
- (张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组
分量(Component)
- 笛卡儿积元素(d1,d2,…,dn)中的每一个值*di*叫做一个分量
- 张清玫,计算机专业,李勇,刘晨都是分量
基数(Cardinal number)
在数据库领域,基数是指数据库表中某一列中不同值的数量。它用来衡量表中数据的分布和唯一性。例如,如果一个数据库表中的某一列包含不同的用户名,基数表示这个列中有多少个不同的用户名。
笛卡儿积的表示方法
- 笛卡儿积可表示为一个二维表
- 表中的每行对于一个元组,表中的每列对应一个域。
码(Key)
候选码(Candidate key)
- 候选码是指能够唯一标识表中每一行数据的一组属性或列的集合。候选码必须满足两个条件:唯一性和最小性。
- 唯一性:候选码的值在表中必须是唯一的,没有重复值。
- 最小性:候选码是最小的,意味着如果从候选码中删除任何一个属性,它就不再具有唯一性。
- 表可以有多个候选码,但通常选择一个候选码作为主码(Primary Key)。
全码(All-key)
- 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码。
主属性
-
候选码的诸属性称为主属性
-
不包含在任何候选码中的属性称为非主属性(Non-Prime attribute)或非码属性
三类关系
-
基本关系(基本表或基表)
- 实际存在的表,是实际存储数据的逻辑表示
-
查询表
- 查询结果对应的表
-
视图表
- 由基本或其他视图表导出的表,是虚表,不对应实际存储的数据
基本关系的性质
- 列是同质的(Homogeneous)
- 不同的列可出自同一个域
- 列的顺序无所谓,列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值
什么是列的同质性
我所说的列的同质性其实就是某一列中所有元素或数据具有相同的数据类型或性质。换句话说,该列中的所有项都属于同一类别或类型,具有相似的特性。
什么是分量必须取原子值
分量必须取原子值指的是在关系模型中,每个属性(列)的值必须是原子的,不能再分解成更小的数据单元。
下表违反了此基本关系:
关系模式
什么是关系模式
-
关系模式是型。
-
关系是值。
-
关系模式是对关系的描述
不懂概念的的可以看看上一篇。
关系模式的定义
关系模式可以形式化地表示为:
R(U,D,DOM,F)
- R表示关系名
- U表示组成该关系的属性名集合
- D表示属性组U中属性所来自的域
- DOM表示属性向域的映像集合
- F表示属性间的数据依赖关系的集合
关系模式通常可以简记为
R(U)或R(A1,A2,…,An)
- R与上面一样是关系名
- **A1,A2,…,An代表属性名
关系模式与关系
- 关系模式
- 对关系的描述
- 静态的、稳定的
- 关系
- 关系模式在某一时刻的状态或内容
- 动态的、随时间不断变化的
关系数据库
什么是关系数据库
关系数据库指的是在一个给定的应用领域中,所有关系的集合构成的一个关系数据库。
什么是关系数据库的型
关系数据库的型指的是关系数据库模式。是对关系数据库的描述。
什么是关系数据库模式
关系数据库模式(Relational Database Schema)是指关系数据库中的数据结构和组织方式的抽象描述。它定义了数据库中的表格、表格之间的关系、每个表格的结构和约束条件等元数据信息,用于规定数据库中数据的存储和组织方式。
什么是关系数据库的值
关系模式在某一时刻对应的关系的集合,简称为关系数据库
2. 关系操作
常用的关系操作
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
- 查询的表达能力是其中最重要的部分
- 选择、投影、并、差、笛卡尔积是5种基本操作
关系的完整性
关系的三类完整性约束
实体完整性、参照完整性、用户定义完整性
其中,实体完整性和参照完整性称为关系的两个不变性,应该由关系系统自动支持。
什么是实体完整性
实体完整性指的是,主键中列中的值是唯一的,不允许重复的值且不允许为空值。实体完整性确保了每一行数据都可以被唯一地标识,防止了重复或空值的情况。
什么是参照完整性
参照完整性用于确保表格之间的关联关系的一致性。
通常,这通过外键(Foreign Key)实现,外键列引用了另一个表格的主键列。
如果违反了参照完整性,即外键值引用了不存在的主键值,DBMS通常会阻止或限制此操作。
关系间的引用
什么是关系的引用?
由于在关系模型中实体及实体之间的联系都是用关系来描述的,因此可能存在着关系间的引用
在这个例子中,学号作为学生表的主码,专业号作为专业表的主码。专业号同时也在学生表出现,作为学生表的外码,如果这个专业号的值确实在专业表中出现,则存在关系与关系间的引用。
在这个例子中,学号是主码,班长是外码,它引用了本关系中的学号。其中班长必须是确实存在的学生学号。
参照关系与被参照关系
就拿上一个学生表来举例,在这个学生表中学号作为学生表的主码。假如有一个专业表,专业号最为其主码。专业号作为学生表的外码。那么学生表与专业表存在参照关系,学生表中的专业号充当被参照关系(目标关系)。
什么是用户定义完整性
用户定义的完整性其实就是对用户查询的约束,这些规则和约束不是数据库系统定义的而是根据应用需求创建的,用于保证数据的一致性和合法性。