系统设计之数据库范式

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

字数虽少,信息量大。

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

范式的有以下几种,第一范式(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 条评论
登录 后参与评论

相关文章

来自专栏Kevin-ZhangCG

数据库索引

索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库...

710
来自专栏Java进阶架构师

「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)【面试重点】

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,索引就相当于目录。当你在用新华字典...

1083
来自专栏抠抠空间

MySQL 之 索引原理与慢查询优化

浏览目录 一 索引介绍 二 索引方法 三 索引类型 四 聚合索引和辅助索引  五 测试索引 六 正确使用索引 七 组合索引 八 注意事项 九 查询计划 十 慢日...

3877
来自专栏WindCoder

网易MySQL微专业学习笔记(五)-SQL语言进阶

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

541
来自专栏开发

mysql学习之优化总结(2)--索引的那些事

上一篇文章我们在研究MySQL查询过程的查询优化步骤中提到过优化索引可以优化查询优化的过程,索引到底是什么?它在查询过程中是一个怎样的角色?索引适用于什么场景?...

1765
来自专栏JetpropelledSnake

SQL学习笔记之项目中常用的19条MySQL优化

MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select...

1193
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第六天 MySQL回顾学习

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以通过sql语句对数据库中的数据进行增加,修改,删除及查询操作

1072
来自专栏Java爬坑系列

【MySQL疑难杂症】如何将树形结构存储在数据库中(方案三 Closure Table)

  今天介绍将树形结构存储在数据库中的第三种方法——终结表(原谅我这生硬的翻译。。)。   继续用上一篇的栗子,下面是要存储的结构图: image.png  ...

5538
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb05- 就这几步轻松操作MySQL数据库!

mysql-1 一.数据库 1. 数据库介绍 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以通过sql语句对数据库中...

2615
来自专栏代码世界

MYSQL之索引原理与慢查询优化

一、索引 1、介绍   一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的也是最容易出现问题的,...

48813

扫码关注云+社区