2012-08-01 14 views
6

Un sistema de reserva de automóviles es una pregunta muy popular en las entrevistas de desarrollo de software. que diseñó la siguiente estructura ER estructura/POO cuando me preguntaron esto:Entrevista de diseño - Sistema de reserva de automóviles

clase Car/tabla tiene car ID #, Tipo (Compact, Standard, etc), marca, modelo cliente tiene al cliente Id #, etc La reserva es una tabla asociativa que almacena el número de identificación del vehículo, el número de identificación del cliente y la fecha para la que está reservado el automóvil. En aras de la simplicidad podemos suponer que el automóvil se puede reservar solo en trozos de días. Aquí está la parte engañosa donde cometí un error: ¿Qué sucede cuando un cliente 1 reserva un automóvil compacto con Id Car 3 el 27 de julio? ¿Qué sucede si el automóvil 3 se suma el 24 de julio? Hay otros vehículos compactos disponibles, pero entre 24 y 27 de julio todos son capturados. Entonces, cuando el Cliente 1 llega el 27 de julio, finalmente no tiene automóvil.

Creo que la falla está en la forma en que el automóvil y el cliente están acoplados en la tabla de reservas. ¿Hay alguna forma mejor para modelar esta relación y también los casos de uso habituales como encontrar un coche disponible para una fecha determinada, se reserva para esa fecha, etc.

Respuesta

2

Puede agregar otro campo boolean a Car llamada Working. Si Car 3 se suma a continuación

  • conjunto Working-false.
  • búsquelo en Reservation.
  • si está allí, luego busque otro automóvil de ese tipo en Car.
  • si se encuentra, luego reemplace este auto con el otro auto en Reservation.
  • más llame al cliente.
+1

Luego viene la pregunta: ¿en qué punto queremos verificar si el automóvil está funcionando? ¿Un script nocturno que ejecuta y reemplaza todos los automóviles total/dañados por otros equivalentes que funcionan? –

+0

Eligió usar el modelo de relación de entidad. Un 'Coche' y un' Cliente' son definitivamente entidades. 'Reservation' es definitivamente una relación entre un' Car' y un 'Customer'. Que un 'Coche 'sea total/dañado es definitivamente una' propiedad' de la entidad 'Coche'. Este diseño es fiel a los principios del modelo Entidad-Relación y debe soportar los diferentes casos de uso que se le presenten. Incluyendo tu última pregunta. –