1. 关系(Relation)
- 核心定义:
关系是数据库中的核心概念,用来表示实体(对象)或实体之间的联系。关系可以看作是一个二维的表格,每一行表示一个具体的数据记录,每一列表示某种属性。 - 数学定义:
在数学中,关系是笛卡尔积的子集。假设有两个集合 A 和 B ,它们的笛卡尔积是 A × B = {(a, b) ∣ a ∈ A, b ∈ B } 。关系是从这些对中选出的一个子集。 例如:- 如果 A = {1, 2} 且 B = {x, y} ,笛卡尔积是:
A × B = {(1, x), (1, y), (2, x), (2, y)} - 如果我们定义一个关系 R 为 R = {(1, x), (2, y)} ,这个 R 就是笛卡尔积的子集,也可以看作一个二维表格。
- 如果 A = {1, 2} 且 B = {x, y} ,笛卡尔积是:
- 表格化关系:
关系通常用表格表示,例如一个“学生”关系:
学号 姓名 年龄
S001 张三 20
S002 李四 21
S003 王五 19
- 每一行是一个元组。
- 每一列是一个属性。
2. 元组(Tuple)
- 核心定义:
元组是关系中的一行,表示一个具体的实例或记录。每个元组都是属性值的组合,是二维表中的一条完整数据。 - 特点:
- 无序性:元组之间的排列顺序没有影响,即
(1, 2, 3)
和(2, 1, 3)
是同一个关系。 - 唯一性:一个关系中的每个元组必须是唯一的(即没有重复的行)。
- 示例:
对于“学生”关系:
学号 姓名 年龄
S001 张三 20
S002 李四 21
- 元组1:
(S001, 张三, 20)
- 元组2:
(S002, 李四, 21)
3. 属性(Attribute)
- 核心定义:
属性是关系中的列,每列的名称即为属性名,表示数据的某种特性或性质。每个属性都有一个名称,并且定义了它可以存储的数据类型。 - 特点:
- 属性名在一个关系中必须是唯一的。
- 每个属性对应一个特定的域(后面会详细介绍域)。
- 示例:
在“学生”关系中:
学号 姓名 年龄
S001 张三 20
- 属性包括:
学号
、姓名
和年龄
。学号
是一个标识性属性,它的值是唯一的。姓名
是文本属性,表示学生名字。年龄
是整数属性,表示学生年龄。
4. 码(Key)
- 核心定义:
码又称码键或键,是一个或多个属性的集合,用来唯一标识关系中的元组(行)。码是关系模型中非常重要的概念,用于确保数据的完整性和唯一性。 - 分类:
- 候选码(Candidate Key):
- 一个关系中可能存在多个可以唯一标识元组的属性集合,称为候选码。
- 示例:对于“学生”关系,
学号
是候选码。
- 主码(Primary Key):
- 从候选码中选择一个最合适的码作为主码,主码用来唯一标识每个元组。
- 示例:如果“学号”是候选码,则我们可以将它选为主码。
- 外码(Foreign Key):
- 外码是一个关系中用于引用另一个关系主码的属性,用来表示两个关系之间的联系。
- 示例:如果“选课”关系中有
学生学号
和课程编号
属性,其中学生学号
是外码,引用了“学生”关系中的主码学号
。
5. 域(Domain)
- 核心定义:
域是属性的取值范围,表示属性所能接受的所有合法值。 - 特点:
- 一个属性的值必须来自其域。
- 域的定义需要满足实际需求和逻辑一致性。
- 示例:
对于“学生”关系:
学号 姓名 年龄
S001 张三 20
学号
的域:字母和数字的组合,例如S001, S002
。姓名
的域:所有合法的中文名字。年龄
的域:整数,范围在1-100
。
6. 分量(Component)
- 核心定义:
分量是元组中的一个具体值,表示属性的取值。它是元组和属性的交点。 - 特点:
- 每个元组由多个分量组成。
- 每个分量的值来源于属性的域。
- 示例:
在元组(S001, 张三, 20)
中:- 分量1:
S001
是属性学号
的值。 - 分量2:
张三
是属性姓名
的值。 - 分量3:
20
是属性年龄
的值。
- 分量1:
7. 关系模式(Relation Schema)
- 核心定义:
关系模式是对关系结构的定义,它描述了关系的名称、属性和属性的域,但不包含具体数据。 - 表示方法:
通常表示为:
R(A1: D1, A2: D2, ..., An: Dn)
- 其中:
- R 是关系的名称。
- A1, A2, …, An 是属性名。
- D1, D2, …, Dn 是属性的域。
- 补充
关系模式也可以表示为:
关系名(属性1,属性2,… ,属性n)
- 示例:
如果有一个“学生”关系,包含属性学号
(学号域)、姓名
(姓名域)、年龄
(年龄域),它的模式可以表示为:
学生(学号: 学号域, 姓名: 姓名域, 年龄: 年龄域)
或
学生(学号, 姓名, 年龄)
- 关系模式与关系的区别:
- 关系模式是关系的结构定义,不包含具体数据。
- 关系是根据关系模式存储的具体数据实例。
综合实例
以一个“学生”关系为例:
学号 姓名 年龄
S001 张三 20
S002 李四 21
S003 王五 19
- 关系(Relation):
整张表格是一个关系 - 元组(Tuple):
表中每一行数据,例如(S001, 张三, 20)
- 属性(Attribute):
列名学号
、姓名
和年龄
。 - 码(Key):
主码是学号
,因为它唯一标识每行记录 - 域(Domain):
学号
的域是所有合法的学号(如S001, S002
);年龄
的域是1-100
的整数 - 分量(Component):
S001
是第一行的学号
属性的分量 - 关系模式(Relation Schema):
学生(学号: 学号域, 姓名: 姓名域, 年龄: 年龄域) 或 学生(学号, 姓名, 年龄)
评论留言
欢迎您,!您可以在这里畅言您的的观点与见解!
0 条评论