다대다 관계를 실제로 저장하는 방법 학생과 강의는 직접 붙지 않고, enrollments 한 행으로 만난다.

그래서 INNER JOIN은 중간 테이블을 따라 학생 이름, 강의명, 성적을 한 결과 행으로 묶는다.

WHERE semester = '2024-1'
학생 테이블

students

student_id student_name
학생 자체 정보만 갖고 있고, 수강 사실은 직접 저장하지 않는다.
1명 학생 → 여러 수강 기록
관계가 저장되는 중심

enrollments

student_id | course_id | semester | grade 12 | DB101 | 2024-1 | A+
한 행이 한 학생이 한 강의를 들은 기록 1건이다. 학기와 성적처럼 관계에서 생기는 값도 여기 둔다.
강의 테이블

courses

course_id course_name
강의 정보는 별도로 유지하고, 어떤 학생이 들었는지는 연결 행으로 찾는다.
1개 강의 ← 여러 수강 기록
JOIN 결과

중간 행 1건을 따라 필요한 열만 꺼내면 조회 결과가 된다.

SELECT s.student_name
SELECT c.course_name
SELECT e.grade

students → enrollments → courses 순서로 연결되므로, 학생과 강의의 다대다 관계도 조회 시에는 한 줄 결과로 풀린다.