한 가지 방법은 데이터베이스를 설계하기 전에 모델을 설계하는 것입니다. 모델을 설계 할 때 문제 영역 내에서 비즈니스 논리와 의미를 포착하는 데 중점을 둡니다. 이는 엔터티 및 데이터 필드 이상의 것을 포함하여 비즈니스에 적합한 방식으로 캡처되어야합니다. 일부 데이터 요소는 다른 데이터 요소로 해석되고 일부는 다른 요소에 따라 결정됩니다. 또한 특정 요소가 특정 값으로 설정된 경우 개체가 내부적으로 응답하는 방식과 같이 필요한 모든 기본 논리를이 모델에 추가합니다.
데이터를 유지하는 방식과 90 % 이상 동일한 결과를 초래할 가능성이 큽니다. 괜찮아. 결합하지 않고 완전히 동일 할 수 있습니다.
또한 진정한 지속성 무지의 안개 속에서 도메인을 모델링하는 것은 소프트웨어 디자인에있어 성가신 일입니다. 할 수 있다면 환상적입니다. 그러나 문제 도메인이 전혀 중요하지 않고 복잡한 경우에도 도메인 모델링에서 때때로 물러나지 않도록 데이터 지속성에 대한 온 전성 검사를 수행하는 것이 좋습니다. 구석으로 자신을.
다양한 구성 요소의 실제 역할을 기억하고 디자인 할 때 해당 역할을 분리하십시오. 주어진 디자인 결정에 대해 해당 역할 중 어느 것이 위반되는지 스스로에게 문의하십시오.
- 데이터베이스-데이터를 저장하고, 데이터 무결성을 유지하며, 데이터를 유휴 상태로 유지합니다.
- 모델-비즈니스 로직을 포함하고, 문제 영역을 모델링하며, 데이터를 이동 상태로 유지하고, 비즈니스 레벨 이벤트에 응답하는 등
- 보기-사용자에게 데이터를 제공하고 사용자 측 논리를 수행합니다 (모델에서 실제 유효성 검사가 수행되기 전의 기본 유효성 검사 등).
- 컨트롤러-사용자 이벤트에 응답하고, 모델에 제어를 전달하고, 요청을 라우팅하고 응답을 반환합니다.