2012-04-09 89 views
1

這是我已經做過的功課,我只需要確認它是否正確完成或者提示如何解決它。謝謝。
這是一個問題:2NF和3NF的關係

關係疫苗旨在記錄有關嬰兒及其接種疫苗的信息:特定嬰兒接種特定疫苗時;接種疫苗的地方;誰管理疫苗。以下是該 關係標題:
疫苗(VaccineCode,InfantId,日期,InfantName,InfantAddress, MedicalCentreCode,MedicalCentreName,MedicalCentreAddress,NurseId, NurseName)

除了與主鍵的功能依賴他們的行列式, 疫苗具有以下非平凡函數依賴:
FD1:InfantId - > InfantName
FD2:InfantId - > InfantAddress
FD3:MedicalCentreCode - > MedicalCentreName
FD4:MedicalCentreCode - > MedicalCentreAddress
FD5:NurseId - > NurseName

給這個關係艦首先在2NF,然後在3NF。

我的解決辦法:
2NF:
嬰兒(InfantID,InfantName,InfantAddress)
休息(VaccineCode,InfandID,日期,MedicalCentreCode,MedicalCentreName,MedicalCentreAddress,NurseId,NurseName)

現在嬰兒在2NF,也在3NF,但休息關係不在3NF。 3NF所有這些關係看起來就像這樣(據我ofcourse):
VaccinationDetails(VaccineCode,InfantID,日期,MedicalCentreCode NurseId)

嬰兒(InfantID,InfantName,InfantAddress)

MedicalCentre(MedicalCentreCode,MedicalCentreName,MedicalCentreAddress)

護士(NurseId,NurseName)

我的解決方案2NF和3NF?

回答

1

2NF要求關係a)在1NF中,並且b)沒有部分關鍵依賴關係。

從原始關係投影Infant (InfantID, InfantName,InfantAddress)是正確的。 InfantName和InfantAddress在功能上依賴於InfantID; InfantID是關鍵{VaccineCode,InfantId,Date}的一部分。

現在嬰兒在2NF,也在3NF,但休息關係不在3NF。

沒錯。3NF要求a)關係在2NF中,並且b)沒有傳遞依賴性。從{VaccineCode,InfantId,Date}到MedicalCentreCode到{MedicalCentreName,MedicalCentreAddress}有一個傳遞依賴。因此,通過投影去除傳遞依賴給你

  • 嬰兒{InfantID,InfantName,InfantAddress}
  • MedicalCentres {MedicalCentreCode,MedicalCentreName,MedicalCentreAddress}
  • 接種疫苗{VaccineCode,InfantID,日期 ,MedicalCentreCode,NurseId,NurseName}

還有另一個傳遞依賴包含NurseID和NurseName。突出的是一個讓你

  • 嬰兒{InfantID,InfantName,InfantAddress}
  • MedicalCentres {MedicalCentreCode,MedicalCentreName,MedicalCentreAddress}
  • 護士{NurseID,NurseName}
  • 接種疫苗{ VaccineCode,InfantID,日期,MedicalCentreCode,NurseId}

這四種關係現在都在至少3NF。 (前三個是在5NF。)

超越你的功課

但是有一個小問題與此有關。現在,您可以輸入「綜合醫院」的醫療中心代碼,以及不在那裏工作的護士的身份證號碼。您可能會考慮如何表達這種依賴關係,以及由此產生的關係可能是什麼樣子。

+0

非常感謝您的回答。所以基本上我做的是正確的。謝謝。 – smallB 2012-04-10 08:43:25