这种关系的标准化程度如何

时间:2016-11-14 22:01:29

标签: database database-normalization

一部电影只有一种类型。

可以为很多电影分配流派。

电影(MovieName,类型)

MovieName是唯一的密钥

MovieName->类型是唯一的决定因素

2 个答案:

答案 0 :(得分:0)

如果MovieName是关键,唯一的依赖(不是唯一的决定因素!)是:

MovieName → Genre

然后关系是第一,第二和第三范式,以及Boyce-Codd范式,以及更高级别的形式(例如第四范式)。

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

答案 1 :(得分:0)

你的意思并不是“这种关系的正常化程度如何”。关系变量或值可以同时具有许多正常形式。当它在一个中时,它在所有较低的中,而它可以在较高的那个中。所以大概你的意思是“这种关系必须达到的最高标准化水平是什么”。

MovieName->类型不是决定因素。它是FD(功能依赖)。它的决定因素是{MovieName}。这是CK(候选键)的唯一决定因素。非平凡的FD是
{的movieName} - GT; {流派}
{的movieName} - GT; {的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}& {类型}。在join / original中,每个输入MovieName值都将在每个Genre值的元组中。 CK说每个MovieName只有一对这样的对。因此输入中只有一个Genre值。那么FK {} - > {Genre}会举行。 BCNF意味着2NF,它表示对CK没有部分依赖,因此FK {} - > {Genre}不成立。所以我们有一个矛盾。 JD所以不成立。因此,关系是4NF,因为没有其他非平凡的二进制JD可以保持违反4NF。它也在5NF,因为没有可以容纳两个以上元素的JD。