Diseño de la base de datos del proyecto: “Portafolio Académico”, del Grupo de Investigación Multimedia, GIM.

DATABASE DESIGN, FOR THE PROJECT: “ACADEMIC PORTAFOLIO” FROM THE MULTIMEDIA INVESTIGATION GROUP

Victor, Duarte Gómez

Auxiliar de Investigación, Ingeniería en Multimedia, Grupo de Investigación Multimedia “GIM”, Universidad Militar Nueva Granada, Bogotá, Colombia, 1200132@umng.edu.co

Carlos, Aranzazu López

Diseñador Gráfico, Docente Ingeniería en Multimedia, Grupo de Investigación Multimedia “GIM”, Universidad Militar Nueva Granada, Bogotá, Colombia, carlos.aranzazu@gmail.com

RESUMEN

Este artículo presenta, el desarrollo del diseño de una base de datos para el proyecto “Portafolio Web de Trabajos Académicos”, usando conceptos del modelamiento de las bases de datos relacionales. El desarrollo del proyecto siguió la metodología de combinar la teoría concerniente al diseño de bases de datos y técnicas de Ingeniería de Software, siguiendo las etapas investigación (hablar con el cliente), especificación de requerimientos, diseño (conceptual, lógico),  implementación (diseño físico) y pruebas. Se describe el diseño final obtenido.

PALABRAS CLAVES: Bases de datos, tablas, lláves, índices, relaciones, DBMS.

ABSTRACT

This article presents the development of a database design for the project “Web Portfolio of Academic Work” using relational database modeling concepts. The project development followed the methodology of combining the theory concerning the database design and Software engineering techniques, following the stages of investigation (speaking with the client), requirements specification, design (conceptual, logical), implementation (physical design) and tests. The final design obtained is described.

KEYWORDS: Database, table, keys, index, relations, DBMS.

 INTRODUCCIÓN

Ingeniería en multimedia es una carrera profesional, que se caracteriza por combinar las áreas científicas y artísticas, produciendo en la mayoría de los casos resultados en medios audiovisuales. Durante el desarrollo de las materias de estudio de esta carrera profesional, son numerosos los trabajos desarrollados por los estudiantes y normalmente son socializados en su momento y no se vuelven a mencionar.

Al analizar la situación, surge la intención de aprovechar dicho material. La línea de investigación interfaces e integración multimedia del grupo investigación multimedia, bajo la dirección del diseñador grafico Carlos Aranzazu López, propone el desarrollo de un portafolio de trabajos académicos en línea, para que estudiantes, docentes y la comunidad académica en general puedan verlos, con el fin de mostrar lo enseñado en las materias y el nivel en el cual están los estudiantes.

El trabajo a describir en este artículo como auxiliar de investigación, se desenvolverá en el desarrollo de la etapa inicial: “Diseño de una base de datos para el proyecto del portafolio web de trabajos académicos”. En el que la finalidad es lograr desarrollar una propuesta de base de datos que satisfaga los requerimientos de almacenar y administrar la información que será manipulada en el portafolio, brindando bases sólidas en el desarrollo del proyecto.

Una de las tendencias en la investigación mundial en multimedia, se ha dirigido a la recuperación de recursos multimedia por medio del análisis de contenidos, caso muy particular sobre todo en aplicaciones de internet. Pensando en los requerimientos del proyecto que se empezó a desarrollar, la realización del diseño de la BD que implementaría, sería un primer paso para incursionar en este tópico, justificando así la necesidad de desarrollar el proyecto de diseñar la base de datos.

En un futuro, el proyecto de la línea integración e interface multimedia, busca abrir puertas a usuarios a través de la publicación de sus trabajos en línea, creando una vertiente social que les brindará ayuda para promocionarse. Este proyecto se define como una base de datos, que será el inicio para la creación de tal propósito, un medio de exposición, comunicación de enseñanza e ideas. El efecto a nivel social del desarrollo de la BD no se verá físicamente en los usuarios sino funcionalmente una vez se implemente etapas consecutivas de la línea de investigación en multimedia.

Al tener presente ventajas del proyecto general, se justifica la necesidad de realizar el proyecto, por ende la creación de la base de datos para este.

1.    BASES DE DATOS

De acuerdo Rigaux [11], una base de datos es una gran colección de datos relacionados entre sí, archivados en un ambiente computacional. Una base de datos es una herramienta o sistema que se usa para guardar información en forma de datos, los cuales se agrupan de manera organizada y se acceden a estos por medio de consultas. Entendiéndose por datos como dice Rob y Coronel [12], hechos en bruto; los cuales aún no se han procesado para revelar su significado e información como datos procesados”.

1.1.        MODELOS DE DATOS.

 Las operaciones que se podrán realizar en una base de datos y los datos que podrán ser almacenados en estas, son identificadas por medio de los modelos de datos que se clasifican en tres.

 Figura 1. Etapas del modelamiento de una Base de datos.

 Los modelos de datos son conceptos que describen la realidad a un nivel que el usuario entienda y la maquina también, mediante cierto grado de abstracción. Los modelos conceptuales permiten construir una descripción de la realidad, fácil de entender e interpretar. Con el modelo lógico, se implementa un modelo de BD y se especifican los atributos con sus propiedades que se almacenarán en las entidades de la BD, llevando el diseño un paso más cercano de la idea final, ya que el diseño se empieza apoyar en descripciones de datos que son procesables por un computador. Y con el modelo físico se logra implementar la BD en un hardware con la ayuda de un DBMS.

 

1.2.        MODELOS DE BASES DE DATOS.

A través de los años, a medida que las BD se comienzan a implementar en Internet y otros medios; el nivel de complejidad en el almacenamiento de información aumenta. Se exige un mayor uso de los recursos de los sistemas computacionales y formas de organizar de datos, originando así la necesidad de crear nuevas estructuras que logren esto.

En el transcurso de los años, fueron propuestos diferentes modelos de BD, los cuales intentaban corregir errores o implementar nuevos métodos que tenían o carecían los modelos anteriores.

Los modelos de Bases de Datos más conocidos son el Modelo Jerárquico, Modelo de Red, Modelo Orientado a Objetos y el Modelo Relacional. Los modelos de jerárquicos y de red, como dice Forouzan [6], en la actualidad estos modelos son obsoletos, debido a que con el paso del tiempo los nuevos modelos como el relacional y orientado objetos, han ofrecido mejoras y corregido deficiencias que presentaban. A pesar de que el modelo orientado a objetos ofrece una gran descripción de la realidad, aun no cuenta con estándares o una reglamentación que indique como es la forma correcta de diseñar la BD, convirtiéndose en la mayor desventaja frente al modelo relacional (una de las razones por la que se implemento este modelo en el diseño de la base de datos).

(NOTA:”El modelo relacional fue el implementado para el diseño de la base de datos, razón por la cual se mencionan conceptos utilizados en el proceso del diseño”.)

 

1.3.        MODELO RELACIONAL.

Las bases del modelo fueron postulados en 1970 por Edgar Frank Codd. Su idea fundamental, es el uso de relaciones entre entidades o tablas.

Resumiendo los conceptos encontrados se puede decir que una base de datos relacional es un conjunto de una o más tablas estructuradas en registros y campos, que se vinculan entre sí por un campo en común conocido como llave primaria.

 

1.3.1.   Tablas.

La información almacenada en las bases de datos es descompuesta en datos para poder ser almacenadas. Los datos deben ser almacenados de forma que puedan al realizar consultas a las tablas retorne la información original o nueva información requerida. La organización que permite estas acciones son agrupaciones conocidas como tablas.

 Figura 2. Vista de una tabla.

Normalmente el diseñador se encarga de crear las tablas y define qué atributos tienen. Los atributos son agrupados en la misma tabla porque poseen relaciones entre sí o simplemente porque la combinación de ellos genera información que se desea obtener por medio de consultas.

 

1.3.2.   Columnas y Filas.

 Las tablas se componen de dos estructuras, columnas y filas. El primero se encarga de organizar los datos y el segundo de contenerlos. También son reconocidos como atributos y registros, respectivamente.

En la Figura 2 la tabla cuenta con 5 campos (FORM_ID, FORM_NOMBRE, FORM_APELLIDO, FORM_EMAIL, FORM_TELEFONO)  y 4 registros (que son los filas de: FORM_ID = (1, 2, 3, 4)

 

1.3.3.   Conectividad.

La relación es una forma de indicar que dos o más tablas contienen información que se relacionan entre ellas. El modelo relacional se caracteriza por implementar el uso de las relaciones 1:1 (uno a uno), 1:n ( uno a muchos) y n:n (muchos a muchos).

 

 1.3.4.   Índices.

Los registros ingresados en una tabla, ocupan la última posición en esta, resultando en un orden aleatorio los valores en la columna. Sin un modo de organizar estos datos, los DBMS se verían obligados a consultar todos los registros de la columna uno a uno para poder mostrar un resultado. Con los índices se logra un ordenamiento que acabo con este inconveniente.

 Figura 3. Organización sin Índices VS Organización con Indices.

 1.3.5.   Llaves.

El modelo relacional cuenta con unas asignaciones de propiedades conocidas como llaves que ayudan a obtener un rendimiento óptimo en las BD. Se creó una opción para indicar si uno atributo o varios son únicos (llave Primaria) o posee una relación con otra tabla (llave foránea), con el fin de realizar búsquedas más rápidas y eficientes, acabando con redundancias de datos y preservando la integridad de los datos (ciertas normas o postulados, que buscan evitar incoherencias entre datos y en ellos mismos) y otros.

 

1.3.6.   Tipos de Datos.

Para los campos de cada una de las tablas, es necesario determinar el tipo de datos que contienen. De esta forma se ajusta el diseño de la BD y se consigue un almacenamiento óptimo con el menor espacio utilizado. Los tipos de datos que son aplicables a un campo, pueden ser resumidos en tres grupos:

 Figura 4. Tipos de datos, con ejemplos de cada uno.

Los campos en las tablas pueden contener diferentes clases de datos. La asignación de los tipos de datos es realizada por el diseñador y puede ser modificada en cualquier momento pero trayendo posibles conflictos e incoherencias entre los campos en la bases de datos, de ahí la importancia de tenerlos correctamente escogidos desde el principio del diseño.

Dependiendo el grupo, existen diferentes opciones para asignarle a un campo. Dependiendo del  DBMS, se manejan sinónimos, por ejemplo, INT e INTEGER del grupo numérico.

 

1.3.7.   Sistemas Administradores de Bases de Datos (DBMS).

Es un conjunto de librerías, aplicaciones y utilidades que controlan la organización, el almacenamiento, la administración y manipulación de los datos en las bases de datos. Los DBMS se sitúan entre el usuario y el sistema operativo, se encargan de facilitarle el diseño de la base de datos al usuario y traducir lo que quiere realizar el usuario en un lenguaje que la máquina interprete.

 

2.    ANÁLISIS Y REQUERIMIENTOS.

El desarrollo del diseño de la base de datos se ve comprendida por dos etapas, el análisis de requerimientos en el que se conversa con el cliente y se pautan las bases del diseño y el de la etapa de modelamiento. Posterior a esto se hacen pruebas de funcionamiento, cumpliendo así, las bases pautadas en el proceso del ciclo de vida de la ingeniería de software; análisis de requerimientos, diseño, implementación (pruebas), correcciones, producto final.

2.1.        ANÁLISIS DE ESCENARIO.

 Se comienza analizando el escenario para plantear las bases del desarrollo del proyecto, tener un mejor entendimiento del problema y poder generar un modelo conceptual de la bases de datos con el cual iniciar el diseño de ella. Inicialmente se habla con el cliente para establecer y entender el problema para identificar los requerimientos del sistema.

 

2.1.1.   Descripción del Sistema en Lenguaje Natural (cliente – diseñador).

El portafolio será expuesto en línea a través de una de página Web y usuarios (registrados y no registrados) podrán visitarlo. Inicialmente se plantea que este proyecto tendrá un tiempo de prueba en donde solo serán usuarios selectos, en el que se verificará el funcionamiento de la BD con la intensión de encontrar fallas, corregirlas y posteriormente permitir el registro a más usuarios, esperando algún día llegar al punto que toda las carreras de la UMNG, hagan parte de esta comunidad.

Inicialmente los usuarios tendrán que registrarse para poder subir trabajos. Al registrarse llenarán un formulario en el cual ingresarán ciertos datos personales, como: nombre, apellido, correo electrónico, programa, género,  entre otros.

Los usuarios se clasificarán en 3 clases:

  • Inscritos Clase 1 (Pertenecientes a la comunidad): Podrán  subir  al servidor de la comunidad trabajos, calificar trabajos, recibir comentarios, realizar comentarios y etiquetar sus trabajos.
  • Inscritos Clase 2 (No pertenecientes a la comunidad): No tendrán los permisos para poder subir trabajos al servidor de la comunidad,  pero tienes los mismos beneficios que los usuarios clase 1.
  • No inscritos: Solo podrán visualizar trabajos.

(NOTA: las características de los usuarios en un futuro son posibles presentar variaciones).

Una vez inscritos, los usuarios tendrán los permisos para subir trabajos. Al subir un trabajo, el que realiza esta acción, tendrá que llenar una “ficha bibliográfica”, con el fin de exponer a terceros una mayor información del trabajo y asignarles etiquetas (tags), escoger la categoría del trabajo y un director, entre otros datos.

Los usuarios para visualizar los trabajos primero tendrán que buscarlos, por medio del buscador del portafolio. Los trabajos podrán ser encontrados por la categoría a la que pertenezcan, las etiquetas asignadas o por características como (favoritos, más calificación, etc.).

Los trabajos expuestos podrán ser calificados y comentados por terceros (usuarios tipo 1 y 2). Los comentarios podrán ser vistos por todos los usuarios, pero solo contestados por usuarios del tipo 1 y 2. Las calificaciones se irán acumulando y se muestra el promedio de ellas.

Los usuarios registrados podrán seleccionar trabajos de su agrado y guardarlos en  listas de favoritos, para accederlos posteriormente de una forma más rápida.

Los usuarios que tengan trabajos expuestos podrán solicitar retiro de un trabajo en el momento que lo deseen, siempre y cuando sea justificada la razón.

 

2.1.2.   Análisis de Requerimientos.

Al tener el una idea de lo que el cliente desea, se  definen requerimientos para tener así un mejor entendimiento de lo necesario para el desarrollo del proyecto. Este análisis se lleva a cabo de dos maneras: Antes de empezar el proyecto describiendo los requerimientos que se creen necesarios y a medida que se avanza en el proyecto, debido a que se presentan detalles no determinados.

El diseño de la BD conto con varios requerimientos. Se dividieron en dos clases que fueron los que es su defecto trae consigo el desarrollo e implementación de una BD y los analizados por los requerimientos del sistema, Algunos fueron:

Por conceptos de BD:

  • Consistencia e integridad los datos.
  • Hacer uso correcto de relaciones.
  • Establecer el correcto tipo de variables.
  • Evitar la redundancia de datos.
  • Correcto uso de Llaves.
  • Correcto uso de los Índices.

Por requerimientos del Proyecto:

  • Crear atributos necesarios.
  • No malgastar espacio en memoria.
  • Diseño de tablas optimizables (Según necesidades).
  • Guardar información de usuarios registrados.
  • Guardar información de los trabajos.
  • Guardar comentarios realizados de los trabajos.
  • Guardar calificaciones realizadas de los trabajos.
  • Guardar propiedades de los trabajos.
  • Identificar relación del usuario registrado con la institución UMNG.
  • Utilizar prefijos lógicos para el nombramiento de las tablas y atributos

 

2.2         DISEÑO, ETAPAS DE MODELAMIENTO. 

2.2.1    Modelo Conceptual.

Luego de la especificación de requerimientos, se realiza un modelo entidad-relación (E-R) para tener una visión global de las variables que conforman a la BD.  En esencia, con el uso de este modelo E-R, se busca las entidades que describan los objetos que intervienen en el problema y las relaciones existentes entre ellas.

Uno de los primeros problemas que se presentaron, fue decidir cuales serian las identidades y cuales los atributos. Se opto por crear dos entidades principales (usuarios y trabajos) y a partir de ellos diseñar el esquema. Después de varias propuestas, el resultado obtenido del diseño del diagrama (E-R), fue:

 Figura 5. Diagrama entidad relación (E-R)

2.2.2    Diseño Lógico.

Definido un modelo conceptual por el cual empezar, se definió el diseño lógico (ver página tal) con el fin de describir los atributos y sus propiedades que contendrían las tablas.

En la planificación de la estructura de la BD se busca obtener una estructura sólida debido a que se espera que la BD tenga un funcionamiento óptimo. Es por esto que se definen las tablas manejando un protocolo para mantener una unidad en la estructura de la BD ya que este diseño juega un papel decisivo en la gestión de ella. Es prioritario durante el diseño de las tablas, determinar los campos necesarios, definirlos en forma adecuada y especificar un nombre, tipo y longitud, con el fin de evitar incoherencias o errores al momento de implementar la BD.

La asignación de los nombres de las tablas se decidió que el texto seria en mayúsculas y en singular. El nombre asignado a cada una se hace pensado en una relación entre el título de la tabla y el contenido de esta; con la intención de crear nombres no tediosos y lógicos para el administrador, desarrolladores y diseñadores de interfaz.

Los nombres están compuestos por partes:

ÍNDICE “TB”: para indicar que se trabaja con una tabla.

ÍNDICE “GIM” provenientes del nombre de la BD GIM_PORTAFOLIO. Indica que la tabla hace parte de la BD.

DESCRIPCIÓN: Una palabra la cual hace referencia al contenido de la tabla.

“NOTA: las partes se separan por un guión bajo, para poder diferenciarlas”.

Ejemplo:

La tabla que contendrá información de los trabajos lleva por nombre: “TB_GIM_TRABAJO”.

 Figura 6. Lista de las tablas utilizadas en la base de datos.

Igualmente para mantener una unidad dentro de las tablas, los campos de estas llevan como prefijo las tres primeras letras de la descripción en el nombre de la tabla, seguido de una palabra que haga alusión al contenido del dato que almacenará (separados por guiones bajos).

Ejemplo:

En la tabla trabajo, el dato que contiene el nombre del atributo título sería TRA_TITULO.

2.2.3    Diseño Físico.

 Para la elaboración del diseño físico, se requería del uso de un DBMS. Los DBMS tenidos en cuenta para ser implementados en este proyecto se caracterizaron principalmente por ser de carácter gratuito y por contar con documentación de su funcionamiento.

Se pensó para el diseño físico, emplear los DBMS, Postgresql, Firebird y mySql. Se investigó cual sería la mejor solución, por medio de tablas comparativas en la web y recomendaciones de usuarios en comunidades informáticas. En la observación se llegó a la conclusión de que, en general, todas las opciones eran optimas para el intensión que se tenía (probar el funcionamiento de la base de datos), debido a poseen buenas calificaciones por parte de usuarios expertos quedando en un nivel aproximado, en que se concluye que la única forma de distinguirlos es trabajar con los tres y tomar una decisión.

Debido a que el proyecto giraba entorno al diseño de la base de datos y no a la decisión de cuál es el mejor DBMS, se decidió trabajar con MySql (versión 5.0).

 

3.    EVALUACIÓN Y RESULTADOS

Realizado el diseño de la base de datos, se opto como trabajo extra verificar el funcionamiento de la base de datos con el DBMS escogido para la evaluación.

3.1.        EVALUACIÓN

Se generó el código SQL de la base de datos y por medio del cliente gráfico MySQL Query Broswer y PHPMyAdmin, se comprobo el diseño físico del diseño, verificando de manera positiva la creación de las diecisiete tablas con todos sus atributos, como se había planteado en el diseño lógico.

El siguiente paso fue crear otros scripts con fines de verificar los el funcionamiento de la base de datos.

  • Script relacionales entre tablas, es decir emplear el uso de llaves foráneas.
  • Scripts autoincreméntales, estos serian generados para los id o llaves primarias que en las tablas fueran requeridos.
  • Scripts índices, estos serian generados para los id o llaves primarias que en las tablas fueran requeridos.

Terminado de generar los scripts anteriores, se prosiguió a poblar la base de datos con otros códigos.

Por medio de consultas se verifico de manera positiva que los datos ingresados por medio del código poblaron satisfactoriamente a la base de datos.

Poblada la base de datos se verifico por medio de consultas:

  • Las llaves foráneas funcionaban, se logro verificar las relaciones creadas entre tablas.
  • Los scripts índices aceleraron búsquedas, esto se logro gracias a una de las características del promt de MySQL, que después de realizar consultas, acciones de insertar, eliminar, modificar las bases de datos, dice cuanto tiempo demoro.
  • Los datos que requerían del  extra auto incrementales lograban su meta.

Terminado esas pruebas se verificó, el requerimiento de que el usuario pudiese eliminar sus trabajos o inclusive borrar su cuenta si lo deseaba.

Se presentó un problema en esta etapa. Ocurría que por las relaciones existentes, el usuario no se podía eliminar si había subido trabajos al menos que se borraran antes los trabajos o en casos de que si el usuario deseaba borrar un trabajo y este había recibido comentarios o calificaciones, tocaba eliminarlas primero, debido a que las relaciones producían un error de integridad.

Después de investigar cómo arreglar este problema se logro encontrar documentación que hablaba de una opción para solucionarlo. Los disparadores, disparadores, son acciones que se activan automáticamente al realizar un cambio en la bases de datos, los cuales al ser empleados de manera correcta, permitieron la eliminación de registros que se caracterizaban por tener relaciones en otras tablas.

(Nota: “Los disparadores fueron recientemente incluidos en MySql, si se hubieran trabajado en alguna versión anterior, de pronto no hubiera existido solución”.) 

 

3.2.        RESULTADOS

Se logro obtener el resultado esperado del diseño de la base de dato, cumpliendo con los requerimientos planteados y la aprobación del cliente (director del proyecto).

La base de datos final se constituyo por 17 tablas, teniendo el siguiente esquema lógico:

Figura 7. Estructura final lógica del diseño de la base de datos.

 

  1. 4.    CONCLUSIONES

Al existir una gran variedad de fuentes de información, los conceptos referentes a BD pueden  llegar a variar mucho. Existen casos de  textos que no aclaran conceptos, o los dan por entendidos o superados,  llevando a crear términos confusos o de difícil asimilación para principiantes y aun expertos, generando interpretaciones individuales desviadas o erradas de cómo en realidad son.

A pesar de existir manuales, libros, y ayudas en línea, algunos de los programas para manejo y gestión de Bases de Datos, no se preocupan por reforzar fundamentos teóricos a los usuarios, limitándose  a generar un manual funcional, creando así profesionales con un mayor nivel empírico que de educados.

En el trabajo del Ingeniero en Multimedia, que debe preocuparse por la confección de aplicaciones robustas, estéticamente aceptables y enmarcadas dentro estándares de uso y accesibilidad, las bases de datos juegan un papel importante, ya que gran parte del soporte de dichas aplicaciones se centran en el manejo de la información, y para ello se hace necesario manejar correctamente las bases de  datos por parte del Ingeniero Multimedia.

Las bases de datos en casos son vistas como una simple herramienta de almacenamiento y administración de la información, subestimando la importancia que estas tienen en el desarrollo de tecnologías como Internet, Juegos, Aplicaciones, entre otros.

Las bases de datos se pueden ver como un medio que genera comunidad más que un simple sistema en un ambiente web, debido que sin el uso de estas, comunidades como flickr, youtube, no existirían.

 

REFERENCIAS BIBLIOGRÁFICAS

 [1] ALLAN, ROY A, (2001), A History of the Personal Computer. Allan Publishing.

[2] BATINI, CARLO. (1994). Diseño Conceptual de Bases de Datos. Ediciones Díaz de Santos.

[3] BERTINO, ELISA. MARTINO LORENZO, (1995) Sistemas de bases de datos orientadas a objetos: : conceptos y arquitectura, ediciones Díaz de Santos

[4]  DATE C. J, (2001) Introducción a los sistemas de bases de datos, Pearson Educación.

[5] BURLESON, DONALD KEITH. (1998). Inside the Database Object Model. CRC Press.

[6] FOROUZAN, BEHROUZ A. (2003).  Introducción a las Ciencias de la Computación. Thomson Learning Ibero.

[7] HARRINGTON JAN L. (2002). Relational Database Design Clearly Explained. Morgan Kaufmann.

[8] MULLINS CRAIG S. (2002). Database Administration: The Complete Guide to Practices and Procedures. Addison-Wesley.

[10] PONS OLGA, MARÍN NICOLÁS, JUAN MEDINA MIGUEL, ACID SILVIA, VILA MARIA AMPARO. (2005). Introducción a las bases de datos El modelo relacional. Thomson Learning Ibero.

[11] RIGAUX, PHILIPPE. SCHOLL, MICHEL. VOISARD, AGNES. (2001), Spatial Databases: With Application to GIS, Morgan Kaufmann.

[12] ROB, PETER. CORONEL, CARLOS. (2004). Sistemas de bases de datos: Diseño, implementación y administración. Thomson Learning Ibero.

 

Deja un comentario