0

今週中旬にデータベースがあり、BCNFの違反を特定することに問題があります。私は関係を分解する方法を知っていて、どちらが鍵であり、どれがスーパーキーであるかを知る。暗黙のうちにFDを書くこともできます。私は次のビデオを見ていた:https://www.youtube.com/watch?v=hTFyG5o8-EABCNFの違反をどのように指摘できますか?

R(A、B:次の関係(彼女は学生の例を使用していますが、私はそれを簡単にするために、文字にそれを変換しました)にBCNFアルゴリズムを適用するために、女性の説明を開始し、それを合計するには

F、G、H)をFD:A→BCG、G→H、D→EFに変換する。

私はキーがADであることを知っていますが、それはクロージャがAD + = ABCDEFGHであるためです。

BCNFの試み#1: 彼女は、提示されたすべてのFDが違反しているとアルゴリズムを適用始まると言う

R1 = D - > EF(D + = DEF)//無違反が、なぜ?それは単なる違反ではありませんか?

R2 = ABCDEFG - (DEF-D)= ABCDGH //違反、なぜか混乱しますか?両方のキーが含まれています。 R2上の


BCNF試行#2:

R3 = G - > H(G + = GH)//違反2つのだけの属性がGHので、私は信じ

R4 = ABCDG //違反ですが、理由はわかりません。


R4にBCNF試行#3:

R5 = A - > BCG //違反しない

R6 = AD //違反(?)(?)

最終的な関係: R1、R2、R5、R6。

答えて

2

Rの違反は部分的かつ推移的な機能の依存関係です。これらのFDが別個のリレーションとして抽出されると、それらはもはや部分的または推移的ではなくなる。これが私たちが正規化する理由です。そのため、孤立したときに違反行為が止まることは驚きではありません。

R1/R2Rでは、EFは、DADキー候補のサブセットに依存するので、それは部分的な依存関係です。候補キーとしてDのみを持つR1に抽出すると、依存関係はもはや部分的ではありません。 Rの残りの部分は、まだ部分的なFD(A -> BCG)と推移的なFD(A -> G -> H)を含むR2になります。

R3/R4R2A -> G -> H中のSO G -> Hが推移FDです。R3に抽出されたとき、それは長い推移ではありません。 R2の残りはR4になりますが、依然として部分FD(A -> BCG)を含んでいます。

R5/R6は:R4で、BCGADキー候補のサブセットであるAに依存します。候補キーとしてAしか持たないR5に抽出されると、依存関係はもはや部分的ではありません。 R4の残りの部分は、R6になります。これには、自明でないFDはありません。

最終回答はR1,R3、R5とR6である必要があります。

PS。すべてのBCNF違反が部分的または推移的な機能依存として分類されるわけではないことに注意してください。

+0

私の最終回答を解説してくれてありがとう。 – mamajava

+0

@philipxy部分的かつ推移的なFDがBCNFに違反していることを示すのは難しくありません。私のポイントは、BCNFの違反を分類するのではなく、OPの問題の違反についての有効な(そしてよく知られた)説明を与えることでした。完全性のために、PSを追加しました。 – reaanb

+0

@reaanb 2NFに違反しているので、CK上の非プライム属性の部分的な依存性がBCNFに違反していることを示すのは簡単ですが、SKから外れていないFDです。部分的、推移的、およびその他の依存関係が、SK以外のFDを参照することなく、BCNFに違反していることを正確に示すことは容易ではありません。 *後者のことから、どうして迷惑でしょうか? 3NFを使用する定義と、決定済みセットと決定セット間のセット差異のすべての要素を主要な属性とする定義を使用しない限り、部分的かつ推移的な3NFの使い慣れた概念はここでは役に立ちません。推移的。 – philipxy

関連する問題