消除及物函数依赖性



(BOLD中的主要密钥。(

在我的一次讲座中,我们进行了以下模式

r(a,b, c d ,e(
A-> B
e-> b
c,d-> a
c,d-> b
C,d-> e

并将其带到2NF,如下所示:

r1( c d ,a,e(
C,d-> a和e

r2( a,e ,b((不在2nf中(
A-> B
e-> b

自然,如果我想将我的架构带到3NF,这会导致问题,因为B不能由A和E部分确定。我想做的就是简单地创建单独的关系如下:

r3( e ,b(
e-> b

r4( a ,b(
a-> b

在这种情况下,b在功能上完全依赖主要键,这使我达到了2NF,并且在3NF中的关系3和4中,跨性别依赖性被阐明。但是,我认为可以说,该解决方案并不令人满意,因为每个关系的B值可能会有所不同,并且当不可避免地用作foriegn键时可能存在异常。对此有什么想法吗?

我们寻求保留" FDS的分解",并且(通常不明确说明(不引入其他约束。当FD保持在某些组件中时,将保留它。这个想法是,我们可以通过检查该FD仅检查组件中是否包含,而不是必须加入,然后检查是否存在重新组件。我们也更喜欢FD及其Attibutes仅在一个组件中,否则我们需要添加一个约束,即确定价值的情况下同意相关值一致。总是有一个3NF模式保存所有FD,而无需引入其他限制。当无法保留FD到BCNF时,提出了一个"等价依赖性",即两个组件必须在FD属性上具有相同的投影。

我们不会通过较低的NF通过较低的NF来归一化。这可以阻止出现良好的更高NF设计。我们为给定的NF使用算法。

当某些FD(功能依赖性(保持时,其他Armstrong的公理会这样做。我们必须在中查看所有 fds以保存NF违规者和FD,而不仅仅是一些构成掩护的给定的FD。算法也考虑在内。

请参阅此最新答案。

PS PK(主键(无关紧要,CKS(候选密钥(做。可以有多个,它们可以是复合的。PK只是您决定致电PK的一些CK。因此,突出显示PK的属性通常不足。只需列出cks。

pps an(update(异常是一定的事情,这不是您使用的"异常"。

最新更新