域
域是一组具有相同数据类型的值的集合,代表了属性的取指范围。
属性和码
属性:关系中的每一列为一个属性。
主属性:候选键中的任一属性。
非主属性:不包含在任何候选键的属性。
码(键):表中的某一个属性或一组属性。
主键:候选键中选择的一个键。
候选键:某一个或一组属性的值能够唯一地标识一个元组,真子集不能唯一地标识一个元组(缺一不可)。
关系
关系是元组的集合,对应一张二维表,表示为。
类型
- 基本关系(基本表):实际存在的表,是实际存储数据的逻辑表示。
- 查询结果:查询执行产生的结果对应的临时表。
- 视图:由基本表或其他视图导出的虚表,不存储实际数据。
性质
- 列是同质的:每一列的分类是同一类型的数据,来自同一个域。
- 不同列可以出自同一个域,但列名必须不同。
- 列的顺序无关:列的次序可以任意交换,不会改变关系。
- 行的顺序无关:行的次序可以任意交换,不会改变关系。
- 任意两个元组的码不能相同:不能有相同的行。
- 分量必须取原子值:每个分量都是不可分的数据项(不允许表中套表)。
关系模型
关系的描述称为关系模式,表示为,简记为。
关系完整性
实体完整性约束
若某个属性是关系的主属性,则该属性不能取空值。若主键为复合主键,所有主属性都不能取空值。
参照完整性约束
若属性或一组属性是一个基本关系的外键,与另一个基本关系的主键相对应,则该基本关系的该外键的值只能:
- 取空值。
- 对应于另一个基本关系中的主键值。
用户定义的完整性
针对某一具体关系数据库的约束条件。
关系代数
传统的集合运算
要求两个关系具有相同的目(属性数相同),对应的属性的域也相同。
- 交:。保留R和S的全部元组并进行去重。
- 交:。属于R但不属于S的元组。
- 并:。同时属于R和S的元组。
- 广义笛卡尔积:。属性数 = R度数+S度数;元组数(基数)= R行数 ×S行数。
专门的关系运算
- 选择:。从R中选择符合条件的元组。
- 投影:。从R中选择符合条件的属性。投影后出现重复行需要去重。
- 连接:。在笛卡尔积中选取满足条件的元组。
- 等值连接:。在笛卡尔积中选取属性相等的元组。
- 自然连接:。特殊的等值连接。比较的属性是关系中的同名列,并在结果中去除重复列。
- 外连接:不存在公共属性相等的元组被称为悬浮元组,未匹配的属性填NULL。
- 左外连接:保留左表的悬浮元组。
- 右外连接:保留右表的悬浮元组。
- 全外连接:左右表的悬浮元组。
- 除:设关系和,其中Y是公共属性集。对于R的X的每一种取值x,Y的取值的集合即为x在R上的象集。
- 找出R中每个x的象集。
- 找出S在Y上的投影。
- 如果x的象集包含了S在Y上的投影,则x属于结果集。