BCNF对3NF技术问题

时间:2013-09-11 04:47:39

标签: database-normalization bcnf third-normal-form

关于SO有很多相关的问题,但我找不到回答这个问题的任何问题:

  

是否可以拥有可以无损连接的3NF关系   在保留依赖关系的同时分解为BCNF关系?

我知道如果您准备放松一个或多个依赖项,可以将3NF关系分解为BCNF。并且Beeri和Bernstein已经证明形式为{AB-> C,C-> B}的FD给出了不能简化为BCNF的3NF关系。但是有没有你在3NF并且你可以减少到BCNF的情况?

对于额外的非正式书呆子点,我很想知道3NF允许的依赖关系的好词,但不是BCNF?基于部分和传递依赖关系很容易区分1NF,2NF和3NF,但在我看来,BCNF的一半问题是禁止的依赖类型没有简单的名称。

1 个答案:

答案 0 :(得分:1)

  

但是有没有你在3NF并且你可以减少到BCNF的情况?

是。 Wikipedia has an example

Court  Start Time  End Time  Rate Type
--
1      09:30       10:30     SAVER
1      11:00       12:00     SAVER
1      14:00       15:30     STANDARD
2      10:00       11:30     PREMIUM-B
2      11:30       13:30     PREMIUM-B
2      15:00       16:30     PREMIUM-A

该示例的功能依赖性未列出,但您可以派生它们。我列出了下面的FD。

AB->CD
AC->BD
BD->AC
CD->AB
ABC->D
BCD->A
ABD->C
ACD->B
D->A
  

对于额外的非正式书呆子点,我很想知道一个好的术语   3NF允许的依赖关系但不是BCNF? 。 。 。一半的问题   BCNF对于禁止的依赖类型没有简单的名称。

在BCNF中,每个决定因素(左侧)必须是候选键。或者你可以说每个箭头都是一个候选键的箭头。转过来,BCNF禁止不是候选键的决定因素。

维基百科文章中的候选键是{AB,AC,BD,CD}。由于函数依赖性D-> A,起始关系不在BCNF中。 的决定因素 FD,D,不是候选密钥。