2012-10-04 33 views
0

現在該問題要求我找出函數依賴關係和候選鍵。數據庫 - 候選鍵和FD

當我找出FD和Candidate Keys時,我有點困惑。根據我的理解,如果「給定X的一個值,我是否知道Y的一個值」,則可以找到FD?因此,例如,如果我獲得studentID,我會知道studentName嗎?是。這很簡單。

現在對於一個候選鍵,我認爲它們是可能是主鍵但必須用作主鍵的鍵。

現在我有一個場景:

的就業安置機構正在建立一個數據庫,記錄 預約面試的細節。該機構聘用'協助'候選人'(CND)找工作的'職位經理' (PLMs)。經理採訪每個職位都會採訪很多候選人。然而,一名候選人被分配到 一名職位經理。這意味着對於 候選人每次約會,它將始終與同一位置經理。任何 給定的任命是在一名候選人和他們分配的 安置經理之間。

該機構的初步方案是: 任命(聘任,PLM#,PLMname,CND#,CNDname,CNDaddress,工作)

聘任爲預約日期和時間。 PLM#& PLMname是位置管理器的ID和名稱 ,CND#是候選人的ID。 CNDname是 候選人的姓名。 CNDaddress是候選人的聯繫地址。 工作是在面試中討論的工作。

所以,對於上述方案的候選鍵可能是:

{PLM# Appt} and {CND#, Appt} 

我在這裏的問題是,我不知道是否將它寫出來的上述或有僅1個候選鍵

​​

文件描述符:

PLM# -> PLMName 
CND# -> CNDName 
CND# -> CNDAddress 
CND#, PLM# -> Appt 
CND#, Appt -> Job 
CND# -> Appt 
CND# -> Job 
CND# -> PLM# 

假設任命 期間 1工作進行了討論候選人只能有每一天

1個任命只想得到我的FD我正常化之前檢查。

回答

1

該FD CND ⟶ Job是可疑的,特別是給予CND, Appt ⟶ Job;這意味着CND只能申請或討論一份工作。

FD CND ⟶ Appt是可疑的;這意味着即使有50個PLM,也沒有兩個可以同時進行預約。

至於關於鍵的問題:每個雙列鍵都是候選鍵並且是不可約的。建議的三列密鑰不是不可約的(因爲它可以簡化爲兩個兩列候選密鑰中的任何一個)。因此,三列鍵是(嚴格的)超級鍵,而不是候選鍵。