Base de datos del sistema UVIpool

Anuncio
Base de datos del sistema UVIpool
La tabla Users contiene la información personal y de contacto de los usuarios:
 idUser (INT AUTO_INCREMENT NOT NULL PRIMARY KEY): identificador
unívoco de usuario.
 name (VARCHAR(40)): nombre.
 surname (VARCHAR(40)): apellidos.
 nick (VARCHAR(40)): sobrenombre.
 password (VARCHAR(40)): contraseña.
 secretQuestion (VARCHAR(60)): pregunta por si el usuario pierde la contraseña.
 secretAnswer (VARCHAR(60)): respuesta a la pregunta secreta.
 address (VARCHAR(100)): dirección.
 city (VARCHAR(40)): ciudad.
 state (VARCHAR(40)): provincia/estado.
 country (VARCHAR(40)): país.
 email (VARCHAR(80)): dirección de correo electrónico.
 telephone (VARCHAR(40)): número de teléfono móvil.
 sipAddress (VARCHAR(80)): identificador SIP del usuario en algún servicio VoIP.
La tabla Vehicles contiene la información de los coches que puede conducir un usuario:
 idVehicle (INT AUTO_INCREMENT NOT NULL PRIMARY KEY): identificador
unívoco de vehículo.
 idUser (INT NOT NULL): identificador del usuario que puede conducir el vehículo.
 plate (VARCHAR(40)): matrícula.
 brand (VARCHAR(40)): marca.
 model (VARCHAR(40)): modelo.
 color (VARCHAR(40)): color.
La tabla Points contiene la información sobre los puntos significativos de una ruta (i.e. los
waypoints que sirven a Google Maps para calcularla). También contiene los puntos
especificados por los pasajeros como comienzo y final de los trayectos que les interesan.
 idRoute (INT NOT NULL): identificador de la ruta a la que pertenece el punto, si es
el caso.
 idRequest (INT NOT NULL): identificador de la petición de pasajero a la que
pertenece el punto, si es el caso.
 address (VARCHAR(100)): dirección textual del punto según Google Maps.
 latitude (FLOAT): latitud del punto, expresada como un único valor decimal (no en
grados, minutos y segundos).
 longitude (FLOAT): longitud del punto, también expresada como un único valor
decimal.
 position (TINYINT UNSIGNED):
o 0: origen.
o 255: destino.
o 1…254: punto intermedio, sólo para rutas publicadas (el valor del número
importa, porque establece orden de paso).
 type (TINYINT UNSIGNED):
o 0: punto establecido por el conductor.
o cualquier otro valor indica que es un punto introducido para ir a recoger a un
pasajero; coincide con la idRequest de la petición formulada por éste.
La tabla Routes contiene la información de todas las rutas anunciadas por los conductores
que buscan pasajeros para compartir trayectos –salvo los puntos que la definen, que están
en la tabla Points. Si una misma ruta se repetirá n días, habrá otros tantos registros, cada
uno con la fecha y la hora correspondiente:
 idRoute (INT AUTO_INCREMENT NOT NULL PRIMARY KEY): identificador
unívoco de la ruta.
 idUser (INT NOT NULL): identificador del conductor que publica la ruta.
 avoid (TINYINT UNSIGNED): codifica si se evitan autopistas o peajes.
 seatsOffered (TINYINT UNSIGNED): número de asientos que se ofrecen a
potenciales pasajeros.
 seatsAvailable (TINYINT UNSIGNED): número de asientos disponibles en un
momento dado (los ofrecidos menos los ocupados).
 maxDeviation (FLOAT UNSIGNED): máximo incremento en la distancia de la ruta
por pasar a recoger a los pasajeros.
 remainingDevitation (FLOAT UNSIGNED): desviación remanente luego de
establecer acuerdos con pasajeros.
 maxDelay (FLOAT UNSIGNED): máximo incremento en el tiempo total de
realización de la ruta por pasar a recoger a los pasajeros.
 remainingDelay (FLOAT UNSIGNED): incremento remanente luego de establecer
acuerdos con pasajeros.
 Date (DATETIME): fecha y hora de realización de la ruta.
 Smoking (TINYINT UNSIGNED): indicador de si se tolerará que alguien fume
dentro del vehículo.
 costModel (TINYINT UNSIGNED): modalidad de pago requerida por el conductor:
o 0: cobrar una cantidad a cada pasajero.
o 1: cobra una cierta cantidad por kilómetro a cada pasajero.
o 2: cobrar una cierta cantidad en total, a repartir por igual entre todos los
pasajeros que terminen sumándose a una ruta.
o 3: cobrar una cierta cantidad en total, a repartir entre todos los pasajeros de
manera proporcional a los kilómetros que haga cada uno.
o …
 costAmount (FLOAT UNSIGNED): la cantidad a la que hace referencia costModel.
La tabla Requests contiene información de las peticiones de potenciales pasajeros, a
excepción de los puntos de origen y destino, que están en la tabla Points:
 idRequest (INT AUTO_INCREMENT NOT NULL PRIMARY KEY): identificador
unívoco de solicitud.





idUser (INT NOT NULL): identificador del usuario que introduce la solicitud.
seats (TINYINT UNSIGNED): número de sitios solicitados.
date (DATETIME): fecha y hora solicitadas para realizar la ruta.
timeMargin (TINYINT UNSIGNED): holgura en la indicación de la hora de recogida.
maxCost (FLOAT UNSIGNED): importe máximo que está dispuesto a pagar el
pasajero.
 status (TINYINT UNSIGNED): estado de la solicitud:
o 0: pendiente de evaluar posibilidades de realización.
o 1: confirmada.
o 2: descartada.
La tabla Possibilities relaciona rutas publicadas por conductores con peticiones de
potenciales pasajeros, cuando se cumplen los requisitos especificados por unos y otros:
 idPossibility (INT AUTO_INCREMENT NOT NULL PRIMARY KEY):
identificador unívoco de posibilidad.
 idRoute (INT NOT NULL): identificador de ruta.
 idRequest (INT NOT NULL): identificador de solicitud.
 status (TINYINT UNSIGNED): estado de evaluación de la posibilidad:
o 0: sin validar por conductor o pasajero.
o 1: descartada por pasajero.
o 2: aceptada por pasajero, pero sin validar por conductor.
o 3: aceptada por pasajero, pero descartada por conductor.
o 4: aceptada por ambas partes.
Finalmente, la tabla Agreements contiene los detalles de los acuerdos establecidos entre
conductores y pasajeros:
 idAgreement (INT AUTO_INCREMENT NOT NULL PRIMARY KEY):
identificador inequívoco de acuerdo.
 idRoute (INT NOT NULL): identificador de la ruta.
 idRequest (INT NOT NULL): identificador de la petición que precedió al acuerdo.
 date (DATETIME): fecha y hora concretas de recogida del pasajero.
 originKeyDriver (LONGVARBINARY): clave de comienzo de trayecto para el
conductor.
 destinationKeyDriver (LONGVARBINARY): clave de fin de trayecto para el
conductor.
 originKeyPassenger (LONGVARBINARY): clave de comienzo de trayecto para el
pasajero.
 destinationKeyPassenger (LONGVARBINARY): clave de fin de trayecto para el
conductor.
 status (TINYINT UNSIGNED): estado del acuerdo:
o 0: pendiente de llegar al día y la hora acordadas.
o … los valores que se necesiten para anotar si las cosas van bien o mal y en
qué punto.
Descargar