系统设计之数据库范式

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

字数虽少,信息量大。

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

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

相关文章

来自专栏青玉伏案

OracleDBA之表管理

  下面是Oracle表管理的部分,用到的测试表是oracle数据库中scott用户下的表做的测试,有的实验也用到了hr用户的数据,以下这些东西是我的麦库上存的...

1828
来自专栏c#开发者

Oracle 最常用功能函数经典汇总

Oracle 最常用功能函数经典汇总 SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(...

3927
来自专栏python3

mysql-多表查询

mysql> create table department(id int,name varchar(20));

781
来自专栏Kevin-ZhangCG

Oracle学习笔记二

格式: select * from 表1,表2   select * from emp;   select * from dept;

913
来自专栏程序猿

使用联接和子查询来查询数据

--Chapter 3 使用联接和子查询来查询数据 --内容提要 go /* (一)、使用联接查询数据 1. 内联接 2. 外联接 3...

2696
来自专栏吾爱乐享

软件测试之学习mysql的增删改(数据库重点)

932
来自专栏程序猿

SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询

代码大概200行左右 本系列,几乎都是代码,记得当时写的时候用的是微软的官方实例数据库AdventureWorks_Data.mdf、AdventureWor...

3084
来自专栏禅林阆苑

mysql学习总结03 — 列属性(字段属性)

mysql中的6个列属性:null,default,comment,primary key,unique key,auto_increment

742
来自专栏我的博客

数据库原理与应用【实验报告】

实验一 数据库管理系统软件的使用 一、实验目的 (1)认识几种常见的数据库管理系统,熟悉它们的使用界面; (2)熟练掌握建立数据库和表,向数据库输入数据、修改数...

3847
来自专栏desperate633

第11课 使用子查询使用计算字段作为子查询

我们考虑一个问题,列出订购物品‘RGAN01’的所有顾客的信息,那我们应该用怎样的信息检索?

392

扫描关注云+社区