General

Recursos

Modelo de datos

Modelo de datos

El Servidor de la pasarela necesita acceder a las autorizaciones para su correcto funcionamiento.

Para realizar este trabajo se ha diseñado un mecanismo que permite enchufar cualquier método que permita alcanzar esta información. Se podría enchufar un método que obtuviese las autorizaciones mediante WebServices, mediante un protocolo propietario o cualquier otro método que deseáramos.

El servidor tiene preinstalado un método que consiste en acceder a una base de datos Oracle u ODBC.
Una vez está configurada correctamente la conexión con la base de datos y se activa el proceso de carga de caché, el proceso leerá tres tablas o vistas con una estructura predeterminada para obtener los datos de la caché.

Con independencia de que la implementación de la estructura se realice con tablas o con vistas, las consultas se realizarán suponiendo que existen todos los índices indicados en el siguiente diagrama.
  • Los PK (claves primarias) nos indican qué información no puede estar duplicada.
  • Las FK (claves foráneas) junto con las flechas nos indican como se relacionan los datos.
  • Los I (índices) nos indican cuales serán las condiciones de búsqueda para cada tabla.



SALTO_VW_DATA_KEYS

Esta tabla contendrá un registro por cada tarjeta emitida por el sistema, debiendo cada una de ellas haber sido emitida por el sistema SALTO mediante la pasarela.


ReqColumnaTipoDescripción
YkeyVARCHAR(32)Identificador de la llave.
YstatusVARCHAR(1)Estado de la llave (N = No emitida, E = Emitida, C = Cancelada).
YofficeINTEGERModo Office (Off = 0, On != 0).
YprivacyINTEGERModo Privacy (Off = 0, On != 0).
YauditOpeningTimeINTEGERModo AuditOpeningTime (Off = 0, On != 0).
YextendedOpeningTimeINTEGERModo ExtendedOpeningTime (Off = 0, On != 0).
YlowBatteryWarningINTEGERModo LowBatteryWarning (Off = 0, On != 0).
YperiodStartDateDATETIMEFecha/Hora inicial de validez de la tarjeta.
YperiodEndDateDATETIMEFecha/Hora final de validez de la tarjeta.

Sobre esta tabla se realizarán dos tipos de consulta: la primera será una consulta sobre todas las filas de la tabla sin tener en cuenta el orden en que se obtendrán y una segunda consulta indicando el identificador de la llave (key) de la fila que se desea obtener.

La vista debería comportarse como si fuese una tabla con estas restricciones ya que no se espera que obtengamos llaves con el código de llave (key) duplicado (esta información tiene intención únicamente informativa ya que una vista no puede tener restricciones):

ÍndiceColumnasUso
PKkeySerá utilizado cuando se obtenga una tarjeta para una llave concreta (ademas de para garantizar la unicidad de la clave de las llaves)

SALTO_VW_ACCESS_RIGHT

Esta tabla contendrá para cada una de las llaves todas sus autorizaciones de acceso.

ReqColumnaTipoDescripción
YkeyVARCHAR(32)Identificador de la llave.
YaccessTypeINTEGERTipo de acceso (Zona = 1, Puerta = 2).
YaccessIDVARCHAR(32)Identificador de la puerta o zona sobre la cual se concede el acceso.
YhasPeriodINTEGERIndica si el acceso esta limitado dentro de en un periodo
(Off = 0, On != 0).

* En caso de estar activada la limitacion de periodo deberan estar informados los campos ‘periodStartDate’ y ‘periodEndDate’.
NperiodStartDateDATETIMEFecha/Hora inicial de validez del acceso.
NperiodEndDateDATETIMEFecha/Hora final de validez del acceso.

Sobre esta tabla se realizará una única consulta que consistirá en obtener todas las filas que correspondan a una llave (key).

ÍndiceColumnasUso
PKkey, accessType, accessIdUtilizada para unificar la unicidad de cada acceso.
I1keyPermite obtener todos los accesos correspondientes a una llave en concreto.


SALTO_VW_TIME_ZONES

Esta tabla contendrá para cada una de las autorizaciones todas sus zonas horarias (porciones del día durante las cuales es válido el acceso). Si no se necesita este nivel de granularidad, no serán necesarias estas filas.

ReqColumnaTipoDescripción
YkeyVARCHAR(32)Identificador de la llave.
YaccessTypeINTEGERTipo de acceso (Zona = 1, Puerta = 2).
YaccessIDVARCHAR(32)Identificador de la puerta o zona sobre la cual se concede el acceso.
YtimeIdINTEGER/
COUNTER
Identificador del timezone. Debe ser unico entre todos los timezones correspondientes a un mismo acceso.
* Para simplificar su implementacion puede implementarse como un contador, obteniendo de esta forma un identificador unico para toda la tabla.
YstartTimeVARCHAR(8)Hora inicial del periodo. El formato sera de 5 (HH:MM) o de 8 caracteres (HH:MM:SS).
YendTimeVARCHAR(8)Hora final del perido. El formato sera de 5 (HH:MM) o de 8 caracteres (HH:MM:SS) teniendo en cuenta que 24:00 o 24:00:00 indica hasta el final del dia.
YhasDayTypeINTEGERIndica si este perido se utilizara todos los dias de la semana o solo en los indicados (Todos los dias = 0, Los indicados = 1).
* Si esta indicado para todos los dias (0) los valores que tengan los siguientes campos no se tendran en cuenta.
YmonINTEGERPeridodo activo el lunes (Off = 0, On != 0)
YtueINTEGERPeridodo activo el martes (Off = 0, On != 0)
YwedINTEGERPeridodo activo el miércoles (Off = 0; On != 0)
YthuINTEGERPeridodo activo el jueves (Off = 0, On != 0)
YfriINTEGERPeridodo activo el viernes (Off = 0, On != 0)
YsatINTEGERPeridodo activo el Sabado (Off = 0, On != 0)
YsunINTEGERPeridodo activo el domingo (Off = 0, On != 0)

Sobre esta tabla se realizará una única consulta que consistirá en obtener todas las filas que correspondan a una autorización (key, accessType, accessId).

ÍndiceColumnasUso
PKkey, accessType, accessId, timeIdUtilizada para unificar la unicidad de cada zona horaria.
I2key, accessType, accessIdPermite obtener todas las zonas horarias correspondientes a un acceso en concreto.