UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

10.11.2. Modelado de datos

Recursos

Plan de trabajo

Esta actividad tiene como objetivo introducirse en el modelado de datos de una aplicación software, de forma que se extiendan los conocimientos sobre qué datos hay que modelar, cómo se pueden modelar, las diferentes alternativas de implementación real de un modelo de datos, implicaciones a la hora de escritura de código de programa, la importancia de la separación en capas, etc. De esta manera, se trata de generalizar ciertos conceptos para poder aplicarlos en diferentes aplicaciones concretas, y específicamente aplicarlos para la aplicación del proyecto propuesta, a realizar en grupos.

En las actividades previas de esta sesión, se pide realizar lo siguiente:

  1. Lectura del material sobre modelado de datos y decisiones de estructuras de datos de una aplicación.

  2. Para el ejemplo de aplicación del recurso leído (el cual tiene ciertas analogías con el proyecto a realizar por los grupos), realizar las siguientes tareas:

    1. Definir las estructuras de datos necesarias para almacenar la información de las fotos y los autores en memoria estática de un array fijo de N elementos para las fotos y otro de M elementos para los autores. ¿Cómo elegirías el número N? ¿Estarías utilizando siempre la menor cantidad de memoria posible para el almacenamiento? ¿Cuál sería el máximo número de fotos que podrías tener?

    2. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en memoria dinámica contigua y los autores en otra zona de memoria dinámica contigua. En ningún caso se debe utilizar más memoria de la necesaria, esto es, no se debe reservar memoria para elementos que aún no se van a almacenar.

    3. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en una lista enlazada, y de todos los autores en otra lista enlazada.

    4. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en diferentes listas enlazadas utilizando una función de hash para decidir en cuál de las listas enlazadas debe ser almacenada. Hacerlo de forma análoga con los autores.

    5. Para cada una de las estructuras de datos definidas anteriormente, implementar una función que sea capaz de inicializar las estructuras de datos, representando en dicho momento que no se contiene ningún elemento.

    6. Para cada una y sobre cada una de las estructuras de datos definidas anteriormente, implementar una función que sea capaz de añadir una nueva foto a la colección. Se supone que no existe previamente en la colección la foto que se pretende añadir. Debe funcionar tanto para el caso de que cuando se produce la inserción no hay ningún elemento en la estructura de datos, como para cuando ya existen elementos en la estructura de datos

Autoevaluación automática

Comprueba con estas preguntas si has entendido el documento sobre el documento de modelado de estructuras de datos.

  1. En una aplicación se tienen almacenados datos sobre empresas hoteleras, así como sus respectivos hoteles. Cada hotel sólo pertenece a una empresa hotelera. Si en la fase de diseño hemos identificado una tabla para las empresas hoteleras, y otra tabla para los hoteles. ¿Cuál será la relación entre ambas tablas?

    • 1:N. Todo hotel tiene varias empresas hoteleras

    • N:1. Toda empresa hotelera tiene varios hoteles

    • N:N. Todo hotel tiene varias empresas hoteleras, y toda empresa hotelera tiene varios hoteles

    • No tienen ninguna relación ambas tablas

  2. Supón que se necesita memoria dinámica para almacenar en un momento a varios hoteles registrados en la aplicación y hacer búsquedas rápidas sobre campos de información de los mismos para seleccionar hoteles según ciertas restricciones. Este número de hoteles donde hacer la búsqueda puede ir desde 1 a más de 1 millón. La estructura más adecuada para guardar la información sería:

    • Array estático

    • Array dinámico

    • Lista enlazada

    • Tabla hash con listas enlazadas

  3. Considera que la información de hoteles y empresas hoteleras debe ser guardada en un fichero. Si posteriormente queremos realizar operaciones frecuentes de búsquedas de hoteles dada una ciudad concreta donde se localiza el hotel. Para realizar este tipo de operación, lo mejor es almacenar la información en el fichero tal que:

    • Vaya la información de cada ciudad una a una de manera consecutiva, incluyendo como parte de la información de la ciudad todos los hoteles que tiene

    • Vaya la información de cada hotel uno a uno de manera consecutiva incluyendo como parte de la información de un hotel a la empresa hotelera a la que pertenece

    • Vaya la información de cada empresa hotelera una a una de manera consecutiva, incluyendo como parte de la información de la empresa todos los hoteles que tiene

    • Vaya la información de hoteles con el mismo número de estrellas (categoría) de manera consecutiva, incluyendo como parte de la información de cada categoría, todos los hoteles de dicha categoría

  4. Si de una aplicación software de modo textual, queremos transformarla para añadirle un interfaz gráfico. Será más sencilla realizar la extensión si:

    • Hemos desarrollado toda la aplicación en un único fichero

    • Hemos dividido la aplicación en 3 módulos bien diferenciados: datos, control, y presentación

    • Hemos utilizado listas enlazadas para su desarrollo

    • Hemos compilado utilizando la opción -file para para simplificar en un futuro esta operación