《数据库系统原理》数据库
关系数据库系统是支持关系模型的数据库系统。做为一种数据模型,关系模型一样包含三个组成要素,分别是关系数据结构、关系操做集合和关系完整性约束。数据结构
关系模型的数据结构很是简单,只包含单一的数据结构。即关系。在关系模型中,现实世界的实体以及实体间的各类联系,均是使用关系来表示。在用户看来,关系模型是把数据库表示为数据的集合,且关系数据库 是以二维表格的形式组织数据,例如表2.1就是一张记录学生基本信息的二维表格,该表格为学生基本信息登记表。spa
学号对象 |
姓名ci |
性别开发 |
出生日期io |
籍贯table |
民族基础 |
班号原理 |
身份证号 |
201311111 |
张沙 |
男 |
1997/12/11 |
山西 |
汉 |
AC1311 |
XXX1 |
201311112 |
张萌 |
女 |
1996/6/1 |
安徽 |
汉 |
AC1311 |
XXX2 |
201311113 |
张伊尉 |
女 |
1998/1/1 |
安徽 |
汉 |
AC1311 |
XXX3 |
下面。以表2.1所示的二维表格为例,介绍关系数据库的基本术语。
表,也称为关系,是一个二维的数据结构,它由表名、构成表的各个列(如学号,姓名,性别,出生日期等)及若干行数据(各个学生的基本信息)组成。每一个表有一个惟一的表名,表中每一行数据描述一条具体的记录值,如一个学生的基本信息。
一个关系逻辑上对应一张二维表,能够为每一个关系取一个名称进行标识。例如,表2.1所示的学生基本信息登记表,也即学生基本信息登记表关系。
关系能够有三种类型,即基本关系、查询表和视图表。其中,基本关系一般又称为基本表或基表,是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表;视图表是由基本表或其余视图表导出的表,是虚表,部队营实际存储的数据。
表中的列,也称做字段(Field)或属性(Attribute)。表中每一列有一个名称,称为列名、字段名或属性名。每一列表示实体的一个属性,具备相同的数据类型。如表2.2所示,它列出了表2.1学生基本信息登记表中各个字段的字段名及其数据类型的定义。
中文字段名 |
数据类型 |
宽度 |
学号 |
字符型 |
10 |
姓名 |
字符型 |
20 |
性别 |
字符型 |
3 |
出生日期 |
日期型 |
|
籍贯 |
字符型 |
20 |
民族 |
字符型 |
30 |
班号 |
字符型 |
8 |
身份证号 |
字符型 |
18 |
须要说明的是:在一个数据库中,表名必须惟一;在表中,字段名必须惟一,不一样表中能够出现相同的字段名;表和字段的命名应尽可能有意义,尽可能简单。
表中的一列即为一个属性,给每个属性起一个名称极为属性名。与之同义的术语是“列”。表中属性的个数称为关系的元或度。列的值称为属性值;属性值的取值范围称为值域。例如,表2.1中学生基本信息登记表关系的属性有:学号、姓名、性别、出生日期、籍贯、民族、版号、身份证,因此元数是8,即学生基本信息登记表关系是一个8元关系或8度关系。
表中的行(Row),也称做元组(Tuple)或记录(Record)。表中的数据是按行存储的。表中的一行数据即为一个元组或一条记录,其每行由若干字段值组成,每一个字段值描述该对象的一个属性或特征。例如,在表2.1中,第一行数据表示的是学号为2013111十一、姓名为张沙的学生基本信息。
表中的一行即为一个元组。例如,在表2.1中的元组有:
201311111 |
张沙 |
男 |
1997/12/11 |
山西 |
汉 |
AC1311 |
XXX1 |
201311112 |
张萌 |
女 |
1996/6/1 |
安徽 |
汉 |
AC1311 |
XXX2 |
201311113 |
张伊尉 |
女 |
1998/1/1 |
安徽 |
汉 |
AC1311 |
XXX3 |
等。
元组中的一个属性值,称为份量。例如,在学生基本信息登记表中元组
201311112 |
张萌 |
女 |
1996/6/1 |
安徽 |
汉 |
AC1311 |
XXX2 |
的每个属性值:“201311112”、“张萌”、“女”、“1996/6/1”,“安徽”,“汉”,“AC1311”,“XXX2”都是它的份量。
若是在一个关系中,存在这样的属性(或属性组),使得在该关系的任何一个关系状态中的两个元组,在该属性(或属性组)上值的组合都不相同,即这些属性(或属性组)的值都能用来惟一标识该关系的元组,称这些属性(或属性组)为该关系的码或键。(读者译:物理数据“实际数据”值的引用)
若是在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。通常的,每一个关系至少有一个默认的超码或超键,即该关系的全部属性的集合,也是这个关系的最大超码或超键。例如,在表2.1中,
学号 |
姓名 |
性别 |
出生日期 |
籍贯 |
民族 |
班号 |
身份证号 |
都是超码或超键。
若是在关系的一个码或键中,不能从中移去任何一个属性,不然它就不是这个关系的码或键,则称这样的为该关系的候选码或候选键。可见,一个关系的候选码是这个关系的最小超码或超键。例如,表2.1最中学号和身份证号都是候选建,由于若给定学号或身份证号,均可以肯定一个学生的所有基本信息。
有些状况下,须要几个属性(即属性组或属性集合)才能惟一肯定一条记录。例如,对于表2.3所示的学生成绩表的结构定义,仅仅肯定学号或课程号,都不能惟一肯定某个学生具体一门课程的成绩。因此,学生成绩表的主键是由学号和课程号两个属性组成的属性集合,即(学号,课程号)。
中文字段名 |
数据类型 |
宽度 |
学号 |
字符型 |
10 |
课程号 |
字符型 |
6 |
开课学期 |
字符型 |
5 |
成绩 |
数值型 |
|
在一个关系的若干候选码或候选键中指定一个用来惟一标识关系的元组,则称这个被指定的候选码或候选键为该关系的主码或主键。
一个关系模式的全部属性集合是这个关系的主码或主键,责成这样的主码或主键为全码或全键。
关系中包含在任何一个候选码中的属性称为主属性或码属性,不包含在任何一个候选码中的属性称为非主属性或非码属性。例如,在表2.1在学生基本信息登记表中,学号和身份证号是主属性,其余属性是非主属性。
当关系中的某个属性(或属性组)不是这个关系的主码或候选码,而是另外一关系的主码时,称该属性(或属性组)为这个关系的外码或外键。例如,在表2.4中班号是班级表的主键,而该属性又是表2.1学生基本信息登记表的一个属性,则成属性班号为学生基本信息表的外键。
中文字段名 |
数据类型 |
宽度 |
班号 |
字符型 |
8 |
班级名称 |
字符型 |
20 |
所属院系 |
字符型 |
30 |
入学时间 |
日期型 |
|
班级最大人数 |
数值型 |
|
参照关系也称为从关系,被参照关系也称为主关系,它们是指之外键相关联的两个关系。觉得外键为主码的关系称为被参照关系;外键所在的关系称为参照关系。被参照关系与参照关系是经过外键相联系的,这种联系一般是一对多联系。例如,表2.4所定义的班级表是被参照关系,而表2.1所示的学生基本信息登记表是参照关系,它们经过外键“班号”相联系。
域表示属性的取值范围。
表中每一个列都有对应的数据类型,它用于限制(或允许)该列中存储的数据。每一个字段表示同一类信息,具备相同的数据类型。
同数据模型同样,数据库也有“型”(Type)和“值”(Value)之分。在关系数据库中,关系模式是型,关系是值,即关系模式是对关系的描述,例如表2.2就是对对关系的结构定义,关系则是元组的集合,是关系模式在某一时刻的状态或内容。
关系模式是静态的、稳定的,而关系是动态的、随时间变化的。这是由于关系操做在不断的更新着数据库中的数据,例如,(读者译:别例如了,这东西本身想象,哦描述了数据模式,用概念来创造一个概念模型,这个模型在开发中,是不能更改的,除非用户需求更改)。
在实际工做中,人们经常会把关系模式和关系都笼统地称为关系,(读者译:甚至表>__<),固然这不难从上下文中加以区别。
关系数据库是以关系模型做为数据的逻辑模型,并采用关系做为组织方式的一类数据库,其数据库操做创建在关系代数的基础上。在一个给定的应用领域中,全部关系的集合构成一个关系数据库。
此外,尽管关系模型的数据结构表示为二维表,但不是任意的一个二维表均可以做为一个关系。关系数据库对关系是有限定的,具体要求以下。
i)每个属性都是不可分解的。这是关系数据库对关系的最基本的一个限定,要求关系的每个份量必须是一个不可分的数据项。
ii)每个关系仅仅有一种关系模式,即每个关系模式中的属性的数据类型以及属性的个数是相对固定的。
iii)每个关系模式中的属性必须命名,在同一个关系模式中属性名必须是不一样的。
iv)同一个关系中不容许出现候选码或候选键彻底相同的元组。
v)在关系中元组顺序(即行序)是可有可无的,任意交换。
vi)在关系中属性的顺序(即列序)是可有可无的。任意交换。