인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

zzzzz님의 프로필 이미지

작성한 질문수

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

todo데이터 테이블 설계 강의 질문있습니다.

작성

·

59

0

사용자, 임무

한명의 사용자는 여러가지의 임무를 가진다.

한가자의 임무는 여러명의 사용자를 가진다.

예를들어 양치질하기는 a사용자,b사용자,c사용자로 등록할 수 있기 때문에 상품-주문테이블처럼(아래형식처럼) 테이블 분리되어야하지 않나요?

임무

no 임무명 임무설명 데드라인

1 청소하기 청소하기 1.27

2 빨래하기 청소하기 1.27

사용자-임무 no 임무명 (외래키) 사용자(외래키)

1 1 1

1 1 2

 

답변 2

0

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

안녕하세요 zzzzz님!

말씀해주신 대로 사용자와 임무의 관계는 다대다 관계로 판단되기 때문에

보여주신 형태처럼 테이블이 분리가 되어야 합니다!

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

0

인프런 AI 인턴님의 프로필 이미지

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

여러 사용자가 여러 임무(작업)을 공유할 수 있는 관계는 다대다(many-to-many) 관계로 모델링되어야 합니다. 데이터베이스 설계에서 다대다 관계를 구현하기 위해서는 중간 테이블(또는 조인 테이블)을 사용하는 것이 일반적입니다. 질문에서 제시해주신 방식은 정확히 그 개념을 설명하고 있습니다.

  1. 임무(Task)와 사용자(User) 테이블: 각각의 독립적인 엔티티로 설정하고, 각 엔티티에는 고유 ID가 있습니다.

  2. 사용자-임무 테이블: 이 테이블은 두 테이블의 외래 키(FK)를 포함하여, 특정 사용자가 어떤 임무를 수행하는지를 연결해 줍니다. 각 행은 하나의 사용자와 하나의 임무 간의 관계를 표현합니다.

이러한 설계는 사용자가 여러 임무를 가질 수 있고, 한 임무가 여러 사용자에 의해 수행될 수 있는 시나리오를 지원하며, 다대다 관계를 적절하게 모델링합니다.

또한, 이 구조는 JSCODE 박재성님의 강의에서 설명된 바와 같이 필수적인 관계 설정 방식 중 하나입니다. 강의에서 설명된 내용을 기반으로, 이러한 관계 설정이 왜 유용하고 어떻게 구현되는지를 더 깊게 이해할 수 있습니다.

지금 설명드린 바와 같은 설계 사례는 아래의 유사한 질문에서도 다루어지고 있습니다:
- DB에서 다대다 관계 모델링하기
- 다대다 관계를 위한 테이블 설계 방법

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

zzzzz님의 프로필 이미지

작성한 질문수

질문하기