第三正規化出現的原因
bcnf是一種很嚴格的正規化,為了容易獲得保持依賴的分解,我們考慮一種比較弱的正規化,就是第三正規化。
第三正規化
具有函式依賴集f的關係模式r屬於第三正規化的條件是: 對於f+中所有形如a→b的函式依賴(其中a,b都是r的屬性),三個條件中至少有乙個成立:
①a→b是乙個平凡的函式依賴
②a是r的乙個超碼
③b-a中的每個屬性c都包含於r的候選碼中(每個c可以包含於不同的候選碼中)
邏輯蘊涵
給定關係模式r®,如果r®的每乙個滿足f的例項也滿足f,則r上的函式依賴f被r上的函式依賴集f邏輯蘊涵。
f+的再定義
f+是函式依賴集f的閉包,是被f邏輯蘊涵的所有函式依賴的集合。
armstrong公理
用處: 尋找邏輯蘊涵的函式依賴
自反律:若a是乙個屬性集且b是a的子集,則a→b成立。
增補律:若a→b成立且c為乙個屬性集,則ca→cb成立。
傳遞律:若a→b和b→c成立,則a→c成立。
這三條公理是完備的,對於給定的函式依賴集f,利用它們可以產生全部f+。
三個附加規則
簡化的公理,可以由armstrong公理證明。
合併律:若a→b和a→c成立,則a→bc成立
分解律:若a→bc成立,則a→b和a→c成立
偽傳遞律:若a→b和cb→d成立,則ac→d成立
計算f+的偽**
f+ = f
repeat
for eachf+中的函式依賴f 在f上應用自反律和增補律,將結果加入到f+中
for eachf+中一對函式依賴f1和f2iff1和f2可以使用傳遞律結合起來 將結果加入到f+中
untilf+不再變化
屬性集的閉包
令a是r的乙個屬性集,我們將函式依賴集f下被a函式確定的所有屬性的集合稱為f下a的閉包。(函式確定: 函式依賴a→b 讀作 a函式確定b)
計算a+的偽**
result = a;
repeat
for eachf中的函式依賴b→cdo
begin
ifb是result的子集
thenresult = result 並 c;
untilresult 不變
屬性集閉包的用途
①判斷a是否為超碼: 檢查a+是否包含r中所有屬性
②檢查函式依賴a→b是否成立: 檢查 b是否是a+的子集
③計算f+: 對r中任意屬性集c,對任意c+的子集d,輸出乙個函式依賴c→d
筆記 關聯式資料庫設計題目型別彙總
計算某一屬性或屬性集 比如 的閉包 計算某函式依賴 比如a b 是否邏輯蘊含在函式依賴集中 求解乙個關係r u,f 的候選碼 r為關係模式,u為屬性集,f為函式依賴集 判斷某屬性集是否為關係的超碼 判斷某屬性是否為無關屬性 法是判斷分解是否為無損連線分解的充要條件,請使用 法判斷某分解是否無損連線 ...
資料庫筆記(關聯式資料庫相關)
關聯式資料庫由被稱為關係 relation 的 組成。關係中的每乙個列被稱為屬性 attribution 每一行被稱為一條記錄 record 每乙個儲存了實際資料的關係被稱為關係例項 relation instance 在關係的屬性中,每一條記錄的某個屬性被約束在某個特定的資料型別上,這個型別被稱為...
關聯式資料庫設計正規化
簡介 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴德斯科正規化 bcnf 第四正規化 4nf 和第...