외래키 전략 & 테이블 상속 — CASCADE 옵션 전략
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. ON DELETE CASCADE와 ON DELETE SET NULL의 차이점을 가장 잘 설명한 것은?
💡 ON DELETE CASCADE는 부모 행 삭제 시 자식 행도 함께 삭제합니다. ON DELETE SET NULL은 부모 행 삭제 시 자식의 FK 컬럼만 NULL로 설정하고 자식 행은 유지합니다. 작성자 삭제 후 글을 유지하고 싶을 때 SET NULL을 사용합니다.
Q2. PostgreSQL에서 FK 컬럼에 인덱스를 추가해야 하는 이유는?
💡 MySQL(InnoDB)은 FK 컬럼에 자동으로 인덱스를 생성하지만, PostgreSQL은 그렇지 않습니다. FK 컬럼에 인덱스가 없으면 JOIN, 부모 행 삭제/업데이트 시 자식 테이블을 Full Table Scan하여 심각한 성능 저하가 발생합니다.
Q3. DEFERRABLE INITIALLY DEFERRED FK의 특징은?
💡 DEFERRABLE INITIALLY DEFERRED는 FK 제약 검사를 각 DML 문 직후가 아닌 트랜잭션 커밋 시점으로 미룹니다. 이를 통해 순환 참조나 서로를 참조하는 테이블에 데이터를 삽입할 때 순서 제약을 해결할 수 있습니다.
Q4. PostgreSQL 테이블 상속(INHERITS)에서 자식 테이블의 데이터를 부모 테이블로만 조회하려면?
💡 SELECT * FROM parent_table은 자식 테이블 데이터까지 포함하여 조회합니다. 부모 테이블에 직접 삽입된 데이터만 조회하려면 ONLY 키워드를 사용합니다: SELECT * FROM ONLY parent_table
Q5. 테이블 상속(INHERITS)에서 부모 테이블에 인덱스를 추가하면?
💡 테이블 상속에서는 부모 테이블의 인덱스가 자식 테이블로 자동 전파되지 않습니다. 각 자식 테이블에 별도로 인덱스를 추가해야 합니다. 이것이 선언적 파티셔닝(파티션에 자동 전파)과의 큰 차이점이며, 현재는 선언적 파티셔닝이 권장됩니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.