脱口秀数据库三个范式
三个数据库的模式肯定是不陌生。官方的解释是很抽象,谁刚开始学习比较难理解。对于这一块的知识,我会读的。这将是忘记,忘了再看。每当别人问我的时候,必须先看看教材,回想一段时间才干理清。
为什么当别人提问时不能立刻把三范式的经典思想说出来呢?通过听米老师的“怎样高效学习”这堂课,我发现原因是我自己没有融入到三范式中。三范式没有和自己发生关系。
以下,我用三个有趣的小故事帮助大家高速、深刻的理解三范式的含义。
第一范式。官方解释:关系模式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经过这次教训。决定下道命令:“一个人仅仅能扮演一个角色”,否则,不符合三个范式,因为关系模式分解。
这个故事讲完,据推测,通过这个小故事。我相信这三个范式的精髓深深地刻在大脑。