에듀윌 · enrollment 테이블
★ 복합 PK + 양쪽 FK
N:M 관계 = 연결 테이블 + 복합 PK + 1:N 두 개

N:M 관계를 SQL 한 블록으로

CREATE TABLE enrollment (
  학번      CHAR(8)  NOT NULL,
  과목코드  CHAR(7)  NOT NULL,
  성적      CHAR(2)  CHECK(성적 IN('A','B','C','F')),
  -- 복합 기본키: 한 묶음 = 1 PK
  PRIMARY KEY (학번, 과목코드),
  -- 양쪽 외래키: 참조 무결성
  FOREIGN KEY(학번) REFERENCES student(학번)
      ON DELETE CASCADE,
  FOREIGN KEY(과목코드) REFERENCES course(과목코드)
      ON DELETE RESTRICT
);
FK 옵션부모 변경 시 자식
CASCADE함께 변경 — 졸업생 정리
RESTRICT거부 — 데이터 보호·안전장치
SET NULLNULL로 — 담당자 퇴사
SET DEFAULT기본값으로 — 거의 안 씀
복합 PK의 의미
PK가 여러 개가 아니라 '한 묶음이 곧 1개 PK'. (학번, 과목코드) 조합이 유일하면 OK.
합격 공식
N:M → 연결 테이블 + 복합 PK + 양쪽 FK + CASCADE/RESTRICT. 함정 — FK는 NULL 허용(금지는 PK), CASCADE는 연쇄 삭제라 신중.