• 数据库范式


    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
    一般说来,数据库只需满足第三范式(3NF)就行了。
    符合高一级范式的设计,必定符合低一级范式。
    一、第一范式
    符合1NF的关系中的每个属性都不可再分。
    1NF是所有关系型数据库的最基本要求。
    举个例子,数据库中有一列是姓名,姓名不可再分,符合1NF。还有一列是联系方式,而联系方式可以分为手机,QQ,微信等,这就是可再分,所以不符合1NF。
    二、函数依赖
    所谓函数依赖,可以理解为若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。也就是说,在数据表中,不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。这也就是“函数依赖”名字的由来,类似于函数关系 y = f(x),在x的值确定的情况下,y的值一定是确定的。
    举个例子,每个学号对应一个名字,不存在学号相同而姓名不同的人,这就可以说姓名依赖于学号,写作学号→姓名。但是反过来,可能存在两个人的姓名相同,而学号不同的记录,所以不能说学号依赖姓名。
    在函数依赖的基础上,可以分出三种函数依赖,分别是完全函数依赖和部分函数依赖和传递函数依赖。
    完全函数依赖:在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ' → Y 不成立,那么我们称 Y 对于 X 完全函数依赖。
    例:根据学号和课程可以得到一个分数,这个分数是唯一的,但是一个学号可能对应多个分数,一个课程也对应多个分数,那么这个分数就对于学号+课程完全函数依赖。
    部分函数依赖:假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X。
    例:学号+课程可以得到一个姓名,但是这个姓名不完全对应学号+课程,只需要对应学号+课程的一部分,学号就行了,这是姓名就是对于学号+课程部分函数依赖。
    传递函数依赖:假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (严格来说还有一个X 不包含于Y,且 Y 不函数依赖于Z的前提条件),那么我们就称 Z 传递函数依赖于 X 。
    例:通过学号可以确定学号所在学院,然后通过学院可以确定学院专业课程,那么专业课程对于学号就是传递函数依赖。
    三、第二范式
    2NF在1NF的基础之上,消除了非主键对于主键的部分函数依赖。
    即不存在非主键只依赖主键的一部分。
    四、第三范式
    3NF在2NF的基础之上,消除了非主键对于主键的传递函数依赖。
    即不存在非主键A依赖另一个非主键B,非主键B依赖主键。

  • 相关阅读:
    后期生成事件命令copy /y
    SevenZipShaper压缩类
    vs2017
    WCF路由服务
    微服务--
    各种流程图的绘画网路工具 processon
    ROC 准确率,召回率 F-measure理解(转载)
    Unix OpenCV安装
    转载:tar 解压缩命令~
    cppreference经验总结
  • 原文地址:https://www.cnblogs.com/shenyuyaqing/p/7047569.html
Copyright © 2020-2023  润新知