数据库原理与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 关系

关系数据模型中,无论是实体还是实体间的联系均由单一的数据结构—关系来表示。在实际的关系型数据库中的关系也被称为表。一个关系型数据库就是由若干个表组成的。

关系的每一行对应一条记录,也称为元组;每一列对应一个属性。关系简记为

R(A1, A2,…, An)

其中,R是关系名,A1, A2,…, An是属性名。

同一关系中的属性不能同名,且所有属性是不可再分的简单属性。每一个属性中各分量的数据类型相同,属性的取值范围称为域。属性之间的排列顺序可以是任意的。元组的顺序可以是任意的,但不允许两个元组完全相同。

能够唯一标识一个元组的属性或属性集称为关系的键(Key),又称码、关键字。键分为超键、候选键、主键、外键。

1. 超键

超键(Super Key)是一个或多个属性的集合,这些属性可以在一个关系中唯一地标识一个元组。如果K是一个超键,那么所有包含K的集合也是超键。

2. 候选键

超键的范围如果太广,其中某些属性对于标识元组是无用处的。候选键(Candidate Key)是指能够唯一标识一个元组的最小属性集,即候选键是没有多余属性的超键。候选键中的属性称为主属性(Prime Attribute),不包含在任何候选键中的属性称为非主属性(Non_prime Attribute)。

3. 主键

如果一个关系有多个候选键,则选定其中一个作为主键(Primary Key)。例如,对于关系student(SID, name, gender, college)而言,如果所有学生不重名,SID、name都是该关系的候选键,也都是主属性,可以任选一个作为主键。包含SID或name的属性集都是超键。如果有学生重名,则name无法唯一标识一个元组,即根据name的值无法唯一确定一个学生,该关系的候选键和主键都是SID。

4. 外键

设属性F是关系R的一个属性,但不是关系R的主键,并对应着关系S的主键K,如图2-1所示。F在R中的取值要参照关系S中K的取值,称关系R为参照关系(Referencing Relation)或从表。关系S为被参照关系(Referenced Relation)或主表,并称F是关系R的外键(Foreign Key)。关系R和S不一定是不同的关系,但是K与F的域相同。

图2-1 外键参照主表的主键

例如,关系salebill(number, CID, BID, payamount, saledate)的主键是number,CID不是关系salebill的键,而是关系card的主键。因此关系salebill是从表,card是主表,CID是关系salebill的外键。我们只能使用有效的校园卡消费,salebill中CID的取值只能是关系card中存在的CID值。