해결된 질문
작성
·
18
답변 2
0
동관님 안녕하세요.
좋은 질문 남겨 주셔서 감사합니다. 🙂
먼저 영화와 예매는 N:M 관계가 아니라 1:N 관계입니다.
어떤 관계에서 다중성(multiplicity)은 하나의 객체에 대해 연결될 수 있는 다른 객체의 개수를 나타냅니다.
하나의 영화에는 여러 개의 예매가 만드어질 수 있는데 반해 예매는 하나의 영화에 대해서만 생성될 수 있기 때문에 영화:예매는 1:N 관계에 해당됩니다.
상영은 그 자체로 도메인에 존재하는 중요한 개념입니다.
아래 그림에서 영화는 "어쩔수가없다"이고 아래에 예매 가능한 4개의 박스가 상영에 해당됩니다.

참고로 다대다 관계를 해소하기 위해 중간 테이블을 추가하는 개념은 데이터베이스 모델링의 영역에 한정되는 기법입니다.
객체 관계에서는 다대다 관계가 가능하기 때문에 다대다 관계를 해소하기 위해 중간 객체를 추가할 필요가 없고 협력 관점에서 특정한 동작을 수행할 객체가 필요하거나 도메인 관점에서 명시적으로 드러내야 하는 경우에 적절한 객체를 추가하게 됩니다.
답변이 되었는지 모르겠네요. 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 동관님, 강의를 열심히 복습하고 계신 것을 보니 정말 기쁩니다!
영화예매 시스템에서 ‘영화’, ‘예매’, ‘상영’이라는 도메인은 매우 중요한 역할을 합니다. 지금까지 고민하신 관점과 과정이 매우 적절한 방향으로 진행되고 있다고 보입니다. 아래에 관련된 설명을 드리겠습니다.
영화와 예매:
상영 도메인:
다대다 관계 해소:
‘상영’ 도메인이 도출된 과정은 여러 다양한 비즈니스 룰과 도메인 요구 사항을 분석하는 과정에서 자연스럽게 나타나게 됩니다. 요구사항을 분석하고, 어떤 식으로 사용자에게 가치를 제공할지 고민하는 과정에서 형성됩니다.
동관님이 상영 도메인을 추가하는 방식으로 접근하신 과정은 객체지향적 설계에서 매우 직관적이고 실질적인 방법입니다. 관련된 논의를 다루고 있는 유사한 질문으로 이전에 설명된 내용을 참고하시면 추가적인 인사이트를 얻을 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.