关系数据结构是什么

关系数据库系统是支持关系模型的数据库系统。作为一种数据模型,关系模型同样包含三个组成要素,分别是关系数据结构、关系操作集合和关系完整性约束。

关系数据结构

关系模型的数据结构非常简单,只包含单一的数据结构,即关系。在关系模型中,现实世界的实体以及实体间的各种联系,均是使用关系来表示。在用户看来,关系模型是把数据库表示为关系的集合,且关系数据库是以二维表格的形式组织数据,例如下面就是一张记录学生基本信息的二维表格,该表称为学生基本信息登记表。 下面,以表所示的二维表格为例,介绍关系数据库的基本术语。

表(Table)

8e表,也称为关系,是一个二维的数据结构,它由表名、构成表的各个列(如学号、姓名等)及若干行数据(各个学生的具体信息)组成。每个表有一个唯一的表名,表中每一行数据描述一条具体的记录值,如一个学生的基本信息。

关系( Relation)

一个关系逻辑上对应一张二维表,可以为每个关系取一个名称进行标识。例如,表所示的学生基本信息登记表,也即学生基本信息登记表关系。 关系可以有三种类型,即基本关系、查询表和视图表。其中,基本关系通常又称为基本表或基表,是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

列( Column)

表中的列,也称作字段(Fed)或属性(At表中每一列有一个名称,称为列名、字段名或属性名。每一列表示实体的一个属性,具有相同的数据类型。 以下是学生基本信息登记表中各个字段的字段名及其数据类型的定义。 需要说明的是:在一个数据库中,表名必须唯一;在表中,字段名必须唯一,不同表中可以出现相同的字段名;表和字段的命名应尽量有意义,并尽量简单。

属性( Attribute)

表中的一列即为一个属性,给每一个属性起一个名称即属性名。与之同义的术语是“列”。表中属性的个数称为关系的元或度。列的值称为属性值;属性值的取值范围称为值域。例如,表2.1中学生基本信息登记表关系的属性有:学号、姓名、性别、出生日期、籍贯、民族、班号、身份证,所以元数是8,即学生基本信息登记表关系是一个8元关系或8度关系。

行(Row)

表中的行(Row),也称作元组( Tuple)或记录( Record)。表中的数据是按行存储的表中的一行数据即为一个元组或一条记录,其每行由若千字段值组成,每个字段值描述该对象的一个属性或特征。例如,在学生基本信息表中,第一行数据表示的是学号为2013110101、姓名为张晓勇的学基本信息。

元组( Tuple)

表中的一行即为一个元组。例如,学生基本信息表中的元组有: (2013110101,张晓勇,男,1997-12-11山西,汉,AC1301,XXX1),(2013110103,王一敏,女,199603-25,河北,汉,AC1301,XXX2),(201311020,江山,女,19960917,内蒙,锡伯,AC1302,XX3)等。

分量( Component)

元组中的一个属性值,称为分量。例如,在学生基本信息登记表中元组(201311003,王一敏,女,199603-25,河北,汉,AC1301,XX2)的每一个属性值:“20131103,王一敏,女,“199603-25°,“河北’,汉,AC1301,(XXX2都是它的分量。

码或键(Key)

如果在一个关系中,存在这样的属性(或属性组),使得在该关系的任何一个关系状态中的两个元组,在该属性(或属性组)上值的组合都不相同,即这些属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码或键。

超码或超键( Super Key)

如果在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。一般地,每个关系至少有一个默认的超码或超键,即该关系的所有属性的集合,也是这个关系的最大超码或超键。例如,在学生基本信息登记表中,(学号,姓名)、(学号,姓名,性别,出生日期)、(学号,姓名,性别,出生日期,籍贯,民族,班号,身份证号)都是该表的超码或超键。

候选码或候选键( Candidate Key)

如果在关系的一个码或键中,不能从中移去任何一个属性,否则它就不是这个关系的码或键,则称这样的码或键为该关系的候选码或候选键。可见,一个关系的候选码或候选键是这个关系的最小超码或超键。例如,学生基本信息登记表中学号和身份证号都是候选键,因为若给定学号或身份证号,都可以确定一个学生的全部基本信息。 有些情况下,需要几个属性(即属性组或属性集合)才能唯一确定一条记录。例如,对于学生成绩表的结构定义中所示的学生成绩表的结构定义,仅仅确定学号或课程号,都不能唯一确定某个学生具体一门课程的成绩。所以,学生成绩表的主键是由学号和课程号两个属性组成的属性集合,即(学号,课程号)。

主码或主键( Primary Key)

在一个关系的若干个候选码或候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码或候选键为该关系的主码或主键。例如,可以从学生基本信息登记表的所有候选键中,指定学号作为该表的主键。

全码或全键(All-Key)

一个关系模式的所有属性集合是这个关系的主码或主键,则称这样的主码或主键为或全键。

主属性(Primary Attribute)和非主属性(Nonprimary Attribute)

关系中包含在任何一个候选码中的属性称为主属性或码属性,不包含在任何一个候选码中的属性称为非主属性或非码属性。例如,在学生基本信息登记表中,学号和身份证号是主属性,其他属性是非主属性。

外码或外键( Foreign Key)

当关系中的某个属性(或属性组)不是这个关系的主码或候选码,而是另一关系的主码时,称该属性(或属性组)为这个关系的外码或外键。例如,在班级表的结构定义中班号是班级表的主键,而该属性又是学生基本信息登记表的一个属性,则属性班号称为学生基本信息登记表的外键。 数值型

参照关系( Referencing Relation)和被参照关系( Referenced Relation)

参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系。以外码作为主码的关系称为被参照关系;外码所在的关系称为参照关系。被参照关系与参照关系是通过外码相联系的,这种联系通常是一对多的联系。例如,班级表的结构定义中,班级表是被参照关系,而学生基本信息登记表是参照关系,它们通过外码“班号”相联系。

域( Domain)

域表示属性的取值范围。例如,表21中“性别”字段的取值范围是“男”或“女”,出生日期”字段的值应该是合法的日期。

数据类型( Data Type)

表中每个列都有相应的数据类型,它用于限制(或容许)该列中存储的数据。每个字段表示同一类信息,具有相同的数据类型。例如,表21中字段“姓名”的数据类型是字符类型,其对应表示学生的姓名信息。

关系模式( Relation Schema)

同数据模型一样,数据库也有“型”(ye)和“值”(vaue)之分。在关系数据库中,关系模式是型,关系是值,即关系模式是对关系的描述,例如学生基本信息登记表关系的结构定义,关系则是元组的集合,是关系模式在某一时刻的状态或内容。 关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。这是因为关系操作在不断地更新着数据库中的数据。例如,班级表对应的关系模式在不同的学年通常是不变的,而班级表(关系)由于新学年学生的入学,其内容会发生变化。 在实际工作中,人们常常会把关系模式和关系都笼统地称为关系,当然这不难从上下文中加以区别。

关系数据库( Relation Database)

关系数据库是以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。在一个给定的应用领域中,所有关系的集合构成一个关系数据库。 需要注意的是:上述例子中,关系模式的名称和字段的名称均使用的是中文,但在实际的数据库应用系统中,一般不采用中文作为表名、字段名等。这是因为在编写数据库应用程序时,表名、字段名会作为变量名,而使用中文标识不方便,而且更重要的是有些数据库管理系统不能很好地支持中文的表名和字段名。因此,对于学生基本信息登记表的表名,可以命名为英文表达方式 tb_student;对于学生成绩表,可以命名为 tb_score;对于班级表,可以命名为tb_class。相应的学生基本信息登记表的结构定义、学生成绩表的结构定义和班级表的结构定义的字段名可分别替换成tb_student、tb_score、tb_class。 此外,尽管关系模型的数据结构表示为二维表,但不是任意的一个二维表都可以作为个关系。关系数据库对关系是有限定的,具体要求如下

  • 每一个属性都是不可分解的。这是关系数据库对关系的最基本的一个限定,要求关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中有表。
  • 每一个关系仅仅有一种关系模式,即每一个关系模式中的属性的数据类型以及属性的个数是相对固定的。
  • 每一个关系模式中的属性必须命名,在同一个关系模式中,属性名必须是不同的。
  • 同一个关系中不允许出现候选码或候选键值完全相同的元组。
  • 在关系中元组的顺序(即行序)是无关紧要的,可以任意交换。
  • 在关系中属性的顺序(即列序)是无关紧要的,可以任意交换。