乐趣区

关于mysql:浅谈数据库设计之三大范式

我的博客

范式?

即标准!

范式是“合乎某一种级别的关系模式的汇合,示意一个关系外部各属性之间的分割的合理化水平”。很艰涩吧?实际上你能够把它粗略地了解为一张数据表的表构造所合乎的某种设计标准的级别。

数据库范式也分为 1NF,2NF,3NF,BCNF,4NF,5N 个别在咱们设计关系型数据库的时候,最多思考到 BCNF 就够

合乎高一级范式的设计,必然 合乎低一级范式,例如合乎 2NF 的关系模式,必然合乎1NF

1NF- 第一范式

数据表的每一列都要放弃它的原子个性,也就是列不能再被宰割。

比方这样:

进货它还能够被分出进货的数量,进货的单价等等属性。所以这样是不合乎第一范式的。

来自——> 博客园

2NF- 第二范式

第二范式(2NF)是在第一范式(1NF)的根底上建设起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

  • 即满足第一范式前提,当 存在多个主键 的时候,才会产生不合乎第二范式的状况!!!。
  • 比方有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不合乎第二范式。
  • 艰深了解是任意一个字段都只依赖表中的同一个字段。

依赖

在数据表中,属性(属性组)X 确定的状况下,能齐全退出来属性 Y 齐全依赖于 X。

齐全依赖

齐全依赖是针对于属性组来说,当一组属性 X 能推出来 Y 的时候就说 Y 齐全依赖于 X。

局部依赖

一组属性 X 中的其中一个或几个属性能推出 Y 就说 Y 局部依赖于 X。

3NF- 第三范式

首先,要满足第三范式(3NF必须 先满足第二范式(2NF)。

也就是说,要求一个数据库表中 不蕴含 已在其它表中已蕴含的 非主键 字段。

三范式肯定须要?

咱们的三范式是个别标准。就是说,只是个别都会恪守这个标准。

然而!!!不是肯定须要恪守,比方有时候,数据不冗余也不是坏事。所以,咱们要依据须要来定义,建设在需要之上。

没有冗余的数据库未必是最好的数据库,有时为了进步运行效率,进步读性能,就必须升高范式规范,适当保留冗余数据。

其余范式

BCNF-BC 范式

关系模式 R <U,F> 中,若每一个决定因素都蕴含码,则 R <U,F> 属于BCFN

即:

  1. 所有非主属性对每一个码都是齐全函数依赖;
  2. 所有主属性对每一个不蕴含它的码也是齐全函数依赖;
  3. 没有任何属性齐全函数依赖于非码的任何一组属性。

4NF- 第四范式

限度关系模式的属性之间不容许有非平庸且非函数依赖的多值依赖。

5NF- 第五范式

  • 必须满足第四范式。
  • 表必须能够合成为较小的表,除非那些表在逻辑上领有与原始表雷同的主键。

个别在咱们设计关系型数据库的时候,最多思考到 BCNF 就够。!!!

退出移动版