zoukankan      html  css  js  c++  java
  • 函数依赖与数据库范式

    什么是完全与部分函数依赖?

    解释:完全和部分,是针对于某个集体而言的。这个集体,指的是主键是多个属性的组合,而不是单个属性的主键。理解了上面的函数依赖,那么这里的完全与部分就不用过多的解释了。

    例如:常见的选课表([学号,课程号],成绩)[]里面是主键。那么完全函数依赖就是:非主键的属性(成绩)必须,全部依赖于主键所有的属性([学号,课程号]),少一个都不可以。说白了,学号+课程号—>成绩,只知道其中(学号,课程号)的一个,就不可以。只知道学号,不知道课程号,是没有办法知道某人的某个课程的成绩的。这,就是完全函数依赖。

    而,部分函数依赖,非主键的属性依赖于主键中部分的属性就可以了。

    什么是平凡和非平凡函数依赖?

    解释:所谓的平凡,就是很普通的意思,那么非平凡就是不普通的意思。唉,你可别小看这个意思,它却让你容易理解概念的东西。那么怎么理解这个"平凡"呢。"平凡"的对立面可以说是特殊,特别,特别就是你平常不见的事物,就很特别,就不平凡。

    例如:这个函数依赖(也就是关系):(学号,课程号)——>课程号,由学号和课程号推出课程号,这不是逗人玩儿吗?谁会这么二呀。已知课程号,你推出课程号,有意思吗?这就是我认为的重复性生产,太平凡的一件事儿了。所以,这就是平凡函数依赖。

    而 (学号,课程号)——>所在系号,从没有推出有,这就是很特殊的一面,就是不平凡的。

    说白了,对于一个函数依赖,由左边——>右边,如果右边的属性,在左边出现过,那么就是平凡函数依赖。反之,右边的属性没有在左边出现过,那么就是非平凡函数依赖。

    数据库范式

    1NF:字段是最小的的单元不可再分
    2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
    3NF:满足2NF,非主键外的所有字段必须互不依赖
    4NF:满足3NF,消除表中的多值依赖

    应用数据库范式可以带来许多好处,但是最重要的好处归结为三点:
    1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)
    2.消除异常(插入异常,更新异常,删除异常)
    3.让数据组织的更加和谐…

    2NF

    只有一个主键的表如果符合第一范式,那一定是第二范式

    REF

  • 相关阅读:
    I.MX6 Surfaceflinger 机制
    理解 Android Fragment
    RPi 2B DDNS 动态域名
    RPi 2B IPC webcam server
    理解 Android MVP 开发模式
    I.MX6 system.img unpack repack
    can't set android permissions
    VMware Ubuntu 共享文件夹
    解决oracle数据库连接不上的问题
    perfect-scrollbar示例
  • 原文地址:https://www.cnblogs.com/flowerszhong/p/6845777.html
Copyright © 2011-2022 走看看