第2章_001_关系数据库_ 关系与关系模式、关系数据库与关系数据库模式
一. 关系与关系模式 ===》
1. 关系(Relation): 笛卡尔积D1×D2×……×Dn的任一子集称为定义在域D1, D2, ..., Dn上的n元关系。
--(1). 关系中的每个元素是关系中的元组,通常用t表示,关系中元组的个数是关系的基数。
--(2). 具有相同关系框架的关系称为同类关系。
--(3). 关系具备的性质 ===》
1st. 每一列中的分量必须来自同一个域,必须是同一类型的数据。
2nd. 不同列可来自同一个域,每一列称为属性,不同的属性必须有不同的名字。
3rd. 列的顺序可以任意交换,名字同时换; 关系中的元组的顺序也可任意。
4th. 关系中每一分量必须是不可分割的数据项。
2. 关系是笛卡尔积的子集,子集由元组构成,关系模式是对关系的描述,需要指出元组的结构(有哪些属性构成、属性取自哪一个域、属性与域之间的映射关系) ===》
{d1, d2, ..., dn|di∈Di, i = 1, 2, ..., n}
--(1). 有哪些属性构成: 属性名有哪些(即Di有哪些);
--(2). 属性取自哪一个域: 不严谨的说就是每一个属性名对应的属性值的取值范围(Di的大小分别为多少);
--(3). 属性与域之间的映射关系: 每一行元组中取的这一个域的分量值对应于域中的哪一个数值;
大家可能会有一些疑惑: "映射不是x |—> y 这样的嘛,但是这里属性不是域中的一个值嘛,就相当于x ∈ R,这x和R有映射关系?",事实并不是大家想的那样荒诞,而是可能在这里大家混淆了属性与属性的值这两个概念,我们可以说属性的值是域中的一个值,但是属性和域其实是两码事。
虽然是两码事,但还是有一定的关系的,这个关系就是: 域的大小决定了属性的值的取值范围。
那么什么是"域"呢?在此之前的"第1章_001_数据库系统概述_三个世界和两级抽象"中有提及过: 域是某一属性的取值范围。
那么这里有些人就会误认为域是属性的值的集合,这个概念显然是错的,因为它将属性的值的结合与域的主从关系颠倒了,为什么这样说呢?
大家试想一下,如果说: 域是属性的值的集合,那么我们就可以将这句话解读为: 属性的值的取值范围决定了域的大小。显然,这句话的逻辑是错误的,正确的逻辑应该是域的大小定义了属性的值的取值范围。
清楚了这一点后,什么是属性与域之间的映射关系也就清楚了: 首先我们有一个域,然后从域中选一个值赋值给属性的值,即属性的值 = 域中的某一个值,这个取值的过程即为"属性与域之间的映射",也就是说属性向域的映象是属性的值,而产生这个值的过程就是映射,这种映射也可以理解为"xx的值为yy"。

3. 现实世界不断变化,关系模式的关系也不断变化,但是关系模式限定了关系的变化的可能性,即关系的变化必须满足约束条件
4. 进一步形式化关系模式: R(U, D, DOM, F) ===》
--(1). R --关系名;
--(2). U --属性名集合(属性有哪些域构成);
--(3). D --属性所来自的域;
--(4). DOM--属性向域的映象集合(属性的值的集合);
--(5). F --属性见数据的依赖关系集合,如一个人的身份证即确定了一个人的所有信息;
简记为: R(U),关系的列表、属性的名字这样一种形式。
关系与关系模式的区别表 ===》

二. 关系数据库与关系数据库模式 ===》
1. 关系数据库: 在给定的领域中,所有实体以及实体之间的联系所对应的关系的集合构成了一个关系数据库。它是对关系模式内容——即关系数据库的实例——的描述,属于"值"的概念。
2. 关系数据库模式: 对关系数据库的描述,由若干域定义以及在这些域上定义的若干关系模式构成。是关系数据库结构和框架的描述,属于"型"的概念。


浙公网安备 33010602011771号