資料庫 (用例項解釋)關係正規化

2022-01-09 23:42:58 字數 2033 閱讀 5461

函式依賴其實就如數學上的函式,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...