문제

이 간단한 예제에 대한 도메인 모델을 어떻게 작성 하시겠습니까? 레시피에는 많은 성분이있을 수 있으며 성분은 많은 레시피에 사용할 수 있습니다. 각 레시피에 사용 된 각 성분의 양도 저장됩니다. 이 데이터와 관계를 저장하기 위해 다음 3 개의 데이터베이스 테이블을 설계했습니다.

나는 이제 이것을 표현하기 위해 도메인 모델을 만들려고 노력하고 있습니다. 두 개의 수업이있는 기본 예제가 있습니다. 그런 다음 새로운 성분을 만드는 것에 대해 생각할 때이 모델에 문제가 발생했습니다. 수량 속성이없는 클래스가 있어야합니다. 이것이 어떻게 모델링되어야합니까?

데이터베이스 테이블

Alt Text http://img190.imageshack.us/img190/340/databasex.png

도메인 모델

Alt Text http://img24.imageshack.us/img24/8859/classesy.png

도움이 되었습니까?

해결책

도메인 중심 디자인을 시도하는 경우 테이블로 시작하지 마십시오. 정교한 먼저 기본 도메인을 반영하는 개념적 모델. NDP에 동의합니다. 레시피 레디언은 DDD 관점에서 약간 어색한 이름/개념입니다.

이 모델에는 레시피, 성분, 측정 및 수신 정보가 필요하다고 생각합니다.

레시피는 성분의 집계입니다. 레시피에 속하는 각 성분은 준비를위한 사양으로 관련 측정이 필요합니다. 또한 레시피의 특정 준비 중에 사용되는 각 성분의 실제 양을 연관 시키려면 수신 정보를 모델링해야합니다.

측정은 단위 및 양 (예 : 2 컵, 0.5 온스, 250 그, 2 큰술 ...)으로 구성됩니다.

여기서 분석 중에 혼합 될 수 있고 분할해야 할 두 가지 다른 것들을 봅니다. 요리법/성분/측정은 무언가 (각 레시피에 대한 한 인스턴스)와 수신 정보/성분/측정을 하나의 콘크리트 준비로하여 사양으로 측정합니다. 특정 순간에 특정 사람이 수행 한 레시피는 다른 측정을 사용하고있을 수 있습니다 (레시피 사양은 두 개의 판에 대한 것이고 4 개의 손님이 있기 때문에 모든 재료를 두 배로 늘 렸습니다.

교환 가능한 재료 세트 (예 : 염소 치즈 치즈 사용 모짜렐라가없는 경우), 동일한 카테고리의 레시피 세트, 레시피 요리 시간을 수집하는 요리 책인 일부 재료와 같은 것들을 더 깊게하고 모델링을 시작할 수 있습니다. , 등.

다른 팁

도메인 모델에서 특정 성분과 수량에 대한 참조가 포함 된 레시피 레디언 클래스를 만듭니다.

그런 다음 레시피 레시피언트 목록을 변경하여 레시피 레디언트 객체를 포함합니다. 마지막으로 성분 클래스에서 수량을 제거하십시오.

팁 : 대부분의 순수 도메인 모듈러는 도메인 모델을 먼저 만들고 훨씬 나중에까지 데이터베이스에 관심이 없어야한다고 말합니다.

가입 테이블 (수량)에 데이터가 있으므로 대답은이를 나타내려면 클래스가 필요하다는 것입니다. (다른 대안이 있지만 고려할 가치가 없습니다.)

모델이 커지면 의심 할 여지없이 여기에 더 많은 데이터를 추가해야합니다. 예를 들어, 레시피의 재료 순서를 어떻게 설정합니까?

RecipeingRedient는 도메인 구동 설계 관점에서 약간 어색한 이름 (및 개념)입니다. 기분이 좋아지는 다른 이름을 생각해 낼 수 있습니다. 그러나 일반적으로 이것은 필요한 구현 세부 사항입니다. 죄송합니다. 참조를 제공하기 위해 Evan의 DDD 책이 편리하지 않습니다.

나는 너희들이 모두 길을 잃었다 고 생각한다. 원래 포스터에는 올바른 충동이 있었지만 잘못된 경로를 취하고있었습니다. 실제로, 그가 보여주는 매핑 테이블은 오래된 Riehl Heuristic (L 및 R 관계의 이름을 결합)을 사용하여 보여줍니다. 그러나 실제로 일어나는 것은 당신이 필요하다는 것입니다. 역할 여기에 클래스 (COAD의 도메인 모델링 접근법은 이것을 많이 사용했습니다). 그래도 다음은 다음과 같습니다. 그것이 이미 성분이 이미 있습니다! 여기서 누락 된 추상화는 벌레 캔을 열어줍니다. 추가되는 것입니다. 그것은 그것이 기본 클래스 일 것이라고 주장 할 수 있습니다. 예를 들어 음식 (문자 그대로, 정의상 정의에 따라 레시피에 편집 불가능한 것을 추가 할 수 없기 때문에)이지만 모든 음식에 대한 설명의 부담이 있거나 이름을 지정할 수 있습니다.

제가 생각하는 올바른 모델에는 레시피에 특정 음식이 많은 성분이 포함되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top