关系数据库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连接和保持函数依赖性。

函数依赖

数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。
函数依赖则是一种最重要、最基本的数据依赖。

  1. 函数依赖
    设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X记作X→Y。
  2. 非平凡的函数依赖
    如果X→Y,但Y是X的真子集,则称X→Y是非平凡的函数依赖。一般情况下,总是讨论非平凡的函数依赖。
  3. 平凡的函数依赖
    如果X→Y,但Y是X的子集,则称X→Y是非平凡的函数依赖。
  4. 完全函数依赖
    在R(U)中,如果X→Y,并且对于X的任何一个真子集X‘都有X’不能决定Y,则称Y对X完全函数依赖。
  5. 部分函数依赖
    如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。


规范化

范式的作用是减少数据冗余和消除各种异常。

  1. 1NF(第一范式)
    若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。
  2. 2NF(第二范式)
    若关系模式R属于1NF,且每一个非主属性完全依赖于码,则关系模式R属于2NF。
    换句话说,当1NF消除了非主属性对码的部分函数依赖
  3. 3NF(第三范式)
    若关系模式R(U,F)中若不存在这样的码X,属性组Y及非主属性Z(Z是Y的真子集)使得X→Y,Y→Z成立,则关系模式R属于3NF。
    即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。
  4. BCNF
    3NF消除主属性对码的部分函数依赖和传递函数依赖之后就是BCNF
    换句话说,就是BCNF范式既检查非主属性,又检查主属性,而3NF只检查非主属性