問題陳述:
在結果計算應用程式中,有必要在MySQL 資料庫中儲存與每個學生相關的多門課程。學生可以附加不同數量的課程,這提出瞭如何設計一個資料庫結構來有效率地儲存和檢索這些課程的挑戰。
解決方案:連接表
在陣列中儲存資料可能看起來是一種簡單的方法,但由於MySQL 中缺乏索引,它可能會導致效能不佳和維護問題。相反,建議的方法是使用連接表。
連接表是透過橋接其他兩個表的主鍵來連結它們的表。在這種情況下,可以使用以下列建立 SCJunction(學生/課程連接)表:
SCJunction | id | studentId | courseId | term | attendance | grade |
studentId 和 courseId 列將分別是引用 Student 和 Course 表的外鍵。學期列將指示修讀課程的學期。
透過使用連接表,每個學生可以擁有與其關聯的多個課程,並且每個課程可以由多個學生修讀。出席率和成績列可用於儲存有關每次註冊的附加資訊。
範例架構
create table student ( studentId int auto_increment primary key, fullName varchar(100) not null ); create table dept ( deptId int auto_increment primary key, deptName varchar(100) not null ); create table course ( courseId int auto_increment primary key, deptId int not null, courseName varchar(100) not null, CONSTRAINT fk_crs_dept FOREIGN KEY (deptId) REFERENCES dept(deptId) ); create table SCJunction ( id int auto_increment primary key, studentId int not null, courseId int not null, term int not null, attendance int not null, grade int not null, unique key(studentId,courseId,term), key (courseId,studentId), CONSTRAINT fk_sc_student FOREIGN KEY (studentId) REFERENCES student(studentId), CONSTRAINT fk_sc_courses FOREIGN KEY (courseId) REFERENCES course(courseId) );
資料索引
SCJunction 表上的複合索引會提高基於Student資料的查詢的效能課程ID。對於按註冊術語搜尋的查詢,術語列上的索引也會很有用。
連接表的優點
以上是如何在 MySQL 資料庫中有效地儲存和檢索學生的多個課程註冊資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!