Está en la página 1de 3

1 Introduccin

plantee una propuesta para generar los reportes. Considere, la cantidad de data que almacena
la base de datos y la frecuencia de insercin. Su propuesta debe de estar a nivel de base datos,
puede agregar tablas o cualquier otro elemento de base datos que requiera. Asuma que la fun-
cin obtener_tramo(ubicacion) permite determinar en qu tramo se encuentra el vehculo en un
momento dado.

2 Mtodo 1 (Usando Indices)


2.1 Tablas involucradas

2 CREATE TABLE GPS_VEHICULO


3 (
4 GPS_ID INT PRIMARY KEY ,
5 UBICACION GIS , -- Coordenada que se representa con latitud y
longitud
6 VELOCIDAD FLOAT ,
7 FECHA DATE ,
8 HORA TIMESTAMP
9 );
10

11 CREATE TABLE T R A M O _ V E L O C I D A D _ M A X I M A
12 (
13 TRAMO_ID INT PRIMARY KEY ,
14 VELOCIDAD_MAXIMA FLOAT ,
15 AREA_TRAMO GIS -- es un poligono , que cubre un tramo
16 );
2.2 Reportes (MYSQL Querys)
2.2.1 Reporte de exceso de velocidad diario

2 Select ve . UBICACION , ve . VELOCIDAD , ve . FECHA , tr . VELOCIDAD_MAXIMA


from GPS_VEHICULO ve , Obtener_tramo ( UBICACION ) tr WHERE tr .
VELOCIDAD_MAXIMA > ve . VELOCIDAD AND ve . FECHA = CURDATE () ;
2.2.2 Reporte de exceso de velocidad mensual
Reporte mensual por mes

2 Select ve . UBICACION , ve . VELOCIDAD , ve . FECHA , tr . VELOCIDAD_MAXIMA


FROM GPS_VEHICULO ve , Obtener_tramo ( UBICACION ) tr WHERE tr .
VELOCIDAD_MAXIMA > ve . VELOCIDAD and MONTH ( ve . FECHA ) = ?
3

4 --? es remplazado por el mes que se consulta


Reporte mensual

2 SELECT ve . UBICACION , ve . VELOCIDAD , MONTH ( ve . FECHA ) AS MES , tr .


VELOCIDAD_MAXIMA FROM GPS_VEHICULO ve , Obtener_tramo ( UBICACION )
tr WHERE tr . VELOCIDAD_MAXIMA > ve . VELOCIDAD ORDER BY MES ;

1
2.2.3 Reporte de exceso de velocidad anual
Reporte anual por ao

2 Select ve . UBICACION , ve . VELOCIDAD , ve . FECHA , tr . VELOCIDAD_MAXIMA


FROM GPS_VEHICULO ve , Obtener_tramo ( UBICACION ) tr WHERE tr .
VELOCIDAD_MAXIMA > ve . VELOCIDAD and YEAR ( ve . FECHA ) = ?
3

4 --? es remplazado por el year que se consulta


Reporte Anual

2 Select ve . UBICACION , ve . VELOCIDAD , MONTH ( ve . FECHA ) AS YEAR , tr .


VELOCIDAD_MAXIMA FROM GPS_VEHICULO ve , Obtener_tramo ( UBICACION )
tr WHERE tr . VELOCIDAD_MAXIMA > ve . VELOCIDAD ORDER BY YEAR ;

2.3 Optimizando las consultas


2.3.1 Usando Indices
Agregar ndices a la tabla GPS_VEHICULO ya que es la que contendr toda la data de GPS alma-
cenada por cada vehculo al menos una vez por minuto, no es necesario en TRAMO_VELOCIDAD_MAXIMA
ya que no contendra muchos registros, pero tambien se puede agregar para mejorar la eficiencia.
Como los datos usados en la funcin Obtener_tramo usan longitud y latitud de ubicacin,
debemos indexar esa columna para un mejor rendimiento de la consulta.
1

2 CREATE INDEX idx_ubicacion ON GPS_VEHICULO ( UBICACION ) ;


3

4 -- Aqui , indexando el campo UBICACION en la tabla GPS_VEHICULO


asegura que las consultas SELECT que referencian ese campo en su
WHERE o HAVING se ejecutaran mas rapido en el estado pre -
indexado .

2.3.2 Ajustando variables internas

3 Metodo 2 (Usando un procedimiento almacenado)


3.1 Tablas involucradas

2 CREATE TABLE GPS_VEHICULO


3 (
4 GPS_ID INT PRIMARY KEY ,
5 UBICACION GIS , -- Coordenada que se representa con latitud y
longitud
6 VELOCIDAD FLOAT ,
7 FECHA DATE ,
8 HORA TIMESTAMP
9 );
10

11 CREATE TABLE T R A M O _ V E L O C I D A D _ M A X I M A
12 (
13 TRAMO_ID INT PRIMARY KEY ,
14 VELOCIDAD_MAXIMA FLOAT ,
15 AREA_TRAMO GIS -- es un poligono , que cubre un tramo

2
16 );
17

18 CREATE TABLE G P S _ V E H I C U L O _ E X CE S O S
19 (
20 EXCESO_ID ,
21 UBICACION GIS ,
22 VELOCIDAD FLOAT ,
23 FECHA DATE ,
24 HORA TIMESTAMP ,
25 AREA_TRAMO GIS ,
26 VELOCIDAD_MAXIMA FLOAT
27 );
Como se puede ver, en la tabla GPS_VEHICULO_EXCESOS no se guardan los IDs de las
otras dos tablas sino que se guardan los datos de cada tabla, Porque hacer esto?, se hace para
porque si guardaramos los ids de cada tabla habria que hacer un JOIN o CROSS_JOIN para
obtener el contenido de cada tabla referenciada por su id y al juntar ambas tablas se cruzan todos
los datos de las tablas y no solo los datos que nos interesan, haciendo que las consultas para los
reportes sean totalmente ineficientes y quitandole el proposito a la tercera tabla.
3.2 Como controlamos que vehiculos estuvieron en exceso de veloci-
dad?
Simple, para la insercin de datos usar un procedimiento almacenado, en este procedimiento al-
macenado ademas de insertar los datos en la tabla GPS_VEHICULO, se usara la funcin obtener
tramo para comparar la velocidad maxima del tramo con la velocidad del vehiculo y en caso este
en exceso guardar los datos en la tabla GPS_VEHICULO_EXCESOS

De esta manera al realizar las consultas para los reportes solo se consultaran los vehiculos que tu-
vieron excesos, evitando toda la gran cantidad de informacin que se maneja en GPS_VEHICULO.

También podría gustarte