Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ing.doc: Ing.Est:
Rodolfo Garcia Reynel Barrios
C.I: 31.120.085
Normalización de bases de datos.
Para mejorar el desempeño de una base de datos, así como evitar redundancia en
la información que contiene y, en consecuencia, generar condiciones para un
mejor diseño, el analista de sistemas debe conocer las formas de normalización y
condiciones en las que la desnormalización es recomendable.
FN1
FN2
Además de cumplir con las dos reglas del punto previo, la segunda forma normal
añade la necesidad de que no existan dependencias funcionales parciales. Esto
significa que todos los valores de las columnas de una fila deben depender de la
clave primaria de dicha fila, entendiendo por clave primaria los valores de todas
las columnas que la formen, en caso de ser más de una.
Las tablas que están ajustadas a la primera forma normal, y además disponen de
una clave primaria formada por una única columna con un valor indivisible,
cumplen ya con la segunda forma normal. Ésta afecta exclusivamente a las tablas
en las que la clave primaria está formada por los valores de dos o más columnas,
debiendo asegurarse, en este caso, que todas las demás columnas son accesibles
a través de la clave completa y nunca mediante una parte de esa clave.
FN3
Desnormalización
La normalización crea más tablas al avanzar hacia formas normales más altas, sin
embargo, a mayor número de tablas, mayor número de combinaciones al
recuperar los datos; lo que contribuye a la ralentización de las consultas. Por esta
razón, para mejorar la velocidad de determinadas consultas, se pueden anular las
ventajas de la integridad de datos y devolver la estructura de los datos a una
forma normal inferior.
En conclusión
La normalización es una técnica utilizada para diseñar tablas en las que las
redundancias de datos se reducen al mínimo. Las primeras tres formas normales
(1FN, 2FN y 3FN) son las más utilizadas. Desde un punto de vista estructural, las
formas de mayor nivel son mejores que las de menor nivel, porque aquellas
producen relativamente pocas redundancias de datos en la base de datos. En
otras palabras, 3FN es mejor que 2FN y ésta, a su vez, es mejor que 1FN. Casi
todos los diseños de negocios utilizan la 3FN como forma ideal.
Ejercicio resuelto.
En un hotel se necesita tener una base de datos completa con el registro de
clientes que tiene el (hotel la gran savana)
tabla de clientes
fech ID NOMBR Id. TLF ID. HAB. Dia preci
a clien E HA s o
pago
t B
02/02 2301 Juan 0012 01020305055 001 pequeñ 2 10$
a
02/02 2302 Marisol 2589 01022255256 003 median 1 10$
a
03/02 2303 Mario 4512 01025585596 027 median 3 30$
a
04/02 2301 Juan 4714 01020305055 001 pequeñ 3 15$
a
08/02 2309 pablo 2352 01020333554 027 grande 5 100$
Aplicando la FN1 que dice que no pueden haber grupos repetidos decimos que:
Eliminamos los grupos repetidos como idhab,hab,días,precios
Los colocamos en una tabla pk aparte.
habitaciones
ID HAB. HABITACION DIAS PRECIO
001 pequeña 2 10$
003 mediana 1 10$
027 mediana 3 30$
001 pequeña 3 15$
027 grande 5 100$
Clientes
fech ID NOMBRE TLF Id.
a client
pago
02/02 2301 Juan 01020305055 0012
02/02 2302 Marisol 01022255256 2589
03/02 2303 Mario 01025585596 4512
04/02 2301 Juan 01020305055 4714
08/02 2309 pablo 01020333554 2352
Aplicando la FN2 que dice: eliminar cualquier columna no llave que no dependa
de la llave primaria de la tabla. Los pasos a seguir son: Determinar cuáles
columnas que no son llave no dependen de la llave primaria de la tabla.
Eliminar esas columnas de la tabla base. Crear una segunda tabla con esas
columnas y la(s) columna(s) de la PK de la cual dependen.
habitacion
HABITACION DIAS PRECIO
pequeña 2 10$
mediana 1 10$
mediana 3 30$
pequeña 3 15$
grande 5 100$
Precios
ID HAB. DIAS PRECIO
001 2 10$
003 1 10$
027 3 30$
001 3 15$
027 5 100$
La tercera forma normal nos dice que tenemos que eliminar cualquier columna
no llave que sea dependiente de otra columna no llave.
Nuestra base de datos quedaría asi:
cliente
ID NOMBRE TLF
client
2301 Juan 01020305055
2302 Marisol 01022255256
2303 Mario 01025585596
2301 Juan 01020305055
2309 pablo 01020333554
Pago
fech ID Id.
a client
pago
02/02 2301 0012
02/02 2302 2589
03/02 2303 4512
04/02 2301 4714
08/02 2309 2352