Database 这种关系的正常化程度如何

Database 这种关系的正常化程度如何,database,database-normalization,Database,Database Normalization,一部电影只有一种类型 一种类型可以分配给许多电影 电影(电影名称、类型) MovieName是唯一的密钥 如果MovieName是键,那么MovieName->Genre是唯一的决定因素,唯一的依赖性(不是唯一的决定因素!)是: 然后关系是第一、第二和第三范式,以及Boyce Codd范式,以及更高层次的范式(例如第四范式) 这是因为在(唯一的)依赖关系中,行列式(MovieName)是关键,因此所有范式的定义都得到了尊重。您的真正意思并不是“这种关系的规范化程度如何”。一个关系变量或值可以同时

一部电影只有一种类型

一种类型可以分配给许多电影

电影(电影名称、类型)

MovieName是唯一的密钥


如果
MovieName
是键,那么MovieName->Genre是唯一的决定因素,唯一的依赖性(不是唯一的决定因素!)是:

然后关系是第一、第二和第三范式,以及Boyce Codd范式,以及更高层次的范式(例如第四范式)

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

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

电影名称->类型不是决定因素。它是一个FD(函数依赖项)。它的行列式是{MovieName}。这是CK(候选密钥)的唯一决定因素。非平凡的FD是
{MovieName}->{Genre}
{MovieName}->{MovieName,流派}
由于非平凡FD的每个行列式都是一个超键,这在BCNF中。因为它是在BCNF中,所以它是在每一个较低的标准形式中

这里有两个与Date和Fagin相关的定理:

  • 如果一个关系在3NF(或BCNF)中,并且每个CK都很简单,那么它在5NF中
  • 如果一个关系在BCNF中,而某个CK是简单的,那么它在4NF中
因为你们的关系是在BCNF中,所以它是3NF,因为每个CK都很简单,所以它是在5NF中


如果我们不知道这些定理呢

如果此值/变量的唯一约束是您给出的值/变量所隐含的约束,那么它在5NF中。因为从定义上讲,当它不满足任何JDs(连接依赖项)时,它在5NF中,除了它拥有一组候选键所暗示的JDs之外

但是,如果我们所知道的关于值/变量的一切都是你给出的,那么我们怎么能证明它仍然是5NF

如果JD*{{MovieName},{Genre}也成立,那么它就不会是4NF(或更高)。如果它也等于它在{MovieName}&{Genre}上的投影的连接。在join/original中,每个输入MovieName值都将包含在一个具有每个流派值的元组中。CK说每部电影只有一对这样的人。因此,输入中只有一个类型值。然后,FK{}->{Genre}就成立了。BCNF意味着2NF,它表示不存在对CKs的部分依赖,因此FK{}->{Genre}不成立。所以我们有一个矛盾,就是它的存在。所以JD不成立。所以这个关系是在4NF中的,因为没有其他非平凡的二进制JD会违反4NF。在5NF中也是如此,因为没有包含两个以上元素的JD。

因为“因为”只保证BCNF。
MovieName → Genre