关系代数-函数依赖-范式

关系代数

  • 并:结果是两张表中所有记录数合并,相同记录只显示一次。
  • 交:结果是两张表中相同的记录。
  • 差:S1-S2,结果是S1表中有耳S2表中没有的那些记录。
  • 笛卡尔积:S1* S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1* S2记录数。
  • 投影:实际是按条件选择某关系模式中的某列,用数字也可以表示。
  • 选择:实际是按条件选择某关系模式中的某条记录。
  • 自然连接的结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录
    设有关系R、S如下图所示,自然连接结果如下图所示:
  • 考试真题

函数依赖

  • 给定一个X,能唯一确定一个Y,就称X能确定Y,或者说Y依赖于X,例如Y=X*X函数。
  • 函数依赖又可扩展以下两种规则:
    • 部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C,称为部分函数依赖。
    • 传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是 传递函数依赖:若A和B等价,则不存在传递,直接就可确定C。

  • 函数依赖的公理系统(Armstrong)
    设关系模式R<U,F>,U是关系模式R的属性全集,F是关系模式R的一个 函数依赖集。对于R<U,F>来说有以下的:
  • 超键:能唯一标识此表的属性的组合。
  • 候选键:超键中去掉冗余的属性,剩余的属性就是候选键。
  • 主键:任选一个候选键,即可作为主键。
  • 外键:其他表中的主键
  • 主属性:候选键内的属性为主属性,其他属性为非主属性。
  • 实体完整性约束:即主键约束,主键值不能为空,也不能重复
  • 参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空
  • 用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。

范式

  • 第一范式1NF
    关系中的每一个分量必须是一个不可分的数据项。通俗的说,第一范式就是表中不允许有小表存在。比如,对于如下的员工表,就不属于第一范式:
  • 实例:用一个单一的关系模式学生来描述学校的教务系统,学生(学号、学生姓名、系号、系主任姓名、课程号、成绩)
  • 依赖关系(学号->学生姓名,学号->系号,系号->系主任姓名,学号->课程号,(学号、课程号)->成绩)
  • 第二范式
    如果关系R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。
    通俗的说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。
    按照定义,上面的学生表就不满足2NF,因为学号不能完全确定课程号和成绩(每个学生可以选多门课)。
    将学生表分解为:
    学生(学号,学生姓名,系编号,系号,系主任)
    选课(学号,课程号,成绩)
    每张表均属于2NF。
  • BC范式BCNF,是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖。
  • 通俗的来说,就是在每一种情况下,每一个依赖的左边决定因素都必然包含候选键,如下:
  • 上图中,候选键有两种情况:组合键(S,T)或者(S,J),依赖集为(SJ->T,T->J),可知,STJ三个属性都是主属性,因此其达到了3NF(无非主属性),然而,第二种情况,即(S,J)为候选键的时候,对于依赖T->J,T在这种情况不是候选键,即T->J的决定因素不包含任意候选码,因此上图不是BCNF。
  • 要使上图关系模式转换为BCNF也很简单,只需要将依赖T->J变为TS->J即可,这样其左边决定因素就包含了候选键之一S。
  • 考试真题

posted @ 2024-04-17 09:42  YhFei  阅读(54)  评论(0编辑  收藏  举报