2011-11-29 41 views
1

我目前在系統分析類,我想更好地理解使用規範化。對於3NF,如果我在包含學生ID,姓名,電話號碼和專業的表上工作。我只能使用學生證和專業證書,因爲學生姓名和電話號碼都可以通過ID找到。我理解這個權利嗎?瞭解3NF

+0

Waht你的意思是'使用'?也可以僅使用學生ID找到專業。 – idstam

+0

爲什麼學生證不能找到Major? – Jan

+0

我在想,因爲有不同的專業,但一個學生擁有一個ID – Thomas

回答

5

讓我們從這個開始。 。 。

student_id name     phone   major 
-- 
1   Darcy Sailer   000-111-2345  Mathematics 
2   Lonnie Seman   000-111-3456  Fine Art 
3   Mathew Bradburn  000-112-9086  Education 
4   Edwina Loflin  000-111-2345  Psychology 
5   Clinton Rosebrook 000-111-1000  Chemistry 
6   Lonnie Seman   000-113-2975  Chemistry 

唯一的候選鍵是student_id。這意味着名稱不是唯一的,手機不是唯一的,專業不是唯一的。

爲了使表格在3NF中,它必須滿足這些要求。

  • 它在2NF。
  • 每個非素數屬性都直接依賴於每個候選鍵 。 (無傳遞依賴)

此表格在2NF。 (證明留給讀者。)有三個非素數屬性;所有都直接依賴唯一的候選鍵。這意味着,

  • 名稱沒有確定手機,
  • 名稱沒有確定專業,
  • 手機沒有確定專業,
  • 手機沒有確定名稱,
  • 大不確定名稱,並且
  • 主要不確定電話。

所以它在3NF。

在標識兩列之間的依賴關係時,您試圖回答以下問題:「給定第一列的一個值時,是否總是爲第二列找到一個且只有一個值?例如,要確定「name」和「major」之間是否存在依賴關係,可以問「給定'name'的一個值,我是否總是找到'major'的唯一一個值? 「答案是「否」。鑑於'朗尼塞曼'的名字,你會發現兩個專業 - 美術和化學。

這並不重要,在現實世界中,一個人可以有多個電話號碼和多個專業。選擇每個人只記錄一個電話號碼還是每個人只有一個主要電話號碼是數據庫設計的重要組成部分,但它與規範化無關。

這並不重要,在現實世界中,你很少從具有代表性的樣本數據開始。數據庫設計人員應該知道的東西,如

  • 兩個人可以有相同的名稱。
  • 兩個人可以有相同的電話號碼。
  • 兩個人可以有相同的專業。
  • 一個人可以有兩個或更多的電話號碼。
  • 一個人可以有兩個專業。