2016-06-10 65 views
0
的無損分解

我試圖找到下面的關係相對於該3NF無損分解到函數依賴:3NF和關係,函數依賴

enter image description here

首先,我開始通過導出密鑰從上面給出的函數依賴關係。我認爲密鑰如下:

{L,T},{E,T}和{T,M},因爲關係中的所有屬性都可以使用這些密鑰中的任何一個來獲得。

現在,3NF的,我熟悉的定義是:

A relation schema R is in 3NF if, whenever a function dependency X -> A holds in R, either 
(a) X is a superkey of R, or 
(b) A is a prime attribute of R. 

如果我們將此運用到這個問題給出的文件描述符那麼下列成立:

  • LT - > E滿足(a)因爲LT是關鍵(因此是超級關鍵)。
  • ET - > L滿足(a)因爲ET是一個關鍵(因此是一個超級鍵)。 TM - > E滿足(a),因爲TM是關鍵(因此是超級關鍵詞)。
  • E-> M滿足(b),因爲M是一個主要屬性。

鑑於此,如何獲得關於函數依賴關係的3NF無損分解?我懷疑我可能是錯誤的,因爲我認爲這個關係是在3NF中,因爲存在傳遞依賴關係,但不是100%確定的。

如果有人能夠就我可能出錯的地方提出意見,我們將不勝感激。

回答

1

你的答案是正確的:

  1. 所有按鍵實際上是LT,ET,TM,因爲它們決定了所有其他的屬性,並沒有其他按鍵,因爲他們沒有子集滿足這個屬性。

  2. 依賴關係已經是關係的規範封面。

  3. 這個關係已經在3NF中,正是出於您陳述的原因。

請注意,如果您按照正確完成的第三範式的定義進行操作,則不需要檢查是否存在傳遞函數依賴關係。

我們還可以注意到,原來的關係,而不是不BC範式,對於依賴ê→M,並通過應用分析算法,使之在BCNF產生分解:

R1 <(E M), {E → M}> 

R2 <(E L T), {L T → E, E T → L}> 

,它具有依賴關係TM→E丟失的屬性。

+0

所以我假設沒有無損分解關係到BCNF,其中依賴關係被保留? – cp101020304

+1

實際上,如果我們使用所有書中定義的最常用的算法(「分析」算法),依賴關係就會丟失。然而,還有其他算法在實踐中未被使用,它們可能在BCNF中產生不同的分解。其中之一是[Tsou和Fisher](http://portal.acm.org/citation.cfm?doid=990511.990513),在這種情況下,它產生分解:R1(MLT),R2(ELT),它有更多的冗餘,但保留了依賴關係。正如我所說的,這個算法並沒有被使用,因爲它產生了「自然」的分解,並且經常有太多的表格。 – Renzo

+0

最後一點:存在一些模式,我們可以證明BCNF中不存在保留依賴關係的分解(這些在許多書中都有顯示),但是一般來說,決定是否存在保留分解的函數依賴關係通用關係是一個NP難題(見[wikipedia](https://en.wikipedia.org/wiki/NP-hardness)),所以我們不知道任何多項式算法來解決這個問題。 – Renzo