2012-05-20 43 views
2

我正在學習數據庫規範化和加入依賴關係以及5NF。我很難過。任何人都可以給我一些多值依賴規則的實際例子:MVD3的實際例子:(傳遞性)如果X↠Y和Y↠Z,那麼X↠(Z-Y)

MVD3 :(傳遞性)如果X↠Y和Y↠Z,則X↠(Z - Y)。

+1

一個與MVD的困難往往是尋找合理的例子。 –

+0

查看這篇30歲的文章,通過示例解釋正常形式:http://www.bkent.net/Doc/simple5.htm(*「關係數據庫理論中五種範式的簡單指南」*) – MicSim

回答

1

在所有數據屬性(列/類型/ ...)在某種意義上都是「原子」的假設下,開發了功能依賴/歸一化理論以及直至幷包括BCNF的正常形式。這種「某種意義」到目前爲止一直被廢棄,但基本上歸結爲「表格中的單個單元格價值本身不具備多重價值」的概念。想一下,一個國際標準圖書編號的文本CSV列表,一個表格出現在表格中的一個單元格中的值(真正的嵌套表格),...

現在想象一個課程,教授和學習書籍作爲課程的例子材料。想象一下,所有這些模擬在一個單列的三列表中,其中說「教授(P)教課程(C)並使用書(B)作爲課程材料。」如果任何給定的課程(Cn)可以有多於一本書(B),並且任何教授(Pn)可以有超過一門課程(C),並且可以有多於一位教授(P)教授任何給定的過程(Cn),那麼這個表格顯然是全部關鍵的(關鍵是全部屬性{P,C,B})。

這意味着該表格滿足BCNF。

但現在想象一下,有一條規則可以規定:「任何給定課程(Cn)所用書籍的集合必須相同,無論哪位教授教授它。」

在未來的日子,當標準化的開發是爲了在它現在俗稱的形式,這是不允許有表列(關係屬性)是他們自己的表(關係)。 (因爲這樣的設計被認爲違反了1NF,這個概念現在被認爲是可疑的)。

想象一下,我們確實允許將關係屬性建模爲類型關係。然後,我們可以對我們的3列表(/關係)建模如下:「教授(P)教授課程(C)並使用課本集(SB)作爲課程材料。」。屬性SB將不再是一個ISBN編號,如同前面的和更明顯的設計,但它將是一個(可能是一元的)保存整組ISBN號碼。如果我們這樣畫我們的設計,然後我們考慮我們的規則,即「所有教授使用同一套課程的同一套書」,那麼我們看到,現在這個規則可以表示爲從(C)到(SB)的FD, !這意味着我們手中有一個更低的NF違規!

4和5 NF已經出現了這樣的問題(其中單個屬性值-courseID(C)的外觀的 - 使得用於行衆多(多(B的外觀的要求)ISBN號)被公認比較早,但是不被認爲是當前最好的(RVA的解決方案),被認爲是一個有效的。因此,4和5 NF創建「新的和更正常的形式」,在當時存在2,3和BC NF的定義已經足以處理手頭的情況,只要RVA被認爲是一種有效的設計方法。

爲了支持這一說法,讓我們看看如何去除NF違反我們的{P,C,SB}設計通過FD C-> SB:

我們將表分割成兩個單獨的表{P,C}和{C,SB}連鍵{P,C}和{C} repsectively。兩個表都滿足BCNF。

但是我們仍然有這個SB屬性,其中包含一個集合的ISBN編號。處理這個問題可以通過應用諸如「UNGROUPING」之類的技術來完成。將這個應用於我們的{C,SB}表將得到一個{C,B}表,其中B是ISBN書號(或者您喜歡在數據庫中使用的任何標識符),並且表的關鍵字是{C ,B}。如果我們消除了4/5 NF違規,這與我們得到的設計完全相同!

你可能也想看看Multivalue Dependency violation?

相關問題