資料庫正規化

2022-09-21 03:39:09 字數 1859 閱讀 8198

先解釋一下涉及到的一些概念,以教務系統為例

函式依賴:

若在一張表中,在屬性(或屬性組)x的值確定的情況下,必定能確定屬性y的值,那麼就可以說y函式依賴於x,寫作 x → y

例如:1:系名 → 系主任

2:學號 → 系主任

3:(學號,課名) → 分數

像如下的關係就不成立

1:學號 → 課名

2:學號 → 分數

完全函式依賴:

在一張表中,若 x → y,且對於 x 的任何乙個真子集(假如屬性組 x 包含超過乙個屬性的話),x ' → y 不成立,那麼我們稱 y 對於 x 完全函式依賴 

例如:1:學號 f→ 姓名

2:(學號,課名) f→ 分數

部分函式依賴:

假如 y 函式依賴於 x,但同時 y 並不完全函式依賴於 x,那麼我們就稱 y 部分函式依賴於 x

例如:1:(學號,課名) p→ 姓名

傳遞函式依賴:

假如 z 函式依賴於 y,且 y 函式依賴於 x (y 不包含於 x,且 x 不函式依賴於 y),那麼我們就稱 z 傳遞依賴於 x 

碼:

設 k 為某錶中的乙個屬性或屬性組,若除 k 之外的所有屬性都完全函式依賴於 k(這個「完全」不要漏了),那麼我們稱 k 為候選碼,簡稱為

在實際中我們通常可以理解為:假如當 k 確定的情況下,該錶除 k 之外的所有屬性的值也就隨之確定,那麼 k 就是碼。一張表中可以有超過乙個碼。(實際應用中為了方便,通常選擇其中的乙個碼作為主碼

對於上表,(學號、課名)這個屬性組就是碼。該表中有且僅有這乙個碼。(假設所有課沒有重名的情況)

主屬性:

包含在任何乙個碼中的屬性成為主屬性

第一正規化(1nf):

1nf的定義為:符合1nf的關係中的每個屬性都不可再分

第二正規化(2nf):

2nf在1nf的基礎之上,消除了非主屬性對於碼的部分函式依賴。

判斷方法:

第一步:找出資料表中所有的碼。

第二步:根據第一步所得到的碼,找出所有的主屬性。

第三步:資料表中,除去所有的主屬性,剩下的就都是非主屬性了。

第四步:檢視是否存在非主屬性對碼的部分函式依賴

對於上表,碼只有乙個(學號、課名),則主屬性只有學號和課名,剩餘的屬性都為非主屬性

對於非主屬性姓名來說,存在非主屬性 姓名 對碼(學號,課名)的部分函式依賴,所以上表不滿足第二正規化,將表進行拆分,以滿足第二正規化,結果如下:

第三正規化(3nf) :

3nf在2nf的基礎之上,消除了非主屬性對於碼的傳遞函式依賴,以上述拆分後的結果為例

對於選課表,主碼為(學號,課名),主屬性為學號和課名,非主屬性只有乙個,為分數,不可能存在傳遞函式依賴,所以選課表的設計,符合3nf的要求。

對於學生表,主碼為學號,主屬性為學號,非主屬性為姓名、系名和系主任。因為 學號 → 系名,同時 系名 → 系主任,所以存在非主屬性系主任對於碼學號的傳遞函式依賴,所以學生表的設計,不符合3nf的要求

將上表進行拆分以滿足第三正規化,結果如下:

bcnf正規化:

在 3nf 的基礎上消除主屬性對於碼的部分與傳遞函式依賴

以如下的結構為例:

顯然滿足3nf,但是存在主屬性倉庫名對於碼(管理員,物品名)的部分函式依賴,所以不滿足bc正規化

資料庫 資料庫正規化

關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...

資料庫正規化 三正規化

所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...

資料庫正規化

注 表在定義中被稱為關係,記作r 欄位在定義中被稱作屬性 模式 資料庫中有三種模式,外模式,內模式,模式 粗體是關鍵字的意思 斜體為外來鍵 以前寫下來的,但是用了多年的帳號已經忘了,唯有把文章轉到這裡來了 真暈哦 http blog.csdn.net fantasylu archive 2004 0...