在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系(表)来表示。第一章中已经非形式化地介绍了关系模型及有关的基本概念。关系模型是建立在集合代数的基础上的,这里我们从集合论角度给出关系数据结构的形式化定义。
| ⒈ |
域(Domain) |
| |
定义2.1 域是一组具有相同数据类型的值的集合。
例如:{男,女},{是,否},{机械电子工程系,中文系,外语系…,体育系,艺术系},成绩在0-100之间,产品数量必须为整数…
|
| ⒉ |
笛卡尔积(Cartesian Product) |
| |
定义2.2 给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为: |
| |
D1×D2×…×Dn={(d1,d2,…,dn)|di∈Dj,j=1,2,…,n |
| |
其中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple),或简称为元组(Tuple)。元素中的每一个值di叫作一个分量(Component)。 若Di(i=1,2,…,n)为有限集,其基数(Cardinal number)为mi(i=1,2,…,n),则D1×D2×…×Dn的基数为: n M=∏mi i=1 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。
事实上,每个域都可被认为是具有同一类型的信息或数据,当我们认为多个域间有一定关系时,就可以笛卡尔积的方法,将它们以关系的形式建立一张二维表,以表示这些域的关系。
例:D1={Li,Wang,Zhang},D2={21,22},D3={M,F}
则D1,D2,D3的笛卡尔积为:
|
Li
|
21
|
M
|
|
Li
|
21
|
F
|
|
Li
|
22
|
M
|
|
Li
|
22
|
F
|
|
Wang
|
21
|
M
|
|
Wang
|
21
|
F
|
|
Wang
|
22
|
M
|
|
Wang
|
22
|
F
|
|
Zhang
|
21
|
M
|
|
Zhang
|
21
|
F
|
|
Zhang
|
22
|
M
|
|
Zhang
|
22
|
F
|
|
| ⒊ |
关系(Relation) |
| |
定义2.3 D1×D2×…×Dn的子集叫作在域D1、D2、…、Dn上的关系,用 R(D1, D2, …, Dn) 表示。这里R表示关系的名字,n是关系的目或度(Degree)。
例:D1,D2,D3分别为属性name,age,sex的域,关系R={name,age,sex},
R1
|
Li
|
21
|
F
|
|
Li
|
21
|
M
|
|
Wang
|
21
|
F
|
R2
|
Li
|
21
|
M
|
|
Wang
|
22
|
F
|
|
Zhang
|
21
|
F
|
|
Zhang
|
22
|
M
|
R1和R2是对应于关系框架上的两个关系,3目,两者为同类关系。
关系R不存在候选码。
|
| |
|
| |
关系中的每个元素是关系中的元组,通常用t表示。 关系是笛卡积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 若一个关系有多个候选码,则选定其中一个为主码(Primary key)。主码的诸属性称为主属性(Prime attribute)。 不包含在任何侯选码中的属性称为非码属性(Non-key attribute)。 在最简单的情况下, 侯选码只包含一个属性。 在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码(All-key)。
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
基本关系具有以下六条性质:
| ① |
列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。 |
| ② |
不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。 |
| ③ |
列的顺序无所谓,即列的次序可以任意交换。 |
| ④ |
任意两个元组不能完全相同。 |
| |
但在大多数实际关系数据库产品中,例如ORACLE、FoxPro等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组。 |
| ⑤ |
行的顺序无所谓,即行的次序可以任意交换。 |
| ⑥ |
分量必须取原子值,即每一个分量都必须是不可分的数据项。 |
|
|
|
| ⒊ |
关系(Relation) |
| |
定义2.3 D1×D2×…×Dn的子集叫作在域D1、D2、…、Dn上的关系,用 R(D1, D2, …, Dn) 表示。这里R表示关系的名字,n是关系的目或度(Degree)。
例:D1,D2,D3分别为属性name,age,sex的域,关系R={name,age,sex},
R1
|
Li
|
21
|
F
|
|
Li
|
21
|
M
|
|
Wang
|
21
|
F
|
R2
|
Li
|
21
|
M
|
|
Wang
|
22
|
F
|
|
Zhang
|
21
|
F
|
|
Zhang
|
22
|
M
|
R1和R2是对应于关系框架上的两个关系,3目,两者为同类关系。
关系R不存在候选码。
|
| |
|
| |
关系中的每个元素是关系中的元组,通常用t表示。 关系是笛卡积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 若一个关系有多个候选码,则选定其中一个为主码(Primary key)。主码的诸属性称为主属性(Prime attribute)。 不包含在任何侯选码中的属性称为非码属性(Non-key attribute)。 在最简单的情况下, 侯选码只包含一个属性。 在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码(All-key)。
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
基本关系具有以下六条性质:
| ① |
列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。 |
| ② |
不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。 |
| ③ |
列的顺序无所谓,即列的次序可以任意交换。 |
| ④ |
任意两个元组不能完全相同。 |
| |
但在大多数实际关系数据库产品中,例如ORACLE、FoxPro等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组。 |
| ⑤ |
行的顺序无所谓,即行的次序可以任意交换。 |
| ⑥ |
分量必须取原子值,即每一个分量都必须是不可分的数据项。 |
|
|
|
|
| |
| 定义2.4 关系的描述称为关系模式(Relation Schema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, DOM, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。
例:“学生”的关系, U={学号,姓名,成绩}
设 S1={01001,01002,...,01999},S2={张三,李四,...,王五}, S3={0,1,...,100},则 D = S1 ∪ S2 ∪ S3
DOM(学号)= S1 DOM(姓名)= S2 DOM(成绩)= S3
|
| 关系模式通常可以简记为:R(A1, A2, …, An)。其中R为关系名,A1, A2, …, An为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。 |
|
关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系,读者可以从上下文中加以区别。
|
|
| 在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的现实世界领域中,相应于所有实体及实体之间的联系的关系的集合构成一个关系数据库。 |
| 关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式(它遵循定义2.4),是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。 |
|