martes, 30 de junio de 2009

3ra Forma Normal

La tabla se encuentra en 3FN si es 2FN y cada atributo que no forma parte de ninguna clave, depende directamente y no transitivamente, de la clave primaria.

Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.

Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva via DNUMBER porque las dependencias SSN->DNUMBER y DNUMBER->DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT.

Los siguientes ejemplos son la continuación del post anterior

EJEMPLO 1:

3FN

La tercera forma normal prohíbe dependencias transitivas. Una dependencia transitiva existe cuando cualquier atributo en una tabla es dependiente de otro campo y éste es quien depende de la clave primaria.

Considere el siguiente ejemplo de una tabla de Cursos:


El campo Nombre de Profesor depende de Nro de Profesor, el cual es el campo que realmente depende de la clave primaria. Por ello, el campo Nombre Profesor debe ser quitado y colocado en otra tabla:


Dividiendo los datos en 2 tablas, la dependencia transitiva es removida.


Ejemplo 2:

3FN

Para la Tercera Forma Normal (3NF) la relación debe estar en 2NF y además los atributos no clave deben ser mutuamente independientes y dependientes por completo de la clave primaria. También recordemos que dijimos que esto significa que las columnas en la tabla deben contener solamente información sobre la entidad definida por la clave primaria y, por tanto, las columnas en la tabla deben contener datos acerca de una sola cosa.

En nuestro ejemplo en 2NF, la primera tabla conserva información acerca del libro, los autores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitos de 3NF.

Aunque hemos creado nuevas tablas para que cada una tenga sólo información acerca de una entidad, también hemos perdido la información acerca de qué autor ha escrito qué libro y las editoriales correspondientes, por lo que debemos crear otras tablas que relacionen cada libro con sus autores y editoriales.


Y el resto de las tablas no necesitan modificación.



sábado, 27 de junio de 2009

1ra y 2da Forma Normal

1ra Forma Normal (1FN): Una tabla está en Primera Forma Normal sólo si:
- Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.

- La tabla contiene una clave primaria.
- La tabla no contiene atributos nulos.
- Si no posee ciclos repetitivos.

Una columna no puede tener múltiples valores. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y, entonces a cada valor de Y le pertenece un valor de X).
Esta forma normal elimina los valores repetidos dentro de una BD.

2da Forma Normal (2FN): Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales.

En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Una dependencia funcional es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que A Є X, (X – {A}) -x-> Y. Una dependencia funcional es una dependencia parcial si hay algunos atributos que pueden ser removidos de X y la dependencia todavía se mantiene, esto es A Є X, (X – {A}) -> Y.

Por ejemplo {SSN, PNUMBER} HOURS es completamente dependiente dado que ni SSN HOURS ni PNUMBER HOURS mantienen la dependencia. Sin embargo {SSN, PNUMBER} ENAME es parcialmente dependiente dado que SSN ENAME mantiene la dependencia.


EJEMPLO 1:

1FN

La primera forma normal requiere que no existan atributos multi-valores, así como tampoco grupo de repetición. Un atributo multi-valor contiene más de un valor por ese campo en cada fila.
Consideremos la siguiente tabla referida a Cursos de estudiantes:


En esta tabla, el campo Curso es un campo multi-valor: no hay un valor simple para cada campo.

Ahora considere este otro ejemplo:



Los campos Curso1, Curso2 y Curso3 representan grupos repetitivos. Si aplicamos los requisitos de la Primer Forma Normal el ejemplo quedaría de la siguiente manera:



En los primeros 2 ejemplos, seleccionar un estudiante inscripto en algún curso es una tarea dificultosa. Digamos que quiero saber lo siguiente: “Todos los estudiantes inscriptos en el curso 3100”.

En el primer diseño, Ud. deberá tomar el campo Curso y analizarlo de alguna forma "por dentro" para saber si cumple o no con los requisitos de la búsqueda.
En el segundo diseño, deberá analizar 3 campos por separado para saber si el alumno está inscripto en el curso 3100.

En el tercer diseño, la consulta es tan simple como:
Select Nro de Registro from Cursos where Curso = 3100


2FN

La Segunda Forma Normal requiere que cualquier campo no integrante de la Clave Primaria, debería ser totalmente dependiente de la clave. Por ejemplo, considere la siguiente tabla de Cursos, donde Nro. de Registro y Curso componen la clave primaria.


El Nombre del estudiante no depende de toda la clave primaria, sino solo del Nro. de Registro. El Depto. es un campo que solo depende del Curso.
En consecuencia, estos datos deberían ser divididos en 3 tablas separadas, a saber:



En este ejemplo, el campo Nota es el único dependiente de la clave primaria completa.


EJEMPLO 2: Ejemplo simplificado de una base de datos para una pequeña biblioteca.



Esta tabla no cumple el requisito de la Primera Forma Normal (1FN) de sólo tener campos atómicos, pues el nombre del lector es un campo que puede (y conviene) descomponerse en apellido paterno, apellido materno y nombres. Tal como se muestra en la siguiente tabla.

1FN



Como se puede ver, hay cierta redundancia característica de 1FN.

La Segunda Forma Normal (2FN) pide que no existan dependencias parciales o dicho de otra manera, todos los atributos no clave deben depender por completo de la clave primaria. Actualmente en nuestra tabla tenemos varias dependencias parciales si consideramos como atributo clave el código del libro.
Por ejemplo, el título es completamente identificado por el código del libro, pero el nombre del lector en realidad no tiene dependencia de este código, por tanto estos datos deben ser trasladados a otra tabla.


2FN


La nueva tabla sólo contendrá datos del lector.



Hemos creado una tabla para contener los datos del lector y también tuvimos que crear la columna CodLector para identificar unívocamente a cada uno. Sin embargo, esta nueva disposición de la base de datos necesita que exista otra tabla para mantener la información de qué libros están prestados a qué lectores. Esta tabla se muestra a continuación:

Tipos de bases de Datos

1. Base de Datos Relacionales: Una base de datos relacional es una base de datos en donde todos los datos visibles al usuario están organizados estrictamente como tablas de valores, y en donde todas las operaciones de la base de datos operan sobre estas tablas.
Estas bases de datos son percibidas por los usuarios como una colección de relaciones normalizadas de diversos grados que varían con el tiempo.
Son las más utilizadas. Algunos ejemplos son:

• Sistema de matriculas
• Base de Datos de un Tienda Comercial
• Base de datos de un Hospital
• Registro de Notas, etc.

2. Base de Datos Web: Son una herramienta que organiza y administra la información de forma sencilla a través de una interfaz Web.

Actualmente son muchas las aplicaciones, como por ejemplo:

• Servicio de Correo Electrónico
• Servidores de Búsqueda de Información
• Base de datos compartidas (Intranet)
• Servicios Financieros (Cuentas Bancarias)
• Acceso remoto a bases de datos.

3. Base de Datos Multimedia Referenciales: Son aquellas bases de datos que ofrecen registros o que hacen referencia a documentos, libros, textos o demás publicaciones de interés general. Sin embargo, debido a la aparición de la Multimedia, este concepto se ha ido ampliando añadiendo a las bases de datos otro tipo de características como: gráficos, sonidos y audiovisuales lo que hace más fácil y cómoda las búsquedas para el usuario promedio.

Algunos ejemplos son:

• Base de datos de una biblioteca que sirve para ubicar físicamente los documentos con los que cuenta. Pueden incluir mapas multimedia que le sirvan de guía al usuario.
• Bases de datos que entregan las "referencias bibliográficas" (es decir los datos básicos del documento, como título, autor, revista, año, etc.).
• También sirven para mostrar un resumen del artículo, revista o documento que el usuario elija.

4. Bases de Datos Difusas: Es un sistema basado en reglas donde la lógica difusa es utilizada como una herramienta para representar diferentes formas de conocimiento acerca del problema a resolver, así como para modelar las interacciones y relaciones que existen entre sus variables. Debido a estas propiedades, los sistemas basados en reglas difusas han sido aplicados de forma exitosa en varios dominios en los que la información vaga o imprecisa emerge en diferentes formas. Las bases de datos difusas en sí sirven para almacenar y consultar información imprecisa.

Se aplican generalmente en sistemas de control que no dependan de un Sí/No.

• Sistemas de reconocimiento de escritura
• Sistemas expertos del conocimiento (simular el comportamiento de un experto humano)
• Optimización de sistemas de control industriales
• Tecnología informática, etc.

5. Bases de Datos Federadas: Las bases de datos federadas es la posibilidad de tener acceso a múltiple información que se encuentre en diferentes bases de datos, es decir, una base de datos federada es él poder tener acceso a múltiples bases de datos que pueden ser heterogéneas para poder obtener información que se necesite, ésta hace creer a los usuarios que se trata de una sola base de datos que contiene toda la información.
Se dice que las base de datos federadas se encuentran en planeación debido a que no se cuenta con la tecnología suficiente para llevarla a cabo. Debido a la gran diversidad de bases de datos que existe, no se ha creado un software que pueda gestionar con las bases de datos que existan, así como una plataforma en que puedan correr las aplicaciones.

Las aplicaciones de este tipo de base de datos son en las cuales se requieran hacer consultas globales, es decir desde distintos lugares alejados.
• Consultas de transacciones bancarias.
• Para grandes empresas internacionales que cuenten con varios nodos distribuidos en diferentes partes del mundo. Se pueden realizar consultas a través de ellos.

6. Base de Datos Grid: Podemos entender una base de datos Grid como una base de datos distribuida. La base de datos Grid tiende a ocultar al usuario los recursos hardware que se están usando tales como discos de almacenamiento o servidores en los que la base de datos se encuentra instalada, se intenta abstraer al usuario de cuestiones relativas a la administración y optimización de la base de datos y del sistema gestor.

Se emplean para realizar consultas desde diferentes puntos geográficos, dando la impresión al usuario de que se tratara de un entorno único.

Usando MySql Workbench

Tipos de Datos en MySql

MySQL soporta varios tipos de datos, que pueden ser agrupados en tres categorías: numéricos, fecha y hora, y cadenas (caracteres). En este trabajo se presenta un breve resumen de estos tipos, mencionando algunas de sus características. Los tipos de datos soportados por MySQL son listados a continuación.

1. TIPOS DE DATOS NUMERICOS

TinyInt - número entero con o sin signo.
Con signo el rango de valores va de -128 a 127.
Sin signo, va de 0 a 255.

Bit ó Bool - número entero que puede ser 0 ó 1.

SmallInt - número entero con o sin signo.
Con signo el rango va desde -32768 a 32767.
Sin signo, de 0 a 65535.

MediumInt - número entero con o sin signo.
Con signo va desde -8.388.608 a 8.388.607.
Sin signo desde 0 a 16.777.215.

Integer ó Int - número entero con o sin signo.
Con signo va desde -2.147.483.648 a 2.147.483.647.
Sin signo desde 0 a 4.294.967.295

BigInt - número entero con o sin signo.
Con signo va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.
Sin signo desde 0 a 18.446.744.073.709.551.615

Float - número pequeño en coma flotante de precisión simple.
Los valores válidos van desde -3.402823466 e+38 a -1.175494351 e-38, 0 (cero) y desde 1.175494351 e-38 a 3.402823466 e+38.

Double - número en coma flotante de precisión doble.
Los valores van desde -1.7976931348623157 e+308 a -2.2250738585072014 e-308, 0 (cero) y desde 2.2250738585072014 e-308 a 1.7976931348623157 e+308

Decimal, Dec ó Numeric - número en coma flotante desempaquetado.
El número se almacena como una cadena.


2. TIPOS DE DATOS DE FECHA

Date - guarda una fecha.
El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999, y el formato es: AAAA-MM-DD.

DateTime - combinación de fecha y hora.
El rango va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos y el formato es: AAAA-MM-DD HH:MM:SS.

TimeStamp - también combina fecha y hora.El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño que asignemos al campo. Si el tamaño es 14 (máximo), el formato será algo como esto: AAAAMMDDHHMMSS (un ejemplo de timestamp(14) sería: 20080311213018, que representaría unos segundos pasadas las 21.30hs del 11/03/2008). Si el tamaño fuera 12: AAMMDDHHMMSS, si fuera 8: AAAAMMDD, para 6: AAMMDD, con 4 sería: AAMM y por último 2: AA.

Time - almacena una hora.
El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos y el formato es HH:MM:SS

Year - almacena un año. El rango de valores va desde el año 1901 al año 2155.
El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.


3. TIPOS DE DATOS DE CADENA


Char - guarda una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres.

Varchar - guarda una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres.

Blob - es un objeto binario que puede tratar una cantidad de datos variables. Los cuatro tipos BLOB son: TINYBLOB, BLOB, MEDIUMBLOB, y LONGBLOB los cuales difieren sólo en la longitud máxima de los valores que pueden tratar.

Text - son cadenas de caracteres no binarias. Los cuatro tipos TEXT son TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT. Se corresponden a los cuatro tipos BLOB y tienen las mismas longitudes y requerimientos de almacenamiento.