From 20e332aa6e92f29cee8bf97b972a0ac51dc3529a Mon Sep 17 00:00:00 2001 From: gumartinm Date: Tue, 23 Oct 2012 03:45:18 +0200 Subject: [PATCH] I am dead. No able to write comments. --- capitulo3/capitulo3.tex | 2 +- capitulo5/capitulo5.tex | 57 ++++++++++++++++++++++++++++++++++++++++- fig/MobiAdsAndroidDataBase.jpg | Bin 39550 -> 38846 bytes 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/capitulo3/capitulo3.tex b/capitulo3/capitulo3.tex index 897902b..2be6889 100644 --- a/capitulo3/capitulo3.tex +++ b/capitulo3/capitulo3.tex @@ -63,7 +63,7 @@ Un ORM está constituido de objetos que dan acceso a datos y de reglas de negoci En el ORM, la capa de abstracción, encapsula la lógica de los datos. El resto de la aplicación no necesita saber las queries SQL y usando los objetos en lugar de las records de la base de datos y clases en lugar de tablas tiene otro beneficio: se pueden añadir nuevos métodos de acceso a las tablas. Por ejemplo si se tiene una tabla llamada Cliente con dos campos, Nombre y Apellido, se puede añadir un nuevo campo NombreCompleto que se componga de los dos sin necesidad de hacer ninguna modificación en la tabla o en la base de datos, simplemente añadiendo un nuevo método al objeto que representa la tabla de la base de datos que devuelva el Nombre y el Apellido concatenados como NombreCompleto. -Symfony soporta dos ORMs escritos en PHP que son open source: Propel y Doctrine. Integra ambos y cuando se crea un nuevo proyecto se elige qué ORM usar. +Symfony soporta dos ORMs escritos en PHP que son open source: Propel y Doctrine. Integra ambos y cuando se crea un nuevo proyecto se elige qué ORM usar. En este proyecto en concreto, se usará el ORM Doctrine. \subsection{El patrón MVC} diff --git a/capitulo5/capitulo5.tex b/capitulo5/capitulo5.tex index 73c6197..25ae059 100644 --- a/capitulo5/capitulo5.tex +++ b/capitulo5/capitulo5.tex @@ -18,7 +18,7 @@ El modelo entidad relación, fue propuesto por Peter Chen para el modelado de ba El Lenguaje de Modelado Unificado (UML por sus siglas en Inglés) comenzó como una colección de notaciones para soportar el diseño orientado a objetos. Deriva de diferentes aproximaciones y por tanto no hay una única notación si no un conjunto de notaciones para el modelado de diversos elementos como son clases, eventos, comportamientos y otros componentes de los programas. -En la práctica UML también permite utilizar sus notaciones para el modelado de bases de datos relacionales\footnote{http://www.tdan.com/view-special-features/8457} (basadas en el modelo Entidad Relación) +En la práctica UML también permite utilizar sus notaciones para el modelado de bases de datos relacionales\footnote{\url{http://www.tdan.com/view-special-features/8457}} (basadas en el modelo Entidad Relación) En esta memoria de este proyecto se empleará el lenguaje UML para la representación gráfica de las bases de datos de la aplicación Web y Android. Las relaciones entre entidades se representan con flechas, las entidades con cajas y sus atributos son escritos dentro de las cajas que representan las entidades. También se puede observar el grado de participación y la cardinalidad entre entidades en una relación; siguiendo la notación UML: \begin{itemize} @@ -31,6 +31,49 @@ En esta memoria de este proyecto se empleará el lenguaje UML para la representa \subsection{Base de datos aplicación Web, modelado UML} +En la siguiente figura en la cual se representa la base de datos de la aplicación Web, cabe destacar la información que a continuación se describe: + +\subsubsection{Tabla sfGuardUser} + +Permite almacenar parámetros relacionados con la identificación del usuario (password, dirección de correo, nombre, apellidos, etc) + +\begin{itemize} + \item \textbf{algorithm}: el password se encuentra cifrado, con este campo se permite variar el algoritmo de cifrado si se desea. + \item \textbf{fk\_LaguageId}: es una \emph{foreign key} que permite asignar a un usuario un determinado idioma. +\end{itemize} + +\subsubsection{Tabla Office} + +Contiene información relacionada con una sucursal u oficina perteneciente a una empresa. En principio, una compañía no tendría por qué tener oficinas o sucursales de ahí que pueda haber entre 0 e infinitas sucursales u oficinas por compañía. + +\begin{itemize} + \item \textbf{office\_gps}: es un dato de tipo \emph{geography(POINT,4326)} Más adelante, en el capítulo de implementación se explicará más acerca de este tipo especial de dato de PostGIS. + \item \textbf{fk\_CityId}: una oficina puede encontrarse o no en una determinada ciudad. A través de este campo se permite relacionar oficinas o sucursales con ciudades, regiones y por último países. + \item \textbf{fk\_CompanyId}: marca la relación entre la oficina o sucursal y la compañía. Puede haber compañías sin sucursales pero nunca una oficina o sucursal sin compañía asociada. +\end{itemize} + +\subsubsection{Tabla AdDescription} + +Sirve para internacionalizar la información relacionada con los anuncios. De este modo cuando se crea un anuncio se puede crear en tantos idiomas como el sistema admita, así el usuario recibirá el anuncio en el idioma que él o ella previamente configuraron. + +\begin{itemize} + \item \textbf{fk\_LanguageId}: relación entre esta tabla y la de idiomas (tabla ``Language'') + \item \textbf{fk\_AdId}: un anuncio puede tener n descripciones en n diferentes idiomas. + \item \textbf{ad\_gps}: es un dato de tipo \emph{geography(POINT,4326)} especial de PostGIS, del cual se hablará en el capítulo donde se explica la implementación de la aplicación. +\end{itemize} + +\subsubsection{Tabla CompanyCategory} + +Permite a los usuarios que administran compañías en el sistema crear nuevas categorías. Al mismo tiempo, los anuncios que estos usuarios administradores de compañías crean, pueden ser asociados con estas categorías de compañía que se encuentran en esta tabla. Se utiliza una estructura especial del ORM Doctrine proporcionado por Symfony conocida como \emph{Nested Set}\footnote{\url{http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/hierarchical-data.html\#nested-set}} + +\begin{itemize} + \item \textbf{fk\_GeneralCategId}: los usuarios finales, aquellos que recibirán los anuncios en sus dispositivos móviles se asocian a categorías generales que existen previamente en el sistema. El usuario que administra su empresa en el sistema debe asociar su categorías propias a las categorías generales del sistema para que los usuarios móviles puedan recibir anuncios. A través de esta \emph{foreign key} se establece dicha asociación en la capa de persistencia de la aplicación web. +\end{itemize} + +\subsubsection{Tabla UserBasket} + +Sirve para persistir las categorías seleccionadas por el usuario final de las cuales desea recibir anuncios relacionados. + \begin{landscape} \centering \includegraphics[width=1.4\textwidth,height=1\textheight]{fig/MobiAdsWebDataBase} @@ -38,6 +81,18 @@ En esta memoria de este proyecto se empleará el lenguaje UML para la representa \subsection{Base de datos aplicación Android, modelado UML} +En la Figura~\ref{fig:MobiAdsAndroidDataBase}) los campos representan la siguiente información: + +\begin{itemize} + \item \textbf{id}: índice en la tabla. Autoincremental y único por cada fila. + \item \textbf{idad}: identificador único del anuncio. + \item \textbf{adName}: nombre descriptivo del anuncio que será mostrado en la pantalla del dispositivo móvil del usuario. + \item \textbf{text}: texto con información acerca del anuncio que también será presentado en la pantalla del usuario. + \item \textbf{url}: dirección web donde se encuentra el resto del anuncio, con más información que al usuario pueda interesar. + \item \textbf{isRead}: Android hace uso de SQLite, esta base de datos no implementa \emph{booleans} por tanto, éstos deben ser creados haciendo uso de \emph{integers}. Este valor indica si el usuario ya ha leído el anuncio o si por el contrario todavía no. + \item \textbf{path}: lugar en el sistema de archivos del dispositivo móvil donde la imagen que representa el anuncio es almacenada. +\end{itemize} + \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{fig/MobiAdsAndroidDataBase} diff --git a/fig/MobiAdsAndroidDataBase.jpg b/fig/MobiAdsAndroidDataBase.jpg index 4566db10ee9f88961aa7cc74906ada903b2fb40f..f99552eb309c09d18e110bc7e292c61c8dd78f28 100644 GIT binary patch delta 25213 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 -- 2.1.4