Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menyimpan Pelbagai Kursus dengan Cekap untuk Pelajar dalam Pangkalan Data?

Bagaimanakah Saya Boleh Menyimpan Pelbagai Kursus dengan Cekap untuk Pelajar dalam Pangkalan Data?

DDD
Lepaskan: 2024-12-14 18:47:13
asal
471 orang telah melayarinya

How Can I Efficiently Store Multiple Courses for Students in a Database?

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)
);
Salin selepas log masuk

Kelebihan:

  • Menguatkuasakan integriti rujukan dan mencegah rasuah data
  • Menggunakan pengindeksan yang cekap untuk data pantas mendapatkan semula
  • Mengelakkan lebihan data dengan menyimpan setiap entiti dalam jadual berasingan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan