2016-11-14 65 views

回答

0

如果MovieName是关键,并且唯一依赖性(不是只有行列式!)是:

MovieName → Genre 

那么关系是在第一,第二和Thir d正常形式,以及Boyce-Codd正常形式,以及更高级形式(例如第四范式)。

这是因为在(唯一)依赖关系中,行列式(MovieName)是关键,因此所有正常形式的定义都受到尊重。

+0

“因为”只保证BCNF。 – philipxy

0

你并不是真正的意思是“这种关系的标准化程度是多少”。关系变量或值可以一次以很多正常形式出现。当它在一个,它在所有较低的,它可能在更高的。所以大概你的意思是“这个关系必须处于最高水平的标准化”。

MovieName->类型不是行列式。它是一个FD(功能依赖)。它的决定因素是{MovieName}。这是CK(候选键)的唯一决定因素。的非平凡的FD是
  {的movieName} - > {流派}
  {的movieName} - > {的movieName,流派}
由于非平凡FD的每一个决定因素是一个超密钥,这是BCNF。由于它在BCNF中,因此它是每个较低的正常形式。

有两个定理的日期&费金与此有关:

  • 如果关系是3NF(或BCNF)和每一个CK很简单,那就是在5NF
  • 如果关系是BCNF和一些CK很简单,那么它是在4NF

由于你的关系是在BCNF它是3NF,因为每个CK是简单的它在5NF。


PS如果我们不知道这些定理会怎么样?

如果这个值/变量的唯一限制是你给出的值,那么它就是5NF。因为根据定义,当它不满足任何JD(联合依赖)时,它就在5NF中,而不是那些由它具有该组候选键所隐含的JD。

但是,如果我们所知道的值/变量是您给出的,那么我们如何表明它仍然必须在5NF?

如果JD * {{MovieName},{Genre}}也被占用,那么它将不在4NF(或更高)。也就是说,如果它也等于其在{MovieName} & {体裁}上的预测加入。在连接/原始中,每个输入的MovieName值将以每个流派值的元组存在。 CK表示每个MovieName只有一个这样的对。所以在输入中只有一个体裁值。然后FK {} - > {体裁}将会成立。 BCNF意味着2NF,即对CK没有部分依赖关系,所以FK {} - > {Genre}不成立。所以我们有一个矛盾。所以JD不成立。所以这个关系是在4NF中,因为没有其他不重要的二进制JD可能会违反4NF。它也在5NF,因为没有超过两个元素可以容纳的JD。

+0

[mcve] afadafasdfd – philipxy