2.1 关系数据库的结构
关系数据库由表的集合构成,每个表都有唯一的名字。关系用来指代表,而元组用来时代行。类似地,属性用来指代表中的列。
对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域。如果域中的元素被看做是不可再分的单元,则域是原子的。
2.2 数据库模式
数据库模式是数据库的逻辑设计。数据库实例是给定时刻数据库中数据的一个快照。
关系的概念对应于变量的概念,关系模式对应于类型定义的概念。
2.3 码
起码是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一的标识一个元组。
它们的任意真子集都不能成为超码,这样的最小超码称为候选码。
主码主要用来在一个关系中区分不同元祖的候选码。
码是整个关系的一种性质,而不死单个元祖的性质。
主码应该选择那些从不或极少变化的属性。
一个关系模式可能在它的属性中包括另一个关系模式的主码。这个属性在前一个关系模式上称作另一个关系模式的外码。前一个关系模式也称作外码依赖的参照关系。后一个关系模式叫做外码的被参照关系。
参照完整性约束要求在参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元祖在特定属性上的取值。
2.4 模式图
一个含有主码个外码依赖的数据库模式可以用作模式图来表示。
2.5 关系查询语言
查询语言可以分为过程化的和非过程化的。在过程化语言中,用户指导系统对数据库执行一系列操作以计算出所需结果。在非过程化语言中,用户只需描述所需信息,而不用给出获取信息的具体过程。
2.6 关系运算
最常用的关系运算是从单个关系中选出满足一些特定谓词的特殊元组。
另一个常用的运算是从一个关系中选出特定的属性(列)。
连接运算把分别来自两个关系的元组对合并成单个元组。通常来说,两个关系上的自然连接运算所匹配的元组在两个关系共有的所有属性上取值相同。
笛卡尔积运算从两个关系中合并元组,但不同于连接运算的是,其结果包含来自两个关系元组的对,无论它们的属性值是否匹配。
σ(选择) σsalary>=8500(instructor) 返回输入关系中满足谓词的行
∏(投影) ∏ID , salary(instructor) 对输入关系的所有行输出指定的属性。从输出中去除重复的元组
?(自然连接) instructor ? department 从两个输入关系中输出这样的元组对,它们在具有相同名字的所有属性上取值相同。
x(笛卡儿积) intstructor x department 从两个输入关系中输出所有的元组对(无论它们在共同属性上的取值是否相同)
U(并) ∏name(instructor) U ∏name(student) 输出两个输入关系中元组的并