Este sitio utiliza cookies de Google para prestar sus servicios y analizar su tráfico. Tu dirección IP y user-agent se comparten con Google, junto con las métricas de rendimiento y de seguridad, para garantizar la calidad del servicio, generar estadísticas de uso y detectar y solucionar abusos.Más información

View site in english Ir a la página de inicio Contacta conmigo
jueves, 7 de enero de 2016

Base de datos de configuración de POD

POD (Portal Open Data) es un proyecto que empecé cuando estaba sacando el MCSD Web Developer de Microsoft para hacer prácticas. Se trata de una base de datos en SQL Server a través de la que se accede a otras bases de datos de manera centralizada, el objetivo era desarrollar alrededor de ella ejemplos de servicios WCF, Web Api, Open Data, Entity Framework, LINQ to SQL, etc.

Existen una serie de clases especializadas para acceder a los datos, procesarlos y devolverlos en forma de una sola tabla en formato CSV, y una aplicación completa de consulta y proceso de datos que las utiliza. El proyecto en sí no tendría ningún interés especial, pero lo utilicé para incluir la base de datos de PISA, de la que hablaremos en otros artículos y que nos servirá para realizar prácticas de análisis de datos, por lo que será necesario tenerla instalada. En este enlace podéis descargar una copia de la base de datos de configuración de POD

De momento no existe ninguna aplicación para administrar esta base de datos de configuración, pero la copia ya viene configurada para acceder a la base de datos de PISA, por lo que, en principio, no hay que hacer nada más que descargarla e instalarla en un servidor SQL Server local. Una vez instalada habrá que descargar e instalar la base de datos de PISA.

A continuación, hago una descripción de parte de la estructura de la base de datos para quien esté interesado, aunque no es necesaria para instalarla y utilizarla.

Descripción de las tablas más importantes

Empecemos por ver como se define el acceso a los datos. En primer lugar, hay que crear un registro en la tabla Bases_de_datos:

Tabla de bases de datos de la configuración de POD
Tabla de bases de datos

El campo nombre es para la denominación a mostrar al usuario, y el campo esquema para el nombre de la base de datos SQL Server que contiene los datos.

Las diferentes entidades usadas para filtrar los datos se definen usando una serie de tablas:

Tablas de definición de entidades de la base de datos de configuración de POD
Tablas de definición de entidades de la base de datos de configuración de POD

Las entidades de datos son por ejemplo los años, los países, etc. Estas entidades se utilizan para filtrar las consultas en la base de datos, un ejemplo, en PISA puedes consultar las respuestas a una determinada pregunta en un determinado país en el año 2000. Respuestas, preguntas, países y años son entidades. La entidad es el equivalente a una tabla y cada uno de los registros de esta tabla es uno de los valores de la entidad. Por cada entidad existe un registro de la tabla Entidades.

id_entidad es simplemente una clave autoincremental, nombre_bd hace referencia a la tabla Bases_de_datos vista anteriormente (la base de datos donde se encuentra la entidad), identificador_interfaz es un valor alfanumérico con el que nos referiremos a la entidad al realizar las consultas. Por ejemplo, los años en PISA se representan con la letra A, y una consulta en la que filtremos por año contendría algo así como A(2000,2003) en su filtro.

id_tipo_valor define el tipo de valor de la clave de la entidad, puede ser N para indicar valores numéricos o A para indicar valores alfanuméricos. Este valor se refiere a la clave del registro de la entidad que contiene los datos, por ejemplo, los años son valores numéricos porque la clave de la tabla de años es el propio año.

En el campo valores_hijos indicamos si existen entidades hijas para la entidad actual, por ejemplo, la entidad Preguntas tiene una entidad hija, las respuestas, y las respuestas tienen una entidad hija, los diferentes valores de las respuestas.

Los campos resumen y orden_resumen se utilizan para indicar si la entidad aparece en el resumen final que se presenta al usuario con la selección realizada desde la aplicación, y el orden en que aparece en dicho resumen.

Esta es la definición interna de las diferentes entidades, pero también es necesario presentárselas al usuario de una manera que pueda entender, ya sea a través de un interfaz web o una aplicación de escritorio. Para esto se utiliza la tabla Traducciones_entidades, que permite además definir varios idiomas para las denominaciones y descripciones de las entidades.

id_traduccion es, de nuevo, una clave autoincremental, e id_entidad una referencia a la entidad a la que pertenece la traducción, cuyo lenguaje se defina en el campo idioma.

El campo traduccion contiene el nombre de la entidad, y descripcion contiene una descripción más larga a modo de explicación o resumen.

El resto de campos tienen que ver con la configuración de la interfaz de usuario y lo trataremos en otro artículo, después de haber visto la aplicación de consulta de datos.

En la tabla Campos_Entidades se definen campos opcionales de las entidades que se pueden añadir al conjunto de datos descargado. Por ejemplo, en PISA los países, además del nombre, tienen un código ISO de tres letras o de tres números. El campo id_campo es la clave autoincremental de la tabla, idioma es el idioma en el que está el nombre del campo, en el campo traduccion, e id_entidad una referencia a la entidad a la que pertenece.

identificador es el nombre interno para hacer referencia en las consultas, igual que en las entidades. Por último, con el campo por_defecto indicamos si es el campo a seleccionar por defecto para la entidad.

La última tabla es Filtros_Entidades, en ella se definen las dependencias entre entidades a la hora de realizar filtros, por ejemplo, en PISA, todas las entidades pueden filtrarse por medio de la entidad Años, ya que según el año, hay diferentes países participantes, diferentes cuestionarios de preguntas, etc.

Las últimas tablas que vamos a ver en este artículo son las utilizadas para indicar opciones de consulta para las diferentes bases de datos:

Tablas de opciones de base de datos de la configuración de POD
Tablas de opciones de base de datos de la configuración de POD

La tabla Opciones contiene las diferentes opciones, id_opcion es una clave autoincremental de la tabla, nombre_bd hace referencia a la base de datos a la que pertenecen las opciones. tipo se utiliza para indicar el tipo de opción y el tipo de control que se usará en la interfaz de usuario. De momento el único valor es 1, que indica una opción binaria (si o no, por ejemplo) que se edita por medio de un CheckBox. orden se utiliza para ordenar la lista de opciones al mostrárselas al usuario.

La tabla Valores_opciones se utiliza para definir posibles valores para las opciones, aunque de momento solo tiene utilidad para indicar valores por defecto. En un futuro puede contener por ejemplo diferentes valores para una lista desplegable.

Con la tabla Traducciones_Opciones configuramos el interfaz de usuario. De nuevo tenemos un campo idioma para indicar diferentes idiomas para las traducciones, el campo traduccion para indicar el nombre de la opción, y un campo descripcion para ofrecer una explicación más detallada sobre el significado y el uso de la opción. En el campo id_valor indicamos el valor por defecto que debe tener la opción.

API de consulta de la base de datos

Esta base de datos no se consulta directamente, sino a través de un API constituido por unos pocos procedimientos almacenados. Las llamadas se hacen a los procedimientos de la base de datos PODConfiguracion, y estos se encargan de construir las llamadas a los procedimientos correspondientes de las bases de datos que contienen los datos a consultar, en función de los parámetros.

Los parámetros con datos para filtrar las consultas contienen cadenas en las que se indican las entidades usadas como filtros y los valores para dichos filtros seleccionados por el usuario. Se utiliza el identificador de entidad y una serie de claves de registro separadas por comas y encerrados entre paréntesis (si queremos incluir las claves) o entre corchetes (si queremos excluir las claves). Para construir estas cadenas existe una biblioteca de clases especializada que veremos junto con la aplicación WinPODUtil.

Con las opciones de la base de datos se realiza un proceso parecido y también se pasan como cadenas de texto en un parámetro de los procedimientos.

Para no extendernos demasiado, esto es todo por el momento, veremos más sobre este API y la forma de utilizarlo cuando hablemos de la biblioteca de clases de alto nivel y ejemplos de implementación de servicios de acceso a los datos.

Comparte este artículo: Compartir en Twitter Compártelo en Facebook Compartir en Google Plus Compartir en LinkedIn
Comentarios (0):
* (Su comentario será publicado después de la revisión)

E-Mail


Nombre


Web


Mensaje


CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code