當前位置:首頁 » 操作系統 » 資料庫閉包

資料庫閉包

發布時間: 2023-09-01 04:51:02

㈠ 關於資料庫閉包的問題

已知 關系模式E<U,F>,其中U={A,B,C,D,E};F={AB→C,B→D ,C→E,EC→B,AC→B}。
求(AB)F+
解:設X(0)=AB
計算X(1);逐一的掃描F集合中各個函數的一覽,找左部位A,B和AB的函數依賴。得到兩個AB→C,B→D。於是X(1)=AB∪CD=ABCD.
因為X(0)≠X(1),所以再找出左部位ABCD子集的那些函數依賴 又得到,C→E,AC→B
於是X(2)=X(1)∪BE=ABCDE.
因為X(2)已等於全部屬性集合,所以(AB)F+=ABCDE

㈡ 資料庫:關系模式R(A,B,C,D,E)...函數依賴F={A-D,E-D,D-B,BC-D,CD-A} 求C的閉包坐等高手。。

①A -> BC, B -> D所以A -> D所以A -> DC -> E
所以呢A -> ABCDE
②E -> A, A -> ABCDE, 所以E -> ABCDE
③CD -> E, 所以呢CD -> ABCDE
④B -> D, BC -> CD,所以呢BC -> ABCDE
能推出abcde而又不包含多餘成分的就是候選鍵 所以上面仨是候選鍵 A+的話是求閉包吧

㈢ 關系資料庫設計理論

數據依賴是關系內部屬性之間相關聯系的表達,是語義的體現,是構成數據的約束,大多數數據依賴是函數依賴,它是關系中「鍵」概念的范化。
使用數據依賴這一概念來定義關系模式的規范形式,即規范化理論。

函數依賴FD
A1,A2,……,An——>B1,B2,……,Bm
(若兩個元組A1到An上相同則B1到Bm也相同,A1到An函數決定B1到Bm)

從已知FD推斷其它FD
FD的集合T,S
T與S等價:關系實例集合滿足S與其滿足T的情況完全一樣
(S是從T中推斷而來,T也是從S中推斷而來)
S從T中推斷而來:滿足T的關系實例也滿足S(S蘊涵於T)

分解/結合規則:

平凡函數依賴
一個約束對所有關系實例都成立,且與其它約束無關
平凡FD的右邊是左邊的子集
平凡依賴規則:

(註:
非平凡函數依賴:僅當其右邊屬性集中至少有一個屬性不屬於左邊的集合。例如: title year →year length
完全非平凡函數依賴:僅當其右邊集合中的屬性均不在左邊集合中。例如: title year →length)

屬性的閉包
S下{A1,A2,……An}的閉包{A1,……An}上標+
就是A中可以從S推斷出來的右邊變成一個集合
從一個給定集合A出發,不斷擴展這個集合,對於S中的FD分解使右邊只有一個屬性,然後對於FD,只要左邊都在集合中就把右邊也加到集合中。p42

傳遞規則

函數依賴的閉包集合
求函數依賴集F的閉包F+:求所有屬性子集的閉包(不考慮空集),然後利用每個閉包來寫FD(A->空集也要寫)

S的基本集:任何和S等價的FD集合

最小化基本集:右邊均是單一屬性;刪除任何一個FD後不再是基本集;
對於任何一個FD,若刪除其左邊一個或多個屬性,不再是基本集

投影函數依賴
R投影到R1
函數依賴集S的投影為滿足以下條件的FD的集合:1.從S推斷而來2.只包含R1中的屬性
對R1的所有子集求閉包,得到FD的基本集,簡化為最小基本集

「求屬性子集閉包」的幾個主要應用
1.求所有候選鍵
2.求所有非平凡FD
3.求所有違反BCNF的非平凡FD(投影函數依賴應用1)
4.求非平凡FD的最小基本集(投影函數依賴應用2)

簡化規則:
1.不必考慮空集(適用於1-4)
2.不必考慮不能推出非平凡函數依賴的屬性子集X(適用於1-4)
2.1屬性子集X的任何一個子集都不是FD的左部,無法推出非平凡FD,無需求該屬性子集X的閉包。如例1.
2.2不必考慮屬性全集U的閉包。
2.3 屬性子集X+的閉包依然是X+本身,無法推出非平凡FD,不需要再求X+的閉包
3.如果已知屬性子集X, X+是屬性全集,那麼就無需考慮任何X超集的閉包。(注意:!!!!!!不適用於2!!!!!!)

異常:冗餘;更新異常;刪除異常

分解關系
將一個關系用多個不存在異常的關系替換

Boyce-Codd範式BCNF
每個非平凡FD的左邊都必須是超鍵
任何一個二元關系屬於BCNF
(BCNF範式在3NF的基礎上,消除主屬性對鍵的部分函數依賴與傳遞函數依賴)

分解為BCNF
輸入:關系R0其上的函數依賴集S0
輸出:由R0分解出的關系集合,每個關系都屬於BCNF
方法:R=R0 S=S0
1.檢驗R是否屬於BCNF若是則返回{R}
2.有BCNF違例X->Y,計算X的閉包,令R1為X的閉包,R2為X與不在X的閉包中的屬性
3.計算R1,R2的投影函數依賴S1,S2
4.遞歸檢驗R1,R2

分解的優勢
1.消除異常
2.信息的可恢復
3.依賴的保持
BCNF可保持1,2
3NF可保持2,3

無損連接的分解
子關系經連接(這里指自然連接)運算可恢復原關系
保持依賴的分解
子關系的函數依賴集可蘊涵原函數依賴集

從分解中恢復信息
無損連接:可通過連接分解的各個關系重構原關系
若Y->Z在關系R上成立,且R的屬性集為X∪Y∪Z,則R=π{下標X∪Y}(R)⋈π{下標Y∪Z}(R)
chase演算法:檢驗一個分解是否含有無損連接,即判斷是否可以根據F中的FD來證明所有屬於π{下標s1}(R)⋈π{下標s2}(R)⋈……⋈π{下標sk}(R)的元組t也屬於R

依賴的保持
BCNF無法保持 p57例3.25

第三範式3NF
擁有無損連接和依賴保持性質
條件:對於每個非平凡FD,或者其左邊是超鍵,或者其右邊僅由主屬性構成

㈣ 資料庫屬性集合的閉包怎麼求

計算屬性集閉包X+的演算法如下:
輸入:X,F
輸出:
X+
迭代演算法的步驟:

選取X+的初始值為X
,即X+={X};

計算X+,
X+={XZ}
,其中Z要滿足如下條件:
YX+,且F中存在一函數依賴Y→Z。實際上就是以X+中的屬性子集作為函數依賴的決定因素,在F中搜索函數依賴集,找到函數依賴的被決定屬性Z放到X+中。

判斷:如果X+沒有變化?或X+等於U?則X+就是所求的結果,演算法終止。否則轉②。
因為U是有窮的,所以上述迭代過程經過有限步驟之後就會終止。

㈤ 資料庫中的閉包的意思

閉包是可以包含自由(未綁定)變數的代碼塊;這些變數不是在這個代碼塊或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義。「閉包」 一詞來源於以下兩者的結合:要執行的代碼塊(由於自由變數的存在,相關變數引用沒有釋放)和為自由變數提供綁定的計算環境(作用域)。在 Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby 和 Python 等語言中都能找到對閉包不同程度的支持。

閉包的價值在於可以作為函數對象 或者匿名函數,對於類型系統而言這就意味著不僅要表示數據還要表示代碼。支持閉包的多數語言都將函數作為第一級對象,就是說這些函數可以存儲到變數中、作為參數傳遞給其他函數,最重要的是能夠被函數動態地創建和返回。

熱點內容
電腦配置夠但為什麼打lol掉幀 發布:2025-02-01 01:37:08 瀏覽:315
21款朗逸哪個配置比較劃算 發布:2025-02-01 01:35:32 瀏覽:975
建築動畫片腳本 發布:2025-02-01 01:35:21 瀏覽:468
管家婆如何用阿里雲伺服器 發布:2025-02-01 01:29:09 瀏覽:648
解壓耳放 發布:2025-02-01 01:20:18 瀏覽:175
cars演算法 發布:2025-02-01 01:02:26 瀏覽:176
資料庫超載 發布:2025-02-01 00:57:15 瀏覽:32
fgo安卓如何玩日服 發布:2025-02-01 00:49:40 瀏覽:715
sql2000服務管理器 發布:2025-02-01 00:48:02 瀏覽:677
榮耀暢玩什麼配置 發布:2025-02-01 00:36:35 瀏覽:458