7

我一直在閱讀關於如何區分3NF/BCNF中關係的許多不同來源。而我到目前爲止,這是我的理解...在3NF中找到關係但在BCNF中找不到關係

我將利用這個關係作爲一個例子...

R = {A, B, C, D, E}

F = {A -> B, B C - > E, E D -> A}

首先,我們必須找到關係的關鍵。 I used this video to help me do that.而且我得到了

Keys = {ACD, BCD, CDE}

我們確保RBCNF,我們必須確保在F每一個函數依賴的左邊是Keys之一。我們立刻知道情況並非如此,因爲第一個FD是A -> BA不是其中一個關鍵。 所以它不在BCNF。

我們確保R3NF,我們必須確保在F每一個函數依賴的左邊是KeysORF每一個函數依賴的右手邊是一個其中一個Keys的子集。如果您查看每個FD的右側,它們是B,EA。這些都是Key的子集,所以這意味着它是在3NF中的

所以這是的罕見箱子(根據維基),其中的關係是3NF之一,但在BCNF。這種方法是否正確?它可靠嗎?我錯過了什麼?

+1

是的,你做的一切都是正確的。 – laurids

+0

你可能想看看這個:http://class2go.stanford.edu/db/Winter2013 – laurids

回答

1

首先,您需要學習超級鍵,候選鍵和主要屬性。

然而,這個經驗法則可以幫助:

不具有多個重疊的候選鍵

一個3NF表 保證在BCNF。

換句話說,如果候選鍵在3NF關係是

  • 所有原子,或
  • 非原子但不重疊,

它是保證關係在BCNF。

違反BCNF但滿足第三範式具有如下函數依賴最簡單的關係:

A,B -> C C -> B

在這種情況下,候選鍵是(A,B)(A,C)
它滿足3NF因爲

  • 所有函數依賴的右手側是主屬性

它違反BCNF,因爲

  • C -> B,但左手側是不是超密鑰
2

BCNF:

X-> Y,其中Y可以是黃金非黃金
這裏,X 必須超級關鍵

3NF

X-> Y,Y爲非黃金
然後,
X 必須超級關鍵
其他
X 不必超級關鍵

希望,這有助於

+2

這些不清楚或不正確。看看一些教科書的定義,甚至維基百科。 – philipxy

+0

定義很模糊。例如,對於BCNF,您可以簡單地聲明X必須是超級密鑰。 3NF的定義是正確的,但這是描述它的最複雜的方式! – AHA