1

我有下面的表格,我應該把它轉換成2NF。轉換表格爲2NF - 奇怪的表格轉換?

Convert table to 2NF

我有一個答案,我去了:

技能:員工,技能

位置:員工,當前工作 位置

我有一種感覺,我錯了這個^上面^雖然。

也可以解釋1NF,2NF和3NF之間的區別。我知道1先來,你必須把它分成更小的表格,但想要一個很好的描述來幫助我更好地理解。謝謝

+0

NF差異:http://stackoverflow.com/questions/723998/can-someone-please-give-an-example-of-1nf-2nf-and-3nf-in-plain-english – BlackICE

+0

@大衛感謝,你能告訴我,我是否與上面的一樣正確? – maclunian

+0

從帖子中的內容看起來像3NF。這並不一定意味着它會做你想做的:) :) – BlackICE

回答

-2
Employee Table 

EmployeeID | Name 
1  | Jones 
2  | Bravo 
3  | Ellis 
4  | Harrison 


Skills Table 

SkillId  | Skill 
1  | Typing 
2  | Shorthand 
3  | Whittling 
4  | Light Cleaning 
5  | Alchemy 
6  | Juggling 

Location Table 

LocationId | Name 
1  | 114 Main Street 
2  | 73 Industrial Way 

EmployeeSkill Table 

EmployeeId | LocationId | SkillId | SkillName 
1  | 1  | 1 | Typing 
1  | 1  | 2 | Shorthand 
1  | 1  | 3 | Whittling 
2  | 2  | 4 | Light Cleaning 
3  | 2  | 5 | Alchemy 
3  | 2  | 6 | Juggling 
4  | 2  | 4 | Light Cleaning 

在EmployeeSkill表中,主鍵將是EmployeeId + LocationId,這會爲您提供他們在該位置擁有的技能。在這個例子中包括SkillName列違反了3NF。 這種做法實際上有時用於數據庫設計(並稱爲「非規範化」),以減少連接以增加通常一起使用的性能讀取數據。
通常這隻在用於報告的表格中完成。

+1

你正在介紹保證唯一的密鑰,這是很好的一般的做法,但與作業無關,並不清楚分配SkillId是必要的。我也不喜歡加入體現一對一和一對多關係的表格。 –

+0

是的,很難確切知道最終格式可能是什麼,是否依賴於某個位置的技能? – BlackICE

+3

-1。在家庭作業和教育方面,學生需要與作業中的專欄一起工作。他們不允許引入新的專欄。其中一個風險是數字牆掩蓋了真正發生的事情。另一種情況是,引入帶有id號的新列似乎向學生建議「正常化」意味着「用字​​符串替代id號」。在OP中沒有指定 –

0

我是新學習2NF,但我已經解決了這樣的答案。讓我知道這是否正確,以便我能理解我的錯誤並多練習。

enter image description here 只有兩個表。由於