函式依賴其實就如數學上的函式,y=x+1,自變數x一定的情況下,因變數y也確定了,那麼就可以說y的取值就依賴於x的取值。
btw:很多人不理解為什麼要反著說,不說x確定y,而說y依賴x。其實很簡單,創造者習慣於把主鍵(x)定下來當乙個固定量,用非主鍵(y)來跟主鍵部分比較,看看是否依賴。
規範化的過程可概括如下:
正規化:
第一正規化:屬性(列)不可分割。第一正規化:所謂第一正規化,就是資料表的列不可再分。
不過能不能再分並沒有絕對的答案,看需求,也就是看你的設計目標而定。
例子:就比如說名字吧,我可以再分成英文名和中文名;**我也可以分成移動**和座機。簡單來說,第一正規化是關聯式資料庫的基礎,但字段是否真的不可拆分,根據你的設計目標而定。
例如:
學號姓名選課1
張三語文、數學、英語2李四
語文、數學
上面這個表明顯是可以再分的,所以它是違反第一正規化的。
修改:
學號姓名選課1
張三語文1張三
數學1張三英語2李四
語文2李四數學
第二正規化:在1nf的基礎上,任何非主屬性都不能部分依賴任一侯選碼(即 必須完全依賴) (消除部分依賴)
例如:
學號課程
學分成績1數學
61001英語
4902數學
6903英語
4100
上表主鍵為(學號,課程)
(學號,課程)→(成績,學分),學號和課程可以唯一確定成績和學分
但是對於學分來說,只需要知道課程就能確定學分了,所以學分部分依賴於(學號,課程),不滿足第二正規化。
修改:把它拆成兩個表
學號課程成績1
數學1001英語
902數學903英語
100課程
學分數學6英語
4
第三正規化:在2nf的基礎上,任何非主屬性都不能傳遞依賴任一侯選碼,即非主屬性不依賴於其他非主屬性。(消除傳遞依賴)例如:
學號姓名
班級班主任1張三
a張32李四
a張33王五
b王54趙六
b王5上表中,主鍵為(學號)。
很明顯所有非主屬性都依賴於主鍵,不存在部分依賴,滿足第二正規化。
但是,表中存在乙個傳遞依賴,(學號)→(班級)→(班主任),即 非主屬性(班級)依賴於其他非主屬性(班主任)。
不滿足第三正規化。
修改:
學號姓名班級1
張三a2李四
a3王五b
4趙六b班級
班主任a張3b
王5
bc正規化:在3nf基礎上,任何欄位都不能傳遞依賴任一侯選碼。還有第四正規化、第五正規化。
太麻煩了,基本不需要,所以這裡就不介紹了。
關係型資料庫三正規化解釋
書上講了好多,歸結起來3句話 1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫...
關聯式資料庫正規化
在建立乙個資料庫的過程中,必須依照一定的準則,這些準則被稱為正規化,從第一到第六共六個正規化,一般資料庫設計只要遵循第一正規化,第二正規化,和第三正規化就足夠了。滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂...
關聯式資料庫正規化
判斷是第幾正規化 概念 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。種類 目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf...