关系数据库
关系数据结构及形式化定义
- 关系模型是建立在集合代数的基础上的
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:是在域上的一种运算
- 关系:关系是笛卡尔积的有限子集,是一张二维表,每行对应元组,每列对应属性
关系的本质就是集合
- 码(键):如果一个属性能够唯一的标志一个元组,则这个属性就是一个码
- 候选码:如果一个码就是最小超码,将它称为候选码
- 主码:当有多个候选码时,选定一个为主码,由用户明确定义,通常用下划线表示
- 外码:表B的主键出现在了表A中,这个主键称为外键
- 参照关系:表A
- 被参照关系(目标关系):表B
参照关系中的外码的值在被参照关系中必须实际存在或者为空
- 全码:关系模式的所有属性都是这个关系模式的候选码 53
- 关系的三种类型:基本关系,查询表和视图表
关系的每个分量必须是不可分割的数据项
- 在关系数据库中,关系是型,关系是值
关系操作
- 关系模型的基本操作:查询,插入,删除和修改
- 关系数据模型操作方式称为一次一集合方式,非关系数据模型的数据操作方式称为一次一记录的方式
- 关系数据语言的分类:关系代数和关系演算
- SQL:介于关系代数和关系演算之间的结构化查询语言,是关系数据库的标准语言
关系的完整性
- 关系模型的三类完整性约束:实体完整性,参照完整性,用户定义完整性
- 实体完整性
- 规则:若属性a是基本关系r的主属性,则a不能取空值
- 参照完整性
- 参照关系和被参照关系
- 规则:学生的专业号只能取空值和非空值(必须是已有的某个专业)
- 用户定义完整性
- 由用户根据实际情况来加约束条件
关系代数
- 关系代数:是一种抽象的查询语言,用对关系的运算来表达查询
- 运算三要素:运算对象,运算符,运算结果
- 关系运算:选择,投影,连接,除运算等
- 选择:根据条件选择出符合的元组
- 投影:根据需求提出所需的属性,删除其他属性,对表来说是按列操作
- 合并:根据需求合并所需的属性
连接操作的条件:两个关系的属性数目要相同,且元组是同一个类型(不能把int和string进行连接)
- 差:在关系A中去除关系B出现的属性
差运算操作的条件和连接操作一样
- 笛卡尔积:将关系A和关系B进行笛卡尔积之后组成一个新关系
笛卡尔积操作的要求:关系A和关系B的属性要不同名,如果同名必须重新命名
- 复合:将上述操作进行复合运算
- 更名:对关系表达式或者关系的属性重命名
------------------------------------------------------附加运算--------------------------------------------------------- - 交:两关系的公共部分
交运算的条件:两关系同元,属性域可兼容
- (theta)连接:从两个关系的笛卡尔积中选取满足条件的元组,条件由用户自己指定
- 自然连接:
- 自然连接操作的条件:两关系必须含有同名同域属性,连接两关系中同名属性值相等的元组,运算结果是两个属性集的并集,但要消去重名属性
- 悬浮元组:在自然连接中被舍弃的元组
- 外连接:将悬浮元组加上,保留左边的叫左外连接,保留右边的叫右外连接
,运算结果是两个属性集的并集,但要消去重名属性- 悬浮元组:在自然连接中被舍弃的元组
- 外连接:将悬浮元组加上,保留左边的叫左外连接,保留右边的叫右外连接
- 除运算:关系A除以关系B得到关系C,则关系C中包含所有在A中不在B中的属性及其值,且B,C的元组组合均在A中