Está en la página 1de 10

Sistemas de Bases de Datos I

Tema 1: Diseño de Bases de Datos


Relacionales

Normalizando Bases de Datos


Colectivo de profesores de la asignatura

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
Normalizando Bases de Datos

A continuación, se muestran dos ejemplos, donde podrá observar el proceso de


normalización.

 Ejemplo 1
 Ejemplo 2

Tener presente los pasos de la Normalización:


• Determinar las dependencias funcionales presentes.
• Representar en una única relación todos los atributos.
• Determinar llaves candidatas y seleccionar llave primaria. (Cierre)
• Aplicar 1ra, 2da y 3ra FN.
• Analizar relaciones obtenidas.

Ejemplo 1: Se desea diseñar una Base de Datos para controlar la disponibilidad de


policías que trabajan en la cuidad de La Habana. De cada policía se conoce su código
que lo identifica (cod_pol) y su nombre (nomp) y el municipio a donde pertenece. Cada
municipio tiene un código que lo identifica (cod_mun), un nombre (nom_mun) y se conoce
para cada municipio la cantidad de habitantes (cant_hab). De cada área donde los policías
pueden realizar guardias se conoce su código (cod_área) y para cada área su dirección
(dir) y descripción (desc_area). Para que los policías descansen en la noche de guardia
existen diferentes albergues de los cuales se conoce un número que es único (#_al), su
nombre (nom_al) y su descripción (desc_al). Se sabe que un policía pertenece a un único
municipio pero en un municipio tiene varios policías. Los policías no tienen albergue fijo
donde dormir, pero se sabe que un policía en una fecha (fecha) determinada realiza
guardia en una sola área y duerme en un único albergue.
a) Determine las Dependencias Funcionales y represéntelas esquemáticamente.
b) Determine las llaves candidatas y señale la llave primaria.
c) Represente la relación universal en 1FN.
d) Normalice hasta 3FN.

Solución:

Paso 1: Determinar las dependencias funcionales presentes.


Un conjunto de atributos depende de uno o varios atributos, si se cumple que para cada
combinación de valores de los atributos determinantes se puede determinar una y sola
una combinación de valores de los atributos implicados. Del enunciado del ejemplo se
pueden extraer las siguientes dependencias funcionales, analizando oración por oración:
Normalizando Bases de Datos

- De cada policía se conoce su código que lo identifica (cod_pol) y su nombre (nomp) y el


municipio a donde pertenece. La DF quedaría como sigue:

cod_pol --> nomp, cod_mun

- Cada municipio tiene un código que lo identifica (cod_mun), un nombre (nom_mun) y se


conoce para cada municipio la cantidad de habitantes (cant_hab). La DF quedaría como sigue:
cod_mun --> nom_mun, cant_hab

- De cada área donde los policías pueden realizar guardias se conoce su código
(cod_área) y para cada área su dirección (dir) y descripción (desc_area). La DF quedaría
como sigue:
cod_área --> dir, desc_area

- Para que los policías descansen en la noche de guardia existen diferentes albergues de los
cuales se conoce un número que es único (#_al), su nombre (nom_al) y su descripción
(desc_al). La DF quedaría como sigue:

#_al --> nom_al, desc_al

- Los policías no tienen albergue fijo donde dormir, pero se sabe que un policía en una
fecha (fecha) determinada realiza guardia en una sola área y duerme en un único
albergue. La DF quedaría como sigue:
cod_pol, fecha --> cod_area, #_al

Paso 2: Representar en una única relación todos los atributos.


El segundo paso es representar en una relación todos los atributos, a esta relación se le
llama relación universal. En el ejemplo que se expone quedaría:

R (cod_pol, nomp, cod_mun, nom_mun, cant_hab, cod_area, dir, desc_area, #_al,


nom_al, desc_al, fecha)

Paso 3: Determinar llaves candidatas y seleccionar llave primaria. (Cierre)

Determinar la llave primaria de una relación universal. Primeramente se analizarán los


conceptos básicos necesarios para obtener la llave primaria de una Relación: Llave: Dado
un esquema R(A1, A2, …, An), un conjunto de dependencias funcionales DF, X ⊆ A1, A2,
…, An, para que X sea llave debe cumplir:

a, X -> A1, A2, …, An (determina a toda R)


Normalizando Bases de Datos

b, No existe Y X tal que Y->A1, A2, …, An (mínima)

Una llave es un conjunto de atributos que determinan a todos los atributos de la Relación
universal, ocurriendo que si se quita uno de esos atributos ya no se cumple que se
determinen todos los atributos de la Relación. Si al quitar uno de los atributos de la llave,
se siguen determinando todos los atributos de la relación, es que se estaba en presencia
de una superllave, o lo que es lo mismo, una llave no mínima; ese atributo no forma parte
de la llave primaria. Si un esquema tiene más de una llave, todas son llaves candidatas.
Sólo una de las llaves candidatas se designa como llave primaria.
Hay dos tipos especiales de atributos que se deben tener en cuenta: Atributo primo: aquel
atributo que es miembro de cualquier llave candidata de R. Son aquellos atributos que
aparecen en las relaciones como determinantes (a la izquierda de una DF) y nunca como
determinados (nunca a la derecha). Estos atributos forman parte de toda llave candidata
que se encuentre. Atributo no primo: aquel atributo que no es miembro de ninguna llave
candidata. Aquellos atributos que siempre son determinados y nunca determinantes (no
aparecen a la izquierda de ninguna DF). No forman parte de ninguna llave.
Una forma de determinar las llaves candidatas es utilizando el algoritmo de cierre de un
conjunto de atributos.
Cierre de un conjunto de atributos. La nomenclatura para representar el conjunto cierre es
X+
Algoritmo para calcular X+
Leyenda:
R – Relación Universal
DF – Conjunto de las Dependencias Funcionales
X – un atributo o conjunto de atributos de R
Entrada: R, DF, X
Salida: X+
Método: Temp := X Mientras haya cambios en Temp hacer: Buscar en DF si existe una
dependencia I->D tal que I Temp y D Temp, entonces Temp:=Temp U D
Explicando el algoritmo:
- La condición inicial es tener una lista de atributos con el valor del conjunto de atributos
al que se le quiere determinar el cierre.
Normalizando Bases de Datos

- Buscar en el conjunto de dependencias funcionales si existe alguna de ellas donde el


determinante (parte izquierda de la dependencia) sea un subconjunto o igual a los que
está almacenado en Temp y el implicado (la parte derecha de la dependencia) sea un
conjunto de atributos distinto a Temp.
- Cuando se cumpla esa condición unir el conjunto de atributos de Temp con el implicado
encontrado.
- Repetir mientras se estén agregando atributos en Temp.
- La condición de parada del ciclo es que se hayan revisado todo el conjunto de DFs y
Temp no haya cambiado.
Serán llaves candidatas de la relación universal todos aquellos conjuntos de atributos cuyo
cierre sean todos los atributos de la relación universal.
En el ejemplo utilizado quedaría:
DF = { cod_pol --> nomp, cod_mun
cod_mun --> nom_mun, cant_hab
cod_area --> dir, desc_area
#_al --> nom_al, desc_al
cod_pol, fecha --> cod_area, #_al }

Los atributos que nunca están en partes derechas de las DFs siempre tienen que estar
en las llaves candidatas.
- (cod_pol, fecha)+ = {R}  cod_pol, fecha
son llave primaria
Como cod_ pol y fecha tienen que formar parte de la llave y generan a toda R, entonces
no hay que probar otras combinaciones pues serían superllaves.
En caso contrario probar combinaciones que los incluyan.

Llave candidata: cod_pol, fecha (única)


Llave primaria: cod_pol, fecha

R (cod_pol, fecha, nomp, cod_mun, nom_mun, cant_hab, cod_area, dir, desc_area, #_al,
nom_al, desc_al)

Paso 4: Aplicar 1ra, 2da y 3ra FN.


- La relación universal se encuentra en 1ra FN ya que una relación R está en 1ra FN si
todos sus atributos tienen valores atómicos. Un atributo tiene valores atómicos cuando
este no es un atributo compuesto o mutivaluado.
- Aplicando la 2da FN:
Normalizando Bases de Datos

Una relación R se dice que está en 2FN si está en 1FN y si, y sólo si, los atributos no
llaves (ni primarias, ni candidatas) de R, si los hubiese, son funcional y completamente
dependientes de la llave primaria de R. Este segundo paso se aplica sólo con relación a
llaves compuestas. Continuando con el ejemplo
R no se encuentra en 2da FN ya que existen dependencias parciales en la relación, estas
son:
cod_pol --> nomp, cod_mun, nom_mun, cant_hab

- Llevando a 2da FN a R, aparece una nueva relación que será R1 con los atributos que
no dependen totalmente de la llave primaria:

R1 (cod_pol, nomp, cod_mun, nom_mun, cant_hab)


DF: cod_pol --> nomp, cod_mun
DF: cod_mun --> nom_mun, cant_hab

R (cod_pol, fecha, cod_area, dir, desc_area, #_al, nom_al, desc_al)


DF: cod_area --> dir, desc_area
DF: #_al --> nom_al, desc_al
DF: cod_pol, fecha --> cod_area, #_al

- Aplicando la 3ra FN:


Una relación se dice está en 3ra FN si está en 2da FN y si, y sólo si, no tiene DF transitivas
con respecto a la llave primaria. Ningún atributo no primo depende transitivamente de la
llave primaria.

Las relaciones R y R1 no se encuentran en 3ra FN ya que existen dependencias transitivas


en ellas, estas son:

En R1
cod_mun --> nom_mun, cant_hab

En R
cod_area --> dir, desc_area
#_al --> nom_al, desc_al

Llevando a 3ra FN aparecen nuevas relaciones producto de estas DF transitivas:

R1 (cod_pol, cod_mun)
DF: cod_pol --> nomp, cod_mun

R2 (cod_mun, nom_mun, cant_hab)


Normalizando Bases de Datos

DF: cod_mun --> nom_mun, cant_hab

R3 (cod_area, dir, desc_area)


DF: cod_area --> dir, desc_area

R4 (#_al, nom_al, desc_al)


DF: #_al --> nom_al, desc_al

R (cod_pol, fecha, cod_area, #_al)


DF: cod_pol, fecha --> cod_area, #_al

- Quedando el ejemplo concluido:


R1 (cod_pol, cod_mun)
R2 (cod_mun, nom_mun, cant_hab)
R3 (cod_area, dir, desc_area)
R4 (#_al, nom_al, desc_al)
R (cod_pol, fecha, cod_area, #_al)

Ejemplo 2: Dado el esquema de relación R= {P, Q, M, V, Y, Z, T, X, S, U} y las siguientes


dependencias funcionales DF: {P → Q; Q → {Y, Z}; T→ {X, S}; M → {T, V}; Y → U}:

a) Determine las llaves candidatas en R.


b) Seleccione una llave primaria, diga en qué forma normal está la relación con
respecto a esta llave y justifique por qué no está en la forma normal superior a esa.
c) Normalice hasta la 3ra forma normal en caso de no estarlo. Justifique cada una de
las descomposiciones que realice durante el proceso.

Solución:

a) Se utiliza el algoritmo de cierre de un conjunto de atributos. Donde serán llaves


candidatas de la relación universal todos aquellos conjuntos de atributos cuyo cierre
sean todos los atributos de la relación universal.

Se analizan las DFs:


DF: {P → Q;
Q → {Y, Z};
T→ {X, S};
M → {T, V};
Normalizando Bases de Datos

Y → U}

Los atributos que nunca están en partes derechas de las DFs siempre tienen que estar
en las llaves candidatas.
(P, M)+ = {R}  P, M son llave primaria

b) Como P y M tienen que formar parte de la llave y generan a toda R, entonces no hay
que probar otras combinaciones pues serían superllaves.

Llave candidata: P, M (única)


Llave primaria: P, M

R (P, M, Q, V, Y, Z, T, X, S, U}

R se encuentra en 1era FN ya que todos sus atributos tienen valores atómicos. No se encuentra
en la forma normal superior (2da FN) porque existen dependencias parciales de la llave primaria.
Estas son:
P --> Q, Y, Z, U
M --> T, V, X, S

c) Aplicando 2da FN a R aparecen nuevas relaciones que se nombraron R1 y R2 como


consecuencia de las dependencias parciales que existían en R. Quedando así:

R1 (P, Q, Y, Z, U)
DF: P→ Q
DF: Q→ Y, Z
DF: Y→ U

R2 (M, T, V, X, S)
DF: M→ T, V
DF: T→X, S

R (P, M)

Las relaciones R1 y R2 no se encuentran en 3ra FN ya que existen dependencias transitivas


en las relaciones, estas son:

En R1
Q→ Y, Z
Y→ U
En R2
T→X, S
Normalizando Bases de Datos

Llevando a 3ra FN aparecen nuevas relaciones producto de estas DF transitivas:


R1 (P, Q)
DF: P→Q

R2 (M, T, V)
DF: M→T, V

R3 (Q, Y, Z)
DF: Q→ Y, Z

R4 (Y, U)
DF: Y→U

R5 (T, X, S)
DF: T→X, S

R (P, M)

- Quedando el ejemplo concluido:


R1 (P, Q)
R2 (M, T, V)
R3 (Q, Y, Z)
R4 (Y, U)
R5 (T, X, S)
R (P, M)
Información de autoría

Obra bajo licencia Creative Commons 4.0 “Reconocimiento – NoComercial-Compartir Igual”:


http://creativecommons.org/licenses/by-nc-sa/4.0/
Se puede copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las
siguientes condiciones:

• Reconocimiento a los autores.


• No se permite el uso comercial.
Se permiten obras derivadas siempre que mantengan la misma licencia que el original.

Autores: Colectivo de profesores de la Asignatura


Fecha de creación: 10/02/2021
Última modificación: 11/02/2021
Contacto: lianne@uci.cu

También podría gustarte