2012-08-01 2 views
6

자동차 예약 시스템은 소프트웨어 개발 인터뷰에서 매우 인기있는 질문입니다.디자인 인터뷰 - 자동차 예약 시스템

Car 클래스/테이블 자동차 아이디 #, 유형 (표준, 컴팩트 등), 등, 모델 고객이 고객 ID 번호, 확인을 가지고 : 나는이 질문을 받았다 때 나는 다음과 같은 ER 구조/OOP 구조를 설계 Reservation은 자동차가 예약 된 Car ID #, Customer Id # 및 Date를 저장하는 연관 테이블입니다. 단순화를 위해 차는 일 단위의 청크로만 예약 될 수 있다고 가정 할 수 있습니다.

여기 내가 까다로운 부분이 있습니다. 고객 1이 7 월 27 일 ID 3 자동차를 장착 한 소형 자동차를 예약하면 어떻게됩니까? 7 월 24 일에 자동차 3이 합산되면 어떻게됩니까? 7 월 24 일과 27 일 모두 체포됩니다. 따라서 고객 1이 7 월 27 일에 도착하면 궁극적으로 자동차가 없습니다.

내가 생각하는 결함은 자동차와 고객이 예약 테이블에 결합 된 방식입니다. 이 관계를 모델링 할 수있는 더 좋은 방법이 있나요 또한 일반 사용 사례 등은 특정 날짜에 대해 사용 가능한 차량을 찾을 당신은 Working라는 Car 또 다른 boolean 필드를 추가 할 수 있습니다 등

답변

2

그 날짜를 보유합니다. Car 3가 다음 합계 경우

  • falseWorking을 설정합니다.
  • Reservation에서 검색하십시오.
  • 이 있으면 해당 유형의 다른 차량을 Car에서 검색하십시오.
  • 이 차를 다른 차와 바꾸려면 Reservation으로 대체하십시오.
  • 고객에게 전화를 거십시오.
+1

그런 다음 질문 - 어떤 시점에서 자동차가 작동하는지 확인하고 싶습니까? 실행되고 모든 합계/손상된 자동차를 다른 동등한 작업으로 대체하는 야간 스크립트? –

+0

엔티티 관계 모델을 사용하기로 선택했습니다. 'Car'와'Customer'는 확실히 엔티티입니다. '예약 '이란 확실히'자동차 '와'고객 '의 관계입니다. '자동차'가 합계/파손되었는지는 확실히 '자동차'의 '재산'입니다. 이 설계는 Entity-Relation 모델 원칙에 해당하며, 여기에 던져지는 여러 유스 케이스를 견뎌야합니다. 마지막 질문 포함. –