martes, 13 de marzo de 2012

Normalización de Bases de Datos


POLÍTICAS DE NORMALIZACION DE BASES DE DATOS
El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.
Las bases de datos relacionales se normalizan para:
  •      Evitar la redundancia de los datos.
  •      Evitar problemas de actualización de los datos en las tablas.
  •      Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:
  •      Cada tabla debe tener su nombre único.
  •      No puede haber dos filas iguales. No se permiten los duplicados.
  •      Todos los datos en una columna deben ser del mismo tipo.
La normalización de bases de datos otorga consistencia y elimina posibles anomalías lógicas de un modelo. Existen varias formas normales, cada una numerada, de forma que para subir a un nivel superior de una forma normal debes haber pasado por el anterior, es decir, no puedes tener un modelo en 2NF si no está en 1NF. Existen 5 formas normales, y además una extra que es una versión más fuerte de la tercera.
- Primera Forma Normal, 1NF: En la mayoría de casos la simplifican diciendo que  todos los atributos deben ser atómicos, y no multivaluados. Esto es cierto en tanto en cuanto el resto de reglas son implícitas de los sistemas de gestión de bases de datos. Pero las reglas completas son las siguientes:
  •      No hay orden de arriba-a-abajo en las filas, es decir, el orden de las tuplas no importa para la información.
  •      No hay orden de izquierda-a-derecha en las columnas, es decir, el orden de las columnatas no importa para la información.
  •      No hay filas duplicadas.
  •      Cada atributo tiene un único dominio aplicable y un único valor de dicho dominio, y aun más allá, la solución a esto no es crear nuevos atributos para contemplar posibles valores de la multivaluación.
Vamos a explicarlo de manera sencilla. Supongamos una entidad “Persona” que contiene una clave primaria, nombre, apellido y teléfono. Pero claro, una persona puede tener múltiples teléfonos de contacto, así que podríamos pensar en utilizar el campo teléfono para meter varios separados por coma
Segunda Forma Normal 2NF: Una tabla está en 2NF si está en 1NF y además dada cualquier clave candidata y cualquier atributo que no sea de la clave candidata,, el atributo depende de toda la clave y no solamente de parte de ella.
Tercera Forma Normal, 3NF: Una tabla está en 3NF si está en 2NF y además todos los atributos dependen directamente de la clave candidata sin que existan dependencias transitivas a través de cualquier otro atributo que no pertenezca a la clave.
Forma Normal Boyce-Codd, BCNF o 3.5NF: Es una versión más fuerte de la 3NF. Requiere que si un atributo no pertenece a la clave candidata, dicho atributo debe depender de la clave candidata completa y de nada más que de la clave candidata completa. Si una tabla está en 3NF, tiene varias claves candidatas compuestas y éstas tienen algún atributo en común, no está en BCNF.
Cuarta Forma Normal, 4NF: Una tabla está en 4NF si está en 3NF y no posee dependencias multivaluadas no triviales. Una tabla con una dependencia multivaluada es una donde la existencia de dos o más relaciones independientes muchos a muchos causa redundancia, y es esta redundancia la que es suprimida por la cuarta forma normal. Siempre es posible llegar a 4NF, pero no siempre es deseable a nivel de desarrollo.
Quinta Forma Normal, 5NF: También se la conoce como forma normal de proyección-unión (PJ/NF). Una tabla está en 5NF si está en 4NF y cada dependencia de unión en ella es implicada por las claves candidatas.




Fuente:
http://metamodel.wordpress.com/2011/03/09/normalizacion-de-bases-de-datos-relacionales/

Cómo siempre digo. Espero les sea de utilidad esta información. Saludos.

lunes, 12 de marzo de 2012

Servidores Web


Servidores Web.
Un servidor web o servidor HTTP es un programa que procesa cualquier aplicación del lado del servidor realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. El código recibido por el cliente suele ser compilado y ejecutado por un navegador web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se utiliza el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación del modelo OSI
Básicamente, un servidor web sirve contenido estático a un navegador, carga un archivo y lo sirve a través de la red al navegador de un usuario. Este intercambio es mediado por el navegador y el servidor que hablan el uno con el otro mediante HTTP

EJEMPLOS  DE SERVIDORES WEB:
  • Apache: Este es el más común y más utilizado en todo el mundo. Además, es gratuito  y de código abierto, así que podríamos decir que corre sobre cualquier plataforma.
  • Microsoft IIS: Sólo funciona sobre sistemas Windows. Si quieres empalarlo sobre otro sistema, tendrás que utilizar una máquina virtual.
  • Sun Java System Web Server: Este producto pertenece a la casa Sun, y suele empalarse sobre entorno de este sistema. Sin embargo, como Apache, es multiplataforma, y recientemente Sun ha decidido distribuirlo con licencias de código abierto (BSD concretamente).
  • Ngnix: Este es un servidor Web muy ligero y corre sobre sistemas Unix y Windows. Se ha convertido en el 4º servidor HTTP más popular de la red y también se distribuye bajo licencia BSD.
  • Lighttpd: Este servidor Web es otro de los más ligeros que hay en el mercado. Está especialmente pensado para hacer cargas pesadas sin perder balance, utilizando poca RAM y poca de CPU. Algunas páginas populares que lo usan son Youtube, Wikipedia y otras que soportan gran tráfico diariamente. También es gratuito y se distribuye bajo licencia BSD.
Un servidor web básico cuenta con un esquema de funcionamiento muy simple, basado en ejecutar infinitamente el siguiente bucle:
  1. Espera peticiones en el puerto TCP indicado (el estándar por defecto para HTTP es el 80).
  2. Recibe una petición.
  3. Busca el recurso.
  4. Envía el recurso utilizando la misma conexión por la que recibió petición.
  5. Vuelve al segundo punto.
Espero que esta informacíon le haya sido útil.

Más adelante les mostraré el proceso de instalacion de los ervidore web Apache y del Internet Information Server (IIS)

domingo, 11 de marzo de 2012

Protocolos relacionados con aplicaciones y servicios web



PROTOCOLOS
 Un protocolo es un método establecido de intercambiar datos en Internet. Un protocolo es un método por el cual dos ordenadores acuerdan comunicarse, una especificación que describe cómo los ordenadores hablan el uno al otro en una red.


Algunos ejemplos de protocolos son:
HTTP:Es el principal protocolo tecnológico de  la red que permite navegar  y enlazar por internet. HTTP son las siglas de “Hyper Text Transfer Protocol” es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado. Si no tuviéramos http, no podríamos acceder e interactuar en la red de redes como lo hacemos actualmente.

HTTPS: es “Hyper Text Transfer Protocol” con una ‘S’ añadida al final, que hace referencia a “Secure Sockets Layer” otro importante protocolo desarrollado para realizar transferencias de forma segura en Internet usando nuestro navegador. Esto quiere decir que, si el usuario se conecta a un sitio Web, como puede ser un banco, o algún sitio donde vaya a realizar un pago o transferencia monetaria, seguramente se podrá ver como cambia en la barra de navegación al llegar cierta página dentro del dominio visitado. Esto te estará diciendo que ha llegado a una “zona segura” con una sesión segura.
Poniendo el ejemplo del banco, cuando se accede a una cuenta, se tiene que  ingresar un nombre y una contraseña, y si son correctas, se irá  a la cuenta bancaria en Internet. Este será el momento donde el cambio de protocolo se haga, por lo que presta atención a la parte superior de tu navegador. Esto también puede servir como aviso de que estamos conectados en el sitio real que dice ser. 

FTP: O protocolo de transferencia de ficheros (File Transfer Protocol)  es un software cliente/servidor que permite a usuarios transferir ficheros entre ordenadores en una red TCP/IP. Tiene sus orígenes en 1971, y aunque ha evolucionado con el paso de los años, es uno de los protocolos más antiguos que todavía están en uso. Hoy en día se usa principalmente en redes corporativas y la red más grande que existe, Internet.
El funcionamiento es sencillo. Una persona desde su ordenador invoca un programa cliente FTP para conectar con otro ordenador, que a su vez tiene instalado el programa servidor FTP. Una vez establecida la conexión y debidamente autenticado el usuario con su contraseña, se pueden empezar a intercambiar archivos de todo tipo.

TFTP : Son las siglas de “Trivial file transfer Protocol” (Protocolo de transferencia de archivos trivial).Es un protocolo de transferencia muy simple semejante a una versión básica de FTP. TFTP a menudo se utiliza para transferir pequeños archivos entre ordenadores en una red, como cuando un terminal X Window o cualquier otro cliente ligero arranca desde un servidor de red.
Algunos detalles del TFTP:
  • Utiliza UDP (en el puerto 69) como protocolo de transporte (a diferencia de FTP que utiliza el puerto 21 TCP).
  • No puede listar el contenido de los directorios.
  • No existen mecanismos de autenticación o cifrado.
  • Se utiliza para leer o escribir archivos de un servidor remoto.
  • Soporta tres modos diferentes de transferencia, "netascii", "octet" y "mail", de los que los dos primeros corresponden a los modos "ascii" e "imagen" (binario) del protocolo FTP.
FTPS: Es un nombre usado para abarcar un número de formas en las cuales el software FTP puede realizar transferencias de ficheros seguras. Cada forma conlleva el uso de una capa SSL/TLS debajo del protocolo estándar FTP para cifrar los canales de control y/o datos. No debería confundirse con el protocolo de transferencia de ficheros SFTP, el cual suele ser usado con SSH.
El uso más común de FTP y SSL es:
  • AUTH TLS o FTPS Explicito, nombrado por el comando emitido para indicar que la seguridad TLS es obligatoria. Este es el método preferido de acuerdo al RFC que define FTP sobre TLS. El cliente se conecta al puerto 21 del servidor y comienza una sesión FTP sin cifrar de manera tradicional, pero pide que la seguridad TLS sea usada y realiza la negociación apropiada antes de enviar cualquier dato sensible.
  • FTPS Implícito es un estilo antiguo, pero todavía ampliamente implementado en el cual el cliente se conecta a un puerto distinto (como por ejemplo 990), y se realiza una negociación SSL antes de que se envíe cualquier comando FTP.

SSH: (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.


 SCP: O Secure Copy es un medio de transferencia segura de archivos informáticos entre un host local y otro remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH).
El término SCP puede referir a dos conceptos relacionados, el protocolo SCP o el programa SCP.
El protocolo SCP es básicamente idéntico al protocolo rcp de BSD. A diferencia de rcp, los datos son cifrados durante su transferencia, para evitar que potenciales packet sniffers extraigan información útil de los paquetes de datos. Sin embargo, el protocolo mismo no provee autenticación y seguridad; sino que espera que el protocolo subyacente, SSH, lo asegure.
El modo SCP o simple communication protocol, es un protocolo simple que deja al servidor y al cliente tener múltiples conversaciones sobre una TCP normal. Este protocolo esta diseñado para ser simple de implementar.
El servicio principal de este protocolo es el control del dialogo entre el servidor y el cliente, administrando sus conversaciones y agilizadas en un alto porcentaje, este protocolo le permite a cualquiera de los dos establecer una sesión virtual sobre la normal.