ホームページ >データベース >mysql チュートリアル >学生ごとに複数のコースを MySQL データベースに効率的に保存するにはどうすればよいですか?
MySQL データベースに学生用の複数のコースを保存する
質問:
学生が複数のコースを関連付けることができるデータベース構造を作成します。このデータを効率的に格納するテーブルを設計するにはどうすればよいですか?
答え:
テーブル内の配列にデータを格納することは便利に思えるかもしれませんが、パフォーマンスやパフォーマンスに悪影響を及ぼす可能性があります。データの整合性の問題。より良いアプローチは、個別のテーブルを作成し、外部キーを使用してテーブル間の関係を確立することです。
推奨されるデータベース構造は次のとおりです。
1. Student テーブルを作成します
CREATE TABLE student ( studentId INT AUTO_INCREMENT PRIMARY KEY, fullName VARCHAR(100) NOT NULL );
2.コース表を作成します
CREATE TABLE course ( courseId INT AUTO_INCREMENT PRIMARY KEY, courseName VARCHAR(100) NOT NULL );
3.ジャンクション テーブル (Student_Course) の作成
CREATE TABLE student_course ( studentId INT, courseId INT, PRIMARY KEY (studentId, courseId), FOREIGN KEY (studentId) REFERENCES student(studentId), FOREIGN KEY (courseId) REFERENCES course(courseId) );
関係:
データ例:
-- 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);
ジャンクションの利点テーブル:
以上が学生ごとに複数のコースを MySQL データベースに効率的に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。