More about chapter 3.
authorgumartinm <gustavo@gumartinm.name>
Sun, 7 Oct 2012 01:05:53 +0000 (03:05 +0200)
committergumartinm <gustavo@gumartinm.name>
Sun, 7 Oct 2012 01:05:53 +0000 (03:05 +0200)
capitulo3/capitulo3.tex
fig/relation_among_table.jpg [new file with mode: 0644]
fig/table_description.jpg [new file with mode: 0644]

index 73f11b5..470933e 100644 (file)
@@ -111,8 +111,34 @@ En una aplicación MVC diseñada correctamente los controladores no contienen mu
 
 
 \section{Bases de datos relacionales}
+Una base de datos relacional es una colección de datos organizados en forma de tablas desde las cuales los datos pueden ser accedidos fácilmente. Las bases de datos relacionales son creadas usando el modelo relacional\footnote{Para más información acerca del modelo relacional ver: \url{http://en.wikipedia.org/wiki/Relational_model}} y el software usado para la utilización de estas bases de datos se conoce como Sistema de Gestión de Bases de Datos Relacionales (RDBMS por sus siglas en Inglés) Por ejemplo en el mundo open source,  MySQL y PostgreSQL son unos de los más extendidos RDBMS pero no los únicos. De hecho PostgreSQL es algo más que un RDBMS puro como el lector podrá comprobar a través de las siguientes secciones.
+
+Una base de datos contiene una o más tablas de información. Las filas en una tabla son llamadas \emph{records} o filas y las columnas en la tabla \emph{campos} o \emph{atributos}. En la Figura~\ref{fig:tableDescription}) se representa una tabla típica de una base de datos relacional. Una base de datos que contiene únicamente una tabla es llamada una base de datos plana. Una que contiene dos o más se conoce como Base de Datos Relacional. Para el acceso a sus datos se hace uso del \emph{Standard Query Language} o SQL\footnote{Más acerca del lenguaje SQL en: \url{http://en.wikipedia.org/wiki/SQL}} por sus siglas en Inglés, con dicho lenguaje se pueden manipular los datos de una base datos con operaciones básicas como pueden ser: SELECT, INSERT, UPDATE y DELETE.
+
+\begin{figure}[H]
+    \centering
+        \includegraphics[width=0.8\textwidth]{fig/table_description}
+    \caption{\emph{Una tabla típica de una base de datos relacional}}
+    \label{fig:tableDescription}
+\end{figure}
+
+
+\subsection{Terminología básica de las bases de datos relacionales}
+
+\begin{itemize}
+    \item \textbf{Filas:} también conocidas como tuplas o \emph{records} Cada fila en una tabla es distinta a otra en la misma tabla pero tienen el mismo tipo de datos.
+    \item \textbf{Columnas:} son conocidas como atributos. Cada columna en una tabla tiene un nombre único (representa un único atributo de esa tabla)y éste debería ser descriptivo. El ordenamiento de las filas y las columnas es irrelevante a la funcionalidad de la base de datos.
+    \item \textbf{Clave primaria:} más comúnmente conocida por su nombre en Inglés \emph{primary key}, es una clave usada para identificar una fila de forma única en una tabla.
+    \item \textbf{Clave extranjera:} o \emph{foreign key}. Así se conoce a la clave primaria cuando ésta es usada en otra tabla para establecer una \textbf{relación} entre dos \emph{records} o filas de diferentes tablas. En la Figura~\ref{fig:relationAmongTable}) se puede observar las relaciones entre diferentes tablas así como sus correspondientes \emph{keys} y \emph{foreing keys}.
+\end{itemize}
+
+\begin{figure}[H]
+    \centering
+        \includegraphics[width=0.7\textwidth]{fig/relation_among_table}
+    \caption{\emph{Relaciones entre tablas}}
+    \label{fig:relationAmongTable}
+\end{figure}
 
-Una base de datos relacional es una colección de datos organizados en forma de tablas desde las cuales los datos pueden ser accedidos fácilmente. Las bases de datos relacionales son creadas usando el modelo relacional\footnote{Para más información acerca del modelo relacional ver: \url{http://en.wikipedia.org/wiki/Relational_model}} y el software usado para la utilización de estas bases de datos se conoce como Sistema de Gestión de Bases de Datos Relacionales (RDBMS por sus siglas en Inglés) Por ejemplo en el mundo open source,  MySQL y PostgreSQL son unos de los más extendidos RDBMS pero no los únicos.
 
 \section{PostgreSQL}
 
@@ -129,7 +155,7 @@ PostgreSQL es un proyecto open source. Open source por definición significa que
 El siguiente es un breve listado de algunas de las características que PostgreSQL implementa~\cite{C3:PPostgreSQL}:
 
 \begin{itemize}
-    \item \textbf{ORDBMS}: un ORDBMS es una Base de Datos Relacional y de Objetos; esto significa que PostgreSQL permite acceso a datos mediante un modelo relacional y de objetos, y es capaz de manejar rutinas y reglas complejas. Ejemplos de su avanzada funcionalidad son las queries SQL declarativas, el soporte multi usuario, la optimiazación de queries, herencia y arrays.
+    \item \textbf{ORDBMS}: un ORDBMS es una Base de Datos Relacional y de Objetos; esto significa que PostgreSQL permite acceso a datos mediante un modelo relacional y de objetos, y es capaz de manejar rutinas y reglas complejas. Ejemplos de su avanzada funcionalidad son las consultas SQL declarativas, el soporte multi usuario, la optimiazación de consultas, herencia y arrays.
     \item \textbf{Altamente extensible}: PostgreSQL permite que el usuario pueda definir sus propios operadores, funciones, métodos de acceso y tipos de datos.
     \item \textbf{Integridad referencial}: soporte de integridad referencial, el cual es usado para asegurar la validez de los datos el base de datos.
     \item \textbf{API flexible}: la flexibilidad de la API de PostgreSQL ha permitido a múltiples vendedores proporcionar fácilmente soporte de desarrollo. Estos interfaces incluyen Python, Perl, PHP, ODBC, Java/JDBC, Ruby, C/C++, Object Pascal, etc.
@@ -140,14 +166,30 @@ El siguiente es un breve listado de algunas de las características que PostgreS
 
 \section{PostGIS}
 
-PostGIS es un software open source que añade soporte de objetos geográficos a la base de datos PostgreSQL. Se libera bajo la licencia \emph{GNU General Public License} (GPL-2.0) Se trata de una base de datos espacial, es decir, una base de datos que define tipos de datos especiales para objetos geométricos y permite almacenar datos geométricos (usualmente de naturaleza geográfica) en tablas de bases de datos convencionales. Proporciona funciones e índices especiales para realizar consultas y manipular los datos geométricos usando SQL (\emph{Structured Query Language}) Una base de datos espacial es a menudo usada solo como un contenedor para almacenar datos espaciales, pero puede hacer mucho más que eso. Aunque una base de datos espacial no necesita ser relacional, la mayoría de las bases de datos espaciales conocidas lo son.
+PostGIS es un software open source que añade soporte de objetos geográficos a la base de datos PostgreSQL. Se libera bajo la licencia \emph{GNU General Public License} (GPL-2.0) Se trata de una base de datos espacial, es decir, una base de datos que define tipos de datos especiales para objetos geométricos y permite almacenar datos geométricos (usualmente de naturaleza geográfica) en tablas de bases de datos convencionales. Proporciona funciones e índices especiales para realizar consultas y manipular los datos geométricos usando SQL (\emph{Structured Query Language}) Una base de datos espacial es a menudo usada solo como un contenedor para almacenar datos espaciales, pero puede hacer mucho más que eso. Aunque una base de datos espacial no necesita ser relacional, la mayoría de las bases de datos espaciales lo son~\cite{C3:PostGIS}.
 
-Una base de datos espacial proporciona herramientas de almacenaje y de análisis. La presentación de datos visualmente no es una meta de las bases de datos espaciales.
+Una base de datos espacial proporciona herramientas de almacenaje y de análisis. La presentación de datos visualmente no es una meta de las bases de datos espaciales. Permite hacer consultas del tipo: ``Dame una lista de localizaciones donde la distancia media a una pizzería es menor a 16 kilómetros''. 
 
 \subsection{Consultas, análisis y procesado espacial}
 
-Una \emph{query} espacial es una consulta a la base de datos que usa funciones geométricas para responder cuestiones acerca del espacio y de objetos en el espacio. Bases de datos espaciales como PostGIS añaden un conjunto de funciones al lenguaje estándar SQL que trabajan con objetos geométricos en una base de datos de forma similar a funciones que trabajan con datos. Por ejemplo, con una fecha, hay funciones que cuentan cuantas horas/días/minutos/años/semanas hay entre dos fechas o si esta fecha se encuentra en el futuro o en el pasado.
+Una \emph{query} espacial es una consulta a la base de datos que usa funciones geométricas para responder cuestiones acerca del espacio y de objetos en el espacio. Bases de datos espaciales como PostGIS añaden un conjunto de funciones al lenguaje estándar SQL que trabajan con objetos geométricos en una base de datos de forma similar a funciones que trabajan con datos. Por ejemplo, con una fecha, hay funciones que cuentan cuantas horas/días/minutos/años/semanas hay entre dos fechas o si esta fecha se encuentra en el futuro o en el pasado. PostGIS añade a PostgreSQL funciones de este tipo pero relacionadas con datos geográficos.
 
 Además de ser capaz de responder cuestiones acerca del uso del espacio, las funciones espaciales permite crear y modificar objetos en el espacio. Esta porción del análisis espacial es a menudo referida como procesado geométrico o espacial~\cite{C3:PostGIS}.
 
+
+\subsection{Fortalezas de PostgreSQL para su uso como base de datos espacial}
+
+La principal razón por la cual PostgreSQL fue elegido como punto de partida para la creación de una base de datos espacial fue la facilidad para crear extensiones a su funcionalidad base. PostgreSQL permite, por ejemplo, crear nuevos tipos y operadores. Otras características de PostgreSQL de las cuales PostGIS hace uso son enumeradas a continuación:
+
+\begin{itemize}
+    \item \textbf{Soporte de arrays}. Únicamente Oracle, IBM DB2 y PostgreSQL permiten el tratamiento complejo de arrays. Por ejemplo, en PostgreSQL se pueden definir arrays de strings, números, fechas, datos geométricos o incluso datos propios creados por el desarrollador. Además permite la conversión de cualquier lista de filas pertenecientes a una tabla en un array, lo cual es particularmente práctico cuando se manipulan datos geométricos.
+    \item \textbf{Herencia de tablas}. PostgreSQL tiene una funcionalidad conocida como herencia de tablas, la cual es equivalente a una multi herencia de objetos. La herencia de tablas permite tratar un conjunto de tablas como una única así como definir jerarquías de herencia anidadas.
+    \item \textbf{Capacidad para definir funciones agregadas que toman más de una columna}.
+    \item \textbf{Habilidad para la definición de nuevos tipos de datos}.
+    \item \textbf{Capacidad para escribir funciones con argumentos por defecto}. Esta característica fue introducida en PostgreSQL 8.4 y mejorada en PostgreSQL 9.0.
+    \item \textbf{Miles de funciones que pueden encontrarse por defecto en PostgreSQL}. Existen funciones para la manipulación de strings, expresiones regulares y para el análisis de datos astronómicos.
+\end{itemize}
+
 \section{Android}
+
+
diff --git a/fig/relation_among_table.jpg b/fig/relation_among_table.jpg
new file mode 100644 (file)
index 0000000..8975abd
Binary files /dev/null and b/fig/relation_among_table.jpg differ
diff --git a/fig/table_description.jpg b/fig/table_description.jpg
new file mode 100644 (file)
index 0000000..eb37fae
Binary files /dev/null and b/fig/table_description.jpg differ