关系数据结构及形式化定义
关系:
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:域上的一种集合运算
- 关系:笛卡尔积的子集
笛卡尔积例子:
基数:上图中D1的基数2,D2的基数2,D3的基数2,笛卡尔积的基数为2*2*2=8
关系的度或目:属性的个数
关系术语:
- 关系:一张表
- 元组:表中的一行
- 属性:表中的一列
- 候选码:可以唯一确定一个元组的属性或属性组
- 主码:候选码中的一个
- 全码:当所有属性在一起才能唯一确定一个元组时,所有属性的组合叫做全码
- 主属性:候选码包含的属性
- 非主属性:候选码不包含的属性
三类关系:
- 基本关系(基本表)
- 查询表
- 视图表
基本关系的性质:
- 列是同质的
- 不同的列可以出自同一个域
- 列可以互换
- 行可以互换
- 任意两个元组的候选码不可以相同
- 分量必须是原子(表中不能套表)
关系模式
关系模式是对关系的描述,是静态的,稳定的
关系是关系模式在某一时刻的状态或内容,是动态的
关系模式和关系统称为关系,通过上下文区别这张表中上面为关系模式,下面为关系,整体也叫关系
关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系操作
常用的关系操作:
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
- 5中基本操作:选择、投影、并、差、笛卡尔积
关系操作的特点:
集合操作方式:操作的对象和结果都是集合,一次一集合的方式
关系的三类完整性约束
- 实体完整性
- 参照完整性
- 用户定义的完整性
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,成关系的两个不变性,由关系系统支持
用户定义的完整性是根据应用领域需要遵循的条件,体现出具体领域中的语义约束
- 实体完整性:主属性非空
- 参照完整性:
- 关系间的引用
- 外码:属性或属性组是其他关系中的主码,但不是自己的主码(可以是自己的主属性)
- 参照完整性规则:外码必须是对应主码中的值或者是空值,如果是自己的主属性,则只能是对应主码的值
- 用户定义的完整性: 针对某一个具体关系数据库的约束条件,反应某一具体应用所涉及的数据必须满足的语义要求
关系代数
- 选择
- 投影
- 连接
- 交
- 差
- 并
- 除
- 笛卡尔积
选择符号:[外链图片转存中…(img-hb46l66F-15894320214124839190.png)
投影符号:π
连接符号:∞
笛卡尔积:为所有的情况组合
投影:为选择部分列
选择:为选择部分行
连接:θ为运算符号, 如果是=则为等值连接,等值连接将相同的列去重,则为自然连接。
左外连接:将左边关系R中舍弃的元组保留,其余的S的属性填null
右外连接:将右边关系S中舍弃的元组保留,其余的R的属性填null
外连接:将舍弃的元组保留,其余的属性填null
除操作:
需要先引入象集的概念:
可以理解为R(X,Y), X->Y的集合
例如
A为X,BC为Y
a1可以对应到(b1,c2)(b2,c3)(b2,c1),则a1的象集为{{b1,c2),(b2,c3),(b2,c1)}
同理
在另一个关系S中,找出BC的投影
即为
此时 R÷S结果为看R中有哪些象集完全包括了S中的投影,即为结构
只有a1完全包含,所以答案为{a1}