Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 有人能告诉我这个关系是3NF吗?_Database_Relational Database_Relational Algebra_3nf_Bcnf - Fatal编程技术网

Database 有人能告诉我这个关系是3NF吗?

Database 有人能告诉我这个关系是3NF吗?,database,relational-database,relational-algebra,3nf,bcnf,Database,Relational Database,Relational Algebra,3nf,Bcnf,考虑一个关系R(a,B,C,D,E)与以下函数依赖关系:a->BC,D->CE,C->E AD+=ABCDE 主要属性:广告 非素数属性:BCE 分解为3NF,但不是BCNF R1(A,B,C,D)R2(C,E)我已经很久没有这样做了。但如果我在3NF中记错了,如果一个列在传递上依赖于另一个列,则不允许该列位于表中 在这种情况下,唯一的可传递依赖项是A->C->E,这意味着需要从R中提取E 据我所知,你这样做了。 有些东西告诉我,你可能需要从R1中提取C,但这可能只是BCNF中的nessecar

考虑一个关系R(a,B,C,D,E)与以下函数依赖关系:a->BC,D->CE,C->E

AD+=ABCDE

主要属性:广告 非素数属性:BCE

分解为3NF,但不是BCNF


R1(A,B,C,D)R2(C,E)

我已经很久没有这样做了。但如果我在3NF中记错了,如果一个列在传递上依赖于另一个列,则不允许该列位于表中

在这种情况下,唯一的可传递依赖项是A->C->E,这意味着需要从R中提取E

据我所知,你这样做了。
有些东西告诉我,你可能需要从R1中提取C,但这可能只是BCNF中的nessecary。

我已经很久没有这样做了。但如果我在3NF中记错了,如果一个列在传递上依赖于另一个列,则不允许该列位于表中

在这种情况下,唯一的可传递依赖项是A->C->E,这意味着需要从R中提取E

据我所知,你这样做了。
有些东西告诉我,您可能需要从R1中提取C,但这可能只是BCNF中的nessecary。

在您的情况下,第三个标准形式是:

R1(A、B、C)

R2(CE)

R3(C-D)

R4(A和D)

请注意,这是以第三范式分解关系并保留依赖项的唯一方法,并且所有生成的依赖项都是这样的,即所有分解的模式也都在BCNF中


最后,我们可以注意到,同一关系可以在BCNF中以不同的方式分解,因为它会丢失一些函数依赖关系。

在您的案例中,第三种范式如下所示:

R1(A、B、C)

R2(CE)

R3(C-D)

R4(A和D)

请注意,这是以第三范式分解关系并保留依赖项的唯一方法,并且所有生成的依赖项都是这样的,即所有分解的模式也都在BCNF中


最后,我们可以注意到,相同的关系可以在BCNF中以不同的方式分解,失去一些功能依赖性。

您的段落是自相矛盾的。你说只有一个3NF分解,但是有很多BCNF。但每个BCNF也都在3NF中。也许你的意思是,只有一个FD-3NF分解。(你的第一段有点奇怪,因为你说“所有的模式”,但只有一个。)你的段落自相矛盾。你说只有一个3NF分解,但是有很多BCNF。但每个BCNF也都在3NF中。也许你的意思是,只有一个FD-3NF分解。(你的第一段有点奇怪,因为你说“所有的模式”,但只有一个。)