數(shù)據(jù)庫三范式介紹

示例表數(shù)據(jù)

假設有一個名為employee的員工表揉阎,它有九個屬性:id(員工編號)、name(員工名稱)蚂维、mobile(電話)戳粒、zip(郵編)、province(省份)虫啥、city(城市)享郊、district(區(qū)縣)、deptNo(所屬部門編號)孝鹊、deptName(所屬部門名稱)炊琉、表總數(shù)據(jù)如下:

id name mobile zip province city district deptNo deptName
101 張三 13910000001<br />13910000002 100001 北京 北京 海淀區(qū) D1 部門1
101 張三 13910000001<br />13910000002 100001 北京 北京 海淀區(qū) D2 部門2
102 李四 13910000003 200001 上海 上海 靜安區(qū) D3 部門3
103 王五 13910000004 510001 廣東省 廣州 白云區(qū) D4 部門4
103 王五 13910000004 510001 廣東省 廣州 白云區(qū) D5 部門 5

由于此員工表是非規(guī)范化的,我們將面對如下的問題。

  • 修改異常:上表中張三有兩條記錄苔咪,因為他隸屬于兩個部門锰悼。如果我們要修改張三的地址,必修修改兩行記錄团赏。假如一個部門得到了張三的新地址并進行了更新箕般,而另一個部門沒有,那么此時張三在表中會存在兩個不同的地址舔清,導致了數(shù)據(jù)不一致

  • 新增異常:假如一個新員工假如公司丝里,他正處于入職培訓階段,還沒有被正式分配到某個部門体谒,如果deptNo字段不允許為空杯聚,我們就無法向employee表中新增該員工的數(shù)據(jù)。

  • 刪除異常:假設公司撤銷了D3部門抒痒,那么在刪除deptNo為D3的行時幌绍,會將李四的信息也一并刪除。因為他隸屬于D3這一部門故响。

第一范式(1NF)

表中的列只能含有原子性(不可再分)的值傀广。

表中的張三有兩個手機號存儲在mobile列中,違反了 1NF 規(guī)則彩届。為了使表滿足 1NF伪冰,數(shù)據(jù)應該修改如下:

id name mobile zip province city district deptNo deptName
101 張三 13910000001 100001 北京 北京 海淀區(qū) D1 部門1
101 張三 13910000002 100001 北京 北京 海淀區(qū) D1 部門1
101 張三 13910000001 100001 北京 北京 海淀區(qū) D2 部門2
101 張三 13910000002 100001 北京 北京 海淀區(qū) D2 部門2
102 李四 13910000003 200001 上海 上海 靜安區(qū) D3 部門3
103 王五 13910000004 510001 廣東省 廣州 白云區(qū) D4 部門4
103 王五 13910000004 510001 廣東省 廣州 白云區(qū) D5 部門 5

第二范式(2NF)

第二范式要同時滿足下面兩個條件

  • 滿足第一范式

  • 沒有部分依賴

例如,員工表的一個候選鍵是{id樟蠕,mobile贮聂,deptNo},而deptName依賴于deptNo坯墨,同樣 name 依賴于 id,因此不是 2NF的病往。為了滿足第二范式的條件捣染,需要將這個表拆分成employee、dept停巷、employee_dept耍攘、employee_mobile四個表。如下:

員工表 employee

id name zip province city district
101 張三 100001 北京 北京 海淀區(qū)
102 李四 200001 上海 上海 靜安區(qū)
103 王五 510001 廣東省 廣州 白云區(qū)

部門表 dept

deptNo deptName
D1 部門1
D2 部門2
D3 部門3
D4 部門4
D5 部門5

員工部門關系表 employee_dept

id deptNo
101 D1
101 D2
102 D3
103 D4
104 D5

員工電話表 employee_mobile

id mobile
101 13910000001
101 13910000002
102 13910000003
103 13910000004

第三范式(3NF)

第三范式要同時滿足下面兩個條件

  • 滿足第二范式
  • 沒有傳遞依賴

例如畔勤,員工表的province蕾各、city、district依賴于zip庆揪,而zip依賴于id式曲,換句話說,province、city吝羞、district傳遞依賴于id兰伤,違反了 3NF 規(guī)則。為了滿足第三范式的條件钧排,可以將這個表拆分成employee和zip兩個表敦腔,如下

employee

id name zip
101 張三 100001
102 李四 200001
103 王五 510001

地區(qū)表area

zip province city district
100001 北京 北京 海淀區(qū)
200001 上海 上海 靜安區(qū)
51000 廣東省 廣州 白云區(qū)

在關系數(shù)據(jù)庫模型設計中,一般需要滿足第三范式的要求恨溜。如果一個表具有良好的主外鍵設計符衔,就應該是滿足3NF的表。規(guī)范化帶來的好處是通過減少數(shù)據(jù)冗余提高更新數(shù)據(jù)的效率糟袁,同時保證數(shù)據(jù)完整性判族。然而,我們在實際應用中也要防止過度規(guī)范化的問題系吭。規(guī)范化程度越高五嫂,劃分的表就越多,在查詢數(shù)據(jù)時越有可能使用表連接操作肯尺。而如果連接的表過多沃缘,會影響查詢性能。關鍵的問題是要依據(jù)業(yè)務需求则吟,仔細權衡數(shù)據(jù)查詢和數(shù)據(jù)更新關系槐臀,指定最合適的規(guī)范化程度。不要為了遵循嚴格的規(guī)范化規(guī)則而修改業(yè)務需求氓仲。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末水慨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子敬扛,更是在濱河造成了極大的恐慌晰洒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啥箭,死亡現(xiàn)場離奇詭異谍珊,居然都是意外死亡,警方通過查閱死者的電腦和手機急侥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門砌滞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坏怪,你說我怎么就攤上這事贝润。” “怎么了铝宵?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵打掘,是天一觀的道長。 經(jīng)常有香客問我,道長胧卤,這世上最難降的妖魔是什么唯绍? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮枝誊,結果婚禮上况芒,老公的妹妹穿的比我還像新娘。我一直安慰自己叶撒,他們只是感情好绝骚,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祠够,像睡著了一般压汪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上古瓤,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天止剖,我揣著相機與錄音,去河邊找鬼落君。 笑死穿香,一個胖子當著我的面吹牛,可吹牛的內容都是我干的绎速。 我是一名探鬼主播皮获,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纹冤!你這毒婦竟也來了洒宝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萌京,失蹤者是張志新(化名)和其女友劉穎雁歌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體知残,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡靠瞎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橡庞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片较坛。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡印蔗,死狀恐怖扒最,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情华嘹,我是刑警寧澤吧趣,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響强挫,放射性物質發(fā)生泄漏岔霸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一俯渤、第九天 我趴在偏房一處隱蔽的房頂上張望呆细。 院中可真熱鬧,春花似錦八匠、人聲如沸絮爷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坑夯。三九已至,卻和暖如春抡四,著一層夾襖步出監(jiān)牢的瞬間柜蜈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工指巡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淑履,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓厌处,卻偏偏與公主長得像鳖谈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阔涉,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容