浅谈数据库三大范式的理解
首先声明一下,我的这个回答是个人工作总结,不适合考试答题昂。
欢迎关注我的博客。
前言:数据库设计其实不仅仅限制于三个范式,往下其实还有很多种,但对于大多数人来说,你又不搞科研,不造飞机大炮,掌握三大范式在工作中已经足够用了。
想法:数据库里有什么?说白了数据库里边不就是一张一张的关系数据表吗?只是表与表之间靠主外键关联而已。所以,你就把他理解为一张张的资料,一张资料里存着找到另一张资料的唯一线索,这个线索就是关系。
下面进入正题,也就是玩法:
1NF: 列的原子性,就是每一列不能再分了。就比如性别要么男要么女,这种的就叫不能再分了,但是地址不行,你不能把一连串的地址写到一起,要分为省、市、县、县的那个楼或者大厦什么的。
这是第一范式,不用问太多为什么,就像你买皮肤要充钱一样,你问人家就能免费给你吗?这是铁律。
2NF:有主键和副键之分,副键完全依赖于主键,主键是唯一的标识,代表着这个对象,而其他副键都是用来描述对象的。通过主键找到这个对象的整体信息。
3NF:这个其实工作久了就自然而然明白了。消除传递依赖,说白了就是有副键之间有关系的时候,最好另建一张表。这样就没有那么多冗余数据了。
就比如说家居有样式,你还要整个样式得分,样式评级什么的,就得另加一张表来描述样式的了。一个表对应一个类。A就是A,B就是B,C就是C。
还有就是存在1对多,多对多这种关系的时候,也要再分表,要不然数据冗余会特别大。100条数据还差点,1亿数据量就gg了。
三大范式没什么,就是这么设计比较好,会让你的数据更具有层次感。跟磁盘分区是一个道理。
备注:以上仅供参考,个人开发总结。希望对你有帮助,让我们共同进步。
孰能无过,如有错误和疑问欢迎留言。
转载于:https://www.cnblogs.com/onthewaytogrowth/p/11222084.html
浅谈数据库三大范式的理解相关推荐
- 数据库三大范式的理解
一: 引言 作为一个数据库的学习者,搞懂关系数据库的三大范式是很有用的.然而教科书上有关数据库范式的介绍都是采用学术性的定义,语法羞涩,让人难懂,故写下自己对数据库范式的理解,给初学者提供帮助,也备日 ...
- 数据库三大范式通俗理解
官方的解释就不放了,想看的可以去百度! 通俗的理解: 第一范式就是属性不可分割,每个字段都应该是不可再拆分的. 比如一个字段是姓名(NAME),在国内的话通常理解都是姓名是一个不可再拆分的单位,这时候 ...
- 浅谈面向对象三大特征的理解
面向对象程序设计(Object Oriented Programming)是把客观世界抽象成一个个的对象,并把对象作为编程的处理主体.Java语言是面向对象的程序设计语言,类和对象是面向对象的核心.类 ...
- 数据库三大范式的理解(大白话篇)
第一范式:列的原子性,即每一列(每一个属性,字段)都不可分割. 举例:销售成本=成本的单价*销售的数量,所以这里就不可以以销售成作为字段. 第二范式:非主属性必须完全依赖于主属性,不能存在只依赖于主属 ...
- mysql三大范式 答案_数据库三大范式定义与理解
数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...
- 数据库逻辑设计之三大范式通俗理解
一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还 ...
- 浅谈javaweb三大框架和MVC设计模式
浅谈javaweb三大框架和MVC设计模式 转载自:http://blog.csdn.net/sunpeng19960715/article/details/50890705 小序:博主以前在学jav ...
- 并发执行变成串行_大神浅谈数据库并发控制 锁和 MVCC
在学习几年编程之后,你会发现所有的问题都没有简单.快捷的解决方案,很多问题都需要权衡和妥协,而本文介绍的就是数据库在并发性能和可串行化之间做的权衡和妥协 - 并发控制机制.  如果数据库中的所有事务 ...
- 浅谈数据库发展史和 OceanBase 的诞生
浅谈数据库发展史和 OceanBase 的诞生 原创 杨传辉 OceanBase 昨天 本文作者:杨传辉(花名:日照)蚂蚁集团资深总监.OceanBase 研发总经理,全面负责 OceanBase 研 ...
最新文章
- Linux下取代top的进程管理工具 htop
- 6425C-Lab6 实现组策略
- Java FAQ(6)
- PAT-1124. Raffle for Weibo Followers (20)
- Python3--爬取数据之911网站信息爬取
- Lambda and Anonymous Classes
- python计算题_python计算题
- Windows 安装android studio的完整教程
- c语言 字体点阵取模,[汉字取模软件怎么用]单片机点阵汉字显示需要用
- 通过IPv4网络访问IPv6网络 ISATAP隧道配置方法
- wireshark 安装失败报错,缺少kb2999226补丁的解决方案
- 企业如何去选择适合的内网安全管理软件?
- 怎么浏览计算机上的驱动程序,怎么查找和更新驱动程序
- 遥感导论网课_优化遥感导论课程教学环境的思考|遥感导论期末考试
- HTML+CSS+JavaScript仿京东购物商城网站 web前端制作服装购物商城 html电商购物网站...
- 实时互动白板_使用froala文本编辑器构建实时协作白板第1部分
- 6-2 递归方法:汉诺塔问题 (10 分)
- 电子烟脱去糖衣后,下一步往哪走?
- TAGE Predictor
- 托疫情的“福”,和儿子一起过了个暑假
热门文章
- redis查询所有key命令_三歪推荐:Redis常见的面试题
- 03 - 变量的数据类型
- java获取子路径_Java中路径的获取
- 人人开源 VUE项目报错./src/assets/scss/index.scssModule build failed: Error: ENOENT: no such file or direct
- 怎么设置internet才能下载JAVA_如何使用Java从Internet下载和保存文件?
- python偶数个数_python基础
- cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...
- MySQL选择数据库
- C语言以字符串的形式读写文件
- 采用我国国产处理器的超级计算机是,“中国芯”超级电脑合肥诞生 首次采用国产CPU芯片...