El sistema utiliza 4 tablas, 2 utilitarias y 2 en constante registro y consulta. Una tabla llamada usuarios que es donde se almacena los datos de los usuarios a ingresar, otra vehiculos, que igualmente como la de usuarios se almacena los datos de los vehiculos, una tabla llamada inbox, que es donde se almacenan las actualizaciones de los vehiculos y otra que es posiciones, la cual sirve para guardar los registros refinados de la tabla inbox.
A la tabla Inbox llegan los SMS, el texto del mensaje incluye una porcion que tiene "lat:99.99999" y "long:78.26656" los cuales son los datos que permiten conocer la ubicacion del vehiculo, ademas de otro tipo de informacion. Que hice yo, cree un trigger para que con cada insert en la tabla inbox, seleccione ciertos campos y haga un substring para leer lat y long. Asi exportar a una tabla llamada Posiciones estos datos. Cuando llega el mensaje se ejecuta el trigger y copia los siguientes campos: Hora en que llego el mensaje(ReceivingDateTime), el numero que envio el mensaje (SenderNumber), Latitud (substring de Text) y Longitud (substring de Text).
Despues tengo una pantalla de seleccion, el cual solo muestra la Placa del vehiculo, ya que los demas datos son cofidenciales a la vista de un usuario comun. Al seleccionar la placa se hace una consulta a la BD y se busca un numero telefonico asignado a la placa seleccionada. Despues de esta consulta, realizo otra, la cual es seleccionar todas los registros de posiciones que tengan el numero de telefono obtenido de la consulta anterior con un limite de 1 registro ordenado de forma decreciente, esto fue loq mas se me ocurrio para realizarlo, y luego me abre el mapa con todos los datos.
Se que tengo que crear llaves foraneas e indexar las tablas para realizar las consultas sin perder velocidad a la hora de ejecutar las mismas, ahi radica el problema, no recuerdo como indexar la tabla y como hacer consultas mas eficientes para la bd. Espero que me logren ayudar. Adjuntare las tablas.
Tabla Inbox
Código:
Tabla PosicionesID_Inbox - int - autoincrement UpdateInDb - timestamp - notnull ReceivingDateTime - timestamp - notnull SenderNumber - varchar(20) - notnull Text - varchar(160) - notnull
Código:
Tabla UsuariosID_Posiciones - int - autoincrement HoraRecibido - timestamp - notnull nuTelefono - text - notnull Latitud - text - notnull Longitud - text - notnull
Código:
Tabla VehiculosID_Usuarios - int - autoincrement admin - set('Si','No') user - text - notnull password - varchar(40) - notnull Nombre - text - notnull Apeliido - text - notnull Cedula - int(8) - notnull Telefono - text - notnull
Código:
Espero que logren ayudarme con algo. Gracias!! ID_Vehiculo - int - autoincrement Placa - varchar(7) - notnull Marca - varchar(20) - notnull Modelo - varchar(20) - notnull Ano - varchar(4) - notnull nuAsignado - varchar(11) - notnull FechaAgre - timestamp - current_timestamp