Concretemos entonces la descripción del problema a resolver, resumiendo:

Queremos realizar una aplicación para catalogar películas:

  • Las películas pueden pertenecer a varios catálogos
  • Los usuarios comentarán las películas
  • Los usuarios calificarán las películas
  • Los actores que intervienen en las películas
  • Las imágenes (carátulas, libretos, posters) de las películas
  • Los directores dirigen las películas
  • Los productores producen de las películas
  • Los idiomas en los que están disponibles las películas
  • Los subtítulos disponibles de las películas
  • Las temáticas de que engloban las películas
  • Las películas pueden estar almacenadas en múltiples soportes físicos
  • Las películas puede estar en distintas ubicaciones
  • De la misma definición extraemos las entidades y sus relaciones (entidades maestras e históricas)

    image

    Y ahora pasamos de lo concreto a lo abstracto, resumiendo:

    Queremos realizar una aplicación para catalogar películas:

  • Las películas pueden pertenecer a varios catálogos
  • Las personas comentarán las películas
  • Las personas calificarán las películas
  • Las personas que intervienen en las películas
  • Las imágenes (carátulas, libretos, posters) de las películas
  • Las personas dirigen las películas
  • Las personas/empresas producen las películas
  • Los idiomas en los que están disponibles las películas
  • Los subtítulos disponibles de las películas
  • Las temáticas de que engloban las películas
  • Las películas pueden estar almacenadas en múltiples soportes físicos
  • Las películas puede estar en distintas ubicaciones
  • ¿Cuanto de distinta es nuestra definición? Pues no demasiado (solo lo marcado en verde). Aglutinamos actores/directores/guionistas/productores en una única tabla, Entidades

    image

    Una de las cuestiones más complejas en el diseño de modelos de datos es decidir cual de las dos definiciones del problema a resolver es la más correcta para nuestro ejemplo. Normalmente la solución suele ser mixta…Veamos la solución que José Luis implementó como posible solución para este mismo ejemplo.

    image http://ascsl.wordpress.com/2010/01/08/se-me-esta-ocurriendo-algo/

    Como podéis apreciar las tablas actores, directores, guionistas las juntó en una algo más abstracto llamado Personas. Curiosamente dejó a los usuarios fuera (alguno se preguntará el motivo). Es lógico, los usuarios no tendrán un peso especifico en el casting de la película pero si lo tendrán para valorar y comentar la película. Este montaje es mixto, y puede ser un buen punto de partida.

    Como os podéis imaginar el modelo abstracto es más sencillo de mantener por implementar menos código y por tener menos tablas. Pero también es más complejo de entender y suele llevar asociado una mayor implementación en reglas de negocio.

    Con esta breve explicación doy por concluido la serie de artículos. Si deseáis que nos extendamos en alguna parte del análisis comentarlo…

    2 Comments

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *