Prisma self relation DB 계층 구조 postgreSQL

agnusdei·2023년 8월 2일
0
post-custom-banner

"게시물(Post)"과 "게시물의 답변(Comment)"을 다루는 예시를 통해 Prisma 모델과 관련된 자기 참조 관계를 더 자세히 설명하겠습니다.

데이터베이스 모델에서의 자기 참조 관계 예시:

model Post {
  id       Int      @id @default(autoincrement())
  content  String
  parentId Int?
  parent   Post?    @relation("ParentChild", fields: [parentId], references: [id])
  children Post[]   @relation("ParentChild")
}

위의 Prisma 모델을 사용하여 게시물과 게시물의 답변을 관리하는 시나리오를 가정해봅시다.

  1. 게시물 생성하기:
// 부모 게시물 생성
const parentPost = await prisma.post.create({
  data: {
    content: "부모 게시물의 내용입니다."
  }
});

// 부모 게시물에 답변 게시물 생성
const comment1 = await prisma.post.create({
  data: {
    content: "첫 번째 답변입니다.",
    parentId: parentPost.id
  }
});

const comment2 = await prisma.post.create({
  data: {
    content: "두 번째 답변입니다.",
    parentId: parentPost.id
  }
});
  1. 게시물과 답변 조회하기:
// 부모 게시물과 관련된 답변 조회
const parentWithChildren = await prisma.post.findUnique({
  where: { id: parentPost.id },
  include: { children: true }
});

console.log("부모 게시물:", parentWithChildren);

// 특정 답변 게시물 조회
const specificComment = await prisma.post.findUnique({
  where: { id: comment1.id }
});

console.log("특정 답변:", specificComment);

위의 코드 예시에서, parentWithChildren 쿼리를 통해 부모 게시물과 해당 부모 게시물에 연결된 모든 답변들을 함께 조회할 수 있습니다. specificComment 쿼리를 사용하여 특정 답변 게시물을 조회할 수 있습니다.

이를 통해 게시물과 그에 대한 답변 간의 계층 구조를 유연하게 관리하고 조회할 수 있습니다. Prisma의 자기 참조 관계를 활용하면, 이와 유사한 다양한 시나리오에서도 데이터 관리가 용이해집니다.

post-custom-banner

0개의 댓글