我如何将其标准化为 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?
考虑到 R1
、R2
中的分解是 3NF 而不是 BCNF,你是正确的,因为你指定的原因(timing → appointNo
违反了正常形式) .
所以你应该在R3(timing, appointNo)
和R4(StdNo, advisor, timing)
中分解R2
,最终分解为R1, R3, R4
.
请注意,此分解不会保留依赖性 StdNo,appointNo → timing,advisor
。
关系是
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?
考虑到 R1
、R2
中的分解是 3NF 而不是 BCNF,你是正确的,因为你指定的原因(timing → appointNo
违反了正常形式) .
所以你应该在R3(timing, appointNo)
和R4(StdNo, advisor, timing)
中分解R2
,最终分解为R1, R3, R4
.
请注意,此分解不会保留依赖性 StdNo,appointNo → timing,advisor
。