er圖是一種關聯式資料庫邏輯設計的一種方法。
normalization(正規化): 是另一種 關係型資料庫的邏輯設計的方法。
normal forms(正規化): 1nf---> 2nf---->3nf---->bcnf---->4nf---->5nf
1.不好的資料庫會出現的問題:
a.修改異常(anomaly) b.刪除異常 c.插入異常 d.資料冗餘(redendant data)
2.函式依賴:functional dependencies
對在r中的屬性 a->b 來說,函式依賴就是:一旦a的值確定了,那麼就一定能唯一確定b的值
(即使不知道b的確切值,但可以明確b只能取乙個值)
3.阿姆斯特朗公理:大寫字母表示屬性集
a.包含規則:若y屬於x,那麼x->y;
b.傳遞規則:若x->y,y->z,那麼x->z;
c.增廣規則:if x->y then xz-yz;
d.合併規則:if x->y,x->z, then x-yz;
f.分解規則:if x->yz, then x->y,x->z
4.closure(閉包):
r: r 表示乙個關係(**),f 是函式依賴的集合(有這個的->),u表示屬性集合
閉包就是已經上面的乙個r,利用阿姆斯特朗公里,通過已知的f函式依賴,推導出所有的函式依賴關係f+
例子:對於關係模式r(abc),f=,求f+。
根據fd的定義,可推出f+=,共有43個fd。其中,φ表示空屬性集。
5.屬性集的閉包:closure of attributes
對f中所有x→a的a的集合稱為x的閉包,記為x+ .這個就是屬性集x的閉包
屬性集閉包就是屬性集x可以決定的屬性。 (通過函式依賴關係f推導)
應用:a.當x+包含r的所有屬性,則x是超鍵(超碼)
b.利用這個還可以驗證函式依賴: 驗證x->y是否是f可以推導出來的。若利用f,求x得閉包中,不包含y,那麼不是f推導出來的。
例: 對於關係模式r(abc),f=,求其候選鍵。
(1) 求屬性的閉包。
a+=abc,b+=b,c+=c。
(2) 求屬性集的閉包。
由bc→a,則(bc)+=abc,其餘屬性集閉包為屬性閉包的並集。
(3) 求其候選鍵。
顯然,r的候選鍵為a和bc。
6.函式依賴集的覆蓋cover
有函式依賴集f,g。若說f
覆蓋了g,那麼也就是說,g屬於f+;
若說,f和g等價,也就是說,f+ 與g+相同;
7.求最小的函式依賴集(
minamal fd集
)的步驟
fd:x->y
a. 對fd而言,右邊的化為單一屬性(利用分解定理)
b. 對每個fd而言,去掉左邊的冗餘屬性.(利用部分屬性可能就可以退出右邊了)
c.去掉多餘的函式依賴:有些依賴可以通過其他的推導出來
8.正則覆蓋:canonical cover
---fd的左部不重複
在求最小的函式依賴的基礎上增加一步:合併函式依賴(利用合併規則)
9.superkey 超碼: 超碼中的屬性可以決定唯一的元組(一行記錄),但是可能包含多餘屬性
candidate key : 最小的超碼,不存在多餘屬性
primary key: 候選碼中選為當主鍵的就是主碼
10.主屬性:出現在候選碼中的屬性
非主屬性:沒有出現在任何候選碼中的屬性
11.對於給定的關係r(a1,a2,…an)和函式依賴集f,可將其屬性分為4類:
l類 僅出現在函式依賴左部的屬性。
r 類 僅出現在函式依賴右部的屬性。
n 類 在函式依賴左右兩邊均未出現的屬性。
lr類 在函式依賴左右兩邊均出現的屬性。
若x(x∈r)是l類屬性,則x必為r的任一候選碼的成員。
若x(x∈r)是n類屬性,則x必包含在r的任一候選碼中。
若x(x∈r)是r類屬性,則x不在任何候選碼中。
12. 根據df求解候選碼的演算法:
1.正規化:
1nf:屬性不可分解,都是原子屬性
2nf:完全依賴(去除非主屬性對碼的部分依賴):就是說去除左邊的多餘屬性。
3nf:去除非主屬性對非主屬性的依賴 若a->b, b為非主屬性,那麼a不是是非主屬性
bcnf:去除主屬性對主屬性的依賴
4nf:去除多值依賴
多值依賴:multivaluted dependency 2.
無損分解 lossless decompositions
設ρ=是關係模式r的乙個分解,f是r上成立的fd集,那麼分解ρ相對於f是無損分解的充分必要條件是:
r1∩r2->r1或r1∩r2->r2,即:
r1和r2的屬性集的交集,能夠在f中推導出r1或r2的屬性集3.
依賴保持 dependency preservation
設關係模式r具有屬性集u和函式依賴集f,ρ=(r1,...,rk)是r的乙個分解,ui是ri的屬性集,fi是f在ui的投映。
若f+=f1
∪f2∪..∪fk
,則稱分解ρ具函式依賴保持性.
4.函式依賴分類:
完全函式依賴
設x,y是關係r的兩個屬性集合,x』是x的真子集,存在x→y,但對每乙個x』都有x』!→y,則稱y完全函式依賴於x。
部分函式依賴
設x,y是關係r的兩個屬性集合,存在x→y,若x』是x的真子集,存在x』→y,則稱y部分函式依賴於x。
傳遞函式依賴
設x,y,z是關係r中互不相同的屬性集合,存在x→y(y !→x),y→z,則稱z傳遞函式依賴於x。
資料庫規範化
規範化 normalization 是資料庫系統設計中非常重要的乙個技術。資料庫規範化能夠讓資料庫設計者更好地了解組織內部當前的資料結構,最終得到一系列的資料實體。資料庫規範化通過對資料庫表的設計,可以有效降低資料庫冗餘程度。在進行資料庫規範化的時候,我們有一系列的步驟需要遵循。我們把這些步驟稱作正...
資料庫規範化(二)
資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。正規化說明 1.1 第一...
1 2 4 資料庫規範化
資料庫正規化是建立資料庫關係表的規範,遵守正規化的級別越高,能夠讓資料冗餘越少,下一級別的正規化包含上一級別的所有正規化 但是對於特定的的冗餘資料 資料屬性的對應關係不變 能夠提高查詢速度 無需連表查詢 第一正規化 1nf normal form 確保每列原子性 確保每個字段不可再分,下表area可...