我如何将其标准化为BCNF?

时间:2017-04-08 14:26:26

标签: database-normalization

关系是

 Student(StdNo,StdName,appointNo,timing,advisor)

和功能依赖性是:

   StdNo->StdName
   StdNo,appointNo->Timing,advisor
   Timing->appointNo

通过标准化为2NF,我得到:

   R1(stdNo,appointNo,Timing,advisor)
   R2(stdNo,StdName)

我认为这已经在3NF了。但是我很难减少到BCNF。

对于BCNF,我认为R1关系违反了BCNF作为Timing-> appointmentNo和Timing不是超级密钥。我怎样才能减少到BCNF?

1 个答案:

答案 0 :(得分:1)

考虑到R1R2中的分解是3NF而不是BCNF,你是正确的,因为你指定的原因(timing → appointNo违反了正常形式)。< / p>

所以你应该在R2R3(timing, appointNo)中分解R4(StdNo, advisor, timing),最后的分解是R1, R3, R4

请注意,通过此分解,不会保留依赖项StdNo,appointNo → timing,advisor