jueves, 27 de noviembre de 2014

Operaciones Relacionales Básicas


Estas operaciones forman parte de lo que se considera el álgebra relacional y sirven para crear nuevas relaciones a partir de las ya existentes.

Si conocemos el lenguaje SQL encontraremos semejanzas directas con respecto a las operaciones que pasaremos a describir y es exactamente así porque este lenguaje no es más que una implementación de estas operaciones.

El álgebra relacional junto con el cálculo relacional fue definido por Codd como la “base de los lenguajes relacionales”. Se puede decir que el álgebra es un lenguaje procedural (de alto nivel), mientras que el cálculo relacional es un lenguaje no procedural.

El álgebra relacional es un lenguaje con una serie de operadoras que trabajan sobre uno o varios conjuntos de datos, podemos asumir que son tablas. Para obtener otro conjunto como resultado, sin que cambien los originales. La salida de una operación puede ser la entrada de otra operación. Esto permite establecer expresiones de álgebra del mismo modo que se pueden establecer las expresiones aritméticas (esta propiedad se denomina clausura).

Debemos saber que de los nueve operadores, solo hay cinco que son fundamentales: selección, proyección, producto, unión y diferencia, que permiten realizar la mayoría de las operaciones de obtención de datos. Los operadores no fundamentales son reunión, intersección, asignación y división, que se pueden expresar a partir de los cinco operadores fundamentales.

A continuación se presenta una descripción de las nueve operaciones:

  1. Unión.
  2. Intersección.
  3. Diferencia.
  4. Producto.
  5. Selección.
  6. Proyección.
  7. Reunión.
  8. División.
  9. Asignación.

 Para unión, intersección y diferencia supondremos los conjuntos de la Figura 1.


Fig. 1 Conjuntos.





1.    Unión: debemos saber que esta operación permite combinar datos de distintas tablas que tienen la misma estructura.

                                                                     
      Fig. 2  Unión.

2.    Intersección: esta operación permite obtener filas comunes a varias tablas.

Fig. 3 Intersección

3.    Diferencia: permite obtener filas que figuran en una tabla pero no en otra. (Diferencias entre conjunto 1 y conjunto 2).



Fig. 4 Diferencia.

4.    Producto: Nos permite obtener todas las posibles combinaciones (producto cartesiano) entre las dos tablas correspondientes.


  Fig. 5 Producto

5.     Selección: esta operación nos permite obtener un conjunto de filas de una o más tablas que satisfacen una condición específica.


  Fig. 6 Selección.


6.    Proyección: es un caso concreto de la operación de selección, y permite discriminar las columnas que deseamos obtener.  

Fig. 7 Proyección.

7.   Reunión: la operación reunión permite obtener datos de distintas tablas con distintas estructuras. Su equivalente en SQL es JOIN.

Fig. 8 Reunión.

8.    División: si dividimos una tabla B por una tabla A, obtendremos como resultado un tercera tabla que contendrá los campos de la tabla B que no existen en la tabla A y las filas que están asociadas en la tabla B con cada fila de la tabla A.

                                                                 Fig. 9 División.

9.     Asignación: debemos saber que la utilidad de esta operación consiste en asignar valores a uno o más registros de una tabla.

Fig. 10 Asignación.

¿Qué es y para que sirve una base de datos?

Una base de datos es una estructura de datos relacionadas entre si que nos permite obtener eventualmente, información actualizada acerca de una organización. Se dice eventualmente porque una base de datos por sí misma no nos produce ninguna mejora: el beneficio se logra diseñándola correctamente a partir de lo que necesitamos (requerimientos) y manteniendo sus datos actualizados.

Arquitectura de Bases de Datos.

En 1975, el comité ANSI-SPARC (American National Institute – Standards Plannings and Requirements Committee) propuso una arquitectura de tres niveles para los sistemas de bases de datos cuyo objetivo es el de separar las aplicaciones de la base de datos física.


Modelo de Datos.

La idea primaria de los sistemas informáticos es poder plasmar, a través de diferentes herramientas, situaciones del mundo real. Para traspasar la realidad de una situación en concreto a una base de datos existe una serie de pasos intermedios que facilitan esta tarea. Una de estas herramientas es el modelo de datos, que permite describir de modo abstracto en qué forma se va almacenar y a recuperar la información existente en una base.

Quizás el más conocido sea el relacional, pero existen otros modelos de administración de datos, los cuales detallaremos a continuación:

  • Modelo jerárquico.
  • Modelo de red.
  • Modelo orientado a objetos.

Ahora haremos un análisis de todos ellos para conocer sus diferencias y sus características más sobresalientes en lo que se refiere al diseño de bases de datos.

Modelo Jerárquico.

Las bases de datos que ingresan de este modelo organizan su información utilizando niveles de jerarquías. Cada nivel de jerarquías puede tener un número N de nodos, con la particularidad de que cada uno no puede tener más de un padre.

Fig. 1 Modelo Jerárquico.

En la Figura 1, el nodo 1 no tiene padre – cuando se da esta situación se lo llama nodo raíz y tiene dos hijos. De esos hijos solo hay uno que es padre. Haciendo semejanza entre los tipos de relaciones que admite el modelo relacional, el modelo jerárquico admite relaciones uno a varios y uno a uno.

Este modelo tiene muchos puntos en común con las estructuras de tipo árbol.
En comparación con el modelo relacional aquí si importa, como en el modelo de red, el orden en que se ubiquen los datos.

Uno de los inconvenientes del modelo jerárquico consiste en la redundancia de datos. Supongamos una relación Maestro.Detalle, como es pedidos y productos. Cada pedido puede contener más de un producto y, a su vez, cada producto puede encontrarse contenido en más de un pedido. Si intentamos simular esta situación por medio del modelo jerárquico, llegaremos a la conclusión de que es imposible, a menos que repita informaciones.
                               

Fig 2. Maesto – Detalle en el modelo jerárquico.

Un problema aparte es el de eliminar un nodo padre. Se tendría que eliminar toda su descendencia. Esta clase de problemas se solucionan en los demás modelos.

Modelo de red

Es ligeramente similar al modelo jerárquico. Una de las diferencias fundamentales es que aquí un nodo puede tener varios padres. Administrar la información en una base de datros de este tipo puede llegar a ser demasiado dificultoso, debido a que existe la posibilidad de que haya una gran cantidad de interrelaciones entre nodos.



Fig. 3 Modelo de red.

En la imagen anterior se puede observar algunas de las posibles relaciones existentes entre nodos: el nodo 2 y el nodo 3 son padres del nodo 4, que a su vez es padre del nodo 5. El nodo 1 no tiene padres ni hijos.

Este modelo admite relaciones uno a varios y uno a uno.


Modelo de relacional

Se trata, sin dudas del modelo más popular desde hace un tiempo, y con él se imponen conceptos tales como tabla – arreglo bidimensional-, fila y columna. Es un modelo relativamente nuevo (tomó notoriedad en 1970 y a su autor, Edgar Frank Codd,) quizás el único que llego tanto a los usuarios finales como también a los desarrolladores. Se recuperan los datos por medio de lenguajes de programación de consulta (el más popular e SQL, pero también existen otros lenguajes de este tipo) que mantienen la compatibilidad aun entre sistemas gestores de bases de datos de distintas compañías e incluso entre sistemas operativos diferentes.
Entendemos el modelo relacional como una propuesta de ver los datos como si se trataran de objetos del mundo real, diferenciables entre sí por sus características básicas. Un objeto dado puede ser descrito por la colección de características que tiene (denominadas atributos), y diferenciable a partir de eso mismo de otros objetos. Este modelo admite relaciones uno a varios, uno a uno, y varios a varios.

En este modelo las tablas deben cumplir las siguientes reglas:

  • Cada fila debe ser única.
  • Cada columna debe ser única.
  • Los valores de las columnas deben pertenecer al dominio de cada atributo.
  • Debe tener un solo tipo de fila.
  • El valor de la columna para cada fila debe ser único.

Modelo orientado a objetos

Al intentar trabajar con sistemas de información geográfica o también con sistemas multimedia, los modelos anteriormente mencionados no se sienten demasiado cómodos e incluso algunos ni siquiera pueden soportarlos por, entre otros, los motivos que se enumeran a continuación.

  • La estructura de los objetos es más compleja;
  • Las transacciones son de larga duración;
  • Se necesitan nuevos tipos de datos para almacenar imágenes y textos;
  • Hace falta definir operaciones no estándar, específicas para cada aplicación.

Este modelo admite relaciones uno a varios, uno a uno, y varios a varios.

miércoles, 26 de noviembre de 2014

MySQL


Es un sistema gestor de base de datos muy utilizado en la actualizad sobre otros por sus grandes beneficios:
  • Rapidez.
  • Posibilidad de trabajar en diferentes plataformas.
  • Múltiples formatos de tablas para cada necesidad.
  • Seguridad.
  • Gran estabilidad
  • Administración simple.
  • Soporte técnico (con el licenciamiento comercial).

                               
                                Fig 1: Sitio Web de MySQL


Si bien todavía le queda mucho camino por recorres, en corto tiempo ha logrado darse a conocer en el ámbito informático y fue afianzándose progresivamente en el mundo de las bases de datos relacionales.
Desde hace algún tiempo, se ha ido dando una particular unión entre esta base de datos y el lenguaje de programación PHP; por este motivo, MySQL se utiliza mayormente en proyectos relacionados con sitios web.

Obtener MySQL

Es obtenida de forma completamente libre a través de cualquier tipo de distribución: revistas, internet, copias en CD provistas por amigos, etc. Pero sin dudas, una de las formas más utilizadas es acceder a su sitio de internet (www.mysql.com), desde allí descargar la versión más adecuada con respecto al sistema sobre el cual desarrollamos nuestras aplicaciones. Está es una buena manera de tener acceso a la última versión del programa.

El hecho de que  MySQL esté disponible para tantos sistemas operativos ha sido uno de los puntos decisivos para lograr la popularidad actual.

Licencia de Uso

MySQL pone a disposición de los usuarios dos tipos de licenciamiento:
Una licencia comercial
Una licencia GPL (General Public License).

Diferencias entre versiones


Una de las constantes mejoras que MySQL va ofreciendo a lo largo del lanzamiento de versiones es el soporte para el estándar del lenguaje de consulta SQL (Strectured Query Lenguage) y, por ende, el esquema relacional. la versión que le dio más satisfacciones al equipo de MySQL fue la 3.23 ya que con ella alcanzo estabilidad y un desempeño que hizo que se la tuviera en cuenta entre las principales opciones al elegir un gestor de base de datos relacionales (entre otras mejoras, la inclusión de tres tipos de tablas: MyISAM, InnoDB y BerkeleyDB). 


Desde la versión 4.0 se incluyen las tablas InnoDB en la distribución estándar, lo que implica la posibilidad de relacionar tablas y proveerles de mayor seguridad y rapidez. Desde la versión 4.1, MySQL soporta subconsultas y consultas preparadas. 

Para la versión 5, entre otras mejoras se destacan la inclusión de soporte para programar procedimientos almacenados. 


Tipos de Datos

Se utilizan para definir los tipos de datos de las columnas de una tabla al crearla. MySQL soporta una gran variedad de datos, uno para cada necesidad.

Cadenas de caracteres

Los subtipos de datos existentes aquí son CHAR, VARCHAR, BLOB, TEXT, ENUM y SET.

CHAR Y VARCHAR

Son muy similares, y quizás la diferencia más notable sea la forma de almacenamiento: cuando definimos una columna tipo CHAR de tamaño N, e ingresamos un valor (de menos de N caracteres) en esa columna, MySQL rellenará con espacios lo que sobra, mientras que si hacemos lo mismo con una columna de tipo VARCHAR, en este caso no se rellenará con espacios. Cuando obtenemos los espacios sobrantes: MySQL los remueve. Si se ingresa una cadena de mayor cantidad de caracteres que el tamaño prefijado al definir la columna, la cadena se truncará al llegar al límite.

BLOB Y TEXT

Se usan para cadenas con rango que dependerá del tamaño que queramos almacenar. La diferencia entre ambos es que TEXT permite comparar dentro de su contenido sin distinguir mayúsculas y minúsculas, y BLOB las distingue. Otra diferencia podría ser su uso. TEXT tiende a ser usado para cadenas de texto plano (sin formato), mientras que BLOG se usa para objetos binarios, o sea, para cualquier tipo de datos o información, desde un archivo de texto con todo su formato, hasta imágenes, archivos de sonido o video. BLOB (acrónimo de Binary Large OBject, Objeto binario de gran tamaño) se subdivide en cuatro tipos que difieren sólo en la capacidad máxima de almacenamiento. Con TEXT sucedo lo mismo, e incluso, hay correspondencia entre la capacidad máxima de almacenamiento de unos y otros.

ENUM

Este tipo de string puede seleccionar su valor  únicamente de una lista finita (máximo de 65.535 elementos) de opciones definitivas por el usuario, y otras dos por defecto.

SET

Similiar a ENUM en su funcionamiento, sólo que aquí se puede seleccionar ninguno o más de un valor de la lista (hasta 64, los muestran separados por comas).

Numéricos


Se define los subtipos DECIMAL (o NUMERIC, o DEC), INTEGER (o INT), TINYINT, BIT, BOOL, MEDIUMINT, BIGINT, SMALLINT, FLOAT y DOUBLE (o DOUBLE PRECISION, o REAL). 

 Fig. 2 Resumen para MySQL 5.0.3

sábado, 1 de noviembre de 2014

Como desarrollar sitios en nuestra máquina local.

Al comenzar a programar nuestros sitios web, solo basta con utilizar una misma PC que nos hará de cliente y de servidor al mismo tiempo, como mínimo necesitaremos contar con un servidor web (como por ejemplo Apache, uno de los más populares, y estables  hoy en día) y por supuesto un servidor de bases de datos (como lo es MySQL, gratuito, rápido, fácil de administrar, y estable). Por último un lenguaje de programación en nuestro caso, PHP.

Tener en cuenta antes de la instalación:

Por medio de la descarga podemos realizar la instalación y configuración de cada uno de los componentes por separado; otra opción es a través de los paquetes de instalación actualmente disponibles para los distintos sistemas operativos como (Windows, Linux y MacOs) que hacen la tarea más sencilla, ahorrando tiempo automatizando el proceso de instalación y de esa manera librando al usuario de posibles errores e incompatibilidades. WAMP como ejemplo. Siendo una de las herramientas más utilizadas por su calidad y sencillez. 

Al término de la instalación de las herramientas, ya tendremos todo lo necesario para comenzar el desarrollo de aplicaciones en nuestro sistema.



Fig. 1 Página principal de WAMP SERVER

Nos descargamos  la versión de WAMP que se adapte a nuestras necesidades, optando por la última versión disponible. Con WAMP SERVER tendremos una distribución que cuenta con Apache, MySQL Y PHP. La fórmula secreta para el desarrollo de  nuestras aplicaciones web.

Instalación de WAMP SERVER.

De la manera habitual que llevamos a cabo la instalación de software en nuestro sistema operativo Windows, instalaremos el paquete de aplicaciones sin tener inconvenientes. Al presentar la pantalla de bienvenida debemos aprobar las condiciones de licenciamiento y seleccionar el directorio de instalación (c:/wamp) después un nombre para los accesos directos y, por último, la opción de iniciar o no WAMP de manera automática al iniciar Windows.

Fig. 2 Pantalla de bienvenida del instalador de WAMP.

Fig. 3 Aprobación de las condiciones de licenciamiento de WAMP.

Fig. 4 Selección de la locación donde va ser instalado WAMP.

Una vez culminados los pasos, se nos preguntara cuál es la carpeta que hará de DocumentRoot (Este es el directorio en el cual almacenaremos todas nuestras aplicaciones). Carpeta ya mencionada anteriormente con la variante www: c/wamp/www.

En la próxima sección nos preguntaran acerca de la dirección de nuestro servidor de correo: Por el momento esto no será absolutamente necesario para nuestros primeros desarrollos, así que dejamos el valor por defecto: localhost y la misma dirección de correo.

Fig. 5 Parámetros email PHP.

En pocos instantes estaremos viendo como la interfaz gráfica de WAMP nos permite acceder de manera rápida y sencilla a las diferentes opciones relativas al manejo y la administración de servidore y sitios. Un detalle importante, es que el instalador nos pedirá definir la ruta hacia cual navegador que poseemos en nuestro pc utilizará WAMP para acceder a nuestros sitios web. Si seleccionamos Internet Explorer (c:\windows\explorer.exe) o Mozilla Firefox  (c:\archivos de programas\Mozilla Firefox). O el Navegador de Google Chrome.

Si en un futuro tenemos la necesidad de cambiar dicho navegador lo podemos hacer modificando cuidadosamente el archivo: wampmanager ARCHIVO CONF en la ruta (navigator = "C:\Program Files\ ").

Finalizada la instalación, iniciamos la aplicación. En el área de motificacion de nuestro sistema (aparece por defecto  en la parte inferior derecha) el icono de WAMP. al hacer clic derecho o izquierdo tendremos las siguientes opciones:



Fig. 6 Funciones icono WAMP 

- Localhost permite al usuario ingresar (por medio del navegador seleccionado anteriormente en el transcurso de la instalación) a nuestra página de inicio que contiene una lista de todos nuestros sitios. Por supuesto en primera instancia este directorio estará limpio.

-  phpMyAdmin ingresaremos a través del navegador, a esta aplicación que nos permitirá administrar nuestro servidor MySQL, y así poder manejar las diferentes bases de datos que usarán nuestros sistemas.

- www directory es uno de los acceso al directorio DocumentRoot de nuestro sistema, por medio del cual accederemos a todos nuestros sitios.

- Log files y Config files nos listan los distintos archivos correspondientes al registro de errores y a los archivos de configuración.

- Así como Apache modules (módulos del servidor web Apache) como PHP settings (opciones y extensiones PHP) permiten controlar características espeficicas y avanzadas acerca de estas herramientas, y habilitar o deshabilitar funcionalidades.

Alias directories nos permite crear accesos directos a determinados sitios locales, por ejemplo http://localhost/sitio.

Dentro de la sección Services, en el mismo menú, contaremos con opciones para el manejo de los distintos servicios. Al entrar en funcionamiento, tanto Apache como MySQL crean sus propios procesos, que pueden ser wampapache (httpd.exe) y wampmysqld(mysqld-nt.exe), a los que se denomina servicios.

(Star/ Resume, Stop, y Restart) serán controlados desde aquí junto a otros como (Start All Services, Stop All Services, Restart All Services).

domingo, 26 de octubre de 2014

El Lenguaje PHP




PHP (Hypertext Preprocessor) es uno de los lenguajes de programación más utilizados en la actualidad (se utiliza mayormente para desarrollo de sitios web pero para muchos es ya el lenguaje del momento). Esto se debe a múltiples factores, entre los cuales podemos citar:


·    Es libre y gratuito. PHP, al igual que muchos otros lenguajes y entornos de programación, está asegurado bajo el movimiento open source (código abierto), que permite a los programadores de aplicaciones poder sacar provecho de sus beneficios de manera totalmente gratuita, sin la necesidad de pagar licenciamientos de uso ni actualizaciones.

·     Disponibilidad. PHP, no es la única alternativa a la hora de desarrollar aplicaciones web, pero sin duda es la más popular. Al momento de contratar un servicio de alojamiento, con seguridad, contaremos con el soporte necesario para empezar a programar nuestras aplicaciones. Al ser gratuito, fácil de instalar y configurar, y además muy requerido por los usuarios, en la mayoría de los casos PHP está instalado en nuestro servidor y listo para ser utilizado. PHP está disponible para los siguientes sistemas operativos:

- Mac OS
- Microsoft Windows
- Unix
- Unix / HP-UX
- Unix / Linux
- Unix / Mac OS X
- Unix / Open BSD
- Unix / Solaris



Hay que aclarar que PHP funciona en todas las versión de Microsoft Windows, except PHP versión 5 y superiores, ya que no son soportadas por Windows 95.

·         Soporte para múltiples bases de datos. PHP tiene extensiones para soportar, entre otras, las bases de datos que enumeramos a continuación:


- DBase
- Informix
- Interbase/Firebird
- Microsoft SQL Server
- msql
- MySQL
- Oracle
- PostgreSQL
- SQLite
- Sybase


·      Facilidad de aprendizaje. A diferencia de otros lenguajes, PHP se caracteriza por su simpleza. En PHP es  más importante saber con precisión qué se quiere hacer que el cómo se hace: contamos con las posibilidades de un lenguaje eficaz y simple a la vez, que se ubica como un medio y no como un fin.

Servidores que soportan PHP

Actualmente, PHP se puede ejecutar bajo los servidores web Apache, IIS (Internet Information Server) PWS (Personal Web Server), AOLServer, Roxen, OmniHTTPd, Oreilly Website Pro. Sambar, Xitami, Caudium, Netscape Enterprise Server, y THTTPD. En cuanto a los lenguajes de programación para el desarrollo de aplicaciones web, también podemos categorizarlos: Por un lado, los del lado servidor, y, por otro, los del lado cliente. En el primer grupo podemos incluir las siguientes alternativas:

·         ASP.net (Active Server Pages)
·         JSP (Java Server Pages)
·         Perl (Practical Extracting and Report Language)
·         PHP (Hypertext Preprocessor)

Con relación a los del lado cliente se incluye, principalmente, el lenguaje de programación JavaScript. Nada nos impide, y de hecho es usual, incluir o utilizar dentro de una misma página lenguajes de distinto tipo. 

LAMP Y WAMP

Estas dos siglas tienen como fin identificar sistemas según las herramientas con las que cuente el usuario. Definiciones que aparecen frecuentemente en distintos artículos y denominaciones. 











La palabra WAMP es el acrónimo que se usa para detallar un sistema de infraestructura de Internet que se enfoca en la utilidad de herramientas como son:
  • Windows, conocido por todos como  sistema operativo;
  • Apache, denominado un servidor web;
  • MySQL, es un gestor de bases de datos;
  • PHP, Perl, o Python  que son lenguajes de programación.

WAMP nos facilita la tarea de instalación de las herramientas necesarias para el desarrollo de páginas  web. El descargar e instalar cada componente por separado es una labor demorada, que WAMP hace más rápida y  sencilla. Un solo archivo compacto contiene todos los instrumentos, de los que haremos uso; de ahora en adelante para desarrollar nuestras aplicaciones.

Para LAMP es el mismo significado cambiando Windows por el software libre de  Linux.