系统设计之数据库范式

在设计数据库时,必须遵守一定的规则,在关系数据库中,就是范式。

字数虽少,信息量大。

什么是范式呢?(这个概念可忽略,说白了,就是个规则)是某一级别的关系模式的集合,在关系数据库中应该满足一定的要求,不同的范式对关系的属性值集合的函数以来不一样。

范式的有以下几种,第一范式(1NF),第二范式(2NF),第三范式(3NF),Boyce-Codd范式(BCNF),第四范式(4NF),第五范式(5NF),第六范式(6NF)。

规范化是从低一级的关系模式通过模式分解转化成高一级的关系模式。

第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。

第一范式通俗的讲所有非主码属性完全依赖与主码,完全依赖是什么意思的,就是函数里y=f(x)的关系。x决定y的值。非主码属性由主码推出来。

第二范式

第一范式到第二范式是消除了部分函数依赖。

部分函数依赖,故名肆意,在一张表中

主键

非主键1

非主键2

非主键组A

非主键组A

非主键A

注:(主键不一定是只有一个,只有一个的时候,会在表中进行unique关键字说明)

注:(消除部分函数依赖,表中存在非主码组或者非主键组,其中的依赖与主键或主码,其中的不依赖,这样的例子在生活中很多,消除其中的不依赖主码的非主码,就是消除部分函数依赖的过程,也就是从第一范式向第二范式过度)

第三范式

第二范式向第三范式转化,是消除非主码对主码的传递函数依赖,传递函数依赖,就是y=f(x),x=f(z);所以就是y=f(f(z));y最后依赖z,这就是传递依赖。

主码组

主码组

非主码2

非主码3

非主码4

身份证

你名字

你家

物业

物业电话

身份证是主键,在这里,你的身份证和你的名字去确定了唯一确定你,你的家这个属性依赖于你,你所在的物业,但是电话和地址是物业的属性,能推断出来,这存在传递函数依赖,消除之后便是第三范式的标准。

一般的关系型数据库符合第三范式就可以了。

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2016-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

建立索引后的代价到底有多大?

前几天写的文章“MySQL 性能优化案例:覆盖索引”,介绍了使用覆盖索引优化查询的方式,受到了一个网友的批评 批评的内容为: “直接从索引放回数据很快是个常...

3277
来自专栏学习有记

阅读查询计划:SQL Server 索引进阶 Level 9

1086
来自专栏大白虾谈架构

数据库主外建适用场景

885
来自专栏WindCoder

网易MySQL微专业学习笔记(十一)-MySQL业务优化与设计

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。

381
来自专栏進无尽的文章

多线程-概述及底层实现机制浅析

在打算写这篇多线层底层实现机制的时候,突然发现自己对于计算机竟然懂得这么表面,对于CPU的工作原理都不完全清楚,于是又转头查看了一些CPU相关的资料。也不敢钻的...

711
来自专栏杨建荣的学习笔记

用Oracle的眼光来学习MySQL 5.7的sys(上)(r11笔记第24天)

sys的初衷 MySQL 5.7的sys自从推出以来,整体的反响似乎没有预期的那么高,而我看到这个sys库的时候,第一感觉是越发和Oracle像了,不是...

3679
来自专栏智能大石头

大数据分析中使用关系型数据库的关键点

相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中。原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来...

644
来自专栏鸿的学习笔记

闲话聊聊事务处理(中)

上面提到了multi-object事务,但是要完美的处理multi-object事务并不容易。因为我们必须要面对并发问题导致的bug,而隔离性要求数据系统...

972
来自专栏数据和云

SQL查询提速秘诀,避免锁死数据库的数据库代码

由于数据库领域仍相对不成熟,每个平台上的 SQL 开发人员都在苦苦挣扎,一次又一次犯同样的错误。当然,数据库厂商在取得一些进展,并继续在竭力处理较重大的问题。

1153
来自专栏文渊之博

列存储索引1:初识列存储索引

     2012以后提供了一种不同于传统B树结构的索引类型,就是内存列存储索引。这种索引应用了一种基于列的存储模式,也是一种新的查询执行的批处理模式,并且为特...

1965

扫码关注云+社区