피드로 돌아가기
Prisma relationships, finally explained (with MySQL side by side)
Dev.toDev.to
Database

MySQL 외래키 구조의 Prisma Schema 매핑 최적화 전략

Prisma relationships, finally explained (with MySQL side by side)

Mohamed Idris2026년 5월 8일11beginner

Context

Prisma의 양방향 관계 선언 방식이 MySQL의 단방향 외래키 구조와 달라 발생하는 설계 혼선 분석. 데이터베이스 수준의 물리적 제약과 애플리케이션 수준의 타입 안전성 사이의 간극 해결 필요.

Technical Solution

  • 물리적 외래키는 실제 데이터가 저장되는 단일 모델에만 정의하여 데이터 중복 제거
  • @relation(fields, references) 속성을 통해 DB 외래키와 Prisma Relation Field를 명시적으로 매핑
  • 반대편 모델에 Relation Field를 선언함으로써 런타임 시 include 쿼리를 통한 양방향 탐색 경로 확보
  • UNIQUE 제약 조건을 활용하여 Many-to-One 관계를 One-to-One 구조로 강제 전환
  • onDelete 옵션(Cascade, SetNull, Restrict) 설정을 통한 참조 무결성 유지 전략 수립
  • connect 구문을 활용하여 새로운 레코드 생성 없이 기존 Entity 간의 관계 연결 최적화

1. 외래키 컬럼이 물리적으로 존재하는 모델에만 `@relation` 속성을 정의했는가?

2. 반대편 모델의 Relation Field 타입(Model, Model?, Model[])이 비즈니스 요구사항과 일치하는가?

3. 부모 데이터 삭제 시 자식 데이터의 처리 방침(Cascade 여부)이 명확히 정의되었는가?

원문 읽기