關聯式資料庫邏輯設計
針對具體問題,如何構造乙個適合於它的資料模式
資料庫邏輯設計的工具──關聯式資料庫的規範化理論
關係模式由五部分組成,即它是乙個五元組:
r(u, d, dom, f)
r: 關係名
u: 組成該關係的屬性名集合
d: 屬性組u中屬性所來自的域
dom: 屬性向域的映象集合
f: 屬性間資料的依賴關係集合
乙個關係內部屬性與屬性之間的約束關係
現實世界屬性間相互聯絡的抽象
資料內在的性質
語義的體現
2. 資料依賴的型別
函式依賴(functional dependency,簡記為fd)
多值依賴(multivalued dependency,簡記為mvd)
其他
關係模式r(u, d, dom, f)
簡化為乙個三元組:
r(u, f)
當且僅當u上的乙個關係r滿足f時,r稱為關係模式 r(u, f)的乙個關係
[例1]建立乙個描述學校教務的資料庫:
學生的學號(sno)、所在系(sdept)
系主任姓名(mname)、課程名(cname)
成績(grade)
單一的關係模式 : student
u ={ sno, sdept, mname, cname, grade }
屬性組u上的一組函式依賴f:
f ={ sno → sdept, sdept → mname,
(sno, cname) → grade }
關係模式student(u, f)中存在的問題
1. 資料冗餘太大
2. 更新異常(update anomalies)
3. 插入異常(insertion anomalies)
4. 刪除異常(deletion anomalies)
結論:
student關係模式不是乙個好的模式。
「好」的模式:
不會發生插入異常、刪除異常、更新異常,
資料冗餘應盡可能少
原因:由存在於模式中的某些資料依賴引起的(這也是對關係
模式進行分解的根本理由)
解決方法:通過分解關係模式來消除其中不合適的資料依賴
把這個單一模式分成3個關係模式:
s(sno,sdept,sno → sdept);
sc(sno,cno,grade,(sno,cno) → grade);
dept(sdept,mname,sdept→ mname)
規範化理論正是用來改造關係模式,通過分解關係模式來消除其中不合適的資料依賴,以解決插入異常、刪除異常、更新異常和資料冗餘問題。最終使各關係模式達到某種程度的分離,即「一事一地」的模式設計原則
函式依賴(functional dependency,fd)
平凡函式依賴與非平凡函式依賴
完全函式依賴與部分函式依賴
傳遞函式依賴
設r(u)是乙個屬性集u上的關係模式,x和y是u的子集。
若對於r(u)的任意乙個可能的關係r,r中不可能存在兩個元組在x上的屬性值相等, 而在y上的屬性值不等, 則稱 「x函式確定y」 或 「y函式依賴於x」,記作x→y。
設有關係模式r(u),x和y是屬性集u的子集,函式依賴(functional dependency,簡記為fd)是形為x→y的乙個命題,若對於r(u)的任意乙個可能的關係r ,對r中任意兩個元組t和s,都有t[x]=s[x]蘊涵
t[y]=s[y],那麼稱fd x→y在關係模式r(u)中成立。
所有關係例項均要滿足
語義範疇的概念
例如:姓名→年齡這個函式依賴只有在該部門沒有
同名人的條件下成立
在關係模式r(u)中,對於u的子集x和y,
如果x→y,但y x,則稱x→y是非平凡的函式依賴
若x→y,但y x, 則稱x→y是平凡的函式依賴
例:在關係sc(sno, cno, grade)中,
非平凡函式依賴: (sno, cno) → grade
平凡函式依賴: (sno, cno) → sno
(sno, cno) → cno
若x→y,則x稱為這個函式依賴的決定屬性組,也稱為決定因素(determinant)。
若x→y,y→x,則記作x←→y。
若y不函式依賴於x,則記作x→y。
在r(u)中,如果x→y,並且對於x的任何乙個真子集x』,都有x』 y, 則稱y對x完全函式依賴,記作
x f y。
若x→y,但y不完全函式依賴於x,則稱y對x部分函式依賴,記作x p y。
[例1] 中(sno,cno)→grade是完全函式依賴,
(sno,cno)→sdept是部分函式依賴
因為sno →sdept成立,且sno是(sno,cno)的真子集
在r(u)中,如果x→y,(y x) ,y→x
y→z,z ∈y, 則稱z對x傳遞函式依賴。
記為:x → z
注: 如果y→x, 即x←→y,則z直接依賴於x。
例: 在關係std(sno, sdept, mname)中,有:
sno → sdept,sdept → mname
mname傳遞函式依賴於sno
更新資料庫物件依賴關係
在sql server 中我們會通過郵件選單來檢視乙個物件的依賴關係,但有些意外情況會造成檢視結果並不是非常的準確!可以嘗試以下例子 第一步 顛倒順序,建立乙個缺失依賴關係的儲存過程 code create proc dbo.testrefresh1 asexec dbo.testrefresh2 ...
查詢資料庫物件依賴關係
use testdb1 goselect distinct object name object id as objname from sys.sql dependencies where referenced major id object id dbo.tblprojects order by ...
關係模式,函式依賴,正規化
關聯式資料庫,關聯式資料庫的基本結構是關係模式,比較好的關係模式集合,能有效控制資料庫冗餘,對資料庫進行有效的管理。下面對關係模式的函式依賴,正規化和模式設計方法進行分析。知識點 關係模式,函式依賴,正規化 關係模式 關係實質上是一張二維表,表的每一行資料為乙個元組,每一列為乙個屬性。關係模式就是對...