Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 依赖项lhs的第二个范式冲突是复合的(素数和非素数一起)_Database_Database Normalization_Functional Dependencies - Fatal编程技术网

Database 依赖项lhs的第二个范式冲突是复合的(素数和非素数一起)

Database 依赖项lhs的第二个范式冲突是复合的(素数和非素数一起),database,database-normalization,functional-dependencies,Database,Database Normalization,Functional Dependencies,我在研究函数依赖性和规范化时遇到了一个问题。原问题如下: 给定关系R={v,w,x,y,z}和函数依赖集{v->w,y->z,yz->v,wx->z},找到BCNF组合并检查依赖项保留是否成立 首先,我试图找到最小的掩护,并得出以下结论: 最小覆盖率: v->w y->z y->v wx->z 然后我试图找到候选密钥,只找到了一个候选密钥: 候选密钥: xy 然后我开始检查正常形式: 第一范式:检查 第二范式: 我认为以下依赖项违反了第二范式: 1)y->z 2)y->v 3)wx->z 前两个

我在研究函数依赖性和规范化时遇到了一个问题。原问题如下:

给定关系R={v,w,x,y,z}和函数依赖集{v->w,y->z,yz->v,wx->z},找到BCNF组合并检查依赖项保留是否成立

首先,我试图找到最小的掩护,并得出以下结论:

最小覆盖率:
v->w
y->z
y->v
wx->z

然后我试图找到候选密钥,只找到了一个候选密钥:

候选密钥:
xy

然后我开始检查正常形式:

第一范式:检查

第二范式:

我认为以下依赖项违反了第二范式:

1)y->z
2)y->v
3)wx->z

前两个问题很容易解决。然而,我从来没有见过第三个例子,左边是素数和非素数属性的组合。我们如何解决这种情况?我们是否为第三次制作w和x主键建立新关系


如果我解出那个部分,我想第三个和BC范式将很容易。

那些FD不会违反2NF。FD(功能相关性)是指其右侧由其左侧的适当/较小子集在功能上确定。这三个FD都不是CK(候选密钥)的部分依赖项。它们甚至都不是部分的,因为它们都没有由左手边的子集(行列式)确定的右手边。他们中没有一个是CK,因为他们的左手都没有CK

但是,FDs xy->z&xy->v是局部的,因为xy的适当/较小子集决定z&v。它们违反2NF,因为xy是CK,v是非素数属性。wxy->z是部分的,因为它的适当/较小子集xy决定了z(因为xy是CK,所以决定了所有子集)。但它不违反2NF,因为它的行列式不是CK

您永远不会看到“示例[2NF-FD],其中左侧是素属性和非素属性的组合”。因为违反2NF的FD的左侧是CK,所以没有非素数属性。虽然它是部分的,所以它有一个适当的/较小的子集,也决定了右侧

阅读部分FD和2NF的一些学术定义。(许多教科书/演示文稿/课程在网上是免费的。)准确地记忆和应用定义、定理和算法。你似乎不明白很多事情:

  • 在BCNF中意味着在所有较低的NFs中。访问BCNF不需要通过较低级别的NFs
  • 您看到的分解示例不是分解算法的演示
  • 我们不通过连续的NFs进行规范化。我们对我们想要的NF使用一个算法。(通过较低的NFs甚至可能意味着良好的较高的NF设计变得不可用。)
  • 每次我们分解一个坏的FD,我们就会得到新的关系,FDs&CKs
  • 在组件中保留的FD是其属性在其中的所有原始FD。(即封盖的封盖,而不仅仅是封盖的封盖。)
  • 当FD的右手侧功能上由其左手侧的适当/较小子集决定时,FD是局部的
  • CKs上非质数属性的部分FDs违反了2NF

这些FD不会违反2NF。FD(功能相关性)是指其右侧由其左侧的适当/较小子集在功能上确定。这三个FD都不是CK(候选密钥)的部分依赖项。它们甚至都不是部分的,因为它们都没有由左手边的子集(行列式)确定的右手边。他们中没有一个是CK,因为他们的左手都没有CK

但是,FDs xy->z&xy->v是局部的,因为xy的适当/较小子集决定z&v。它们违反2NF,因为xy是CK,v是非素数属性。wxy->z是部分的,因为它的适当/较小子集xy决定了z(因为xy是CK,所以决定了所有子集)。但它不违反2NF,因为它的行列式不是CK

您永远不会看到“示例[2NF-FD],其中左侧是素属性和非素属性的组合”。因为违反2NF的FD的左侧是CK,所以没有非素数属性。虽然它是部分的,所以它有一个适当的/较小的子集,也决定了右侧

阅读部分FD和2NF的一些学术定义。(许多教科书/演示文稿/课程在网上是免费的。)准确地记忆和应用定义、定理和算法。你似乎不明白很多事情:

  • 在BCNF中意味着在所有较低的NFs中。访问BCNF不需要通过较低级别的NFs
  • 您看到的分解示例不是分解算法的演示
  • 我们不通过连续的NFs进行规范化。我们对我们想要的NF使用一个算法。(通过较低的NFs甚至可能意味着良好的较高的NF设计变得不可用。)
  • 每次我们分解一个坏的FD,我们就会得到新的关系,FDs&CKs
  • 在组件中保留的FD是其属性在其中的所有原始FD。(即封盖的封盖,而不仅仅是封盖的封盖。)
  • 当FD的右手侧功能上由其左手侧的适当/较小子集决定时,FD是局部的
  • CKs上非质数属性的部分FDs违反了2NF

为什么您要在2NF中首先转换方案以在BCNF中建立关系?分析算法(在许多数据库书籍中介绍)不需要此步骤。找到违反BCNF的依赖项,然后使用它们生成decomp