欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數(shù)據(jù)庫設(shè)計(jì)范式的理解

系統(tǒng) 1730 0

前言
為什么要寫這篇文章呢,從去年年底開始,就和很多做技術(shù)的朋友交流過,從數(shù)據(jù)庫設(shè)計(jì)到數(shù)據(jù)庫架構(gòu)各個(gè)方面的內(nèi)容。有一些朋友執(zhí)著于ORM,執(zhí)著于所謂的數(shù)據(jù)庫設(shè)計(jì),卻忘記了一切技術(shù)是要為業(yè)務(wù)服務(wù)這個(gè)基石。當(dāng)然這文章里也有一些自己的理解,想向大家表達(dá)。

范式是什么
范式是符合某一種級(jí)別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求,即滿足不同的范式。目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎(chǔ)上進(jìn)一步滿足更多要求的稱為第二范式(2NF),其余范式以次類推。一般說來,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了。

范式的原理

  • 第一范式(1NF)無重復(fù)的列

    所謂第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多關(guān)系。在第一范式(1NF)中表的每一行只包含一個(gè)實(shí)例的信息。簡(jiǎn)而言之,第一范式就是無重復(fù)的列。

    說明:在任何一個(gè)關(guān)系數(shù)據(jù)庫中,第一范式(1NF)是對(duì)關(guān)系模式的基本要求,不滿足第一范式(1NF)的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫。

  • 第二范式(2NF)屬性完全依賴于主鍵 [消除部分子函數(shù)依賴]

    第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。

    例如員工信息表中加上了員工編號(hào)(emp_id)列,因?yàn)槊總€(gè)員工的員工編號(hào)是惟一的,因此每個(gè)員工可以被惟一區(qū)分。這個(gè)惟一屬性列被稱為主關(guān)鍵字或主鍵、主碼。

    第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是屬性完全依賴于主鍵。

  • 第三范式(3NF)屬性不依賴于其它非主屬性 [消除傳遞依賴]

    滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。例如,存在一個(gè)部門信息表,其中每個(gè)部門有部門編號(hào)(dept_id)、部門名稱、部門簡(jiǎn)介等信息。

    那么在的員工信息表中列出部門編號(hào)后就不能再將部門名稱、部門簡(jiǎn)介等與部門有關(guān)的信息再加入員工信息表中。如果不存在部門信息表,則根據(jù)第三范式(3NF)也應(yīng)該構(gòu)建它,否則就會(huì)有大量的數(shù)據(jù)冗余。簡(jiǎn)而言之,第三范式就是屬性不依賴于其它非主屬性。

范式的說明

  • 第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解;

    通俗的理解是字段還可以再分嗎?如過不能,則是符合1NF的設(shè)計(jì)。

  • 第二范式:2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟一性;

    簡(jiǎn)單的解釋,比如你和一個(gè)女生約會(huì)建立一張表,不用每條約會(huì)記錄都記錄她的身高、體重,將身高體重單獨(dú)的存在一張表中供查詢即可。

  • 第三范式:3NF是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。
    打個(gè)比方,比如評(píng)論表,如果你將用戶ID,用戶頭像都放在這留言表中,就是不合適的了。用戶頭像是依賴于用戶ID,而不依賴該評(píng)論。

我對(duì)范式的理解
一個(gè)嚴(yán)格恪守?cái)?shù)據(jù)庫設(shè)計(jì)范式來進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的人,必定是個(gè)傻球;
一個(gè)沒有研究過數(shù)據(jù)庫設(shè)計(jì)范式就進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的人,必定也是個(gè)傻球;

在現(xiàn)代數(shù)據(jù)庫設(shè)計(jì)中,尤其是web 2.0的系統(tǒng)中的數(shù)據(jù)庫設(shè)計(jì),我可以斷言,大多數(shù)都是違反2NF、3NF的,少數(shù)設(shè)計(jì)甚至是違反1NF的。數(shù)據(jù)庫設(shè)計(jì)范式只是對(duì)數(shù)據(jù)庫慣用設(shè)計(jì)的一些說明,并不能定性為標(biāo)準(zhǔn)。

而從數(shù)據(jù)庫的發(fā)展來看,以MySQL舉例,隨著MySQL實(shí)現(xiàn)越來越多的功能,它的宣傳材料上會(huì)越來越多的出現(xiàn)以前被MySQL所摒棄的復(fù)雜設(shè)計(jì)理念,并且宣稱這是MySQL所獨(dú)創(chuàng)或一貫倡導(dǎo)的。這是一個(gè)數(shù)據(jù)庫系統(tǒng)發(fā)展所必然經(jīng)歷的過程。而這卻會(huì)給MySQL的使用者以極大的誤導(dǎo),從而忽視了是否新特性是業(yè)務(wù)所真正需要的。

數(shù)據(jù)庫設(shè)計(jì)不是一種編程語言這么簡(jiǎn)單,與面向?qū)ο蟆⒚嫦蜻^程無關(guān)。數(shù)據(jù)庫設(shè)計(jì)代表的是一種與應(yīng)用開發(fā)語言完全不同的思想。現(xiàn)在絕大多數(shù)的程序,無論任何人采用什么方式進(jìn)行程序開發(fā),其最終還是會(huì)回歸到對(duì)數(shù)據(jù)庫的操作上(當(dāng)然如果你的程序只是個(gè)教學(xué)演示則不在此范圍內(nèi))。

數(shù)據(jù)庫發(fā)展
各種緩存方案,說到底是以key為基礎(chǔ)的數(shù)據(jù)解決方案,而數(shù)據(jù)庫與應(yīng)用層之間的中間件,為了實(shí)現(xiàn)邏輯的簡(jiǎn)單和高性能,更多的也會(huì)是基于key的實(shí)現(xiàn)。比如我所使用過的騰訊的TTC。

從下面的列表可以看出當(dāng)前SNS的網(wǎng)站對(duì)于高并發(fā)、高性能的數(shù)據(jù)庫解決方案有多么渴求,F(xiàn)acebook貢獻(xiàn)了Cassandra、Linkedin貢獻(xiàn)了Voldemort、mixi.jp貢獻(xiàn)了Tokyo Cabinet和Tokoy Tyrant、green.jp貢獻(xiàn)了Flare、甚至包括Google的BigTable。

總結(jié)
寫到這里,我發(fā)現(xiàn)單單是這些新的數(shù)據(jù)庫解決方案就有太多可寫的內(nèi)容,而這些已經(jīng)超過了本文所要說明的主要內(nèi)容,而現(xiàn)在所寫的內(nèi)容就全當(dāng)是個(gè)引子吧,我寫的很意猶未盡。后面會(huì)就反范式設(shè)計(jì)實(shí)例,內(nèi)存緩存方案、NoSQL數(shù)據(jù)庫等逐漸展開。

數(shù)據(jù)庫設(shè)計(jì)范式的理解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美精品第一页 | 欧美精品一区二区三区在线 | 午夜视频网 | 欧美一区二区三区免费观看视频 | 亚洲国产欧美在线 | 午夜国产电影 | 久久成人久久爱 | 成人99 | 国产日韩一区在线精品欧美玲 | 亚洲美女精品 | 911网站大全在线观看 | 56av国产精品久久久久久久 | 欧美激情一区二区三级高清视频 | 欧美a在线观看 | 日韩一区二区三区四区五区 | 日韩精品一区二区三区国语自制 | 中国大陆高清aⅴ毛片 | 日韩中文字幕在线观看视频 | 精品久久久中文字幕一区 | 91精品综合久久久久久五月天 | 午夜亚洲 | 亚洲精品在线第一页 | 欧美大片在线看免费观看 | 精品国产不卡一区二区三区 | www国产成人免费观看视频,深夜成人网 | 久久综合丝袜日本网 | 亚洲欧美v视色一区二区 | 日韩综合在线 | 成人精品一区二区 | 无码国产精品成人午夜视频 | 免费在线看a | 国产综合久久久久 | 欧美色哟哟 | 日韩三级视频 | 婷婷激情综合五月天 | 天天人人精品 | 国产苐1页影院草草影院 | 五月天婷婷在线视频 | 丁香花在线电影小说观看 | 欧美大片一区二区三区 | 国产精品第三页在线看 |