Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Usted puede pensar en la normalización como “los datos, todos los datos y nada más que
datos”.
En el mundo hay clubes de autos para casi todas las fábricas y modelos. Puede encontrar
organizaciones para Ferrari, Rolls-Royce, Corvette, Mustang y MG de la preguerra y
posguerra. Algunos clubes presumen que tienen miles o cientos de miles de miembros.
Sin embargo, mientras más grande sea este número, menor será la cantidad de
información que pueda reunir sobre los socios del club y la estructura del auto. Con un
club más pequeño, dedicado sólo a una fábrica y un modelo que no se fabricó en grandes
cantidades, mayor será la información que pueda reunirse.
Los MG, en particular los modelos de la preguerra de 1937, 1938 y 1939, constituyen un
grupo muy pequeño con el que se puede reunir una gran cantidad de información sobre
algunos modelos. Sin embargo, normalmente esta información se guarda en páginas
escritas a mano, y se pasan de un presidente de un club a otro presidente de club.
Primero, estaban los detalles comunes que acompañan a una base de datos de nombres
y direcciones. Algunos propietarios estaban casados y compartían un mismo apellido,
otros tenían apellidos distintos. Algunos tenían más de una dirección. Muchos propietarios
vivían fuera de Estados Unidos, así que sus direcciones no coincidían con el formato
“Ciudad, Estado y Código Postal” de Estados Unidos. Incluso con una sola dirección, los
propietarios tenían uno, dos o más números telefónicos. Y tenían uno o más automóviles.
Problemas:
La solución inicial, proporcionada por los clubes de manera individual, fue reunir
información acerca de cada uno de los propietarios en una tarjeta de 3 x 5 pulgadas, y
luego transferir esa información a una lista mecanografiada en hojas tamaño carta. Esto
es tan primitivo como la historia de la recolección de datos, así que surgieron muchos
problemas. El primero, surgió de la naturaleza manual de la recopilación de datos.
Después, no podía modificarse el orden de la información. Las listas mecanografiadas se
organizaban en orden alfabético por el propietario, así que era imposible, clasificar y
buscar de otra manera. Y de la misma forma, también era imposible generar otra salida,
por ejemplo, etiquetas de correo.
Debido a que los datos de cada uno de los automóviles estaban vinculados a un
propietario, cualquier tipo de informe o estadística de los artículos, como el número de
automóviles, precio o kilometraje también era imposible de producir, a menos que se
usaran los recursos más laboriosos.¿Cómo hacer una lista de automóviles actualmente
en venta, incluyendo el nombre del vendedor? Del mismo modo, poder buscar
rápidamente un automóvil al emplear distintos criterios como el kilometraje o la ubicación,
no era factible con la lista existente.
Ya que esta es una nueva aplicación, es probable que se le encuentren nuevos usos
como nuevos informes a partir de los datos existentes. Sin duda, se harían cambios
adicionales a los datos. Dadas estas limitaciones, usar una sola tabla no es la respuesta.
No habría sido más fácil ingresar los datos de manera redundante, en vez de tomarse
todo el trabajo de la normalización? Si la base de datos aumentara a 10000 registros, no
sería práctico. Existen cuatro razones específicas para normalizar una base de datos y
son válidas para las aplicaciones más triviales e insignificantes.
Imagine que su aplicación de base de datos fuera a rastrear los pedidos de un comercio.
Si la base de datos no estuviera normalizada, tendría que almacenar el nombre y la
dirección de todos los clientes en cada uno de los registros de pedido. Si la compañía
realizara varias operaciones repetitivas, se tendría que registrar la misma información una
y otra vez, lo que ocuparía demasiado espacio libre.
Además, ya que cada registro debe contar con un espacio para cada artículo que el
cliente ordene, puede que haya muchos campos sin usar, creados en caso de que alguien
ordenara varios artículos.
Si continuamos con el ejemplo anterior, imagine que debe introducir en efecto, el nombre
y la dirección del cliente una y otra vez en cada registro nuevo.
En el ejemplo anterior, se dio por hecho un lugar para el nombre y la dirección del cliente.
Supongamos que los requerimientos cambian. El espacio para el nombre y la dirección
del cliente también incluía un campo para el teléfono y un segundo campo para el fax, y
así había funcionado bien a la compañía por décadas. De repente, debían ser rastreados
más números telefónicos (celular, localizador, llamada de larga distancia gratuita, número
900, llamada por cobrar e incluso fax móvil). Y quizá esto continúe (con una o varias
direcciones de correo electrónico) Si se había normalizado la base de datos de manera
adecuada, habría una tabla separada con números telefónicos y una descripción de cada
tipo, con el fin de que pudiera almacenarse una cantidad ilimitada de números telefónicos
y otros números de contacto. Con esto, no tendría que cambiar la estructura de la base de
datos, lo que significa que la aplicación no cambia, y tampoco los formularios, informes,
consultas o programas que comprenda.
De nuevo, hay que recordar que la representación física de estos elementos (bases de
datos, tablas, índices, etc) no necesita tener una relación uno a uno con sus primos
lógicos. Por ejemplo, una base de datos podría almacenarse en más de un archivo, o un
grupo de tablas (lógicas) podría almacenarse en la misma estructura física. Sin embargo,
las representaciones lógicas y físicas a menudo se corresponden la una con la otra.
La Normalización es la solución:
A partir de una sola tabla, se crean una serie de tablas y campos con relaciones entre
ellas, con claves principales y externas colocadas en cada una de las tablas para manejar
estas relaciones, y con los datos estructurados de manera correcta.
Estos son campos que almacenan los mismos tipos de información. Por ejemplo, el
listado de propietarios tenía varios campos duplicados, en primer lugar la lista de
automóviles por propietario; evidentemente, esos campos necesitaban ser trasladados a
una segunda tabla. Algunos propietarios tenían media docena de automóviles o más.
Además, al rastrear a los propietarios anteriores por automóvil se acababa creando una
tercera tabla, ya que un auto pudo tener varios propietarios anteriores.
En términos estrictos, la tercera tabla no debería crearse – sólo debería haber una tabla
de propietarios y otra para automóviles. Y luego, ¿cómo se relacionaban la tabla
Propietarios y Automóviles, puesto que un propietario podía estar vinculado a uno o más
automóviles, y un automóvil podía haber pertenecido a una o más personas?.
Obviamente, no se pueden colocar múltiples claves principales de automóvil en la tabla
Propietarios (una para cada uno de los autos que posee el propietario) ya que se violaría
la primera forma normal tanto como colocar toda la información de los automóviles de los
Automóviles en la tabla Propietarios. De igual manera, no se pueden colocar claves
principales para cada uno de los propietarios anteriores en la tabla Automóviles. Esto no
sólo violaría la primera forma normal, sino que tampoco sería práctico, puesto que un
automóvil podría tener docenas de propietarios a través del tiempo.
Como no podemos colocar varias claves principales dentro de una tabla con el mismo tipo
de datos, la solución es utilizar una tabla intermedia, llamada Tabla Unión, que contiene
las claves principales para cada combinación de los campos Automóviles y Propietarios.
Por ejemplo, supongamos que Alejandro tuvo dos automóviles, un TC y un TD. Él fue el
primer propietario del TC, pero el TD se lo compró a David, quien se lo había comprado a
Dora, la primera propietaria. Además, supongamos que David tiene actualmente un TA, y
que Dora no tiene ningún auto por ahora. De esta manera existirían tres registros en la
tabla Propietarios: Alejandro, David y Dora. Existirían tres registros en la tabla
Automóviles: TA, TC y TD.
Sin embargo, la tabla Unión sería más compleja. Tendría dos columnas, una para la clave
principal de la tabla Automóviles, y otra para la clave principal de la tabla Propietarios.
Tendría un solo registro para cada relación actual propietario – automóvil, y también
tendría un solo registro para cada relación automóvil – propietario anterior. De este modo,
la tabla se vería así:
Automóvil Propietario
Cada una de estas claves sirve para alojar un registro completo tanto en la tabla
Automóvil como en la tabla Propietario. Cuando David se mude, su dirección se cambiará
en un solo lugar. Cuando el kilometraje del TD se actualice, también se cambiará en un
solo lugar.
En algunas tablas, la clave principal está compuesta por distintos campos. Esta regla
requiere que todos los campos que no son dependientes de la clave principal por
completo, deberán ubicarse en otra tabla donde sí dependan por completo. Por ejemplo,
usted podría diseñar una clave principal para la tabla Automóviles, que consista en el
número de identificación del vehículo, fábrica, modelo, año y color. Sin embargo, el
nombre de la fábrica (MG) es redundante (si el modelo es un TC o un TD, es un MG). No
puede ser Ford o Porshe.
Es bueno crear un número para la clave principal, pues esto trae varios beneficios. En
primer lugar, garantiza que la clave principal es única. En segundo lugar, una clave
sencilla siempre tiene un mejor desempeño que una clave compuesta. Los clientes
siempre quieren aplicaciones que se ejecuten más rápido, nunca con más lentitud. En
tercer lugar, aún cuando puede localizar un campo o un grupo de campos en una tabla
que es única, nada garantiza que las reglas del ambiente o la empresa no cambiarán para
invalidar esa singularidad. Por ejemplo, mucha gente piensa de manera errónea que un
número de seguro social es único y que es un buen candidato para identificar de manera
exclusiva a un individuo. Pero, ¿qué pasa con la gente que no tiene número de seguro
social, como los bebés y los ciudadanos no naturalizados?. Ya ha habido casos
documentados de emisión de números duplicados.
Además, supongamos que algún día la administración de seguridad social resuelve que
reutilizará los números emitidos hace 150 años. Si rastrea a los empleados activos de una
compañía o a los inversionistas de un fondo común, quizás está bien. Pero si ejecuta una
aplicación de genealogía y emplea los números de seguro social con la creencia de que
siempre serán únicos, entonces su aplicación está condenada a fracasar.
Si utiliza claves principales de un solo campo, esto no es un problema, y una vez que su
tabla está en la tercera forma normal, también está en la cuarta forma normal.
Eliminar dependencias cíclicas pair – wise ( que aparecen dentro de las claves principales
compuestas con tres o más campos compuestos) a tres o más nuevas tablas padre.
En cierto modo, esta regla es una extensión de la cuarta forma normal. Esta forma
describe una situación en la que usted tiene una clave principal con tres o más campos, y
estos campos son interdependientes de sus valores. De nuevo, si utiliza claves principales
de un solo campo, su base de datos de cuarta forma normal también se encontrará en la
quinta forma normal.
Está basada en el hecho de que ciertas relaciones (o tablas) tienen mejores propiedades,
durante la actualización, que otras que contienen los mismos datos.
Una tabla o relación r está en Primera Forma Normal (1FN) si y sólo si cada elemento de r
es atómico (indivisible), es decir, no contiene atributos multivaluados.
DEPENDENCIAS FUNCIONALES:
Una dependencia funcional es un tipo de asociación entre los atributos de una relación.
A --------- B
Identifica
Siempre que dos tuplas tengan el mismo valor de A, entonces del valor de B debe
también coincidir.
Ejemplos:
A ---------- B
Ejemplo:
Ejemplo:
Dependencia Transitiva:
Una relación r está en segunda forma normal (2FN), si y sólo si, está en 1FN y cada
atributo B no primario de R depende en forma funcionalmente completa de cada clave
candidata A de r.
Ejemplo:
Una tabla r está en tercera forma normal (3FN), si y sólo si, está en 2FN y cada atributo
no primario de r no es transitivamente dependiente de cada clave candidata.
Ejemplo: