미스터 역마살

[DAP/모델링 공부] [중급]차량 렌트 회사 본문

Certification/DAP

[DAP/모델링 공부] [중급]차량 렌트 회사

Mr. YeokMaSsal 2022. 8. 14. 10:15
728x90
반응형

문제

아래는 가상화된 어느 차량렌트회사에 대한 시스템을 구축하고자 한다.

바른길렌탈 트럭회사는 지역 또는 편도 사용을 위한 소형 트럭과 트레일러를 빌려준다.  우리는 347개의 렌탈 사무소를 가지고 있으며  5,780개 다양한 종류의 차량을 구비하고 있다.

우리는 렌탈 계약서를 관리할 시스템을 설치 운용하려고 한다.  각 렌탈 사무소는 바로 고객에게 대여될 수 있는 차량을 빌려 준다. 우리는 예약을 받지 않는다. 고객은 렌탈한 사무소와 반납할 사무소가 다를 수 있다.  대여 시 반납예정일자와 반납사무소를 지정한다. 대여일자와 반납일자가 다를 수 있다. 계약 시 시스템에서 계약번호를 자동으로 채번한다. 실제 반납되었을 경우 실제반납일자를 관리한다.

각 렌탈 사무소는 대전중부지점과 같이 자체 사무소명을 갖고 있다.  각 사무소는 또한 사무소별로 유일한 3자리 숫자의 사무소 번호를 갖는다.  우리는 또한 사무소의 주소를 관리한다.  각 차량은 차량번호, 등록상태와 면허번호판 등록번호를 가지고 있다.  우리는 5가지의 차량을 갖고있다  36t트럭, 24t트럭, 10t트럭, 8t덮개 트레일러, 6t무덥게 트레일러.   이를 분류하기 위해 차량종류코드를 가지고 있다.  우리의 모든 차량을 위하여 우리는 마지막 정비일자, 등록 말소일을 관리할 필요가 있다.

우리의 트럭을 위해서는 기름탱크의 용량, 리디오가 작동여부를 알 필요가 있다. 장거리 주행의 경우 고객들은 라디오를 선호한다.  우리는 트럭을 빌려주기 전 현재 몇 Km를 주행했는지 기록하고 트럭이 반납된 후 다시 이를 기록한다.

한 번의 렌탈계약은 한대의 차량만을 렌탈 가능하다.  대부분의 렌탈 계약은 개인 고객과 맺지만 법인과도 맺을 수 있다. 각 계약은 계약 시 렌탈계약번호가 자동으로 채번된다.  우리는 각 법인별로 법인번호를 부여하고 법인명과 주소를 관린한다.  우리는 법인과 개인 정보를 별도로 관리하고 있다.

각 개인고객들에 대해서는 고객명, 자택전화, 주소, 운전면허발급시도, 면허번호, 적성검사일을 기록한다.

렌탈 사무소는 중앙사무소 지방사무소가 있으며,  각 렌탈사무소는 차량을 보유하고 있다.  중앙사무소는 특정 사무소에 너무 많은 차량이 몰리지 않도록 차량을 조정하는 역할도을 한다.

 

엔터티 & 속성 도출

엔터티는 빨간색속성은 파란색관계나 주요 사항은 밑줄

아래는 가상화된 어느 차량렌트회사에 대한 시스템을 구축하고자 한다.

바른길렌탈 트럭회사는 지역 또는 편도 사용을 위한 소형 트럭과 트레일러를 빌려준다.  우리는 347개의 렌탈 사무소를 가지고 있으며  5,780개 다양한 종류의 차량을 구비하고 있다.

우리는 렌탈 계약서를 관리할 시스템을 설치 운용하려고 한다.  각 렌탈 사무소는 바로 고객에게 대여될 수 있는 차량을 빌려 준다. 우리는 예약을 받지 않는다. 고객은 렌탈한 사무소와 반납할 사무소가 다를 수 있다.  대여 시 반납예정일자와 반납사무소를 지정한다. 대여일자와 반납일자가 다를 수 있다. 계약 시 시스템에서 계약번호를 자동으로 채번한다. 실제 반납되었을 경우 실제반납일자를 관리한다.

렌탈 사무소대전중부지점과 같이 자체 사무소명을 갖고 있다.  각 사무소는 또한 사무소별로 유일한 3자리 숫자의 사무소 번호를 갖는다.  우리는 또한 사무소의 주소를 관리한다.  차량차량번호, 등록상태와 면허번호판 등록번호를 가지고 있다.  우리는 5가지의 차량을 갖고있다  36t트럭, 24t트럭, 10t트럭, 8t덮개 트레일러, 6t무덥게 트레일러.   이를 분류하기 위해 차량종류코드를 가지고 있다.  우리의 모든 차량을 위하여 우리는 마지막 정비일자, 등록 말소일을 관리할 필요가 있다.

우리의 트럭을 위해서는 기름탱크의 용량, 리디오가 작동여부를 알 필요가 있다. 장거리 주행의 경우 고객들은 라디오를 선호한다.  우리는 트럭을 빌려주기 전 현재 몇 Km를 주행했는지 기록하고 트럭이 반납된 후 다시 이를 기록한다.

한 번의 렌탈계약은 한대의 차량만을 렌탈 가능하다.  대부분의 렌탈 계약은 개인 고객과 맺지만 법인과도 맺을 수 있다. 각 계약은 계약 시 렌탈계약번호가 자동으로 채번된다.  우리는 각 법인별로 법인번호를 부여하고 법인명과 주소를 관린한다.  우리는 법인과 개인 정보를 별도로 관리하고 있다.

개인고객들에 대해서는 고객명, 자택전화, 주소, 운전면허발급시도, 면허번호, 적성검사일을 기록한다.

렌탈 사무소는 중앙사무소 지방사무소가 있으며,  각 렌탈사무소는 차량을 보유하고 있다.  중앙사무소는 특정 사무소에 너무 많은 차량이 몰리지 않도록 차량을 조정하는 역할도을 한다.

 

나의 답안

 

 

모범 답안

 

 

주요 Point

트럭을 빌려주기 전 현재 몇 Km를 주행했는지 기록하고 트럭이 반납된 후 다시 이를 기록 한다.

이부분은 크게 신경쓰지 않았던 부분이다. 하지만 모법 답안을 보고나니 트럭에 한해서 주행기록을 관리한다는걸  알아 차렸고 문제를 꼼꼬히 읽어야 겠다고 다시금 깨닫게 되는 순간 이었다. 차량렌탈계약 엔터티에서 트럭일 경우에만 주행거리를 관리하기 위해서는 렌탈계약 엔터티에서 서브타입으로 관리 하는것이 적절해 보인다. 차량 구분을 통해 트럭과 트럭이 아닌것으로 나눈 후 트럭일 경우만 주행거리 속성을 추가하게 되면 문제에서 요구하는 요구사항에 부합되게 된다.  

 

한 번의 렌탈계약은 한대의 차량만을 렌탈 가능하다.

이부분은 결국 렌탈계약 엔터티에 대해서 상세 엔터티는 만들 필요가 없다는것을 의미 한다. 한번의 계약에서 2개이상이 가능하다고 한다면 렌탈계약상세라는 엔터티를 추가적으로 만들어 렌탈계약번호에 추가로 순번이나 차량번호를 포함한 결합속성 PK를 구성해야 했을 것이다. 하지만 하나의 계약은 한대의 차량만 계약이 가능하다는건 계약 엔터티에서 차량 정보도 입력할 수 있다는것을 의미하기 때문에 추가적으로 엔터티를 도출할 필요가 없다.

 

우리는 법인과 개인 정보를 별도로 관리하고 있다

이부분은 법인과 개인 엔터티를 분리해서 만들어야 한다는것을 의미한다. 그리고 '대부분의 렌탈 계약은 개인 고객과 맺지만 법인과도 맺을 수 있다' 이 문구에서 알수 있듯이 계약은 법인, 개인이 동시에 될수  없는 배타적 관계라는것을 의미한다. 따라서 계약엔터티와 관계를 가지되, 배타관계로 관계설정을 해주어야 한다.

 

사무소는 차량을 보유하고 있다.  중앙사무소는 특정 사무소에 너무 많은 차량이 몰리지 않도록 차량을 조정하는 역할도을 한다.

이부분은 차량과 사무소와 관계가 있다는 것을 의미하며, 차량 엔터티에 소속사무소번호를 FK로 가지고 있게되면 사무소별 차량 보유 수를 알수 있고 '중앙사무소는 특정 사무소에 너무 많은 차량이 몰리지 않도록 차량을 조정하는 역할도을 한다' 이 문구도 해결 할 수있게 된다.

 

차량종류코드 서브 타입.

라디오작동여부, 기름탱크용량, 주행거리 등은 트럭인 경우에만 관리 해야 한다고 하고 차량종류코드는 3가지의 트럭을 관리하고 있어 이것을 어떻게 해결해야 할지 고민이 되었다. 모범답안 처럼 처리하는것이 정답이겠지만 내가 제시한 답안 처럼  해도 물리모델로 변경했을 경우 속성의 중복은 발생하지 않는다.

 

 

 

728x90
Comments