FK (Foreign Key, 외래 키)
다른 테이블의 db-primary-key|PK를 참조하는 컬럼. 테이블 간의 관계를 표현하는 장치.
users 테이블
| id (PK) | name |
comments 테이블
| id (PK) | user_id (FK → users.id) | content |
comments.user_id가 users.id를 참조한다. "이 댓글은 누가 썼는가"를 표현.
참조 무결성 (Referential Integrity)
FK의 핵심 역할. 존재하지 않는 PK를 참조하는 행을 DB 레벨에서 막아준다.
user_id = 999삽입 시도 → users에 id=999 없으면 에러- id=1인 user 삭제 시도 → 해당 user_id를 참조하는 댓글이 있으면 처리 방식 결정 필요
삭제 시 처리 옵션
| 옵션 | 동작 | |---|---| | RESTRICT | 참조 중이면 삭제 막음 (기본) | | CASCADE | 참조하는 행도 함께 삭제 | | SET NULL | 참조 컬럼을 NULL로 변경 |
what-is-orm|ORM과의 관계
ORM에서는 FK를 직접 다루는 대신 관계(relation)로 표현한다. Prisma 예시:
model Comment {
id Int @id
user User @relation(fields: [userId], references: [id])
userId Int
}