2.1关系数据结构及形式化定义
按照数据模型的三个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2.1.1关系
1.域(domain)
定义:域是一组具有相同数据类型的值的集合
2.笛卡尔积——域上的一种集合运算
3.关系
4.候选码(candidate key)
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则该属性组为候选码
也就是说:一个属性或多个属性的组合可以唯一确定一条记录,就是候选码,(候选码不能为空)具有有效性和最小性。
5.其他码
若一个关系中有多个候选码,则选定其中一个为主码。
候选码的各个属性称作主属性。不包含在候选码中的属性称作非主属性或非码属性。
最简单的情况下,候选码只包含一个属性,最极端的情况下,关系模式中的所有属性都是这个关系模式的候选码,也叫作全码(all-key)。
6.关系的三种类型:基本关系(基本表或基表)、查询表、视图表。其中基本表是实际存在的表,表示存储数据的逻辑;查询表是对查询结果的表示;视图表示由基本表或其他视图表导出来的表,是虚表,不对应实际存储的数据。
7.基本关系具有一下六条性质:
(1)列是同质的,每一列的分量是同一类型的数据,来自于同一个域。
(2)不同的列可以出自同一个域,称每一个列为一个属性,不同的属性要给予不同的属性名。
(3)列的顺序可以任意交换,无关紧要。
(4)任意两个元组的候选码不能取相同的值(无冗余性)。
(5)行的顺序可以任意交换,无关紧要。
(6)分量必须取元子值,每一个分量都是不可分的数据项。(最基本的一条规范)如下:
2.1表中有表是不允许存在的
2.1.2关系模式
2.1.3关系数据库
关系数据库的型:对关系数据库的描述
关系数据库的值:关系数据库
2.2关系操作
2.2.1基本的关系操作
关系操作能力通常用代数方式或逻辑方式来表示,分别成为关系代数和关系演算。
关系代数用对关系的运算来表达查询的要求,关系演算则用谓词来表达查询的要求。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。
结构化查询语言(SQL)是集查询、数据定义语言、数据操作语言和数据控制语言于一体的关系数据语言。
2.3关系的完整性
关系模型中的三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中前两个完整性是关系模型中必须满足的完整性约束条件,被称作是关系的两个不变性,由关系系统自动支持。
2.3.1实体完整性
实体完整性原则:若属性(指一个或是一组属性)A是基本关系R的主属性,则A不能取控制(null)。所谓空值就是“不知道”,“不存在”,或是“无意义”的值。
如果存在主属性取空值,就说明存在某个不可标识的实体,即存在不可取分的实体,这与实体本身可区分的规则相矛盾。
2.3.2参照完整性
外码:设F是基本关系R的一个或一组属性,但不是关系R的码,KS是基本关系S的主码。如果F与KS相对应,则称F是基本关系R中的外码(foreign key),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。显然F与KS必须定义在同一个域上。
参照完整性规则:若F是R关系中的外码,它与S关系中的KS相对应。那么F的取值存在两种可能:
(1)空值(2)等于S中某个元组的中对应的值
但是如果F同时也是主属性,那么就不能取空值。
2.3.3用户定义的完整性
不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。
2.4关系代数
关系代数是一种抽象的查询语言,它用于关系的运算来表达查询。
运算对象、运算符、运算结果是运算的三大要素。其中运算对象和运算结果都是关系,而运算符分为两类:传统的集合运算符和专门的关系运算符,其中还有比较运算符和逻辑运算符用于辅助专门的关系运算符。
2.4.1传统的集合运算
是二目运算,包括并、差、交、笛卡尔积四种。
传统集合运算的举例:
2.4.2专门的关系运算
包括选择、投影、连接、除运算等。
投影之后把出现的重复行也消除了。