关系数据库
由表的集合构成,每个表有唯一的名字。
一般说来,表中一行代表了一组值之间的一种联系。由于一个表就是这种联系的一个集合,表这个概念和数学上的关系这个概念是密切相关的,这也正是关系数据模型
名称的由来。
在关系模型中,关系(relation)
用来指代表,元组(tuple)
用来指代表中的一行,属性(attribute)
用来指代表中的一列
对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域(domain)
。
规定对所有的关系r而言,r的所有属性都是原子的。如果域中元素被看作是不可再分的单元(假如我们规定薪水,电话号码这样的属性不可再分,那么它们就是原子的),则域是原子(atomic)的
。
重要的问题不在于域本身是什么,而在于我们怎样在数据库中使用域中元素。假设phone_number 属性存放单个电话号码。即便如此,如果我们把电话号码的属性值拆分成国家编号、地区编号以及本地号码,那么我们还是把它作为非原子值来对待。如果
我们把每个电话号码作为不可再分的单元,那么phone_number 属性才会有原子的域。
空(null)值
是一个特殊的值,表示值未知或不存在。(比如在教师信息表中,有些教师没有电话号码或者没有提供电话号码)
关系的概念对应于程序设计语言中变量
的概念,关系实例的概念对应于程序设计语言中变量的值
的概念,而关系横式(relation schema)的概念对应于程序设计语言中类型定义
的概念。一般说来,关系模式
由属性序列及各属性对应域组成。
超码(superkey)
是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。
对于一些超码,它们的任意真子集都不能成为超码。这样的最小超码称为候选码(candidate key)
被数据库设计者选中的,主要用来在一个关系中区分不同元组的候选码叫主码(primary key)
一个关系模式(如r1)可能在它的属性中包括另一个关系模式(如r2)的主码。这个属性在r1上称作参照r2的外码( foreign key)
。关系r1也称为外码依赖的参照关系( referencing relation), r2 叫做外码的被
参照关系( referenced relation)。
参照完整性约束
要求在参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。