2.1.1 关系模型的基本概念
-
关系及关系模型常用概念
1)关系。关系对应一个二维表,表示数据的逻辑结构,将现实世界中实体及其之间的联系归结为简单的二维关系,其中表中的每一行代表一个元组(记录),每一列代表一个域(属性),可用更一般的形式定义。
D1╳D2╳... ╳Dn子集叫做域D1,D2,... ,Dn上的关系,表示为R(D1,D2,... ,Dn),其中R表示关系名,n是关系的目或度。
2)元组、属性。在关系模型中,二维表(关系)中的行称为元组(或称为记录)。二维表的列称为属性。每个属性对应表中的一个字段,属性名也就是字段名,属性值为各行的字段值。
3)域。域(Domain)是一组具有相同数据类型值的集合。用域表示属性的取值范围,属性A的域可用DOM(A)表示,每个属性对应一个域,不同的属可以对应同一个域。
4)关系模型。关系模型(Relation Model)是指以二维表结构表示的实体关系,用键表示实体间联系的数据模型,其中键唯一标识一个元组,并且键可以是单一属性或属性组合。如学号,(学号,姓名)。关系模型由关系数据结构、操作集合和完整性约束三部分组成
5)元数和基数。元数指关系中属性的个数。基数指元组的个数。表2-1的关系的元数和基数分别为6(列)和5(行)。 -
键、主键和外键 键也称为码,在关系中由唯一可标识元组的属性或属性组构成,如学生的学号,公民的身份证号等。
1)候选键-超键。若关系表中的某一属性或属性组合的值可唯一确定一个元组,则称该属性或属性组为候选码。没有多余属性则称为超键.
2)主键。主键(primary key)是在候选键中选定一个键作为元组标识.一般如不加以说明,键指主键(码),如果关系中有多个候选键,可取其中一个作为该关系的主键,主键不允许为空值(非零和空格).
3)外键。外键指若在关系R中包含另一个关系S的主键所对应的属性或属性组K,则称K为R的外键(码)。
注意:外键表示是另一个关系的主键,但不是本关系的主键。关系数据库的表间关系需要借助外键来建立。此外,外键需要满足外键约束条件:外键或者为空值,或者是另外一个关系已存元组的主键。
2.1.2 关系的类型与性质
关系有三种类型:基本关系(又称为基本表或基表)、查询表和视图表。
◆基本表是实际存在的表,是实际存储数据的逻辑表示。
◆查询表是查询结果对应的表。
◆视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
基本关系有以下6条性质
1) 关系中属性(列)必须是原子值,即每个属性都必须是不可分的数据项。
2)关系中列是同质的(Homogeneous),也就是说每一列中的分量是同一类型的数据,也可以说是具有相同的域(同列同类同域)。
3)关系中的列没有先后顺序之分,即列的次序可以任意交换。
4)关系中任意两行元组的次序可以交换,即元组无先后顺序之分。
5)不同的列可以来自同一域,即列的类型相同,不同的列要给予不同的列名(属性名)加以区分,标明是不同的列(任意两列不能相同)。
6)任意元组的候选键不能相同,任意两行元组不能完相同,如果完全相同则说明数据存在重复,会造成存储空间的浪费和查询统计结果的不一致或错误。因此,数据库中应该避免元组的重复现象,保证实体的唯一性和完整性。
2.1.3 关系模式的表示
关系模式(Relation schema)是对关系的描述,可形式化地表示如下:
R(U,D,DOM,F) 其中R为关系名,U为组成该关系的属性(列)名集合,D为属性组U中属性所来自的域,DOM为属性域的映像集合,F为属性间数据的依赖关系集合。
关系模式通常可以简记为R(U)或R(A1,A2,...,An),其中R为关系名,A1,A2,...,An为属性名。
例如,学生关系的关系模式可表示如下: 学生 (学号,姓名,性别,专业,出生日期,家庭地址)
2.1.4 E-R图与关系模型之间的转换
1.转换规则
1)实体转换关系规则。将每一个实体转换成一个关系模式时,实体的属性就是关系的属性,实体的标识符就是关系的键,如案例2-1中学生的学号为关系模式中的键。
2)二元联系类型的转换规则如下。
①若实体间的联系为一对一(1:1),则将两个实体类型转换成两个关系模式的过程中,任选一个属性或属性组在其中加入另一个关系模式的键和联系类型的属性。
②若实体间的联系是一对多(1:n),则在多的一端实体的关系模式中,加上一的一端实体类型的键和联系类型的属性。
③若实体间联系是多对多(m:n),则将联系类型也转换为关系模式,其属性为两端实体类型的键加上联系型的属性,而键为两端实体键的组合.
2.1.4 E-R图与关系模型之间的转换
2)一对多联系的转换方法。
方法一:将联系与多的一端实体所对应的关系模式合并,加一端实体的主键和联系的属性。
方法二:将联系转换为一个独立关系模式,其属性包含联系自身的属性以及相连接的两端实体的主键。
3)多对多联系的转换方法。
对于实体之间是多对多的联系情况,各个实体可以直接转换为关系模式,联系则独立转换一个关系模式,其属性包括联系自身的属性和相连各实体的主键
在关系模型中存在三类完整性约束,即实体完整性、参照完整性和用户定义的完整性。
实体完整性、参照完整性称为称为关系的两个不变性,是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的规则,与具体的应用领域和场景密切相关。
2.2.1 实体完整性(Entity Integrity)
实体完整性规则:
如果属性A(单一属性或属性组)是基本关系R的主属性,则属性A不能取空值。
其中空值表示不存在或不知道的值。由于主键是元组的唯一标识,如果主属性为空则会导致元组的不可区分,这与实体的定义矛盾。
实体完整性保证操作的数据非空、唯一且不重复的要求,即要求每个关系(二维表)有且仅有一个主键,每一个主键的值必须唯一,不能有空值或重复。
学生实体和专业实体之间的关系。学生(学号,身份证号,姓名,性别,专业编号,出生日期,家庭地址),其中学号为主键(PK)。专业(专业编号,专业名称)。
2.2.2 参照完整性(Referencial Integrity)
参照完整性形式化的定义:
如果F是基本关系R的一个或一组属性,但不是R的键。K是基本关系S的主键。若F与K相对应,则称F是关系R的外键(Foreign Key)。并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。
参照完整性规则:
如果属性(或属性组)F是关系模式R的外键,且与基本关系S的主键K对应,则对关系R中每个元组在F上的值必须为:
①或者取空值(没有建完);
②或者为关系S主键集合中的元素;
职员信息表。职员(职员编号,姓名,性别,民族,出生年月,所在部门,籍贯,政治面貌,家庭地址,联系电话,主管)。职员关系中,“职员编号”为主键,主管属性表示该员工主管的编号,它引用了本关系“职员编号”,因为主管也是职员中有一员,只是职位不同。所以职员关系中主管必须是职员编号集合的元素,或者为空值(表示该职员尚未分配主管)。
1)参照关系R和被参照关系(目标关系)不一定是不同关系.见案例2-9。
2)外键名不一定要和补参照关系中相对应的主键同名,如案例2-9中的外键主管与主键职员编号就不同名。
3)外键值是否允许为空,应视具体问题定。案例2-8中学生选课关系中学号和课程代码不允许为空,如果为空则没有实际意义,数据为无用数据。
2.2.3用户定义的完整性(User-defined Integrity)
用户定义的完整性指的是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
例如,关系的某个属性不能为空(如学生关系中,学生姓名通常不允许为空)、某个属性(非主属)必须取唯一值、某个属性的取值限定的一定范围内(学生成绩在百分制中取值范围0~100)。
2.3.1关系运算符和运算种类
1.关系运算符
关系运算符主要包括四类:集合运算符、专门的关系运算符、算术比较运算符和逻辑运算符。
(1)集合运算符:∪(并运算)、─(差运算)、∩(交运算)、╳(笛卡尔集)。
1.并运算
设关系R和关系S具有相同的目n(即两个关系具有n个属性),且相应的属性取自同一个域,则关系R和关系S的并(Union)由属于R或属S的元组组成.其结果关系的属性数仍为n,记为R∪S。形式化定义为:
R∪S = {t|t∈R∨t∈S}
其中,t表示关系R或S中的元组,即关系R或S中的记录行。
image.png
2.3.2传统的关系运算
2.差运算
设关系R和关系S具有相同的目n(即两个关系具有n个属性),且相应的属性取自同一个域,则关系R和关系S的差(Difference)由属于R但不属于S的元组组成。其结果关系的属性数仍为n,记为R-S。形式化定义为
R∪S = {t|t R∧t S}
其中,t表示关系R或S中的元组,即关系R或S中的记录行。
已知关系R和关系S如表2-3和表2-4所示,求关系R和S的差。R-S的结果如表2-6所示。
3.交运算
设关系R和关系S具有相同的目n(即两个关系具有n个属性),且相应的属性取自同一个域,则关系R和关系S的交(Intersection)由属于R且属于S的元组组成。其结果关系的属性数仍为n,记为R∩S。形式化定义为
R∩S = {t|t R∧t S}
其中,t表示关系R或S中的元组,即关系R或S中的记录行。
image.png
4.笛卡尔积
设关系R和关系S的属性数分别为r和s。关系R和S的广义笛卡尔积(Extended Cartesian)R╳S是一个(r+s)目的元组集合(即新关系的属性数为:r+s),每个元组前r个分量(属性值)来自关系R的一个元组,后s个分量是关系S的一个元组。关系R和关系S的笛卡尔积记为R╳S,其形式化定义如下:
R╳S={t|t=<tr,ts>∧tr ∈R∧ts ∈S}
说明:tr、ts中r,s为上标,分别表示r个分量和s个分量.若关系R的元组数k1,关系S的元组数为k2,则关系R和关系S的笛卡尔积的元组数为k1╳k2。
image.png
(2)专门的关系运算符:σ(选择)、 兀(投影),⋈(连接)、÷(除)。
1.选择(Selection)运算
选择运算是对二维表进行水平分割,也可以理解为对记录(元组)水平方向的选取。选择(Selection)运算也称限制(Restriction),是在表中选取符合给定条件的元组, 记为σF(R)。其中,σ为选择运算符,F为表示选择条件,是一个逻辑表达式,F的取值为逻辑值“真”或“假”。
逻辑表达式F的基本形式为:XθY
其中θ表示比较运算,它可以是>、≥、<、≤、=、≠。X和Y表示属性名,或为常量,或为简单函数;属性名可以用它的序号来替代。在基本的选择条件中可以进一步进行逻辑运算,运进行求非(﹁)、与(∧)、或(∨)运算。
其形式化定义如下:σF(R)={t|t R∧F(t)=true}
在商品信息表(表2-10)查询出所有产地为“深圳”的商品信息。选择运算σ产地=’深圳’(商品信息表)或σ8=‘深圳’(商品信息表),其结果表2-11所示。
2.3.3专门的关系运算
2.投影(Projection)运算
投影运算实际是对关系(表)进行垂直分割,即对记录(元组)列方向的筛选。
投影(Projection)运算是在一个关系中选取某些属性或列,并重新排列属性的顺序,再删掉重复元组后构成的新关系,是对二维表进行垂直分割,记为 。
其中, 为投影运算符,A为关系R中的属性列。
投影运算的形式化定义如下:
image.png
3.连接(Join)运算
连接又称θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。形式化定义如下:
其中A和B分别为关系R和关系S上度数相同且可比的属性组。θ为比较运算符。连接运算从R和S的笛卡尔积R╳S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的元组。
连接运算中有两种最常用的连接,一种是等值连接(Equijoin),别一种是自然连接(Natural Join)。
image.png
自然连接与等值连接的主要区别:
1)等值连接中相等的属性可以是相同属性,也可以不同属性,而自然连接中相等的属性必须是相同的属性。
2)自然连接连接结果必须去除重复属性,而等值连接的结不需要去除重复属性。
3)自然连接用于有公共属性的情况。如果两个关系没有公共属性,则它们不能进行自然连接,而等值连接无此要求。自然连接在多表数据调用时常用。
4.除运算(Division)
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:
其中 为x在R中的象集,
除运算的计算一般可按如下过程进行:
1)将被关系的属性分为像集和结果属性两部分,与除关系相同的属性归于像集,不相同的属性归于结果集。
2)在除关系中,在与被除关系相同的属性(像集属性)上投影,得到除目标数据集。
3)将被除关系分组,将结果属性值相同的元组分为一组。
4)观察每个组,若它的像集属值中包括除目标数据集,则对应的结果属性值应该属于除法运算结果集,并去掉与原被除关系相同的分组。
(3)(算术)比较运算符:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、=(等于)、≠(不等于)。
(4)逻辑运算符:﹁(非)、∧(与)、∨(并)。
网友评论