2013-05-17 39 views
1

從數據庫管理系統的書:給定的關係SNLRWH(每個字母表示一個屬性)和以下函數依賴:決定的關係是否是3NF或2NF

  • S-> SNLRWH(S是PK )
  • R-> w^

我嘗試:

  • ˚F首先,它不是3NF:對於第二個FD,既沒有R包含W,也沒有R包含密鑰,也沒有W是密鑰的一部分。
  • 二,它是/不是 2NF。如果我們檢查第二個FD,則W取決於R,而R不是關鍵的一部分。 STUCK。

回答

3

如果某個候選關鍵字的某個子集在您的(非平凡)依賴關係的左側顯示爲決定因素,則會違反2NF。問問你自己,你的任何決定因素是否是候選關鍵詞的一個子集。

通常只有當關系具有複合關鍵字時纔會違反2NF - 具有多個屬性的關鍵字。它如果空集合(∅)碰巧是一個行列式,那麼在技術上只有簡單的鍵(單個屬性鍵)才能違反2NF。這種情況相當不尋常,很少被認爲值得考慮,因爲它們顯然是「錯誤的」。爲了完整起見,這裏有一個有趣的例子。在下面的關係中,Circumference和Diameter都是候選鍵。違反2NF的依賴是∅ - > Pi,即圓周與直徑的比率。

CIRCLE relation

+1

沒有決定是一個候選鍵的真子集的一個子集,一個DET等於一個候選鍵,另一個是連一個子集。所以關係是2NF。 – ToniAz

+0

@ToniAz {} - > Pi所以行列式{}是CK {Circumference}和CK {Diameter}的適當超集。因此,Pi是一個非主要屬性,部分在功能上依賴於每個CK。所以2NF被侵犯了。 – philipxy

+0

@philipxy,你說得對,但我想ToniAz之前的評論是對*他*例子的引用,而不是我的。 – sqlvogel

0

2NF與部分密鑰依賴關係有關。爲了使關係不能通過2NF的測試,關係必須至少有一個至少有兩列的候選關鍵字。

由於您的關係只有一個候選鍵,並且該候選鍵只有一列,所以您不可能有部分鍵依賴關係。它通過了2NF的測試。

+0

一個-ve將是非常嚴酷的;-) – sqlvogel