2016-11-18 100 views
0

我有2個表:StudentClassmany-to-many關係通過Student_Class(StudentID, ClassID) table.參考從主鍵多到許多表

我還需要表Payment(StudentID, ClassID, Fee...)Request(StudentID, ClassID, Request,...).

我應該建立Student_Class表像上面或等這個:(StudentClassID,StudentID, ClassID)然後刪除PaymentRequest中的2個PK與新的PK:StudentClassID?哪一個更好,爲什麼?

回答

2

在這個答案中可能有兩件事需要考慮,一個是技術數據庫方面(性能,存儲和完整性等),另一個是業務問題。

所以,僅僅重申,以下給出:

Student (StudentID, ...) 
Class (ClassID, ...) 

而且目前有兩個方案供其他表:

一個

Student_Class (StudentID, ClassID, ...) 
Payment (StudentID, ClassID, Fee, ...) 
Request (StudentID, ClassID, Request, ...) 

Student_Class (Student_ClassID, StudentID, ClassID, ...) 
Payment (Student_ClassID, Fee, ...) 
Request (Student_ClassID, Request, ...) 

第二種方案會使用較少的存儲空間(+),查詢性能可能稍低( - ),而且會更復雜( - )。

如果企業想要跟蹤學生的付款或與類( - )無關的請求,選項B會讓事情變得棘手。

在大多數情況下,我可能會推薦選項A.

+0

非常感謝你@mendosi :)。正是我需要的人:) –