1樓:匿名使用者
哎 以前學過 全給荒廢了
2樓:過氣的海盜
一、函式依賴概念
函式依賴是從數學角度來定義的
,在關係中用來刻畫關係各屬性之間相互制約而又相互依賴的情況。函式依賴普遍存在於現實生活中,比如,描述一個學生的關係,可以有學號、姓名、所在系等多個屬性,由於一個學號對應一個且僅一個學生,一個學生就讀於一個確定的系,因而當「學號」屬性的值確定之後,「姓名」及「所在系」的值也就唯一地確定了, 此時, 就可以稱「姓名」和「所在系」函式依賴於「學號」,或者說「學號」函式決定「姓名」和「所在系」,記作:學號→姓名、學號→所在系。
下面對函式依賴給出確切的定義。
定義:設u是屬性集合,r(u)是u上的一個關係,x、y是u的子集。若對於r(u)下的任何一個可能的關係, 均有x的一個值對應於y的唯一具體值,稱y函式依賴於x,記作x→y。
其中x稱為決定因素。進而若再有y→x,則稱x與y相互依賴,記作x←→y。例如表1.2所示「系」關係中:
如果系名值是唯一的,即各系名均不相同,那麼有函式依賴集:
系**→系名,系**→系地址,系**→系**,系**→系專業設定。
系名→系**,系名→系地址,系名→系**,系名→系專業設定。
可見,系名與系**相互依賴,記作系名←→系**。
函式依賴中還可細分為多種函式依賴,分別介紹如下:
二、部分函式依賴
設r(u)是屬性集u上的關係,x、y是u的子集,x』是x的真子集,若x→y且x』→y,則稱y部分依賴x,記作x→py。顯然,當且僅當x為複合屬性組時,才有可能出現部分函式依賴。
例如表1.6中, 顯然有課程號→課程名,課程號→開課教研室**。從另一角度看,只要課程號一定,同時課程名確定,開課教研室也就唯一確定,因此課程號+課程名→開課教研室**。
但它與前述課程號→開課教研室**是不同的,因為{課程號,課程名}存在真子集:「課程號」,課程號→開課教研室**,我們把課程號十課程名→開課教研室**稱為「開課教研室**」部分函式依賴於課程號+課程名。
三、完全函式依賴
設r(u)是屬性集u上的關係,x、y是u的子集,x』是x的真子集。若對於r(u)的任何一個可能的關係,有x→y但x』→y,則稱y完全函式依賴於x,記作x→fy。
所謂完全依賴是說明在依賴關係的決定項(即依賴關係的左項)中沒有多餘屬性,有多餘屬性就是部分依賴。
例如設關係模式r,r=r(學號,姓名,班號,課程號,成績),易知:
「(學號,班號,課程號)→成績」是r的一個部分依賴關係。 因此有決定項的真子集(學號,課程號),使得「(學號,課程號)→成績」成立,且「學號→成績」或「課程號→成績」成立,「(學號,課程號)→ 成績」是r的一個完全依賴關係。
四、傳遞函式依賴
設r(u)是屬性集u上的關係,x、y、z是u的子集,在r(u)中,若x→y,但y→x,若y→z,則x→z,稱z傳遞函式依賴於x,記作x→tz。
例如在一個學校中,每門課均是某一位老師教,但有些老師可教多門課,則有關係「教學」如表3.1所示。
由以上關係不難分析,課程名→職工號、職工號→課程名,但職工號和其他屬性的函式關係中都是決定因素,即職工號→老師名、職工號→職稱,在這種情況下,老師名、職稱傳遞函式依賴於課程名。
表3.1 教學表
課程名職工號老師名性別 出生日期
職稱 英語
t1 張平
男 55.6.3
教授 數學
t2 王文
女 62.10.5
副教授c語言t3 李迎
女 62.10.5
副教授資料庫t2 王文
女 62.10.5
副教授下面進一步舉例說明。
例如設車間考核職工完成生產定額關係為w:
w(日期,工號,姓名,工種,定額,超額,車間,車間主任)
請畫出該關係中存在的所有型別的函式依賴。
解答:因每個職工每個月超額情況不同,而定額一般很少變動,因此為了識別不同職工以及同一職工不同月份超額情況,選定「日期」與「工號」兩者組合作為主關鍵字。為了直觀醒目,可以在關係框架中的主關鍵字下方劃一橫線。
用箭頭標出各屬性的依賴情況,如圖3.3所示:
圖3.3 關係中各屬性的依賴情況
圖中表明:「超額」完全函式依賴於主關鍵字;「姓名」、「工種」和「車間」僅依賴於關鍵字中的「工號」;因「定額」依賴於「工種」,故「定額」傳遞函式依賴於「工號」;因「車間主任」函式依賴於「車間」,因而「車間主任」傳遞函式依賴於「工號」。
資料庫問題:什麼是非平凡函式依賴?
3樓:匿名使用者
定義:設一個關係為r(u),x和y為屬性集u上的子集,若x→y且x不包含y,則稱x→y為非平凡函式依賴,否則若xy則必有x→y,稱此x→y為平凡函式依賴.
例如:在一個職工關係中,職工號總能函式決定它本身,記作「職工號→職工號」,對於任一個給定的職工號,都有它本身的職工號值唯一對應,此為平凡函式依賴.又如:
職工號和性別構成的屬性子集總是能夠函式決定其中的職工號或性別屬性,可分別記作為「(職工號,性別)→職工號」和「(職工號,性別)→性別」,因為對於任何給定的一個元組中的職工號和性別的組合值,都唯一對應一個職工號值或性別值,不可能出現其他的職工號值或性別值,此種也為平凡函式依賴.
通常,主要討論的是非平凡函式依賴,即x→y且xy.如在職工關係中,職工號函式決定其他每個屬性都是非平凡函式依賴,另外「(職工號,姓名)→性別」也是非平凡函式依賴,雖然在這裡由決定因素中所含的職工號單屬性就能夠函式決定性別,而帶有的姓名屬性有些多餘.
4樓:匿名使用者
所謂函式依賴是指關係中一個或一組屬性的值可以決定其它屬性的值。函式依賴正象一個函式y = f(x)一樣x的值給定後,y的值也就唯一地確定了。
舉幾個例子,在學生表中(學號,姓名,年級),(學號,姓名)可以推出學號和姓名其中的任何一個,這就是平凡函式依賴.
通過(學號,姓名)可以推出這個學生所在的年級,這是非平凡函式依賴.((學號,姓名)就是一個x,學號或者姓名就是一個x')
通過屬性學號就可以推出年級,說明年級完全依賴於學號,這就是完全函式依賴.
而(學號,姓名)雖然也可以推出年級,但是它的真子集姓名卻推不出年級,這就是部分函式依賴,也叫不完全函式依賴.
5樓:匿名使用者
設r(u)是一個屬性集u上的關係模式,x和y是u的子集。
若對於r(u)的任意一個可能的關係r,r中不可能存在兩個元組在x上的屬性值相等, 而在y上的屬性值不等, 則稱 「x函式確定y」 或 「y函式依賴於x」,記作x→y。
x稱為這個函式依賴的決定屬性集(determinant)。
y=f(x)
說明:1. 函式依賴不是指關係模式r的某個或某些關係例項滿足的約束條件,而是指r的所有關係例項均要滿足的約束條件。
2. 函式依賴是語義範疇的概念。只能根據資料的語義來確定函式依賴。
例如「姓名→年齡」這個函式依賴只有在不允許有同名人的條件下成立
3. 資料庫設計者可以對現實世界作強制的規定。例如規定不允許同名人出現,函式依賴「姓名→年齡」成立。所插入的元組必須滿足規定的函式依賴,若發現有同名人存在, 則拒絕裝入該元組。
例: student(sno, sname, s***, sage, sdept)
假設不允許重名,則有:
sno → s***, sno → sage , sno → sdept,
sno ←→ sname, sname → s***, sname → sage
sname → sdept
但s*** -\→sage
若x→y,並且y→x, 則記為x←→y。
若y不函式依賴於x, 則記為x-\→y。
在關係模式r(u)中,對於u的子集x和y,
如果x→y,但y
資料庫函式依賴問題 50
6樓:楊森泉
你好!首先我們可以看到,c→d在r2上保持函式依賴,但是a→d,b→d在r1,r2上都不保持,所以做進一步判斷——
判斷的演算法如下:
對f上的每一個α→β使用下面的過程:
①令result=α;
②t=(result∩ri)+ ∩ri;
result=result∪t
(第二步的ri=,該步驟遍歷一遍分解出的關係模式)
要注意的是這裡的屬性閉包是在函式依賴集f下計算出來的,如果result中包含了β的所有屬性,則函式依賴α→β,分解是保持依賴的(當且僅當上述過程中f的所有依賴都被保持)。
那麼我們來判斷一下,首先是a→d:
先對r1,令result=a,result∩r1=a,a+=ad,t=a+∩r1=a,result=a;
再對r2,令result=a,result∩r2=空集,空集無法求閉包,那麼t=空集,result=a。
可以發現無論對於r1還是r2最後的result都是a,並未包含d,所以a→d未被保持,這裡已經可以得出該分解不保持函式依賴。
對於b→d也是一樣的方法:
先對r1,令result=b,result∩r1=b,b+=bd,t=b+∩r1=b,result=b;
再對r2,令result=b,result∩r2=空集,空集無閉包,t=空集,result=b;
result並未包含d,所以b→d也同樣未被保持,該分解不保持函式依賴。
資料庫中 函式依賴 是什麼?
7樓:飛☆愛
所謂函式依賴是指關係中一個或一組屬性的值可以決定其它屬性的值。函式依賴正象一個函式 y = f(x) 一樣,x的值給定後,y的值也就唯一地確定了。
如果屬性集合y中每個屬性的值構成的集合唯一地決定了屬性集合x中每個屬性的值構成的集合,則屬性集合x函式依賴於屬性集合y,計為:y→x。屬性集合y中的屬性有時也稱作函式依賴y→x的決定因素(determinant)。
例:身份證號→姓名。
資料庫函式依賴問題 5
8樓:匿名使用者
1:.將f中的所有依賴右邊化為單一元素
ab->c c->a bc->d acd->b be->c ce->f ce->a cf->b cf->d
d->e d->f
2:去掉f中所有冗餘依賴關係.做法為從f中去掉某關係,如去掉(x->y),然後在f中求x+,如果y在x+中,則表明x->是多餘的.需要去掉.
去掉ab->c 得到ab+={} 所以ab->c 不是冗餘的函式依賴
再依次去掉 1中其餘的函式依賴,計算去掉依賴左邊屬性的必包,發現
acd->b,ce->a,cf->d是冗餘的函式依賴,
ab->c c->a bc->d be->c ce->f cf->b d->e d->f
3:去掉f中的所有依賴左邊的冗餘屬性.作法是屬性中去掉其中的一個,看看是否依然可以推導
沒有 所以ab->c c->a bc->d be->c ce->f cf->b d->e d->f
Asp資料庫問題,asp 資料庫問題
move嘛,等於0表示和前一個記錄交換,等於1表示和後一個記錄交換。你看看會不會是在出的問題呢 當查詢出的記錄正好是第一個記錄時,moveprevious之後,再引用rs 會出錯。我又看了一下,應該就是和的問題。你在開啟記錄時使用了 id是主鍵吧?那麼開啟的rs中肯定只有最多一條記錄。如果這時使用r...
資料庫定時刪除的問題,acc資料庫自動刪除舊資料記錄問題
用sql server 的job也就是作業,定時的執行指定的儲存過程就行,在儲存過程裡面寫sql語句就行,想幹嘛就幹嘛。至於 還真不會直接寫job的 都是通過介面操作實現的。sql server 2000 是在企業管理器下的sql server 下,sql server 2005 2008是sql ...
Access資料庫問題查詢問題,求助。
試試 q1 select from 學生 where year 出生日期 1994 q2update 學生 set 獎學金 獎學金 500 where 獎學金 2000 access資料庫查詢語句問題,求助!考勤表的r eid 應該使用員工代號而不是員工姓名,員工表應與考勤表通過員工代號建立一對多關...