关系模型

  • 候选码(Candidate Key)
  • 主码(Candidate Key) (主键多好听。。)
  • 外码 (Foreign Key)

主属性与非主属性

  • 包含在任何一个候选码中的属性称为主属性,而其他 属性称为非主属性
  • 最简单的,候选码包含一个属性
  • 最极端的,所有属性构成这个关系的一个候选码,称为全码

    关系模式(Relation Schema)

    关系模式是关系中信息内容结构的描述。
    R(U,D,DOM,I,Σ)

  • R:是关系名

  • U:是组成关系R的全部属性的集合
  • D:是U中属性取值的值域
  • DOM:是属性列到域的映射
  • I:是一组完整性约束条件
  • Σ(F):是属性集间的一组数据依赖

    关系完整性约束

    实体完整性规则

  • 规则:若属性A是基本关系R的主属性,则 属性A不能取空值。

    参照完整性规则

  • 规则:若F是基本关系R的外码,并与 S的主码 Ks相对应,则对于R中每个元组在F上的值必 须为:

  • 或者取空值
  • 或者取S中主码Ks对应的值

    用户定义完整性规则

  • 规则:反映某一具体应用所涉及的数据必须满 足的语义要求

关系代数

传统的集合运算

  • 并 差 交 笛卡尔积

专门的关系运算

  • 选择 投影 连接 自然连接 除

基本关系代数运算

  • 并 差 笛卡尔积 选择 投影

例子

  • 查询至少选修了课程号为1和2的 学生的学号
    • image.png
    • image.png
  • 查询选修课程号为1或2的学生学号
    • image.png
  • 查询没有选修1号课程的学生学号
    • image.png
  • 查询选修课程号为1的学生姓名和成绩
    • image.png
    • image.png
  • 查询选修全部课程的学生学号
    • image.png
  • 查询至少选修1号同学选修的所有课程的 学生姓名
    • image.png

      查询优化

      image.png
      image.png

查询优化的策略和算法

  1. 尽可能早地执行选择操作(减少中间运算 结果)
  2. 同时进行投影和选择运算
  3. 把投影同其前或后的双目运算结合起来
  4. 合并选择与笛卡尔积组成一个连接运算
  5. 寻找公共子表达式

方法

  • 把σF1∧F2 ∧ …∧Fn(E)变换为 σF1 (σF2(…(σFn( E))…))
  • 对每一个选择尽可能把它移到树的叶端
  • 对每一个投影尽可能把它移到树的叶端
  • 合并选择和投影或一个选择后跟一个投影
  • 将得到的语法树的内节点分组。(每一双目运算和它所 有的直接祖先为一组。

  • 求1号学生所选修的课程名及成绩
    • πCN,G (σSC.S#=‘1’∧SC.C#=C.C# (SC × C))
  1. image.png
  2. image.png
  3. image.png
  4. image.png
  • 查询选修了数据库原理的学生姓名和成绩
    • πSN,G (σCN=‘数据库原理’ (S SC C))
    • πSN,G (σCN=‘数据库原理’ ∧ S.S#=SC.S#∧SC.C#=C.C#(S × SC × C))
  1. image.png
  2. image.png
  3. image.png
  4. image.png
  5. image.png
  6. image.png
  7. image.png