我正在設計一個大學管理系統。我有5個表格:學生,教師,課程,可用課程和採取課程。數據庫設計。多對多。什麼應該是主鍵?
Student:
student_id (PK)
Teacher:
teacher_id (PK)
Courses:
courses_id (PK)
Available_Courses:
available_courses_id
teacher_id
course_id
Courses_Taken:
courses_taken_id
student_id
courses_available_id
可用課程和課程中應該PK什麼?
如果我沒有讓Available_courses_id(在Table Available_Courses中)主鍵,那麼我將無法連接Courses_Table,如果我在表Available_Courses中創建了所有三個屬性的複合鍵,那麼一個教師可以再次註冊同一個課程,再次。製作兩個屬性(即teacher_id和course_id)的組合鍵將起作用,但會增加數據庫中的重複次數,因爲它們都將位於Courses_Taken表中以創建關係。
與Courses_Taken表相同,因爲我需要在表中使用它的PK出席(尚未完成)。
那麼在這種情況下應該怎麼做?
看起來像available_courses包含行,老師教課程的行。人們會認爲可用的課程將是該表中某些行出現的課程。不是說你的問題如何定義你的表,你只需要告訴我們約束條件。 (CK,FD,FK)。 – philipxy