Sei sulla pagina 1di 35

Normalizaciones

de Bases de Datos
Y
Sentencias JOINS
Normalizacin
1. La normalizacin es el proceso de organizar los datos
en una base de datos. Esto incluye la creacin de
tablas y que establece relaciones entre aquellas tablas
segn reglas diseadas para proteger los datos y hacer
la base de datos que es ms flexible al eliminar
redundancia y dependencia incoherente.

2. Los datos redundantes desperdician espacio en disco y


crean problemas de mantenimiento. Si es necesario
cambiar datos que aparecen en ms de un sitio, el
cambio deber ser exactamente igual en todos estos
sitios. Por ejemplo, un cambio de direccin de un
cliente es mucho ms fcil de implementar si los datos
slo se almacenan en la tabla Clientes y en ningn otro
lugar de la base de datos.
El proceso de normalizacin de bases de datos consiste
en aplicar una serie de reglas a las relaciones obtenidas tras el
paso del modelo entidad-relacin al modelo relacional.

Las bases de datos relacionales se normalizan para:

Evitar la redundancia de los datos.


Evitar problemas de actualizacin de los datos en las tablas.
Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relacin,
aunque para que una tabla sea considerada como una relacin
tiene que cumplir con algunas restricciones:
Cada columna 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.
VENTAJAS
Integridad de datos (porque no hay datos redundantes ni
omitidos).
Consultas optimizadas (porque las tablas normalizadas
generan combinaciones eficaces y rpidas).
Creacin y ordenacin de ndices ms rpidas (porque
las tablas tienen menos columnas).
Ejecucin ms rpida de la instruccin UPDATE (porque
hay menos ndices por tabla).
Primera Forma Normal
Eliminar grupos repetidos en tablas
individuales.
Crear una tabla diferente para cada
conjunto de datos relacionados.
Identificar cada conjunto de datos
relacionados mediante una clave principal.
No utilizar varios campos en una nica
tabla para almacenar datos similares.
Ejemplo
Artculo Prov1 Prov2 Prov3
Maz - Granja - En lugar de hacer varios
Arroz Casita - - campos para los
proveedores en una sola
Cdigo Proveedor tabla, Se crea otra tabla
con el campo proveedor y
145 CASITA se coloca varios registros
para los proveedores
154 Granja
(tabla de en medio).
Sustituimos la tabla
Artculo Cod.Prov
superior de la izquierda
Maz 154 por la tabla inferior.

Arroz 145
Segunda Forma Normal
Crear tablas independientes para
conjuntos de valores que se apliquen a
varios registros.
Relacionar dichas tablas mediante una
clave externa.
Los registros tan slo deben depender de
la clave principal de una tabla (si es
necesario, puede ser una clave
compuesta).
Ejemplo
Sea la direccin de un cliente en un
sistema de contabilidad. La direccin es
necesitada por la tabla Clientes pero por
las tablas Pedidos, Facturas y Cuentas a
cobrar tambin.
En lugar de almacenar la direccin del
cliente como una entrada diferente en
cada tabla, almacnela en un nico lugar,
ya sea en la tabla Clientes o en una tabla
de direcciones independiente.
Tercera Forma Normal
Tercera Forma Normal (3FN) Elimina cualquier dependencia
transitiva. Una dependencia transitiva es aquella en la cual las
columnas que no son llave son dependientes de otras columnas
que tampoco son llave.

Eliminar los campos que no dependan de la clave. Los valores de


un registro que no forman parte de la clave de dicho registro no
pertenecen a esa tabla. En general, siempre que el contenido de un
grupo de campos se puede aplicar a ms de un registro de la tabla,
debe tener en cuenta la posibilidad de incluir dichos campos en una
tabla independiente.
Otras formas normales
Otras formas de normalizacin
Existe una cuarta forma normal, llamada
tambin Forma normal de Boyce Codd
(BCNF), y una quinta forma normal, pero
pocas veces se consideran prcticas en
un diseo. La omisin de estas reglas
puede dar como resultado una tabla que
no sea perfecta, pero no debera afectar a
su funcionamiento
Haga esta tabla para normalizarla. La tabla se llama alumnos
Primera Forma Normal
Ningn Grupo Repetido
Como cada alumno se encuentra inscrito
en varios cursos, estos deben aparecer en
una tabla independiente.
Los campos curso1, curso2, curso3 de los
registros anteriores indican que existe un
problema en el diseo.
Segunda Forma Normal:
Elimine Datos redundantes
Curso no depende del carnet (que ser
nuestra clave principal) por lo que la tabla
no esta en la segunda forma normal.
Se debe separar la informacin de los
cursos-alumnos a otra tabla. Cree la tabla
asignaciones.
Asignaciones

Tabla alumnos luego del cambio


Tercera Forma Normal
Eliminar datos que no dependen de la clave
De el ltimo ejemplo la oficina del asesor
depende funcionalmente del atributo
asesor.
La solucin es mover dicho atributo de la
tabla alumnos a la tabla personal.
Tabla Alumno

Tabla Personal
Normalizada
Finalmente la base de datos esta bien
organizada en la cual se puede actualizar
o cambiar los datos almacenados
fcilmente y de una manera ordenada sin
alterar los dems registros.
Sentencias JOIN
Sentencias JOIN

Las Sentencias SELECT de SQL que obtienen y combinan


datos de mltiples tablas Son llamadas JOINS
Tablas de ejemplo
Autos
Clientes
Trabajar con ms de un tabla
(JOIN)

Hay tres tipos de combinaciones:


1. Combinaciones internas (INNER JOIN),
2. Combinaciones externas (OUTER JOIN) y
3. Combinaciones cruzadas (CROSS JOIN).
INNER JOIN
(Combinaciones internas)

Sintaxis:
SELECT campos FROM tabla1
JOIN tabla2
ON tabla1.campo1=tabla2.campo2
Ejemplo:
SELECT * FROM clientes INNER JOIN
autos ON clientes.patente=autos.patente
Resultado:

No muestra los clientes que no tienen auto, ni


los autos que no tienen cliente.
OUTER JOIN
(Combinaciones externas)
Existen tres tipos de combinaciones
externas:

Left outer join (o left join).


Right outer join (o right join).
Full outer join (o full join).
LEFT JOIN

Sintaxis:
SELECT campos FROM tablaizquierda
LEFT JOIN tabladerecha ON
tablaizquierda.campo=
tabladerecha.campo
Ejemplo:
SELECT * FROM autos LEFT JOIN clientes
ON autos.patente =clientes.patente
Resultado:

Muestra todos los autos, incluso los que no


tienen cliente
RIGHT JOIN

Sintaxis:
SELECT campos FROM tablaizquierda
RIGHT JOIN tabladerecha ON
tablaizquierda.campo=
tabladerecha.campo
Ejemplo:
SELECT * FROM autos
RIGHT JOIN clientes ON
autos.patente =clientes.patente
Resultado:

Muestra todos los clientes, incluso los que no


tienen auto
FULL JOIN

Sintaxis:

SELECT campos FROM tablaizquierda


FULL JOIN tabladerecha ON
tablaizquierda.campo1 =
tabladerecha.campo2
Ejemplo:
SELECT * FROM autos AS A FULL JOIN
clientes AS C ON A.patente =C.patente
Resultado:

Muestra todos los clientes, incluso los que no


tienen auto; y todos los autos, incluso los
que no tienen cliente
CROSS JOIN
(Producto cartesiano)

Sintaxis:

SELECT campos FROM tabla1 CROSS


JOIN tabla2
Ejemplo:
SELECT * FROM platos CROSS JOIN
postres

Muestra todas las combinaciones posibles


(plato-postre).

Potrebbero piacerti anche