函式依賴與資料庫正規化

碼不能停發表於2017-05-12

什麼是完全與部分函式依賴?

解釋:完全和部分,是針對於某個集體而言的。這個集體,指的是主鍵是多個屬性的組合,而不是單個屬性的主鍵。理解了上面的函式依賴,那麼這裡的完全與部分就不用過多的解釋了。

例如:常見的選課表([學號,課程號],成績)[]裡面是主鍵。那麼完全函式依賴就是:非主鍵的屬性(成績)必須,全部依賴於主鍵所有的屬性([學號,課程號]),少一個都不可以。說白了,學號+課程號—>成績,只知道其中(學號,課程號)的一個,就不可以。只知道學號,不知道課程號,是沒有辦法知道某人的某個課程的成績的。這,就是完全函式依賴。

而,部分函式依賴,非主鍵的屬性依賴於主鍵中部分的屬性就可以了。

什麼是平凡和非平凡函式依賴?

解釋:所謂的平凡,就是很普通的意思,那麼非平凡就是不普通的意思。唉,你可別小看這個意思,它卻讓你容易理解概念的東西。那麼怎麼理解這個"平凡"呢。"平凡"的對立面可以說是特殊,特別,特別就是你平常不見的事物,就很特別,就不平凡。

例如:這個函式依賴(也就是關係):(學號,課程號)——>課程號,由學號和課程號推出課程號,這不是逗人玩兒嗎?誰會這麼二呀。已知課程號,你推出課程號,有意思嗎?這就是我認為的重複性生產,太平凡的一件事兒了。所以,這就是平凡函式依賴。

而 (學號,課程號)——>所在系號,從沒有推出有,這就是很特殊的一面,就是不平凡的。

說白了,對於一個函式依賴,由左邊——>右邊,如果右邊的屬性,在左邊出現過,那麼就是平凡函式依賴。反之,右邊的屬性沒有在左邊出現過,那麼就是非平凡函式依賴。

資料庫正規化

1NF:欄位是最小的的單元不可再分
2NF:滿足1NF,表中的欄位必須完全依賴於全部主鍵而非部分主鍵 (一般我們都會做到)
3NF:滿足2NF,非主鍵外的所有欄位必須互不依賴
4NF:滿足3NF,消除表中的多值依賴

應用資料庫正規化可以帶來許多好處,但是最重要的好處歸結為三點:
1.減少資料冗餘(這是最主要的好處,其他好處都是由此而附帶的)
2.消除異常(插入異常,更新異常,刪除異常)
3.讓資料組織的更加和諧…

2NF

只有一個主鍵的表如果符合第一正規化,那一定是第二正規化

REF

相關文章