2010-11-16 61 views
11

我想找到一個很好的資源來研究函數依賴和規範化。函數依賴和規範化

任何人都有任何想法,我應該看看?我很難區分FD是在1NF,2NF還是3NF?

我一直在閱讀維基百科,並使用谷歌搜索找到很好的研究,但找不到任何解釋它的簡單條款。

也許你們都可以分享你在你的生活中學習FD和正常化的方式。

回答

28

函數依賴定義屬性之間的功能關係。例如:PersonId在功能上決定BirthDate(通常寫爲PersonId -> BirthDate)。另一種說法是:對於任何給定的人,只有一個出生日期。請注意,相反可能會或可能不會是真實的。很多人可能在同一天出生。鑑於BirthDate我們可能會發現許多PersonId共享該日期。

函數依賴關係集可用於綜合關係(表)。根據 陳述前3種正常形式(包括Boyce Codd Normal Form(BCNF))的定義,給定的一組關係表示函數依賴關係。第四和第五種正常形式涉及多值的依賴關係(另一個魚的水壺)。

以下是一些有關函數依賴性,規範化和數據庫設計的免費資源。 準備在學習這些材料時鍛鍊你的大腦和數學技能。

以下是從不同的學術網站 「幻燈片放映」 ......

以下是學術論文。更重的閱讀,但非常值得的努力。

如果你對這個問題非常感興趣,我建議你拿出現金一本好書 關係數據庫設計的主題。例如:An Introduction to Database Systems by C.J. Date

+0

謝謝你所有的解釋,我只是想對我的考試有充分的瞭解。 – aherlambang 2010-11-18 18:03:33

+0

4NF涉及多值依賴關係(MVDs),5NF涉及連接依賴關係(JDs)。但是二元JD對應於一對MVD(無論如何都是成對的)。所以「第四和第五NFs涉及」JD(而不是MVDs)。 – philipxy 2015-07-27 02:42:13

3

我們可以理解在假設我們有兩個屬性,並完全依賴於另一個屬性稱爲函數依賴的方式函數依賴。

說一個真實的例子。我們知道每個人都有一個與該人姓名相對應的社會安全號碼。說弗蘭克是一個人,我們想知道這個人的社會安全號碼,但數據庫將無法幫助這個信息,因爲可能有很多人名爲坦率,但我們可以確定人的姓名對社會安全號碼,所以名稱該人完全依賴於社會安全號碼的功能。

5

函數依賴於表格的列之間的約束。例如,在表人:

 
SSN   | Name   | Date of birth | Address  | Phone number 
------------------------------------------------------------------------ 
123-98-1234 | Cindy Cry | 15-05-1983 | Los Angeles | 123-456-7891 
121-45-6145 | John O'Neill | 30-01-1980 | Paris  | 568-974-2562 
658-78-2369 | John Lannoy | 30-01-1980 | Dallas  | 963-258-7413 

這裏,在列SSN(社會安全號)的值決定了列名,出生日期,地址和電話號碼的日期值。這意味着,如果我們同在SSN列相同的值兩行,然後按列名,出生日期,地址和電話號碼的日期值將等於。一個SSN 123-98-1234的人總是叫Cindy Cry,生於15-05-1983,依此類推。像這樣的情況被稱爲函數依賴

函數依賴的概念用於定義第二和第三正常形式,且BC範式(BCNF)。

要閱讀更多關於函數依賴和規範化的內容,您可以閱讀着名的學術書籍,如C.J. Date的數據庫簡介或任何books by the H. Garcia-Molina, J.Ullman, J.Widom trio

如果你想要一個不太正規的方法,我們starting a series of posts on data normalization on our company blog

2

什麼是函數依賴?

功能依賴性是規範化過程的基礎功能依賴性描述表中屬性(列)之間的關係。 換句話說,一個依賴FD:X→Y是指Y的值由X的兩個元組共享X的相同的值將必定有Y. 的相同的值enter image description here

的值確定

什麼是數據庫標準化?

數據庫規範化是一個逐步的正式流程,使我們能夠分解以這樣的方式,這兩個數據冗餘和更新異常(見上文關於更新異常詳細信息)數據庫表被最小化。

enter image description here Courtesy

0

功能依賴性可以被定義爲相對於屬性之間離開關係函數依賴。函數依賴用於在Boyce Codd Normal Form中創建關係,縮寫爲BCNF。如果C和D是關係R的屬性,並且屬性C在功能上確定屬性D,則兩個屬性之間的功能依賴關係可以表示爲C-> D。

例如:人圖下方

person(national_id,name,address);

這裏national_id功能性地確定person_name。所以功能依賴是national_id - > name;

爲了消除冗餘,功能依賴在關係數據庫設計中很重要。