2.1 关系数据库的结构
关系数据模型(relational data model)建立在表的集合的基础上。数据库系统的用户可以对这些表进行査询,可以插入新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种.
关系(relation)=表
元组(tuple)=行
属性(attribute) =列
域(domain)=每个属性取值的集合
- 关系数据库由表(table)的集合构成,每个表有唯一的名字。
- 在关系模型的术语中,关系(relation)用来指代表;而元组(tuple) 用来指代行;类似地,属性(attribute) 指代的是表中的列。
- 示例如图2-1
- 我们用关系实例(relation instance)这个术语来表示一个关系的特定实例.也就是所包含的一组特定的行。
- 对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域(domain) 。
- 我们要求对所有关系r而言,r的所有属性的域都是原子的。如果域中元素被看作是不可再分的单元,则域是原子的(atomic )。通俗来说,原子性即最小可分。
- 空(null)值是一个特殊的值,表示值未知或不存在。
关系的性质
2.2 数据库模式
关系的模式(schema)是指它的逻辑设计,而关系的实例(instance)是指它在特定时刻的内容。数据库的模式和实例的定义是类似的。关系的模式包括它的属性,还可能包括属性类型和关系上的约束, 比如主码和外码约束。
- 数据库模式:数据库的逻辑设计
- 数据库实例:给定时刻数据库中的一个快照
- 不同关系模式中可存在相同属性,可将不同关系的元组联系起来。
关系模式
2.3 码
能够唯一确定一个元组的最小属性集
- 码不论是主码、候选码或超码,都是整个关系的一种性质,而不是单个元组的性质 。
- 一个元组的属性值必须是能够唯一区分元组的。换句话说, 一个关系中没有两个元组在所有属性上的取值都相同。
超码(super key) = 唯一地标识一个元组的一个或多个属性的集合
- 超码(super key)是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。超码中可能包含无关紧要的属性。
候选码(candidate key) = 最小超码
- 我们通常只对这样的一些超码感兴趣,它们的任意真子集都不能成为超码。这样的最小超码称为候选码(candidate key)。
主码(primary key) = 在一个关系中区分不同元组的候选码
- 我们用主码(primary key)这个术语来代表被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
外码(foreign key) = 关系R1的属性(中包含另一个关系R2的主码)
- 一个关系模式可能在它的属性中包括另一个关系模式的主码。这个属性在r1上称作参照r2的外码(foreign key) 。关系r1也称为外码依赖的参照关系(referencing relation) , r2叫做外码的被参照关系( referenced relation ) 。
- 从section到teaches的约束是参照完整性约束(referential integrity constraint)的一个例子。参照完整性约束要求在参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。
- 引用完整性约束: 在引用关系中任意元组在指定属性上的取值必然等于被引用关系中至少一个元组的指定属性上的取值
2.4 模式图(ER图~详见第六章)
模式图(schema diagram)是数据库中模式的图形化表示,它显示了数据库中的关系,关系的属性、主码和外码。
- 一个含有主码和外码依赖的数据库模式可以用模式图(schema diagram)来表示。
- 如图展示了我们大学组织的模式图。每一个关系用一个矩形来表示,关系的名字显示在矩形上方,矩形内列出各属性。 主码属性用下划线标注。外码依赖用从参照关系的外码属性到被参照关系的主码属性之间的箭头来表示。
- 主码选取要慎重,且习惯上把一个关系模式的主码属性列在其他属性前面,主码属性还加上了下划线。
2.5 关系查询语言
用户用来从数据库中请求获取信息的语言
分类
关系操作
2.6 关系运算(详见6.1)
2.7 总结
- 关系数据模型(relational data model)建立在表的集合的基础上。数据库系统的用户可以对这些表进行査询,可以插入新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种.
- 关系的模式(schema)是指它的逻辑设计,而关系的实例(instance)是指它在特定时刻的内容。数据库的模式和实例的定义是类似的。关系的模式包括它的属性,还可能包括属性类型和关系上的约束, 比如主码和外码约束。
- 关系的超码(superkey)是一个或多个属性的集合,这些属性上的取值保证可以唯一识别岀关系中的元组。候选码是一个最小的超码,也就是说,它是一组构成超码的属性集,但这组属性的任意子集都不是超码。关系的一个候选码被选作主码(primary key) 。
- 在参照关系中的外码(foreign key)是这样的一个属性集合:对于参照关系中的每个元组来说,它在外码属性上的取值肯定等于被参照关系中某个元组在主码上的取值。
- 模式图(schema diagram)是数据库中模式的图形化表示,它显示了数据库中的关系,关系的属性、主码和外码。
- 关系查询语言(relational query language)定义了一组运算集,这些运算可作用于表上,并输岀表作为结果。这些运算可以组合成表达式,表达所需的查询。
- 关系代数(relational algebra)提供了一组运算.它们以一个或多个关系为输入,返回一个关系作为输出。诸如SQL这样的实际查询语言是基于关系代数的•但增加了一些有用的句法特征。