關(guān)于關(guān)系數(shù)據(jù)庫(kù)的第一第二第三范式

參考來(lái)源:知乎


按照教材中的定義碗硬,范式是“符合某一種級(jí)別的關(guān)系模式的集合,表示一個(gè)關(guān)系內(nèi)部各屬性之間的聯(lián)系的合理化程度”绵咱。

數(shù)據(jù)庫(kù)范式分為1NF碘饼,2NF,3NF悲伶,BCNF艾恼,4NF,5NF麸锉。一般在我們?cè)O(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)的時(shí)候钠绍,最多考慮到BCNF就夠。符合高一級(jí)范式的設(shè)計(jì)花沉,必定符合低一級(jí)范式柳爽,例如符合2NF的關(guān)系模式,必定符合1NF碱屁。

第一范式(1NF):

1NF體現(xiàn)了列的原子性磷脯,即列不可再分為其它幾列。

例如:下表就不符合第一范式娩脾。


實(shí)際上赵誓,1NF是所有關(guān)系型數(shù)據(jù)庫(kù)的最基本要求,你在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),例如SQL Server俩功,Oracle幻枉,MySQL中創(chuàng)建數(shù)據(jù)表的時(shí)候,如果數(shù)據(jù)表的設(shè)計(jì)不符合這個(gè)最基本的要求诡蜓,那么操作一定是不能成功的熬甫。也就是說(shuō),只要在RDBMS中已經(jīng)存在的數(shù)據(jù)表万牺,一定是符合1NF的罗珍。

然而1NF存在著一些問(wèn)題:

1.每個(gè)數(shù)據(jù)可能重復(fù)多次——數(shù)據(jù)冗余

2.由于一行的每一個(gè)數(shù)據(jù)都不能為空洽腺,無(wú)法將某些屬性單獨(dú)地加入到數(shù)據(jù)庫(kù)中——插入異常

3.將數(shù)據(jù)庫(kù)中的某一屬性全部刪除脚粟,則其它數(shù)據(jù)也可能無(wú)法保留——刪除異常

4.某一個(gè)數(shù)據(jù)的該動(dòng)需要修改多條記錄——修改異常

正因?yàn)閮H符合1NF的數(shù)據(jù)庫(kù)設(shè)計(jì)存在著這樣那樣的問(wèn)題,我們需要提高設(shè)計(jì)標(biāo)準(zhǔn)蘸朋,去掉導(dǎo)致上述四種問(wèn)題的因素核无,使其符合更高一級(jí)的范式(2NF),這就是所謂的“規(guī)范化”

第二范式(2NF):

第二范式首先是滿足第一范式的藕坯,其改進(jìn)是团南,2NF在1NF的基礎(chǔ)之上,消除了非主屬性對(duì)于碼的部分函數(shù)依賴炼彪。接下來(lái)對(duì)這句話中涉及到的四個(gè)概念——“函數(shù)依賴”吐根、“碼”“非主屬性”辐马、與“部分函數(shù)依賴”進(jìn)行一下解釋拷橘。

函數(shù)依賴

我們可以這么理解(但并不是特別嚴(yán)格的定義):若在一張表中冗疮,在屬性(或?qū)傩越M)X的值確定的情況下术幔,必定能確定屬性Y的值,那么就可以說(shuō)Y函數(shù)依賴于X拔妥,寫(xiě)作 X → Y俩由。也就是說(shuō),在數(shù)據(jù)表中,不存在任意兩條記錄努释,它們?cè)赬屬性(或?qū)傩越M)上的值相同咬摇,而在Y屬性上的值不同

完全函數(shù)依賴

在一張表中逸邦,若 X → Y缕减,且對(duì)于 X 的任何一個(gè)真子集(假如屬性組 X 包含超過(guò)一個(gè)屬性的話),X ' → Y 不成立皱卓,那么我們稱 Y 對(duì)于 X完全函數(shù)依賴裹芝,記作 X F→ Y。

例如:

學(xué)號(hào) F→ 姓名

(學(xué)號(hào),課名) F→ 分?jǐn)?shù)? (注:因?yàn)橥粋€(gè)的學(xué)號(hào)對(duì)應(yīng)的分?jǐn)?shù)不確定享完,同一個(gè)課名對(duì)應(yīng)的分?jǐn)?shù)也不確定)

部分函數(shù)依賴

假如 Y 函數(shù)依賴于 X彼绷,但同時(shí) Y 并不完全函數(shù)依賴于 X,那么我們就稱 Y 部分函數(shù)依賴于 X,記作 X? P→ Y椿争,

例如:

(學(xué)號(hào)熟嫩,課名) P→ 姓名

傳遞函數(shù)依賴

假如 Z 函數(shù)依賴于 Y椅邓,且 Y 函數(shù)依賴于 X裁僧,那么我們就稱 Z 傳遞函數(shù)依賴于 X 沪悲,記作 X T→ Z阱表。

設(shè) K 為某表中的一個(gè)屬性或?qū)傩越M殿如,若除 K 之外的所有屬性都完全函數(shù)依賴于 K,那么我們稱 K 為候選碼最爬,簡(jiǎn)稱為涉馁。在實(shí)際中我們通常可以理解為:假如當(dāng) K 確定的情況下爱致,該表除 K 之外的所有屬性的值也就隨之確定烤送,那么 K 就是碼。一張表中可以有超過(guò)一個(gè)碼糠悯。(實(shí)際應(yīng)用中為了方便帮坚,通常選擇其中的一個(gè)碼作為主碼

主屬性

包含在任何一個(gè)碼中的屬性成為主屬性。

為了讓表符合2NF的要求互艾,我們必須消除這些部分函數(shù)依賴试和,只有一個(gè)辦法,就是將大數(shù)據(jù)表拆分成兩個(gè)或者更多個(gè)更小的數(shù)據(jù)表纫普,在拆分的過(guò)程中阅悍,要達(dá)到更高一級(jí)范式的要求,這個(gè)過(guò)程叫做”模式分解“。模式分解的方法不是唯一的节视。

2NF仍存在刪除異常和插入異常的情況晦墙。

第三范式(3NF):

3NF在2NF的基礎(chǔ)之上,消除了非主屬性對(duì)于碼的傳遞函數(shù)依賴肴茄。也就是說(shuō)晌畅, 如果存在非主屬性對(duì)于碼的傳遞函數(shù)依賴,則不符合3NF的要求寡痰。

符合3NF要求的數(shù)據(jù)庫(kù)設(shè)計(jì)抗楔,基本上解決了數(shù)據(jù)冗余過(guò)大,插入異常拦坠,修改異常连躏,刪除異常的問(wèn)題。當(dāng)然贞滨,在實(shí)際中入热,往往為了性能上或者應(yīng)對(duì)擴(kuò)展的需要,經(jīng)常 做到2NF或者1NF晓铆,但是作為數(shù)據(jù)庫(kù)設(shè)計(jì)人員勺良,至少應(yīng)該知道,3NF的要求是怎樣的骄噪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尚困,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子链蕊,更是在濱河造成了極大的恐慌事甜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滔韵,死亡現(xiàn)場(chǎng)離奇詭異逻谦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)陪蜻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)邦马,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人囱皿,你說(shuō)我怎么就攤上這事勇婴。” “怎么了嘱腥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵耕渴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我齿兔,道長(zhǎng)橱脸,這世上最難降的妖魔是什么础米? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮添诉,結(jié)果婚禮上屁桑,老公的妹妹穿的比我還像新娘。我一直安慰自己栏赴,他們只是感情好蘑斧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著须眷,像睡著了一般竖瘾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上花颗,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天捕传,我揣著相機(jī)與錄音,去河邊找鬼扩劝。 笑死庸论,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棒呛。 我是一名探鬼主播聂示,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼条霜!你這毒婦竟也來(lái)了催什?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宰睡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后气筋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拆内,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年宠默,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了麸恍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搀矫,死狀恐怖抹沪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓤球,我是刑警寧澤融欧,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站卦羡,受9級(jí)特大地震影響噪馏,放射性物質(zhì)發(fā)生泄漏麦到。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一欠肾、第九天 我趴在偏房一處隱蔽的房頂上張望瓶颠。 院中可真熱鬧,春花似錦刺桃、人聲如沸粹淋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)港庄。三九已至梯浪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谴轮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工吹埠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留第步,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓缘琅,卻偏偏與公主長(zhǎng)得像粘都,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刷袍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容