인프런 커뮤니티 질문&답변

띵똥님의 프로필 이미지
띵똥

작성한 질문수

비전공자도 이해할 수 있는 DB 설계 입문/실전

[실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 투두리스트

서브 태스크

해결된 질문

작성

·

64

1

안녕하세요 수업을 듣다가 궁금한게 생겨서 질문드립니다~

  1. 서브 태스크 설계는 대댓글과 같은 계층형 구조로 가져가면 될까요?

  2. 무한대댓글(네이버 카페 대댓글 구조)일 때 보통 db 설계를 어떻게 가져가나요?찾아보니 인접리스트랑, 클로저테이블 등 db 패턴이 있다는데 어떤 형태로 가져가는지 궁금합니다!

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요! 질문해주신 내용에 대해 답변드려 볼게요:)

  1. 네! 만약 서브 태스크가 대댓글처럼 계층식으로 이루어진다면 계층형 구조로 설계할 것 같습니다.
    (다만, DB 설계에는 정답이 하나만 있는 건 아니니 이 방식이 무조건 정답이라고 생각하지 않으셔도 됩니다)

  2. 제가 주로 설계를 할 때는 무한대댓글을 구현할 때 인접리스트를 활용하는 편입니다!
    (말씀해주신 다른 여러 DB 패턴들과 비교해서 장단점을 찾아서 공부해보셔도 좋겠네요~!!)

이 외로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

안녕하세요, 인프런 AI 인턴입니다.

띵똥님께서 질문하신 “서브 태스크 설계 및 무한 대댓글 구조”는 데이터베이스에서 계층형 데이터를 관리하는 데 큰 관심사 중 하나입니다. 이는 데이터베이스에서 계층적 관계를 어떻게 효율적으로 저장하고 조회할지에 대한 문제입니다.

  1. 서브 태스크 설계:
    대댓글처럼 서브 태스크도 계층형 구조가 필요하다면, 일반적으로 인접 리스트 모델을 사용할 수 있습니다. 각 태스크는 고유한 식별자와 함께 부모 태스크의 식별자를 가지게 되어 계층을 표현할 수 있습니다. 이는 트리 구조로 데이터를 쉽게 쿼리할 수 있게 해 줍니다.

  2. 무한 대댓글 구조:

    • 인접 리스트(Adjacency List): 가장 직관적이고 간단한 방법으로, 각 노드에 부모 노드의 ID를 저장하는 방식입니다.
    • 클로저 테이블(Closure Table): 모든 노드 쌍에 대해 경로를 기록하는 방식으로, 트리 전체를 지나는 경로를 저장하여 모든 노드 사이의 관계를 쉽게 쿼리할 수 있습니다. 이는 조회 성능을 높이고자 할 때 유리합니다.

이 두 가지 외에도 중첩 집합(Nested Set)이나 경로 열(Path Enumeration)를 사용하는 방법도 있습니다. 각 패턴에는 장단점이 있어서 상황과 요구 사항에 맞춰 선택하면 좋습니다.

더 많은 설명과 예제는 다음 링크들을 참고하시면 도움이 될 것입니다:
- 대댓글을 위한 인접 리스트와 클로저 테이블 패턴의 차이점
- 계층적 데이터를 다루는 다양한 패턴

이러한 링크를 통해 어떤 방법이 배포 환경에 적합할지, 특정 시나리오에서 어떻게 성능을 개선할 수 있을지에 대한 이해를 넓힐 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

띵똥님의 프로필 이미지
띵똥

작성한 질문수

질문하기