• 关系数据库规范化


    函数依赖

    • 函数依赖:

      类似于数学中的函数的概念,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是否最小函数依赖集无关

  • 相关阅读:
    Ubuntu Docker 安装
    apt安装 E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
    Ubuntu18.04 网路图标消失连接不上网
    Liunx 安装配置NFS服务,挂载目录
    python shutil包 文件/目录的复制,移动
    python urllib包 实现通过http下载文件
    MAC上的Terminal光标快捷键
    Safari下载zip文件后不再自动打开
    Wordpress: contact form 7 表单内容同行
    Zoi选项 — Insure抑制功能
  • 原文地址:https://www.cnblogs.com/juanzhi/p/12447497.html
Copyright © 2020-2023  润新知