脱口秀数据库三个范式
三个数据库的模式肯定是不陌生。官方的解释是很抽象,谁刚开始学习比较难理解。对于这一块的知识,我会读的。这将是忘记,忘了再看。每当别人问我的时候,必须先看看教材,回想一段时间才干理清。
为什么当别人提问时不能立刻把三范式的经典思想说出来呢?通过听米老师的“怎样高效学习”这堂课,我发现原因是我自己没有融入到三范式中。三范式没有和自己发生关系。
以下,我用三个有趣的小故事帮助大家高速、深刻的理解三范式的含义。
第一范式。官方解释:关系模式R的每一个关系r的属性值都是不可分的原子值。这个官方解释还不算太难,比方我们想把“电话号码”作为数据库字段,在“电话号码”以下又分“手机号码”和“座机号码”,这就违反了第一范式。用我的话说就是“把事说清了”。你仅仅说“电话号码”,我知道你说的是“手机号码”还是“座机号码”?
第二范式,官方解释:非主属性必须全然函数依赖于R的主关系键。
怎么样,有点晕了吧!比方:在SCD表中,有字段SNO。SN,Age,Dept,MN,CNo。Score。知道SNo能够确定SN、Age、Dept、MN,知道SNo、CNo能够确定Score。这个事好比土匪们选大哥。小弟SN、Age、Dept、MN选举SNo当土匪头子,Score选举SNo、CNo两个人共同当土匪头子。
结果意见达不成一致,土匪们闹分裂。一句话“仅仅要有一个人不允许。这事就不能通过”。大哥SNo带着小弟SN、Age、Dept、MN成立土匪旗号SD。大哥SNo又和CNo带着小弟Score合伙成立土匪旗号SC。到此,故事告一段落。
第三范式。官方解释:每一个非主属性都不传递函数依赖于R的主关系键。这个怎么样,彻底晕了吧!
比方:在SD表中,知道SNo能够确定Dept,知道Dept能够确定MN(系主任名)。这事咱接着上面第二范式的土匪故事接着讲,大哥SNo有小弟SN、Age、Dept、MN,但Dept特别有才。又把MN招为自己的小弟。天天忽悠MN,给MN灌输反动思想,最终有一天Dept带着MN独立了。成立了土匪旗号D。
大哥SNo感觉SD已经不完整了,把土匪旗号改为S。SNo经过这次教训。决定下道命令:“一个人仅仅能扮演一个角色”,否则,不符合三个范式,因为关系模式分解。
这个故事讲完,据推测,通过这个小故事。我相信这三个范式的精髓深深地刻在大脑。
相关文章
- 解密:金融级海量数据库OceanBase
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- 数据库内核月报 - 2015 / 08-MySQL · 功能分析 · 5.6 并行复制实现分析
- 使用 OPEN CURSOR 和 FETCH NEXT CURSOR 对 SAP 数据库表进行分块读写试读版
- Atitit nosql的艺术 attilax著作 目录 1. 1.5NoSQL数据库的类型1 1.1. 1.5.1键值(Key/Value)存储1 1.2. 1.5.2面向文档的数据库1 1
- 页面上下移动,点发布的时候保存到数据库
- 〖Python 数据库开发实战 - MySQL篇⑮〗- 数据表结果集的排序与去除重复(去重)
- 数据定义语言DDL之数据库操作
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
- 数据库设计--垂直拆分数据
- 数据库之Mysql的常见面试问题
- Redis Nosql数据库
- Mybatis对象关联数据库表【一对多关联AND一对一关联】
- 【数据库优化】后端思维之数据库性能优化方案
- MongoDB数据库授权认证
- 【死磕数据库专栏启动】在CentOS7中安装 MySQL5.7版本实战
- mongodb 查看数据库和空间大小
- mssql数据库渗透测试