Skip to content

3、关系模式

常用术语

  • 关系:一个关系就是一张二维表,每个关系有一个关系名
  • 元组:表中的一行是一个元组,对应存储文件中的一个记录值
  • 属性:表中的列称为属性,每一列有一个属性名,属性值相当于记录中的数据项或字段值
  • 域:属性的取值范围,即不同元组对同一个属性的值限定的范围,例如逻辑型属性只认真(T)假(F)
  • 关系模式:对关系的描述称为关系模式,由关系名和其属性集合构成

关系模式的格式为:关系名(属性 1,属性 2,属性 3,...)

五个码

  • 候选码:属性或属性组合,其值能够唯一地标识一个元组
  • 主码(主键):在一个关系中可能有多个候选码,从中选择一个作为主码
  • 主属性:包含在任何候选码的属性称为主属性,不包含的称为非主属性
  • 外码(外键):一个关系中的属性或属性组并非改关系的码,但是是另外一个关系的码,称为该关系的外码
  • 全码:关系模式中的所有属性组是这个关系模式的候选码,称为全码
  • 超码:一个包含码的属性集称为超码,例如学号是码,则(学号、姓名)是超码

定义

  • 关系的描述称为关系模式,可以表示为 R(U - 属性集合、D - 属性 D 中来自的域、dom、F)
  • 通常简记为 R(a1,a2,...,aN)
  • 关系模型中数据的逻辑关系是一张二维表

完整性约束

  • 实体完整性:关系中主码不能为空
  • 参照完整性:外键(可以为空)必须在对应的关系中找到(不能为空值)

关系代数运算符

集合运算符

并(U)- 不考

关系 R 和关系 S 的所有元组合并,再删除重复的元组,组成一个新关系,称为 R 和 S

交(n)- 不考

关系 R 和关系 S 的交,是即属于 R 又属于 S 的元组组成的集合

差(-)- 不考

R 和 S 的差,是属于 R 但不属于 S 的元组组成的集合

笛卡尔积(x)

例如 D1= {0,1}, D2 = {a,b,c} 则 D1 x D2 =

专门的关系运算符

选择(σ)

  • 从关系的水平方向进行运算,从关系 R 中选出满足条件的元组
  • 记为 σF(R)
  • F 中的运算对象是属性名或常数,运算符、算术比较符和逻辑运算符
  • 要比较数值,要加单引号,不加单引号就是列的序号

投影(π)

从关系的垂直方向进行运算,从关系 R 中选出若干属性列 A 组成新的关系 说人话:选几列组成新的关系

连接(⨝)

连接运算是从笛卡尔积中选择符合条件的元组

θ 连接

从 R 与 S 的笛卡尔积中选择符合条件的元组,θ 为符号(算术比较、逻辑运算)

可以换算为 σxθy(RxS)

等值连接

当 θ 为“=”时,称为等值连接

自然连接
  • 是去除重复属性的等值连接(笛卡尔积后 θ 为“=”)
  • 关系 R 和 S,有一个或多个同名属性
  • 自然连接为空,退化成笛卡尔积
  • 计算过程为:
    1. 计算 R x S
    2. 设 R 和 S 的公共属性为 A1....AK,挑选 RxS 中符合 R.A1 = S.A1...R.Ak = S.Ak 的元组(所有的公共属性列都要相等)
    3. 去掉 SA1...SAk 这些列(保留 R.A1...R.Ak 列)
外连接

是连接运算的拓展,可以处理由于连接运算而缺失的信息

左外连接(连接符号左边加两条杠)

讲人话就是将自然连接删除的数据加入到关系中,但是右表中的属性设为空值

右外连接(连接符号右边加两条杠)

讲人话就是将自然连接删除的数据加入到关系中,但是左表中的属性设为空值

全外连接(连接符号左右边各加两条杠)

自然连接 + 左外连接 + 右外连接

除(➗) - 不考

关系代数转 SQL 语言

投影转 SQL

  • 转换为select from

选择转 SQL

  • 转换为select from where

笛卡尔积转 SQL

  • 转换为select 所有列 from R,S where

自然连接转 SQL

  • 转换为select 所有列 from R,S where R.列名 = S.列名 and R.列名 = S.列名

五元组

一个关系模式应该是一个五元组

R<U,D,dom,F>

  • R: 关系名
  • U:一组属性
  • D:属性 U 的取值范围
  • dom:属性到域的映射
  • F:属性组 U 上的一组数据依赖(函数依赖)

函数依赖

  • X 函数决定 Y,Y 函数依赖于 X,记作 X->Y
  • 比如 学号 -> 姓名(学号决定姓名)
  • 非平凡的函数依赖(大部分情况),如果 X->Y,但 Y 不包含于 X,则称 X->Y 为非平凡的函数依赖
  • 平凡的函数依赖:如果 X->Y,且 Y 包含于 X,则称 X->Y 为平凡的函数依赖
  • 完全函数依赖:如果 X->Y,且 X 中任意一个真子集都不能决定 Y,则称为完全函数依赖,记作 X-(F)->Y
  • 部分函数依赖:如果 X->Y,且 X 中任意一个真子集可以决定 Y,则称为部分函数依赖,记作 X-(P)->Y
  • 传递依赖:如果 X->Y,Y 不包含 X,Y->Z,则称 Z 对 X 传递依赖

公理系统

  • A1 自反律:若 Y 属于 X 属于 U,则 X->Y 为 F 所蕴含
  • A2 增广率:若 X->Y,Y->Z,且 Z 包含于 U,则 XZ -> YZ 为 F 所蕴含
  • A3 传递律:若 X->Y,Y->Z,则 X->Z 为 F 所蕴含
  • 合并规则:若 X->Y,X->Z,则 X->YZ 为 F 所蕴含
  • 伪传递率:若 X->Y,WY->Z,则 XW->Z 为 F 所蕴含
  • 分解规则:若 X->Y,Z 包含于 Y,则 X->Z 为 F 所蕴含

属性闭包原则

  • 给定关系 R(U,F),其中 U = {A,B,C,D,E,H},F=

{A,C} -> {A,B,C,H,E} -> {A,B,C,D,H,E} =U

如何挑选候选键

  • 不挑箭头右边,挑选箭头左边
  • 要选择不能被其他属性决定的

KESHAOYE-知识星球 V20251030171600