Menyimpan Pelbagai Pilihan dalam Jadual Pangkalan Data Tunggal
Masalah: Anda ingin mereka bentuk pangkalan data untuk pengiraan hasil di mana pelajar boleh mempunyai beberapa kursus yang dilampirkan pada mereka, memerlukan medan dalam pangkalan data yang boleh menyimpan pelbagai subjek.
Penyelesaian:
Prinsip Normalisasi Data:
Sebelum menyelami teknik reka bentuk pangkalan data tertentu, adalah penting untuk memahami prinsip normalisasi data. Dengan membuat jadual berasingan untuk entiti yang berbeza, seperti pelajar dan kursus, anda menghalang lebihan data dan mengekalkan integriti rujukan.
Struktur Pangkalan Data:
Untuk menyimpan berbilang kursus bagi setiap pelajar, jadual simpang yang dipanggil SCJunction digunakan. Jadual ini mengaitkan ID pelajar, ID kursus dan maklumat lain yang berkaitan, seperti kehadiran dan gred. Indeks komposit pada lajur (studentId, courseId, istilah) memastikan pengambilan data pantas dan menghalang kemasukan data pendua.
Contoh Pangkalan Data Struktur:
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) );
Kelebihan:
Nota: Walaupun nampaknya mudah untuk menyimpan berbilang pilihan dalam satu medan sebagai tatasusunan, ia biasanya tidak disyorkan untuk reka bentuk pangkalan data. Pendekatan ini boleh membawa kepada isu prestasi dan cabaran pengendalian data. Jadual simpang menyediakan penyelesaian yang lebih berstruktur dan cekap untuk menyimpan perhubungan banyak-ke-banyak.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan Pelbagai Kursus dengan Cekap untuk Pelajar dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!