关系数据库规范化

函数依赖

  • 函数依赖:

    类似于数学中的函数的概念,X,Y是属性集U 的子集,不存在两个元组在X上的属性值相等,而在Y上的属性值不等。

    部分函数依赖。

    X函数确定Y 或Y函数依赖于X,记做 X-> Y
  • 非平凡的函数依赖:X->Y,但Y不是X的子集,称 X-> Y 是非平凡的函数依赖。
  • 平凡函数依赖:X->Y,但Y是X的子集,称 X-> Y 是平凡的函数依赖。平凡函数依赖总是存在的。
  • 完全函数依赖:X->Y,但对于X 任意的真子集 X'  都不依赖 Y
  • 部分函数依赖:X->Y,存在一个真子集 X'  依赖 Y
  • 依赖传递:X-> Y,Y->Z;但是 Y(不 ->)X, Z也不是 Y的子集。

  

  • 候选码(完全函数依赖)

  若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能。

  • 主属性

  候选码的诸属性称为主属性。

  • 非主属性

  不包含在任何候选码中的属性

  • 超码(部分函数依赖)

  候选码是最小的超码

  • 全码

  所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码

码的选择

  一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况:
  若联系为1:1,则每个实体的码均是该关系的后选码。
  若联系为1:n,则关系的码为n端实体的码。(学校和学生,一个学校有n个学生,一个学生有一个学校,码选择的是学生)
  若联系为m:n,则关系的码为诸实体码的组合。

规范化

  1NF:每一个分量是不可分的数据项。

  2NF:每一个非主属性完全函数依赖于任何一个候选码。

  

   这里有两类非主属性,一类是Grade,对码是完全函数依赖; 另一类如sdept, sloc,他们对码不是完全函数依赖。解决方法是投影分解成两个关系模式。

         修改后,每一个非主属性都是对码完全函数依赖。

  3NF :消除了非主属性对码的传递函数依赖。

   上图6.4符合3NF,但是 6.5不符合。因为 3NF在2NF的基础上(不存在部分依赖于码),且每一个非主属性不传递依赖于码。

  BCNF:消除了任何属性对码的传递函数依赖和部分函数依赖。

  STJ不是BCNF关系,因为 主属性 J对码有传递函数依赖。

   4NF:消除多值依赖

 

  范式越低,查询成本越低;范式越高,查询成本越高。

  低范式到高范式是通过分解实现的,关系会变多,查询时会涉及多表连接。

选择题

 解析:BCNF要求在 3NF的基础上消除主属性对码的部分和传递函数依赖。

3.在关系模式的分解中,保持函数依赖分解最高可以达到(3NF)。

4.在关系模式的分解中,满足无损失连接最高可以达到(4NF)。

5.最小函数依赖集

(1)在关系模式R(U,F)中,如果F是最小函数依赖集,则 R的规范化程度与F是否最小函数依赖集无关

原文地址:https://www.cnblogs.com/juanzhi/p/12447497.html