資料庫主鍵問題 - 高考

Table of Contents

※ 引述《Sunofgod ( )》之銘言:
: 題目來自101國營資訊專業科目非選擇題
: http://ppt.cc/V4oO 公職王的擬答
: Joe 的公司有3 名員工及3 個部門。員工分別是Bob、Joe 及Mary(按字母順序排序)
: 部門分別是HR MIS Sale(按字母順序)。其中Bob屬HR部門 Joe屬MIS部門 Mary為新進同仁
: 尚未有部門 Sale部門則無員工
: 資料塑模中建立兩個關聯 員工任務及部門
: 用來紀錄員工任務及隸屬部門。
: 員工任務的關聯綱目為 員工任務(EID,EName,DID,JobID,JName,Title,Salary)
: ,函數相依如下 EID-->{EName,DID,JobID}
: JobID-->JName
: {EID,Title}-->Salary
: 部門的關聯綱目為 部門(DID,DName) 主鍵為DID
: 員工任務.DID 參照 部門.DID
: Mary因不屬於任何部門 故DID為NULL
: (一)員工任務的主鍵為?
: (二)請將員工任務分解成滿足3NF的關聯綱目,並指出各綱目主鍵
: 查到的答案為EID
: 但我想問為什麼{EID,Title}不行?
: 很弱的問題 請多多包涵

我廢話比較多用回文比較快...。

你仔細看關聯表跟列舉的相依關係
會發現沒有任何項目可以決定Title與EID
所以實際上應該是EID, Title可以決定所有項目
所以aids講的是對的
你的認為也是對的
可是網路上的解答,這題,是錯的。

然後...
EID Title 兩個屬性可以決定整個關聯表屬性,且無其他多餘(非鍵值)屬性
這是主鍵沒錯

主鍵應該要滿足兩個條件,最小性或者最簡性,以及唯一性,然後從候選鍵中被選出
(如果有候選鍵的話啦)

假設你把其他亂七八糟的非鍵值屬性都扔進去...
的確照你的理解是一樣可以決定關聯表內其他值沒錯

實際上也有這種狀況,但不叫主鍵


比如說R(a,b) 裡面
已知相依關係a->b
所以a->ab是成立的
當然ab->b或者ab->ab也都成立

但b->b與a->a,兩個拆出來看根本廢話(攤手)
這是理所當然的吧?

所以當你把所有廢話全部刪掉之後,就會得到最簡表示相依關係,a->b,於是a為主鍵


那一定要把非鍵值屬性加進去的狀況下有沒有?
有阿,超鍵。

我另外舉一個例子

R(a,b,c)

a->b, b->c

很明顯a是主鍵屬性
abc中有遞移關係,但別管他

這時候我們可以很清楚的判斷a->{a,b,c}是可以成立的
當然,ab->{a,b,c}與abc->{abc}也一樣都成立
所以ab是超鍵之一,abc也一樣是超鍵之一
同樣的a也是超鍵。

你可以找一下超鍵,候選鍵,主鍵的定義
Google就有

超鍵是「只要可以表達決定整個關聯,他就是超鍵」
候選鍵是「要滿足超鍵條件,同時無多餘非鍵值屬性」
主鍵是「要滿足候選鍵。」


然後所謂的非鍵值屬性就是多餘屬性
所謂的鍵值,就是可以成為超鍵、候選鍵、主鍵的集合
上面那一句所講的集合...
舉例來說大概像這樣


R(a,b,c)

a->b, b->c

超鍵值可以是a, ab, abc,這時候a是超鍵值1 , ab 是超鍵值二,abc 是超鍵值三
鍵值可以是複合值組
屬性不行,除非你不滿足第一正規化才會有複合屬性



這樣,okeydoke?


P.S. 定義要看清楚,每個字每個符號都請了解意思...
今年高考好像滿多人因為定義的關係痛失分數...orz

--

All Comments

Emma avatarEmma2013-08-30
網路解答誤導沒補該補習班的人...搞不好故意的
Hardy avatarHardy2013-09-03
自己懂就不用怕黑暗兵法了阿XD
Oscar avatarOscar2013-09-04
解說的很詳細 推!!
Rebecca avatarRebecca2013-09-09
話說今年高三資料庫第一題就是定義阿...快放榜了
Ursula avatarUrsula2013-09-13
其實我說的是包涵那個符號orz
第一眼看下去就在心內幹譙了...
Ethan avatarEthan2013-09-14
包含那題我也有卡一下...只能說考很活XD
Callum avatarCallum2013-09-14
考那麼細其實不如考45NF比較實際你不覺得嗎= =
Faithe avatarFaithe2013-09-15
害我拆兩次,嚇都嚇死
Carolina Franco avatarCarolina Franco2013-09-17
推~