1. Base de Datos
UNIDAD 3: El modelo de datos
relacional
Clase 4: Normalización de Base de
Datos
Ing. Ricardo Tillero
2. Normalización de Base de Datos
• La Teoría de la Normalización se basa en las conocidas
Formas Normales FN1, FN2, FN3,…..
• Se utiliza con la finalidad de ofrecer la máxima protección a un
determinado conjunto de Tablas al momento de crear o
efectuar cambios en la Base de Datos.
• El proceso de Normalización se hace necesario para:
Evitar la redundancia de los datos y las inconsistencias.
Evitar la incapacidad de almacenar ciertos datos.
Evitar la ambigüedades y pérdida de información.
Evitar problemas de actualización (anomalías de inserción,
borrado y modificación)de los datos en las tablas.
Proteger la integridad de los datos.
3. Normalización - Conceptos
1. Claves primaria o Primary Key (PK): es un campo o a una
combinación de campos que identifica de forma única a cada
fila de una tabla. Una PK comprende de esta manera una
columna o conjunto de columnas. No puede haber dos filas en
una tabla que tengan la misma PK.
Cod_cliente (PK) Nombre_cliente
001 Juan Pérez
002 Ana Quiroz
003 Ana Quiroz
004 Juan Pérez
005 José López
4. Normalización - Conceptos
1. Claves foranea o Foreign Key (FK): es una limitación
referencial entre dos tablas. La FK identifica una columna o
grupo de columnas en una tabla (tabla hija o referendo) que se
refiere a una columna o grupo de columnas en otra tabla (tabla
maestra o referenciada). Las columnas en la tabla referendo
deben ser la clave primaria u otra clave candidata en la tabla
referenciada.
Tabla CLIENTES
codCliente
(PK)
nombreCliente
001 Juan Pérez
002 Ana Quiroz
003 Ana Quiroz
004 Juan Pérez
005 José López
Tabla VEHICULOS
placaVehiculo
(PK)
marcaVehiculo codCliente (FK)
YBZ212 Suzuky 001
KAK41G Chrysler 002
GBO89Y Renault 005
5. Normalización - Conceptos
1. Claves foranea o Foreign Key (FK): es una limitación
referencial entre dos tablas. La FK identifica una columna o
grupo de columnas en una tabla (tabla hija o referendo) que se
refiere a una columna o grupo de columnas en otra tabla (tabla
maestra o referenciada). Las columnas en la tabla referendo
deben ser la clave primaria u otra clave candidata en la tabla
referenciada.
Tabla CLIENTES
codCliente
(PK)
nombreCliente
001 Juan Pérez
002 Ana Quiroz
003 Ana Quiroz
004 Juan Pérez
005 José López
Tabla VEHICULOS
placaVehiculo
(PK)
marcaVehiculo codCliente (FK)
YBZ212 Suzuky 001
KAK41G Chrysler 002
GBO89Y Renault 005
6. Normalización - Conceptos
• Dependencia funcional: es la base del proceso de Normalización de
Bases de Datos Relacionales, que garantiza la integridad de los datos.
• Una dependencia funcional es una relación entre uno o más atributos, por lo
que si conocemos el valor de un atributo podemos obtener (o buscar) el valor
de otro. Por ejemplo, si conocemos el valor de numeroCuentaCliente,
podemos encontrar el valor de saldoCliente Si esto es verdad, podemos decir
que saldoCliente es funcionalmente dependiente de numeroCuentaCliente.
• En términos generales, el atributo Y es funcionalmente dependiente del atributo
X si el valor de X determina al valor de Y. Dicho de otra manera, si conocemos
el valor de X podemos obtener el valor de Y.
Tabla CUENTA
X Z Y
numeroCuentaCliente
PK
tipoCuentaCliente saldoCliente
1256025841035 Corriente 001
1256025825698 Corriente 002
1023265285466 Ahorro 005
7. Normalización - Conceptos
• Dependencias transitivas: es un arreglo de dependencias funcionales. En
otras palabras es un cadena de dependencias funciones XYZ, donde Z
depende de Y e Y depende de X.
• En dependencias transitivas si conocemos el valor de un atributo podemos
obtener (o buscar) el valor de otro, y con este valor obtenemos ( o buscamos)
el valor de un tercer atributo. Por ejemplo, si conocemos el valor de
codigoEdificio, podemos encontrar el valor de nombreEdificio, y con este valor
encontramos el de la cuotaEdificio. Si esto es verdad, podemos decir que
cuotaEdificio es funcionalmente dependiente de nombreEdificio, y este es
funcionalmente dependiente de codigoEdificio, existe dependencia transitiva
entre estos 3 atributos.
Tabla CUENTA
X Z Y
codigoEdificio
PK
nombreEdificio cuotaEdificio
E01 Orinoco 001
E02 Caura 002
E03 Caroni 005
8. Normalización – Formas Normales (FN)
• Las relaciones se pueden clasificar por tipos de anomalías de
modificación a las cuales son vulnerables.
• En la década de 1970, los teóricos relacionales investigaron acerca de
estos tipos. Cuando alguien encontraba una anomalía, la clasificaba y
pensaba en una manera de prevenirla. Cada vez que esto sucedía se
mejoraban los criterios de diseño de las relaciones.
• Las clases de relaciones, así como las técnicas para prevenir
anomalías, se denominan formas normales.
• Dependiendo de su estructura, una relación puede estar en la primera
forma normal, en la segunda forma normal, o en alguna otra.
• En un trabajo posterior a su artículo de 1970, Codd y otros definieron
las primera, segunda y tercera formas normales (1NF, 2NF, 3NF). Más
tarde se especificó la forma normal de Boyce-Codd (BCNF), y
después se definieron la cuarta y la quinta formas.
• En 1981 R. Fagin definió una nueva forma normal llamada forma
normal dominio-llave (DK/NF, por sus siglas en inglés), la cual dice
que si tabla o relación esta en DK/FK esta libre de cualquier anomalía
9. Normalización – Formas Normales (FN)
• Las formas normales están anidadas. Esto es, una relación en la
segunda forma normal está también en primera forma normal, y una
relación en 5NF (quinta forma normal) está asimismo en 4NF, BCNF,
3NF, 2NF y 1NF.
• En nuestra asignación solo estudiaremos hasta la 3FN, ya que para
Base de Datos no tan complejas una Normalización 3FN es suficiente.
10. Primera Forma Normal (1FN)
• Primera Forma Normal (1FN) fue introducida por Codd, en su
primer trabajo.
• Es una restricción inherente al modelo relacional por lo que su
cumplimiento es obligatorio.
• Todos los atributos deben ser atómicos, no complejos.
• Consiste en la prohibición de que en una tabla o relación
existan grupos repetitivos, es decir, se debe eliminar a todos
los grupos repetidos.
• Eliminar la repetición de grupos (redundancia de datos).
• Crear una tabla diferente para cada conjunto de datos
relacionados.
12. Primera Forma Normal (1FN)
Ejemplo 2:
Distintos valores de en la una misma celda de teléfonos. La solución es crear un
nueva tabla con los números de teléfonos asociados a la clave primaria (PK) id.
Solución:
13. Primera Forma Normal (1FN)
Ejemplo 3:
• La imagen nos presenta dos representaciones de un misma tabla de
ESTUDIANTES con grupos repetitivos, y el causante de estos son los
atributos clase1, clase2 y clase3 para la primera representación y el atributo
clases para la segunda representación, por lo que la solución para ambos
casos es dividir la tabla en dos tablas, donde estudiante, y clases, pasan a
ser la clave primaria (PK) en la tabla registros.
• Representaciones 1 y 2 de ESTUDIANTES
• Solución:
14. Segunda Forma Normal (2FN)
• Segunda Forma Normal (2FN), fue introducida por Codd.
• Una tabla o relación esta en 2FN, si además de estar en 1FN,
todos los atributos que no forman parte de la clave primaria
suministran información acerca de la clave primaria (PK). Debe
existir una dependencia funcional total.
• Asegura que todos las atributos que no son claves sean
completamente dependientes de la llave primaria (PK).
15. Segunda Forma Normal (2FN)
Ejemplo 1:
• Para la relación o tabla PRESTAMOS(numSocio, nombreSocio,
codLibro, nombreLibro, fecPrest, editorial, pais) la clave primaria (PK)
es: numSocio.
• Se puede observar que nombreLibro, editorial, pais constituyen
información acerca del libro, pero no, acerca de la clave primaria.
Luego, la relación o tabla PRESTAMOS no se encuentra en 2FN.
• La solución es descomponer esta relación en las siguientes:
PRESTAMOS( numSocio, nombreSocio, codLibro, fecPrest )
LIBROS( codLibro, nombreLibro, editorial, pais ).
En la relación o tabla PRESTAMOS, el único atributo que no forma parte de
las claves candidatas es fecPrest, pero suministra información acerca de la
clave primaria (PK). Por lo que esta en 2FN.
La relación o tabla LIBROS, la clave es codLibro, y los atributos
nombreLibro, editorial y pais suministran información de la clave primaria
(PK).
• Observación: Una relación que esta formada por un único atributo
esta en 2FN.
16. Segunda Forma Normal (2FN)
Ejemplo 2:
• Acá hacemos un análisis de las dependencias funcionales que existe
entre grupos de atributos de esta tabla en 1FN, y se divide en tres(3)
tablas una por dependencia funcional. Al dividir NSS y NUMEROD se
convierte en clave primaria de la tabla 1, NSS se convierte en clave
primaria de la tabla 2 y NUMEROD se convierte en clave primaria de
la tabla 3.
17. Tercera Forma Normal (3FN)
• Tercera Forma Normal (3FN), propuesta por Codd.
• Una tabla o relación esta en 3FN, si además de estar en 2FN,
los atributos que no forman parte de ninguna clave candidata
facilitan información sólo acerca de la(s) clave(s) y no acerca
de otros atributos.
• Elimina cualquier dependencia transitiva.
• Una dependencia transitiva es aquella en la cual los atributos
que no son claves son dependientes de otros atributos que
tampoco son claves.
18. Tercera Forma Normal (3FN)
Ejemplo 1:
• En la relación o tabla LIBROS( codLibro, nombreLibro,
editorial, pais ), el atributo pais entrega información acerca de
la editorial que publica el libro, por lo que no esta en 3FN.
• La solución es descomponerla en dos relaciones o tablas:
LIBROS(codLibro, nombreLibro, CodEditorial) y
EDITORIALES(codEditorial, editorial, pais), que están en
3FN, ya que todo atributo no clave facilita información acerca
de la clave primaria (PK) en cada relación o tabla.
19. Tercera Forma Normal (3FN)
Ejemplo 2:
• Acá hacemos un análisis de la dependencia transitiva que existe entre
la clave primaria NSS, el atributo NUMEROD y el restos de los últimos
dos(2) de esta tabla en 2FN, y se divide en dos(2) tablas para eliminar
la dependencia transitiva. Al dividir NUMEROD se convierte en clave
foránea (FK) en la primera tabla y en clave primaria en la segunda
tabla.
20. Resumen de las Formas Normales
FN Comprobación Solución
1
Una tabla no debe tener ningún atributo
no atómico ni relaciones anidadas.
Formar tablas nuevas por cada
atributo no atómico o relación
anidada.
2
Para las tablas o relaciones en las que
la clave primaria (PK) contiene múltiples
atributos, ningún atributo no clave
debería depender funcionalmente de
una parte de la clave primaria(PK).
Descomponer y crear una nueva
tabla para cada clave parcial con sus
atributo(s) dependientes.
Asegurarse de mantener una tabla
con la clave primaria(PK) original y
todos los atributos que dependen
funcionalmente en forma total de ella.
3
Una tabla no debería tener un atributo
no clave determinado funcionalmente
por otro atributo no clave (o por un
conjunto de atributos no clave).
Esto es, no debería existir una
dependencia transitiva por parte de un
atributo no clave de una clave
primaria(PK).
Descomponer y crear una tabla que
incluya el atributo o atributos no clave
que determinen funcionalmente a otro
o a otros no clave.