汽车预订系统是软件开发面试中一个非常流行的问题。当我被问到这个问题时,我设计了以下 ER 结构/OOP 结构:
Car class/table 有 Car Id#、Type(Compact、Standard 等)、Make、Model Customer 有 Customer Id# 等 Reservation 是一个关联表,用于存储 Car Id#、Customer Id# 和预订汽车的日期。为简单起见,我们可以假设汽车只能在几天内预订。
这是我陷入困境的棘手部分 - 当客户 1 在 7 月 27 日预订一辆具有 Id Car 3 的紧凑型汽车时会发生什么。如果 Car 3 在 7 月 24 日总计会发生什么情况。其他紧凑型汽车可用,但在 7 月 24 日至 27 日之间他们都被拿走了。因此,当客户 1 于 7 月 27 日到达时,他最终没有车。
我认为缺陷在于 Car 和 Customer 在 Reservations 表中的耦合方式。有没有更好的方法来模拟这种关系以及常规用例,例如在特定日期找到可用的汽车,为该日期保留它等。