第一范式(1NF):
- 數(shù)據(jù)表的每一列是基本列,不可再拆分(下面的表1的結(jié)構(gòu)則不符合第一范式,當(dāng)然道伟,目前在用的各種數(shù)據(jù)庫(kù)也不允許創(chuàng)建這種表)
表1 - 不可有重復(fù)列
第二范式(2NF):
- 數(shù)據(jù)表必須有主鍵(關(guān)鍵字或組合關(guān)鍵字)以區(qū)分各行數(shù)據(jù)
- 非關(guān)鍵字段不允許存在對(duì)關(guān)鍵字的部分依賴
舉例:
假定選課關(guān)系表為SelectCourse(學(xué)號(hào)葫松,姓名,年齡胁艰,課程名稱款筑,成績(jī)智蝠,學(xué)分)
關(guān)鍵字為組合關(guān)鍵字(學(xué)號(hào),課程名稱)奈梳,決定關(guān)系關(guān)系如下:
(學(xué)號(hào)杈湾,課程名稱) → (姓名,年齡攘须,成績(jī)漆撞,學(xué)分)
這個(gè)數(shù)據(jù)庫(kù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:
(課程名稱) → (學(xué)分)
(學(xué)號(hào)) → (姓名于宙,年齡)`
即存在組合關(guān)鍵字中的某字段決定非關(guān)鍵字的情況叫挟。
滿足2NF的數(shù)據(jù)表設(shè)計(jì)示例:
把選課關(guān)系表SelectCourse改為如下三個(gè)表:
學(xué)生:Student(學(xué)號(hào),姓名,年齡)限煞;
課程:Course(課程名稱抹恳,學(xué)分);
選課關(guān)系:SelectCourse(學(xué)號(hào)署驻,課程名稱奋献,成績(jī))。
第三范式(3NF):
- 不允許傳遞依賴
滿足第三范式的數(shù)據(jù)庫(kù)表不允許存在如下依賴關(guān)系:
關(guān)鍵字段 → 非關(guān)鍵字段x → 非關(guān)鍵字段y
BC范式(BCNF):
- 不允許關(guān)鍵字間的依賴
關(guān)鍵字互相決定
(倉(cāng)庫(kù)ID) → (管理員ID)
(管理員ID) → (倉(cāng)庫(kù)ID)
第四范式(4NF):
- 消除表中的多值依賴關(guān)系
舉例:
有這樣一個(gè)關(guān)系 <倉(cāng)庫(kù)管理員旺上,倉(cāng)庫(kù)號(hào)瓶蚂,庫(kù)存產(chǎn)品號(hào)> ,假設(shè)一個(gè)產(chǎn)品只能放到一個(gè)倉(cāng)庫(kù)中宣吱,但是一個(gè)倉(cāng)庫(kù)可以有若干管理員窃这,那么對(duì)應(yīng)于一個(gè) <倉(cāng)庫(kù)管理員,庫(kù)存產(chǎn)品>有一個(gè)倉(cāng)庫(kù)號(hào)征候,而實(shí)際上杭攻,這個(gè)倉(cāng)庫(kù)號(hào)只與庫(kù)存產(chǎn)品號(hào)有關(guān),與管理員無(wú)關(guān)疤坝,就說這是多值依賴兆解。