Access 2010数据库程序设计
上QQ阅读APP看书,第一时间看更新

1.2.1 关系模型

关系模型由一组关系组成。每个关系的数据结构就是一张规范化的二维表。图1.2给出了一张Access中的学生表,这就是一个关系。图1.3是一张选课成绩表,这也是一个关系。这两张表中都有同样的属性“学生编号”,根据学生编号将两个关系关联起来。

图1.2 学生表

图1.3 选课成绩表

1.基本术语

(1)关系(Relation)

一个关系就是一张二维表,每个关系都有一个相对应的关系名。在Access中,一张数据表就是一个关系,表的名字就是关系名。

关系模式:对关系的描述。

关系模式的格式为:

关系名(属性名1,属性名2,…,属性名n)

在Access中,关系模式表现为表的结构:

表名(列名1,列名2,…,列名n)

例如:学生(学生编号,姓名,性别,年龄,入校日期,团员否,住址,照片)

选课成绩(选课ID,学生编号,课程编号,成绩)

(2)元组(Tuple)

在一个二维表中,一行即为一个元组,也称为一条记录。元组在Access表中对应一条具体的记录。例如,学生表和选课成绩表中都包含了多条记录,每一行即为一条记录。

(3)属性(Attribute)

在一个二维表中,一列即为一个属性,也称为字段。给每个属性起一个名称即属性名(或称字段名)。例如,学生表有8列,对应8个属性(学生编号,姓名,性别,年龄,入校日期,团员否,住址,照片)。

(4)域(Domain)

域就是属性的取值范围。例如,“性别”属性取值范围为“男”“女”两个汉字,“团员否”属性取值范围只能从逻辑真或逻辑假两个值中取值(Yes或No)。

(5)分量(Component)

分量就是元组中的一个属性值。例如,“121032101”是一个学生的学生编号。

(6)码(也称关键字或键,Key)

表中的某个属性或属性组,其值可以唯一确定一个元组。例如,学生表中的学生编号可以唯一确定一个学生,也就成为学生关系的码。姓名字段中,有可能两个学生的姓名是一样的,因此,姓名不能作为唯一确定一个元组的关键字。假如学生表中还有一个身份证号属性,因为每个人的身份证号均不相同,它也能唯一确定一个学生,因此,它可作为候选键。在一张表中,可以有多个候选键,选择其中一个可以作为此表中的主关键字(主键)。在Access中,主键就起到了唯一标识一条记录的作用。例如,学生编号即为学生表中的主键,选课ID是选课成绩表中的主键。

(7)外关键字(Foreign Key)

如果表中的一个关键字不是本表的主关键字,而是另外一个表的主关键字或者候选关键字,则这个属性就称为外关键字(外键)。

例如,选课成绩表中,学生编号不能唯一确定表中的一条记录,它不是本表中的主键,但它是学生表中的主键,则学生编号就是选课成绩表中的外键。外键可以把两张有联系的表关联起来。学生表和选课成绩表通过学生编号这个字段建立了联系。

2.关系的性质

(1)关系的每一个属性值必须是不可再分的元素。

关系模型要求关系必须是规范化的,即关系必须满足一定的规范条件。其中最基本的条件就是,关系的每一个分量必须是一个不可分的数据项,也就是说,表中不能再含有表。

(2)每一列中的数值是同类型的数据,来自同一个域。

(3)不同的列应给予不同的属性名。

在同一个关系中不能出现相同的属性名。在Access中,同一张表中不能有相同的字段名。

(4)任意两个元组不能完全相同。

在Access中,同一张表中不能有两条完全相同的记录。

(5)行列的次序可以任意交换。

在一个关系中,行的次序无关紧要,列的次序也无关紧要。任意交换两行或两列的位置不影响数据实际的意义。例如,在学生表中,学生编号为“121032101”的学生记录与学生编号为“121032102”的学生记录次序可以交换,学生编号和姓名两列次序可以交换,均不会影响学生的信息。

表1.1给出了关系术语和一般表格术语的对比。

表1.1 术语对比