2016-03-26 162 views
-1
Table 1 

id Student 
1 Ali 
2 Akram 
3 Aamir 
4 Adeel 
5 Aun 

Table 2 

id Course 
1 English 
2 Urdu 
3 Maths 
4 Physics 
5 Chemistry 


Table 3 

id stu_id course_id 
1 1   1 
2 1   2 
3 2   1 
4 2   5 
5 5   1 

問題1:這些表是否歸一化?數據庫表標準化

Q2:幫我從表3中刪除重複項,假設如果表2有1000門課程,並且學生ID爲1和2在所有課程中註冊,那麼表3將因爲2000項而變得非常大,有沒有辦法減少這些?

+3

您正確實施了許多一對多的關係。 2000年的記錄表並不大。 –

+2

從表3重複什麼?在stu_id和course_id上​​創建一個唯一的鍵,並且您也不會得到任何重複。而你正在談論非常少量的數據;根本沒有必要減少 –

+1

在我看來,表3中的「id」列是不必要的。多對多表的邏輯關鍵字是'stu_id'和'course_id'。 'id'只是一個代理物理主鍵。 –

回答

2
  1. 它被歸一化爲多對多關係;
  2. 是這樣的多對多關係的最大基數是max students x max courses,沒什麼可怕的;
  3. 在多對多關係中,使用ids對的多列鍵,你不需要另一個ID;
  4. 如果通過重複,你的意思是你有許多在列中相同的字段,根本不重複。他們的意思是說一個學生有很多課程,反之亦然。什麼是獨特的夫婦stu_id-course_id。

問候