- Access数据库实用教程(微课版 第3版)
- 卢山主编
- 2414字
- 2024-11-28 17:58:15
1.2 关系数据库概念
关系数据库采用关系模型作为数据的组织方式,这就涉及关系模型中的一些基本概念。而且对关系数据库进行查询时,若要找到需要的数据,就要对关系进行一定的关系运算。
1.2.1 关系模型
关系模型由关系数据结构、关系操作集合和完整性规则3部分组成。
1.数据结构

1-1 数据结构
在关系模型中,数据的逻辑结构是一张二维表,由行和列组成。表1-1、表1-2分别是一个教师表和一个授课表。
表1-1 教师表

表1-2 授课表

关系模型的主要术语如下。
(1)关系
在关系模型中,一个关系就是一张二维表,每个关系有一个关系名。在数据库中,一个关系存储为一个数据表。
(2)属性
表(关系)中的列称为属性,每一列有一个属性名,对应数据表中的一个字段。
(3)域
一个属性的取值范围是该属性的域。
(4)元组
表中的行称为元组,每一行是一个元组,对应数据表中的一个具体记录,元组的各分量分别对应于关系的各个属性。
(5)候选码
如果表中的某个属性或属性组能唯一地标识一个元组,称该属性或属性组为候选码(候选关键字)。
(6)主码
若一个表中有多个候选码,可以指定其中一个为主码(主关键字或关键字)。
(7)外码
如果表中的一个属性(字段)不是本表的主码或候选码,而是另外一个表的主码或候选码,这个属性(字段)称为外码(外部关键字)。
(8)关系模式
一个关系的关系名及其全部属性名的集合简称为关系模式,也就是对关系的描述,一般表示为
关系名(属性名1,属性名2,…,属性名n)
表1-1所示的教师表中的每一行是一条教师记录,是关系中的一个元组。教师编号、姓名、性别、工作时间、政治面目、职称等均是属性名。其中教师编号是唯一识别一条记录的属性,是此表的关键字。对于教师编号这一属性,域是“00000”~“99999”;对于姓名属性,域是2~4个汉字组成的字符串;对于性别属性,域是“男”“女”两个值中取一个。
教师表的关系模式可记为:教师表(教师编号,姓名,性别,工作时间,政治面目,职称)。
表1-2所示的授课表中的教师编号为授课表的外部关键字。
2.关系操作集合
在关系模型中,以功能强大的关系操作集合对存储在该关系中的数据进行操纵。关系模型中常用的关系操作集合包括查询操作和更新操作两大部分。查询操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等;更新操作包括:插入(Insert)、删除(Delete)、修改(Update)等。
3.完整性规则

1-2 完整性规则
关系模型的完整性规则是对关系的某种约束条件。关系模型有3类完整性约束:实体完整性、参照完整性和用户定义完整性。其中,实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性。
(1)实体完整性
每个关系都有一个主关键字,每个元组主关键字的值应是唯一的。主关键字的值不能为空,否则,无从识别元组,这就是实体完整性约束。
例如,为了保证教师表的实体完整性,设置“教师编号”字段为主关键字,“教师编号”字段不能取重复值和空值,它唯一标识教师表中的教师实体。
(2)参照完整性
在关系模型中,实体之间的联系是用关系来描述的,因而存在关系与关系之间的引用。这种引用可通过外部关键字来实现。参照完整性规则是对关系外部关键字的规定,要求外部关键字取值必须是客观存在的,即不允许在一个关系中引用另一个关系里不存在的元组。
例如,在教师表和授课表中,“教师编号”是教师表的主关键字,“教师编号”是授课表的外部关键字。根据参照完整性规则,要求授课表“教师编号”的取值可以是以下两种情况。
① 取空值。表明该课程还未分配给任何教师。
② 若非空值,则它必须是教师表中“教师编号”存在的值,即授课表“教师编号”的值必须和教师表“教师编号”的值保持一致,因为一门课程不能分配给一个不存在的教师。
(3)用户定义完整性
由用户根据实际情况,对数据库中数据所作的规定称为用户定义完整性规则,也称为域完整性规则。通过这些规则限制数据库只接受符合完整性约束条件的数据值,从而保证数据库的数据合理可靠。
例如,教师表中的“性别”数据只能是“男”和“女”。对“工作时间”“政治面目”“职称”数据也该有一定的限制,不能是任意值。
1.2.2 关系运算

1-3 关系运算
对关系数据库进行查询时,若要找到需要的数据,就要对关系进行一定的关系运算。在关系数据库中,关系运算有3种:选择、投影和连接。
1.选择
选择运算是在关系中选择满足某些条件的元组。也就是说,选择运算是在二维表中选择满足指定条件的行。
选择是从行的角度进行的运算,即从水平方向抽取元组。经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中的元组是原关系的一个子集。
例1-1 从表1-1所示的教师表中找出所有女教师的元组。
按照条件:性别="女",对教师表进行选择运算,得到如表1-3所示的结果。
表1-3 选择运算结果

2.投影
投影运算是从关系中指定若干个属性组成新的关系,即在关系中选择某些属性列。
投影是从列的角度进行的运算,相当于对关系进行垂直分解。经过投影可以得到一个新关系,其关系模式所包含的属性个数往往比原关系少,或者属性的排列顺序不同。
例1-2 从表1-1所示的教师表中找出姓名、性别和职称属性的值。
对教师表按照指定的姓名、性别、职称3个属性进行投影运算,得到表1-4所示的结果。
表1-4 投影运算结果

3.连接
连接运算将两个关系通过公共的属性名拼接成一个更宽的关系,生成的新关系中包含满足连接条件的元组。
选择和投影运算的操作对象只是一个表,相当于对一个二维表进行切割。连接运算需要两个表作为操作对象。如果需要连接两个以上的表,应当两两进行连接。
例1-3 设有教师表和授课表两个关系,如表1-1和表1-2所示。查找授课教师的姓名、性别、职称、课程编号。
由于姓名、性别、职称属性在教师表中,而课程编号在授课表中,因此需要将这两个关系连接起来。可以通过两个关系的公共属性名“教师编号”将它们连接起来。连接条件必须指明两个关系的“教师编号”对应相等,然后对连接生成的新关系,按照所需要的4个属性进行投影。此例的连接运算结果如表1-5所示。
表1-5 连接运算结果
