关系模型的基本概念
关系模型创始人:IBM的E.F.Codd,1970年。
目前所有厂商推出的DBMS都支持RDB,非关系系统的产品也都加上了关系接口,数据库领域当前的研究工作也都是以关系方法为基础。
2.1.1关系模型的结构、操作和完整性约束的基本概念
(1)关系模型的数据结构
孤独一人关系模型是建立在严格的数学概念的基础上的。关系模型中数据的逻辑模型是一张二维表,它由行和列组成。在关系模型中,实体以及实体间的联系都是用关系来表示。
必须满足一定的规范条件,其中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是不允许表中还有表。
(2)关系模型的存储结构
在关系模型中,实体及实体间的联系都用“表”来表示。在数据库的物理组织中,“表”以“文件”形式存储。
(3)关系模型的操作
关系模型的操作主要包括查找、插入、删除和修改数据。关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。
(4)关系模型的完整性约束
关系模型的操作必须满足关系的完整性约束条件。关系的完整性约束条件包括3大类:实体完整性、参照完整性和用户定义完整性。
2.1.2关系模型的基本术语
(1)关系与二维表
表2-1是一张学生登记表,这是一张二维表。
表2-1 学生记表
学号 | 姓名 | 性别 | 年龄 |
S0201 | 李兰 | 女 | 17 |
S0202 | 张娜 | 女 | 18 |
S0203 | 张伟 | 男 | 17 |
宁夏中卫沙坡头 | | | |
为简单起见,对表2-1数学化,用字母表示表格的内容,则表2-1可用图2-1的表格表示。
二维表的术语 关系模型的术语 数据库的术语
R ─── 列 ←---------→ 属性 ←-----------→ 字段
A | B | C | D |
a1 | b1 | c1 | d1 |
a2 | b2 | c2 | d2 |
a3 | b3 | c3 | d3苹果广告 |
| | | |
←─表头 ←-----→ 关系模式 ←-------→ 记录类型
←─行1 ←-----→ 元组1 ←-------→ 记录1
←─行2 文件 元组2 关系(实例) 记录2 文件
←─行3 ←-----→ 元组3 ←-------→ 记录3
列值 ←-------→ 属性值 ←----------→ 字段值
图2-1 二维表、关系模型及数据库的对应术语
在关系模型中,关系(Relation)就是一个二维表。
表中的列称为属性(Attribute)。属性具有型和值两层含义:属性的型指属性名和属性取值域;属性值指属性具体的取值。同一关系中的属性名(即列名)不能相同。属性用于表示实体的特征,一个关系中往往有多个属性。例如表2-1中有4个属性,分别为学号、姓名、性别和年龄。
表中的行称为元组(Tuple),组成元组的元素称为分量(Component)。数据库中的一个实体或实体间的一个联系均使用一个元组表示。例如表2-1中有3个元组,它们分别描述3个学生的学号、姓名、性别和年龄。(S0201,李兰,女,17)是一个元组,它由4个分量构成。
元组的集合即为关系(relation),或称为实例(instance)。关系中属性个数称为元数(arity),元组个数称为基数(cardinality)。图2-1中,关系R的元数为4,基数为3。
实际上我们常常直接称呼关系为表,元组为行,属性为列。
关系中每1个属性都有一个取值范围,称为属性的值域。域(Domain)是一组具有相同数据类型的值的集合。例如,整数、{0,1}、{男,女}、{计算机专业,物理专业,外语专业}等,都可以作为域。属性A的值域用DOM(A)表示。每个属性对应一个值域,不同的属性可对应于同一值域。
(2)关系的定义
可以用集合的观点定义关系:关系是一个元数为K(K>1)的元组的集合,是其各属性的值域的笛卡尔积的一个子集。集合中的元素是元组,每个元组的元数相同。
(3)键(码)
键(码)由1个或几个属性构成,在实际使用中,有下列几种键:
①超键(Super Key):在关系中能惟一标识元组的属性集称为关系模式的超键。
夸女神的唯美句子②候选键(Candidate Key):不含有多余属性的超键称为候选键。也就是在候选键中,若要
再删除属性,就不是键了。一般而言,如不加说明,则键是指候选键。
③主键(Primary Key):用户选作标识元组的一个候选键称为主键,也称为关键字。如果关系中只有一个候选键,这个惟一的候选键就是主键。
表2-1中,(学号,姓名)是关系模式的超键,但不是候选键,而(学号)是候选键。在实际使用中,如果选择(学号)作为插人、删除或查找的操作变量,那么就称(学号)是主键。
香菇青菜
④全码(All-Key):若关系的候选键中只包含一个属性,则称它为单属性码;若候选键由多个属性构成,则称它为多属性码。若关系中只有一个候选键,且这个候选键中包括全部属性,则称该候选键为全码。全码是候选键的特例,它说明该关系中不存在属性之间相互决定情况。
例如,设有以下关系:安慰用英语怎么说
学生(学号,姓名,性别,出生日期);
课程(课程号,课程名,学分);
学生选课(学号,课程号)。
其中,学生关系的主键为学号,是单属性码;课程关系中课程号是主键;学生选课关系中的学号和课程号相互独立,属性间无依赖关系,该关系的主键是全码。
⑤主属性(Prime Attribute)与非主属性(Non-Key Attribute):关系中,候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。
⑥外键(Foreign Key)和参照关系(Referencing Relation):设FR是关系R的一个或一组属性,但不是关系R的候选键,如果FR与关系S的主键KS相对应,则称FR是关系R的外键,关系R为参照关系,关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。
需要指出的是,外键并不一定要与相应的主键同名。但在实际应用中,为便于识别,当外键与相应的主键属于不同关系时,往往给它们取相同的名字。
例如,在学生库中有学生、课程和成绩3个表,其关系模式如下(其中主键用下划线标识):
学生(学号,姓名,性别,专业号,出生日期)
课程(课程号,课程名,学分)
选修成绩(学号,课程号,成绩)。
在学生表中,学号是主键;在课程表中,课程号是主键;在选修成绩表中,学号和课程号一起为主键。单独的学号或课程号仅为选修成绩表的主属性,而不是选修成绩表的主键。学号和课程号为选修成绩表中的外键,选修成绩表是参照关系,学生表、课程表为被参照关系,它们之间要满足参照完整性规则。
(4)数据库中基本关系的性质
关系数据库中的基本表具有以下6个性质。
①同一属性的数据具有同质性:即同一列中的分量是同一类型的数据,它们来自同一个域。
②同一关系的属性名具有不能重复性:指同一关系中不同属性的数据可出自同一个域,但不同的属性要给予不同的属性名。
眼部美容整形手术
③关系中的列位置具有顺序无关性,许多关系数据库产品提供的增加新属性的操作只提供插至最后一列的功能。
④关系具有元组无冗余性:指关系中的任意两个元组不能完全相同。
⑤关系中的元组位置具有顺序无关性。
⑥关系中的分量具有原子性:指关系中每一个分量都必须是不可分的数据项。
2.1.2 关系模式、关系子模式和存储模式
关系模型基本上遵循数据库的三级体系结构。在关系模型中,概念模式是关系模式的集合,外模式是关系子模式的集合,内模式是存储模式的集合。
(1)关系模式的概念和表示
关系的描述称为关系模式(Relation Schema)。关系模式的定义包括模式名、属性名、值域名以及模式的主键。由于不涉及到物理存储方面的描述,因此关系模式仅仅是对数据特性的描述。
关系模式可以形式化地表示为:
R(U,D,Dom,F)
其中:R为关系名,是关系的形式化表示;U为组成该关系的属性集合;D为属性组U中属性所来自的域的域名;Dom为属性向域的映像的集合;F为属性间数据的依赖关系集合。
关系模式通常可以简单记为:
R(U,F) 或 R(U) 或 R(A1,A2,…,An)
其中:R为关系名;F为数据依赖集合;A1,A2,…,An为属性名。例如:在图2-1中,表格上方的R是关系模式名,该关系模式可描述为:
R(A,B,C,D)
一般而言,关系模式是静态的,关系数据库一旦定义后其结构不能随意改动;而关系的数据是动态的,关系数据库中的数据根据需要而不断增加、修改或删除。
(2)关系子模式
子模式是用户所用到的那部分数据的描述。除了指出用户的数据外,还应指出模式与子模式之间的对应性。
(3)存储模式
关系存储时的基本组织方式是文件,元组是文件中的记录。由于关系模式有键,因此存储一个关系可以用散列方法或索引方法实现。如果关系中元组数目较少(100个以内),那么也可以用堆文件方式实现。此外,还可以对任意的属性集建立辅助索引。
2.1.3 关系模型的3类完整性规则
关系模型的完整性规则是对关系的某种约束条件。关系模型中有3类完整性约束:实体完整性(Entity Integrity)、参照完整性和用户定义的完整性。
(1)实体完整性约束
关系的实体完整性规则为:若属性A是基本关系R的主属性,则属性A的值不能为空值。
注意:该规则规定基本表的所有主属性都不能取空值(空值不是空格值,它是无输入的属性
值,用“Null”表示,说明“不知道”或“无意义”),而不仅是主键不能取空值。
(2)参照完整性约束
关系的参照完整性规则为:若属性(或属性组)FR是基本关系R的外键,它与基本关系S的主键KS相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在FR上的值必须等于S中某个KS值或者取空值。这条规则要求“不引用不存在的实体”。在使用时,有3点应注意:
①外键FR和相应的主键KS可以不同名,但数据类型和值域要相同;
②关系R和关系S也可以是同一个关系模型,表示属性之间的联系;
③外键值是否允许为空,应视具体问题而定。