2015-04-15 43 views
0

如何對此表進行規範化。它有一棵像結構一樣的樹,有望像樹一樣成長。 enter image description here樹狀數據表的數據庫規範化

通過狀結構我的意思是新學生,科目,等級和章節將會不斷添加或更新或刪除

樹我要存儲在該表測驗的結果。測驗有多個主題,其中有多個層次下有多個章節。每個學生都可以選擇不同的科目。 那麼這張表是否適合存儲結果,或者我需要使用此表做些什麼?

+0

Ulclear,更多地解釋你想達到什麼。 –

回答

0

在這種特殊情況下,你需要創建多個獨立的表:

 
Table "Student" 

ID, Name 

1, John 
2, Jack 
 
Table "Subject" 

ID, Name 

1, Math 
2, Science 
3, Geography 
4, History 
5, English 
 
Table "Levels" 

ID, Name 

1, Intermediate 
2, Moderate 
3, Difficult 
 
Table "Chapters" 

ID, Name 

1, Chapter 1 
2, Chapter 2 
3, Chapter 3 

等等等等。

然後定義表之間的關係,就像這樣:

 
Table "student_subject_level" 

ID, student_id, subject_id, level_id 

1, 1, 1, 1 (John, Math, Intermediate) 
2, 1, 2, 2 (John, Science, Moderate) 

到目前爲止,您有學生,相應subejct和對象的級別。因爲我們可能有每個級別多個章節,我們需要另一種關係:

 
Table "student_subject_level_chapter" (or use simpler name) 

student_subject_level_id, chapter_id 
1, 1 (John, Math, Intermediate, Chapter 1) 
1, 2 (John, Math, Intermediate, Chapter 2) 
2, 1 (John, Science, Moderate, Chapter 1) 

等等等等。從隔離單個表開始,然後找出你想如何實現實際關係。在你有冗餘數據的每一個新的關係前面,你想有一個新的表格來保持你需要的關係。一旦你有ID可以參考,這很容易,所以從單個表開始,並通過你的方式。

+0

按桌子你的意思是查找表? – Amron

+0

這取決於語義,但在這種情況下 - 是的,我的意思是查找表,因爲數據表非常明顯和簡單。沒有銀彈 - 你可以通過幾種不同的方式獲得結果,所有這些都是正確的。 –