"게시물(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 모델을 사용하여 게시물과 게시물의 답변을 관리하는 시나리오를 가정해봅시다.
// 부모 게시물 생성
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
}
});
// 부모 게시물과 관련된 답변 조회
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의 자기 참조 관계를 활용하면, 이와 유사한 다양한 시나리오에서도 데이터 관리가 용이해집니다.