질문을하고 (두 가지 대안을 제안하는) 방법은 자동차가 생성 될 때 driverId가 여전히 유효하다는 것입니다.
그러나 차량을 삭제하거나 다른 운전자에게 제공하기 전에 driverId와 관련된 드라이버가 삭제되지 않아야하며, 또한 다른 차량에 운전자가 할당되지 않았을 수도 있습니다 (도메인이 운전자 만 드라이버를 제한하는 경우) 하나의 자동차와 관련이 있습니다)).
유효성 검사 대신 (존재 유효성 검사 포함)을 할당하는 것이 좋습니다. 그런 다음 여전히 할당 된 상태에서 삭제를 허용하지 않기 때문에 생성하는 동안 오래된 데이터의 경쟁 조건과 다른 장기적인 문제를 방지 할 수 있습니다. (할당은 할당을 확인하고 표시하며 원자 적으로 작동합니다.)
Btw, 나는 차와 운전자 사이의 관계가 아마도 차나 운전자와는 별개의 책임이라는 @PriceJones에 동의합니다. 이러한 종류의 연결은 일정 문제 (드라이버, 자동차, 시간대 / 창문, 대체품 등)와 비슷하기 때문에 시간이 지남에 따라 복잡성이 증가합니다. 현재 등록뿐만 아니라 등록. 따라서 BC 주 자체의 가치를 충분히 누릴 수 있습니다.
할당되는 집계 엔티티의 BC 내에서 또는 자동차와 운전자 간의 연관을 담당하는 별도의 BC 내에서 할당 체계 (예 : 부울 또는 참조 카운트)를 제공 할 수 있습니다. 전자를 사용하면 자동차 또는 운전자 BC에 발급 된 (유효한) 삭제 작업을 허용 할 수 있습니다. 후자를 수행하는 경우 자동차 및 운전자 BC의 삭제를 방지하고 대신 자동차 및 운전자 협회 스케줄러를 통해 전송해야합니다.
BC간에 할당 책임을 다음과 같이 나눌 수도 있습니다. 자동차 및 운전자 BC는 각각 할당 된 부울을 BC로 확인하고 설정하는 "할당"체계를 제공합니다. 할당 부울이 설정되면 BC는 해당 엔티티의 삭제를 방지합니다. (그리고 시스템은 자동차 및 운전자 BC가 자동차 / 운전자 협회 스케줄링 BC로부터 할당 및 할당 해제 만 허용하도록 설정됩니다.)
자동차 및 운전자 스케쥴링 BC는 현재 및 미래의 일정 기간 / 지속 기간 동안 자동차와 관련된 운전자의 캘린더를 유지하고, 스케쥴 된 자동차 또는 운전자의 마지막 사용시에만 다른 BC의 할당 해제를 통지합니다.
보다 급진적 인 솔루션으로 자동차 및 운전자 BC를 자동차 전용 / 역사 기록표 공장으로 취급하여 자동차 / 운전자 협회 스케줄러의 소유권을 남길 수 있습니다. 자동차 BC는 자동차의 모든 세부 사항과 함께 VIN과 함께 새로운 자동차를 생성 할 수 있습니다. 자동차의 소유권은 자동차 / 운전자 협회 스케줄러가 처리합니다. 자동차 / 운전자 협회가 삭제되고 자동차 자체가 파손 된 경우에도 자동차 레코드는 정의에 따라 자동차 BC에 여전히 존재하며 자동차 BC를 사용하여 과거 데이터를 조회 할 수 있습니다. 자동차 / 운전자 협회 / 소유권 (과거, 현재, 그리고 잠재적으로 미래에 예정된)은 다른 BC 주에 의해 처리되고 있습니다.
Driver.delete
존재하지 않아야합니다. 골재가 파괴되는 도메인을 본 적이 없습니다. AR을 주변에두면 고아가 될 수 없습니다.