2NF和3NF的关系

时间:2012-04-09 11:39:22

标签: database third-normal-form

这是我已经完成的作业,我只需要确认是否正确完成或提示如何解决它。谢谢。
这是个问题:

疫苗关系旨在记录有关婴儿及其婴儿的信息 接种疫苗:特定婴儿接种疫苗时;在哪里 疫苗接种发生了;谁接种疫苗。以下给出了 关系标题:
疫苗( VaccineCode,InfantId,Date ,InfantName,InfantAddress, MedicalCentreCode,MedicalCentreName,MedicalCentreAddress,NurseId, NurseName)

除了以主键作为决定因素的功能依赖性之外, 疫苗具有以下非平凡的功能依赖性:
FD1:InfantId - > InfantName
FD2:InfantId - > InfantAddress
FD3:MedicalCentreCode - > MedicalCentreName
FD4:MedicalCentreCode - > MedicalCentreAddress
FD5:NurseId - >护士名称

首先在2NF中然后在3NF中发送此关系。

我的解决方案:
2NF:
婴儿( InfantID ,InfantName,InfantAddress)
休息( VaccineCode,InfandID,日期,MedicalCentreCode,MedicalCentreName,MedicalCentreAddress,NurseId,NurseName)

现在婴儿在2NF并且在3NF但是Rest关系不在3NF。 所有这些关系的3NF将如下所示(根据我所说):
疫苗接种详细信息( VaccineCode,InfantID,日期,MedicalCentreCode NurseId)

婴儿( InfantID ,InfantName,InfantAddress)

MedicalCentre( MedicalCentreCode ,MedicalCentreName,MedicalCentreAddress)

护士( NurseId ,护士名称)

我的解决方案是2NF还是3NF?

1 个答案:

答案 0 :(得分:1)

<2> 2NF要求关系a)在1NF中,并且b)没有部分密钥依赖性。

从原始关系投影Infant (InfantID, InfantName,InfantAddress)是正确的。 InfantName和InfantAddress在功能上依赖于InfantID; InfantID是关键{VaccineCode,InfantId,Date}的一部分。

  

现在婴儿在2NF,也在3NF,但Rest关系不在3NF。

没错。 3NF要求a)关系在2NF,b)没有传递依赖。从{VaccineCode,InfantId,Date}到MedicalCentreCode到{MedicalCentreName,MedicalCentreAddress}有一个传递依赖。因此,通过投影删除该传递依赖性可以为您提供

  • 婴儿{ InfantID ,InfantName,InfantAddress}
  • MedicalCentres { MedicalCentreCode ,MedicalCentreName,MedicalCentreAddress}
  • 预防接种{ VaccineCode,InfantID,Date ,MedicalCentreCode,NurseId,NurseName}

还有另一个涉及NurseID和NurseName的传递依赖。投射一个给你的

  • 婴儿{ InfantID ,InfantName,InfantAddress}
  • MedicalCentres { MedicalCentreCode ,MedicalCentreName,MedicalCentreAddress}
  • 护士{ NurseID ,NurseName}
  • 预防接种{ VaccineCode,InfantID,日期,MedicalCentreCode,NurseId}

这四种关系现在至少都在3NF。 (前三个是在5NF。)

超越作业

但这有一个小问题。现在,您可以输入“综合医院”的医疗中心代码,以及不在那里工作的护士的身份证号码。您可能会想到如何表达这种依赖关系,以及由此产生的关系可能是什么样子。