我如何将其标准化为 BCNF?

How can i normalize this to BCNF?

关系是

 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-> appointNo 并且 Timing 不是超级键。我怎样才能减少到 BCNF?

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

所以你应该在R3(timing, appointNo)R4(StdNo, advisor, timing)中分解R2,最终分解为R1, R3, R4.

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