MySQL三大范式[課本描述信息]

設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)時(shí),遵循不同的規(guī)范要求咖刃,設(shè)計(jì)出合理的關(guān)系型數(shù)據(jù)庫(kù)泳炉,這些不同的范式要求被稱為不同的范式,各種范式呈遞次規(guī)范嚎杨,越高的范式數(shù)據(jù)庫(kù)冗余越小花鹅。

目前關(guān)系數(shù)據(jù)庫(kù)有六種范式:第一范式(1NF)、第二范式(2NF)枫浙、第三范式(3NF)刨肃、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF箩帚,又稱完美范式)之景。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎(chǔ)上進(jìn)一步滿足更多規(guī)范要求的稱為第二范式(2NF)膏潮,其余范式以此類推锻狗,一般來(lái)說(shuō),數(shù)據(jù)庫(kù)只需要滿足第三范式(3NF)就可以了焕参。

1.第一范式

所謂的第一范式(1NF)是指在關(guān)系模型中轻纪,對(duì)字段添加一個(gè)規(guī)范要求,所有的字段都應(yīng)該是原子性的叠纷,即數(shù)據(jù)庫(kù)表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng)刻帚,而不是集合、數(shù)組涩嚣、記錄等非原子數(shù)據(jù)項(xiàng)崇众。如果實(shí)體中的某個(gè)屬性有多個(gè)值時(shí),必須拆分為不同的屬性航厚。在符合第一范式(1NF)表中的每個(gè)字段值只能是實(shí)體的一個(gè)屬性或一個(gè)屬性的一部分顷歌。在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第一范式(1NF)是對(duì)關(guān)系模式設(shè)計(jì)的基本要求幔睬,一般設(shè)計(jì)中都必須滿足第一范式(1NF)眯漩。只有這樣,設(shè)計(jì)出來(lái)的表才是標(biāo)準(zhǔn)的二維表結(jié)構(gòu)。

例如:如下的數(shù)據(jù)庫(kù)表是符合第一范式的:

字段1 字段2 字段3 字段4

而這樣的數(shù)據(jù)庫(kù)表是不符合第一范式的:

字段1 字段2 字段3 字段4
字段3.1|字段3.2

很顯然赦抖,在當(dāng)前的任何關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中舱卡,都不可能做出不符合第一范式的數(shù)據(jù)庫(kù),因?yàn)檫@些 DBMS 不允許把數(shù)據(jù)庫(kù)表的一列再分成二列或者多列队萤。因此轮锥,想在現(xiàn)有的 DBMS 中設(shè)計(jì)出不符合第一范式的數(shù)據(jù)庫(kù)都是不可能的。

2.第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)的要尔,即滿足第二范式(2NF)必須先滿足第一范式(1NF)舍杜。第二范式(2NF)要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或記錄必須可以被唯一的區(qū)分(標(biāo)識(shí))。選取一個(gè)能夠區(qū)分每個(gè)實(shí)體的屬性或?qū)傩越M盈电,作為實(shí)體的唯一標(biāo)識(shí)蝴簇,例如杯活,在員工表中的身份證號(hào)碼即可實(shí)現(xiàn)每個(gè)一員工的區(qū)分匆帚,該身份證號(hào)碼即為候選鍵,任何一個(gè)候選鍵都可以被選作主鍵作為記錄的唯一標(biāo)識(shí)旁钧。在找不到候選鍵時(shí)吸重,可額外增加屬性以實(shí)現(xiàn)區(qū)分。例如歪今,在員工表中如果沒(méi)有對(duì)其身份證號(hào)碼進(jìn)行存儲(chǔ)嚎幸,而姓名可能會(huì)在數(shù)據(jù)庫(kù)運(yùn)行的某個(gè)時(shí)間重復(fù),無(wú)法區(qū)分出實(shí)體時(shí)寄猩,這時(shí)就需要額外增加一個(gè)譬如 ID 等不重復(fù)的編號(hào)以實(shí)現(xiàn)區(qū)分嫉晶,被添加的編號(hào)或 ID 選作主鍵。(該主鍵的添加是在 ER 設(shè)計(jì)時(shí)添加田篇,不是建庫(kù)時(shí)隨意添加)替废。

第二范式(2NF)要求實(shí)體的屬性要完全依賴于主關(guān)鍵字。所謂的完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性泊柬,如果存在椎镣,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一張新表,并且在新表中再增加原表中主鍵字段作為自己的外鍵兽赁,那么新表與原表之間就形成了一對(duì)多的關(guān)系状答。

總之,第二范式就是在第一范式的基礎(chǔ)上非主屬性(非主鍵字段)完全依賴于主屬性(主鍵)刀崖。

例如:選課關(guān)系表為 SelectCourse(學(xué)號(hào)惊科、姓名、年齡亮钦、課程名稱译断、成績(jī)、學(xué)分)或悲,主鍵為組合主鍵(學(xué)號(hào)孙咪、課程名稱)堪唐,因?yàn)榇嬖谌缦聸Q定關(guān)系:
(學(xué)號(hào),課程名稱)-> (姓名翎蹈、年齡淮菠、成績(jī)、學(xué)分)

在這個(gè)數(shù)據(jù)庫(kù)表中荤堪,有某些依賴不滿足第二范式的要求合陵,因?yàn)榇嬖谥缦碌臎Q定:
(課程名稱)-> (學(xué)分) 部分依賴主鍵
(學(xué)號(hào)) -> (姓名,年齡) 部分依賴主鍵
(學(xué)號(hào)澄阳、課程名稱) -> (成績(jī)) 完全依賴主鍵

由于不符合2NF拥知,這個(gè)選課關(guān)系表會(huì)存在如下問(wèn)題:

(1)數(shù)據(jù)冗余:

同一門課程由 n 個(gè)學(xué)生選修時(shí),“學(xué)分” 就重復(fù) n-1 次碎赢;

同一個(gè)學(xué)生選修了 m 門課程低剔,姓名和年齡就重復(fù)了 m-1 /次;

(2)數(shù)據(jù)異常:

若調(diào)整了某門課程的學(xué)分肮塞,數(shù)據(jù)表中所有行的“學(xué)分”值都要更新襟齿,否則會(huì)出現(xiàn)同一門課程學(xué)分不同的情況。

(3)插入異常:

假設(shè)要開設(shè)一門新的課程枕赵,暫時(shí)沒(méi)有人選修猜欺。這樣,由于還沒(méi)有“學(xué)號(hào)”關(guān)鍵字拷窜,課程名稱和學(xué)分也無(wú)法記錄入數(shù)據(jù)庫(kù)开皿。

(4)刪除異常:

假設(shè)一批學(xué)生已經(jīng)完成課程的選修,這些選修紀(jì)錄就應(yīng)該從數(shù)據(jù)表中刪除篮昧。但是赋荆,與此同時(shí),課程名稱和學(xué)分信息也被刪除了恋谭。很顯然糠睡,這樣也會(huì)導(dǎo)致插入異常。

解決方法:將部分依賴的屬性和這個(gè)被部分依賴的主屬性從原表中分離疚颊,形成一個(gè)新表狈孔。

上例的選課關(guān)系表應(yīng)該拆分為 3張表,拆分后的表就可以滿足第二范式的要求材义,從而徹底消除了前面列出的問(wèn)題均抽,它們分別是:

學(xué)生表:Student (學(xué)號(hào),姓名其掂,年齡)

課程表:Course (課程名稱油挥,學(xué)分)

選課關(guān)系表:SelectCourse (學(xué)號(hào),課程名稱,成績(jī))

另外深寥,所有單關(guān)鍵字的數(shù)據(jù)庫(kù)表都符合第二范式攘乒,因?yàn)椴豢赡艽嬖诮M合關(guān)鍵字,就不會(huì)存在部分依賴惋鹅。

3.第三范式

在1NF 基礎(chǔ)上则酝,任何非主屬性不依賴于其它非主屬性,即 3NF 就是在 2NF 基礎(chǔ)上消除傳遞依賴闰集,使得表中所有字段都直接依賴于主鍵字段沽讹。

第三范式(3NF)是第二范式(2NF)的一個(gè)子集,即滿足第三范式(3NF)必須滿足第二范式(2NF)武鲁。第三范式(3NF)要求一個(gè)關(guān)系表中不包含已在其它關(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)而言之监氢,第三范式就是屬性不依賴于其他非主屬性,也就是在滿足 2NF 的基礎(chǔ)上藤违,任何非主屬性不得傳遞依賴于與屬性浪腐。

所謂傳遞函數(shù)依賴,指的是如果存在 “ A->《倨埂B∫榻帧-> C” 的決定關(guān)系璧榄,則C傳遞函數(shù)依賴于A特漩。因此,滿足第三范式的數(shù)據(jù)庫(kù)表應(yīng)該不存在如下依賴關(guān)系:

關(guān)鍵字段」窃印->非關(guān)鍵字段x->非關(guān)鍵字段y

假設(shè)學(xué)生表為Student(學(xué)號(hào)涂身、姓名、所在學(xué)院搓蚪、學(xué)院地點(diǎn)蛤售、學(xué)院電話),關(guān)鍵字為單一關(guān)鍵字“學(xué)號(hào)”,因此存在如下決定關(guān)系:

(學(xué)號(hào))->(姓名悴能,年齡揣钦,所在學(xué)院,學(xué)院地點(diǎn)漠酿,學(xué)院電話)

這個(gè)數(shù)據(jù)庫(kù)是符合2NF的拂盯,但是不符合3NF,因?yàn)榇嬖谌缦聸Q定關(guān)系:

(學(xué)號(hào))- >(所在學(xué)院)- >(學(xué)院地點(diǎn)记靡,學(xué)院電話)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谈竿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摸吠,更是在濱河造成了極大的恐慌空凸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寸痢,死亡現(xiàn)場(chǎng)離奇詭異呀洲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)啼止,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門道逗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人献烦,你說(shuō)我怎么就攤上這事滓窍。” “怎么了巩那?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵吏夯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我即横,道長(zhǎng)噪生,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任东囚,我火速辦了婚禮跺嗽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘页藻。我一直安慰自己桨嫁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布惕橙。 她就那樣靜靜地躺著瞧甩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弥鹦。 梳的紋絲不亂的頭發(fā)上肚逸,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天爷辙,我揣著相機(jī)與錄音,去河邊找鬼朦促。 笑死膝晾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的务冕。 我是一名探鬼主播血当,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼禀忆!你這毒婦竟也來(lái)了臊旭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤箩退,失蹤者是張志新(化名)和其女友劉穎离熏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戴涝,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滋戳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啥刻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸鸯。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖可帽,靈堂內(nèi)的尸體忽然破棺而出娄涩,到底是詐尸還是另有隱情,我是刑警寧澤蘑拯,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布钝满,位于F島的核電站兜粘,受9級(jí)特大地震影響申窘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孔轴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一剃法、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧路鹰,春花似錦贷洲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至雁竞,卻和暖如春钦椭,著一層夾襖步出監(jiān)牢的瞬間拧额,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工彪腔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侥锦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓德挣,卻偏偏與公主長(zhǎng)得像恭垦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子格嗅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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

  • 一番挺、第一范式 1NF是對(duì)屬性的原子性,要求屬性具有原子性屯掖,不可再分解建芙; 二、第二范式 2NF是對(duì)記錄的惟一性懂扼,要求...
    陌上初夏_wendy閱讀 11,852評(píng)論 0 3
  • 數(shù)據(jù)庫(kù)的三個(gè)范式指的是什么呢禁荸?即:屬性唯一, 記錄唯一, 表唯一。下面我們用一張關(guān)系圖來(lái)三者之間的關(guān)系阀湿。 第一...
    博為峰51Code教研組閱讀 806評(píng)論 0 1
  • 數(shù)據(jù)庫(kù)設(shè)計(jì)當(dāng)中三范式是經(jīng)常遇到的 1.第一范式 第一范式(1NF)所謂第一范式(1NF)是指數(shù)據(jù)庫(kù)表的每一列都是不...
    CoderZS閱讀 737評(píng)論 0 0
  • 轉(zhuǎn)自:https://blog.csdn.net/wangqyoho/article/details/529005...
    半路和尚怎么出家閱讀 798評(píng)論 0 0
  • 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)之三大范式(Normal Form) 在設(shè)計(jì)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)時(shí)赶熟,一般要遵循三大范式。何為范式陷嘴,就是數(shù)...
    來(lái)自火星程序猿閱讀 1,687評(píng)論 0 0