范式

作者: Yix1a | 来源:发表于2017-09-29 17:34 被阅读13次
  • 第一范式(1NF)

符合1NF的关系中的每个属性不可再分。以下就不符合


仅仅符合1NF的设计,会存在数据冗余,插入异常,删除异常,修改异常的问题

例如

  • 每一个学生的学号、姓名、系名、系主任这些数据重复多次——数据冗余过大
  • 假如学校新建了一个系,诞生暂时还有新生 ,那么系名和系主任将无法插入——插入异常
  • 假如某个系中所有学生相关记录都删除,那么所有系与系主任也就随之消失了。——删除异常
  • 假如小明转系到法律系,那么为了保证数据库的一致性,需要修改三条记录中系与系主任的数据——修改异常
  • 第二范式

2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

  • 函数依赖
    若在一张表中,在属性x的值确定的情况下,必定能确定属性Y的值,则可以说函数Y依赖于函数X,写作X→Y
    比如学号→姓名,而姓名有重复不能百分百确定学号是什么所以不能姓名→学号。
  • 完全函数依赖
    对于X的任何一个真子集,X(真子集)→Y不成立,那么我们称Y对于X完全函数依赖。记作XF→Y
  • 部门函数依赖
    假如Y函数依赖于X,但同时Y并不完全函数依赖于X,那么我们就称Y部分函数依赖于X,记作XP→Y
  • 传递函数依赖
    假如Z函数依赖于Y,且Y函数依赖于X(Y不包含于X,且X不函数依赖于Y),那么我们就称Z传递函数依赖于X,XT→Z.

  • 若属性或属性组K之外的所有属性都完全函数依赖于K,那么我们称K为候选码,简称码,在实际中可以理解为:假如当K确定的情况下,该表除K之外的所有属性的值也就随之确定,那么K就是码。
  • 主属性和非主属性
    包含在任何一个码中的属性是主属性,其他的是非主属性。
  • 判断2NF
    就是看表中是否存在非主属性对于码的部分函数依赖。
    判断方法是
    • 找出数据表的码
    • 根据第一步的码,找出主属性和非主属性
    • 看是否存在部门函数依赖
      在(学号、课名)→姓名中,因为课名→姓名是部门函数依赖,所以不符合。
  • 要达到2NF就可能需要拆分表。拆到符合第二范式。

然而删除异常和插入异常仍没有改进

  • 第三范式3NF

在前两个范式的基础之上,消除了非主属性对吗的传递函数依赖。
方法仍然是拆分拆分拆分到符合范式。

  • BCNF范式

解决办法就是要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。

相关文章

  • MySQL三大范式和反范式

    MySQL三大范式和反范式 第一范式 第二范式 第三范式 反范式

  • 范式

    数据库(第一范式,第二范式,第三范式)

  • Mysql相关面试题

    1.何为范式? 第一范式(1NF):第一范式就是无重复属性的列。 第二范式(2NF):第二范式是在第一范式的基础上...

  • MySQL范式

    范式介绍 目前关系型数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(B...

  • 数据库范式

    关系数据库六种范式: 第一范式(1NF)、 第二范式(2NF)、 第三范式(3NF)、 巴斯-科德范式(BCNF)...

  • 读《学习之道》

    “输入—练习—内化—输出” “理解范式—应用范式—识别范式—输出范式” 不管你想学什么,你都可以在书里找到方法。 ...

  • 数据库范式原则,第一,第二

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、...

  • 数据库的常见知识

    数据库三范式 第一范式:表中的每个字段不可再分第二范式:满足第一范式并且表中的非主键字段依赖主键字段第三范式:满足...

  • java_sql数据库的设计

    数据库设计三范式(重点) 1.什么是设计范式 2.设计范式是哪些 3.第三范式 是建立在第二范式基础上 所有非主键...

  • java面试题杂谈

    #数据库三大范式: 第一范式:属性不可再分; 第二范式:消除冗余; 第三范式:消除函数传递依赖。 #设计模式 1....

网友评论

      本文标题:范式

      本文链接:https://www.haomeiwen.com/subject/lfgwsxtx.html