Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyimpan Berbilang Kursus dengan Cekap setiap Pelajar dalam Pangkalan Data MySQL?

Bagaimana untuk Menyimpan Berbilang Kursus dengan Cekap setiap Pelajar dalam Pangkalan Data MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-31 16:36:10629semak imbas

How to Efficiently Store Multiple Courses per Student in a MySQL Database?

Menyimpan Pelbagai Kursus untuk Pelajar dalam Pangkalan Data MySQL

Soalan:

Saya perlu cipta struktur pangkalan data yang membolehkan pelajar mempunyai beberapa kursus yang dilampirkan kepada mereka. Bagaimanakah saya boleh mereka bentuk jadual untuk menyimpan data ini dengan cekap?

Jawapan:

Menyimpan data dalam tatasusunan dalam jadual mungkin kelihatan mudah, tetapi ia boleh membawa kepada prestasi dan isu integriti data. Pendekatan yang lebih baik ialah mencipta jadual berasingan dan mewujudkan perhubungan di antaranya menggunakan kekunci asing.

Berikut ialah struktur pangkalan data yang dicadangkan:

1. Cipta Jadual Pelajar

CREATE TABLE student (
  studentId INT AUTO_INCREMENT PRIMARY KEY,
  fullName VARCHAR(100) NOT NULL
);

2. Cipta Jadual Kursus

CREATE TABLE course (
  courseId INT AUTO_INCREMENT PRIMARY KEY,
  courseName VARCHAR(100) NOT NULL
);

3. Cipta Jadual Persimpangan (Kursus_Pelajar)

CREATE TABLE student_course (
  studentId INT,
  courseId INT,
  PRIMARY KEY (studentId, courseId),
  FOREIGN KEY (studentId) REFERENCES student(studentId),
  FOREIGN KEY (courseId) REFERENCES course(courseId)
);

Perhubungan:

  • Jadual kursus_pelajar bertindak sebagai jadual persimpangan, menghubungkan pelajar dengan kursus yang mereka telah didaftarkan.
  • Lajur studentId dalam student_course merujuk studentId dalam jadual pelajar.
  • Lajur courseId dalam student_course merujuk kepada courseId dalam jadual kursus.

Contoh Data:

-- Insert Students
INSERT INTO student (fullName) VALUES ('Alice Jones'), ('Bob Smith'), ('Carol White');

-- Insert Courses
INSERT INTO course (courseName) VALUES ('History 101'), ('Math 201'), ('English 301');

-- Enroll Students in Courses
INSERT INTO student_course (studentId, courseId) VALUES (1, 1), (1, 2), (2, 1), (2, 3);

Kebaikan Junction Jadual:

  • Integriti Data: Kekunci asing memastikan rujukan antara jadual adalah konsisten, mengurangkan rasuah data.
  • Pendapatan Data yang Cekap: Jadual simpang membolehkan mendapatkan semula data berkaitan dengan pantas dan cekap melalui indeks pengoptimuman.
  • Fleksibiliti: Mereka menyediakan struktur yang fleksibel untuk mengurus perhubungan yang kompleks antara berbilang entiti.
  • Penormalan Data: Mereka membantu mengekalkan data ternormal dengan mengasingkan aspek data yang berbeza kepada jadual yang berasingan.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Berbilang Kursus dengan Cekap setiap Pelajar dalam Pangkalan Data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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