个性化阅读
专注于IT技术分析

如何找到关系的最高范式?

要了解此主题, 你应该对

功能依赖性和候选键

普通形式

查找关系的最高范式的步骤:

  1. 查找该关系的所有可能的候选键。
  2. 将所有属性分为两类:主要属性和非主要属性。
  3. 检查1st正常形式然后2nd等等。如果不满足nth范式条件, 最高范式为n-1。

示例1。查找关系的最高范式FD设置为{A-> D, B-> A, BC-> D, AC-> BE}的R(A, B, C, D, E)

第1步。如我们所见, (AC)+= {A, C, B, E, D}, 但其子集无法确定所有关系属性, 因此AC将成为候选关键字。 A可以从B派生, 因此我们可以用B代替AC中的A。因此BC也是候选关键字。因此将有两个候选密钥{AC, BC}。

第2步。质数属性是在此示例中为候选关键字{A, B, C}的一部分的那些属性, 在本示例中, 其他属性为非质数{D, E}。

第三步关系R在1中st关系DBMS的标准形式不允许使用多值或复合属性。

关系不在2nd范式, 因为A-> D是部分依赖项(作为候选密钥AC的子集的A正在确定非主要属性D)和2nd正常形式不允许部分依赖。

因此最高范式为1st正常形式。

示例2查找关系的最高范式FD设置为{BC-> D, AC-> BE, B-> E}的R(A, B, C, D, E)

第1步。如我们所见, (AC)+= {A, C, B, E, D}, 但其子集无法确定所有关系属性, 因此AC将成为候选关键字。 A或C不能从关系的任何其他属性派生, 因此只有1个候选键{AC}。

第2步。质数属性是在此示例中为候选关键字{A, C}的一部分的那些属性, 在本示例中, 其他属性为非质数{B, D, E}。

第三步关系R在1中st关系DBMS的标准形式不允许使用多值或复合属性。

关系在2nd正常形式, 因为BC-> D为2nd正常形式(BC不是候选密钥AC的适当子集), AC-> BE为2nd正常形式(AC为候选键), B-> E为2nd正常形式(B不是候选关键字AC的适当子集)。

关系不在3rd正常形式, 因为在BC-> D(BC既不是超键也不是D是素数属性)和在B-> E(B既不是超键也不是E是素数属性)但要满足3rd通常, FD的LHS应该是超级键, RHS应该是主要属性。

因此关系的最高范式为2nd正常形式。

示例3。查找关系的最高范式R(A, B, C, D, E)与FD集{B-> A, A-> C, BC-> D, AC-> BE}

第1步。我们可以看到, (B)+= {B, A, C, D, E}, 因此B将成为候选关键字。 B可以使用AC-> B(将AC-> BE分解为AC-> B和AC-> E)从AC派生。因此AC将是超级关键, 但(C)+= {C}和(A)+= {A, C, B, E, D}。因此, A(AC的子集)将为候选关键字。因此将有两个候选键{A, B}。

第2步。质数属性是在此示例中为候选关键字{A, B}的一部分的那些属性, 在本示例中, 其他属性为非质数{C, D, E}。

第三步。关系R在1中st关系DBMS的标准形式不允许使用多值或复合属性。

关系在2nd正常形式, 因为B-> A为2nd正常形式(B是超级键), A-> C是2nd范式(A是超级键), BC-> D是2nd正常形式(BC是超级键), AC-> BE为2nd正常形式(AC是超级键)。

关系在3rd正常形式, 因为所有FD的LHS都是超级键。该关系在BCNF中, 因为所有FD的所有LHS都是超级密钥。因此, 最高范式是BCNF。

Sonal Tuteja撰写的文章。如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

赞(0) 打赏
未经允许不得转载:srcmini » 如何找到关系的最高范式?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏