函式依賴
記 a->b 表示 a 函式決定 b,也可以說 b 函式依賴於 a。
如果 是關係的乙個或多個屬性的集合,該集合函式決定了關係的其它所有屬性並且是最小的,那麼該集合就稱為鍵碼。
對於 a->b,如果能找到 a 的真子集 a',使得 a'-> b,那麼 a->b 就是部分函式依賴,否則就是完全函式依賴。
對於 a->b,b->c,則 a->c 是乙個傳遞函式依賴。
異常以下的學生課程關係的函式依賴為 -> ,鍵碼為 。也就是說,確定學生和課程之後,就能確定其它資訊。
snosnamesdeptmnamecnamegrade1學生-1學院-1院長-1課程-1902學生-2學院-2院長-2課程-2802學生-2學院-2院長-2課程-11003學生-3學院-2院長-2課程-295
不符合正規化的關係,會產生很多異常,主要有以下四種異常:
正規化正規化理論是為了解決以上提到四種異常。
高階別正規化的依賴於低階別的正規化,1nf 是最低級別的正規化。
1. 第一正規化 (1nf)
屬性不可分。
2. 第二正規化 (2nf)
每個非主屬性完全函式依賴於鍵碼。
可以通過分解來滿足。
分解前
snosnamesdeptmnamecnamegrade1學生-1學院-1院長-1課程-1902學生-2學院-2院長-2課程-2802學生-2學院-2院長-2課程-11003學生-3學院-2院長-2課程-295
以上學生課程關係中, 為鍵碼,有如下函式依賴:
grade 完全函式依賴於鍵碼,它沒有任何冗餘資料,每個學生的每門課都有特定的成績。
sname, sdept 和 mname 都部分依賴於鍵碼,當乙個學生選修了多門課時,這些資料就會出現多次,造成大量冗餘資料。
分解後
關係-1
snosnamesdeptmname1學生-1學院-1院長-12學生-2學院-2院長-23學生-3學院-2院長-2
有以下函式依賴:
關係-2
snocnamegrade1課程-1902課程-2802課程-11003課程-295
有以下函式依賴:
3. 第三正規化 (3nf)
非主屬性不傳遞函式依賴於鍵碼。
上面的 關係-1 中存在以下傳遞函式依賴:
可以進行以下分解:
關係-11
snosnamesdept1學生-1學院-12學生-2學院-23學生-3學院-2
關係-12
sdeptmname學院-1院長-1學院-2院長-2
關聯式資料庫正規化
在建立乙個資料庫的過程中,必須依照一定的準則,這些準則被稱為正規化,從第一到第六共六個正規化,一般資料庫設計只要遵循第一正規化,第二正規化,和第三正規化就足夠了。滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂...
關聯式資料庫正規化
判斷是第幾正規化 概念 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。種類 目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf...
關係 關係模式 關聯式資料庫
表student 在關係模型的術語中,關係用來指代表,而元組用來指代行。類似地,屬性指代的是表中的列。在表student中有五個屬性 sno sname s sage和sdept。我們用關係例項這個術語來表示乙個關係的特定例項,也就是所包含的一組特定的行。表student的例項中有5個元組,對應5個...