learn

FK (Foreign Key, 외래 키)

FK (Foreign Key, 외래 키)

다른 테이블의 db-primary-key|PK를 참조하는 컬럼. 테이블 간의 관계를 표현하는 장치.

users 테이블
| id (PK) | name  |

comments 테이블
| id (PK) | user_id (FK → users.id) | content |

comments.user_idusers.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
}