关系 关系模式 关系型数据库

  • 域: 一组具有相同数据类型的值的集合
  • 笛卡尔积(实质是一个集合): 给定一组域(允许重复), 则它们的笛卡尔积为, 即所有域所有取值的一个集合, 可以表示为一张二维表, 每行对应一个元素, 每列对应一个域.
  • 元组: 笛卡尔积中的一个元素叫做一个n元组
  • 分量: 笛卡尔积中元素的每一个值叫做一个分量
  • 笛卡尔积的基数: 每个域的基数之积
 
  • 关系: 笛卡尔积的子集(只取符合实际关系的元组), 表示为. R称为关系名, n称为关系的目或度.
  • 关系也是一个二维表, 每行对应一个元素(即关系的一个元素), 每列对应一个域
  • 属性: 关系中不同列可以对应相同的域, 为了区分必须给每列取一个名字, 称为属性.
    • 候选码: 关系的一个能唯一标识元组(而其子集不能)的属性组
    • 极端情况: 候选码只包含一个属性/包含所有属性(全码)
    • 主码: 若一个关系有多个候选码, 则选定其中一个为主码
    • 主属性: 候选码的所有属性. 其他叫非主属性/非码属性
  • 关系类别:
    • 基本关系(基本表, 实际存在)
    • 查询表(查询结果)
    • 视图表(由基本表导出, 不对应实际存储的数据)
  • 基本关系性质
    • 列是同质的, 每一列分量来自同一个域
    • 不同的列可以出自同一个域
    • 行/列的次序无所谓
    • 任意两个元组的候选码不能相同(废话, 候选码必须是候选码)
    • 分量必须取原子值, 即不允许表中有表(1NF)
  • 关系模式: 关系的”类”, “型”, 是对关系的静态稳定描述(对应建表语句)
    • 包含元组集合的结构(属性集合, 属性的域, 属性与域的映射关系)
    • 包含完整性约束条件
    • 可以形式化地表示为
      • R: 关系名
      • U: 属性名的集合
      • D: U中属性来自的域的集合
      • DOM: 各属性到域的映射的集合
      • F: 属性间数据依赖关系的集合
      • 可以简记为, R为关系名, 为属性名
    • 关系是变化的具体值, 关系模式是静态的稳定描述.
  • 关系数据库: 给定的应用领域中, 所有关系的集合构成一个关系数据库.
    • 型: 关系数据库模式
    • 值: 某一时刻对应的关系的集合

三类完整性条件

  • 实体完整性
    • 内容: 主属性不能取空值
    • 针对基本关系, 代表现实中实体可以唯一区分
    • 强制性满足
  • 参照完整性
    • 内容: 外码要么取被参照关系中存在的主码值, 要么取空值
      • 外码: 关系R中的一个非码属性F, 与关系S的主码属性G对应, 则称F是R中的一个外码.
      • R(包含外码的关系)为参照关系
      • S(以R的外码为主码的关系)为被参照关系
      • F和G必须定义在同一个域, 但是不一定要同名
    • 代表要么未分配, 要么与已存在的外部实体产生联系, 不能与不存在的外部实体关联.
    • 强制性满足
  • 用户定义的完整性
    • 具体应用领域涉及的需要遵循的约束条件, 体现具体领域的语义约束
    • 由用户自行定义的附加语义限制

关系操作和关系代数

重点!
集合, 符号, 选择, 投影, 连接, 左连, 右连, 自然连接(定义不用严格知道, 知道操作执行, 能够得到结果)
操作的语义

关系操作

常用操作:
  1. 查询操作: 选择, 投影, 连接, 除, 并, 差, 交, 笛卡尔积
  1. 数据更新操作: 插入, 删除, 修改(增删改)

关系代数

抽象的查询语言, 用对关系的运算来表达查询
包含集合运算符(面向行)和专门的关系运算符(面向行和列), 运算的对象和结果都是关系
notion image
特点: 集合操作方式, 操作的对象和结果都是集合

记号补充

  • 表示元组t中属性对应的分量
  • , 其中是属性中的一部分, 则A称为属性列或属性组(全部属性的子集)
  • 表示元组t在属性组A上诸分量的集合(即只取属性组A中包含的属性)
  • 则表示中去掉后剩余的部分(属性组的补集)
  • 设n目关系, m目关系, , , 则
    • 称为元组的连接, 组成一个m+n列的元组
  • 象集: 给定一个关系, 其中为属性组. 设某元组t在上的属性取值, 则取值中的象集为
    • 非形式化解释: 关系中当部分属性的具体值取定时, 剩下的一部分属性的所有可能取值集合.

操作语义

💡
五种基本关系代数运算: 并, 差, 投影, 选择, 笛卡尔积
  • : 取两个关系的元组的并集(纵向拼接). 前提: 两个关系的属性数相同, 且相应的属性取自同一个域.
  • : 取元组的差集, 即代表从中去掉属于的元组. 前提: 两个元组的属性数相同, 且相应的属性取自同一个域.
  • : 取两个关系的元组的交集, 只选出同时属于两个关系的元组. 前提: 两个元组的属性数相同, 且相应的属性取自同一个域.
  • (广义的)笛卡尔积 : 行列同时扩充, 两个关系的所有列拼接为新的列, 两个关系的行随意两两拼接成新的行.
    • : n目关系, 个元组
    • : m目关系, 个元组
    • 笛卡尔积: 目关系, 个元组.
  • 选择 : 在关系R中选择满足给定条件的元组组成的子集(选出部分行)
    • 为选择条件, 为一个逻辑表达式, 取值为真或假, 可以和逻辑运算(与或非)复合.
  • 投影 : 从R中选择若干属性列成为新的关系(只看部分列)
    • 中的一个属性组
    • 投影不仅取消了部分列, 还可能因为产生重复行而合并某些元组.
  • 连接 : 从两个关系的笛卡尔积中选择属性间满足一定条件的元组(取笛卡尔积的子集)
    • 为比较运算符, 是属性数相等且可比较的属性组.
    • 特殊的连接类型:
      • 等值连接: 的情况, 即指定属性组完全相同的元组拼接成新关系中的一行
      • 自然连接: 特殊的等值连接, 进行比较的分量必须是相同的属性组, 且在结果中去掉重复的属性列(重复的合并成一列)
      • 一般的连接是从行的角度进行拼接, 自然连接还需要同时考虑重复列, 同时从行和列的角度考虑
    • 悬浮元组: 不满足连接条件, 没有对应元组的元组, 在连接操作时被舍弃.
    • 外连接: 保留悬浮元组的连接, 在未匹配到的属性处填空值.
      • 左外连接: 只保留左边关系R中的悬浮元组, 右边留空.
      • 右外连接: 只保留右边关系S中的悬浮元组, 左边留空.
  • :
    • 找出关系R中 / 满足其象集的并集为 / 关系S中所有属性组Y的可能取值 / 的属性组X的取值 / 组成的集合.
    • 除运算就像是在问“在被除数表中, 有哪些‘主体’与除数表中所有的‘特征’都形成了有效的对应关系”, 也就是找出那些“全才”或者“完美匹配”的记录. 它通常用于解决“A 是否包含所有 B”这类问题, 是关系代数中处理“全称量词”式查询的利器
    • 同时从行和列角度运算
Loading...