微信号:phpdevelopers

介绍:PHP开发者(phpdevelopers)-做最专业的PHP资源分享平台!

一看就懂的数据库范式

2019-05-16 20:12 php开发者

数据库设计当中三范式是经常遇到的,如果实际项目数据库设计中能达到第三范式基本也就满足要求了,那么如何快速有效的理解三个范式,同时应用于实际项目中去呢?

首先看看标准定义的三个范式:

第一范式(1NF)

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

我的理解:列不可分。

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。

我的理解:不能部分依赖。即:一张表存在组合主键时,其他非主键字段不能部分依赖。

第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。

我的理解:不能存在传递依赖。即:除主键外,其他字段必须直接依赖主键,不能间接依赖主键。

 
php开发者 更多文章 让PHP7达到最高性能的几个Tips Vue中组件与组件之间的通信实现 npm 安装express npm ERR! 靠这个技巧,只会写PHP代码的表弟竟然找到了女朋友! PHP开发者微信群成立了
猜您喜欢 Algorithm from THE BOOK 谁是世界上最聪明伶俐善良可爱幽默风趣的人?系统搜索中······ 17条 Swift 最佳实践规范 快来测测你JavaScript的功力吧 Kubernetes 实践案例分享|将 Node.js 应用从 PaaS 平台移动到 Kubernetes Tutorial