티스토리 뷰

기록

Prisma의 Composite Id 간단 기록

als982001 2024. 11. 9. 16:16

1. 개요

 Prisma에서 composite id는 여러 개의 필드를 조합해 고유한 식별자를 만드는 데 사용된다. 이는 데이터베이스 테이블에서 composite primary key 역할을 하며 각 필드의 조합이 고유해야 하는 경우 유용하다.

 

2. 예시

model Like {
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt

  user   User @relation(fields: [userId], references: [id], onDelete: Cascade)
  post   Post @relation(fields: [postId], references: [id], onDelete: Cascade)
  userId Int
  postId Int

  @@id(name: "id", [userId, postId])
}

 

이 코드에서 id가 바로 composite id이다. id는 고유한 식별자 역할을 하는 userId와 postId의 조합으로 구성된다.

 

const likeCount = await db.like.count({
    where: {
      postId,
    },
  });

 

이 코드는 userId 값과는 상관없이, postId가 일치하는 모든 항목의 개수를 세는 코드이다. 

 

3. 특징 및 주의사항

  • 복합적인 유일성 보장: 단일 필드의 기본 키로는 고유성을 보장하기 어렵지만 두 개 이상의 필드를 이용하면 고유할 경우 유용
  • Prisma에서 업데이트나 삭제 작업 시 쿼리가 다소 복잡해질 수도 있음
  • 일부 데이터베이스에서 인덱스 성능에 영향을 줄 수도 있음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함