关系模型介绍
关系数据库的结构
关系数据库由表(table)的集合构成,每个表有唯一的名字。
一般说来,表中一行代表了一组值之间的一种联系。
由于一个表就是这种联系的一个集合,表这个概念和数学上的关系这个概念是密切相关的,这也正是关系数据模型名字的由来。
元组(tuple)只是一组值的序列(或列表)。
关系(relation)用来指代表,而元组(tuple)用来指代行。
属性(attribute)指代的是表中的列。
用关系实例(relation instructor)这个术语来表示一个关系的特定实例,也就是所包含的一组特定的行。
对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域(domain)。
如果域中元素被看作是不可再分的单元,则域是原子的(atomic)。
空(null)值是一个特殊的值,表示值未知或不存在。
数据库模式
数据库模式(database schema):数据库的逻辑设计。
数据库实例(database instance):给定时刻数据库中数据的一个快照。
关系的概念对应于程序设计语言中变量的概念 ,而关系模式(relation schema)的概念对应于程序设计语言中了许定义的概念。
关系模式是由属性序列及个属性对应域组成。
关系实例的概念对应于程序设计语言中变量的值的概念。给定变量的值可能随时间发生变化。
码
一个元组的属性值必须是能够唯一区分元组的。换句话说,一个关系中没有两个元组在所有属性上的取值都相同。
超码(superkey)是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。
任意真子集都不能成为超码,最小超码称为候选码(candidate key)。
用主码(primary key)来代表被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
码(不论是主码、候选码或超码)是整个关系的一种性质,而不是单个元组的性质。
主码应该选中那些值从不或极少变化的属性。
习惯上把一个关系模式的主码属性列在其他属性前面;例如,department 中的 dept_name 属性最先列出,因为它是主码。主码属性还加上了下划线。
一个关系模式(如 r 1