Post on 26-Oct-2015
Dependencias funcionales 2
Una dependencia funcional es una restricción entre dos
conjuntos de atributos de la Base de Datos.
Una dependencia funcional, denotada por X Y, entre
dos conjuntos de atributos X e Y que son subconjuntos
de una relación R, especifica una restricción sobre las
posibles tuplas que podrían formar un estado de
relación r de R.
La restricción dice que, para dos tuplas cualesquiera t1
y t2, de r tales que t1[X] = t2[X], debemos tener también
t1[Y] = t2[Y].
Dependencias funcionales 3
Esto significa que los valores del componente Y de una
tupla r dependen de los valores del componente X, o
están determinados por ellos; o bien, que los valores del
componente X de una tupla determinan de manera
única (o funcionalmente) los valores del componente Y.
También decimos que hay una dependencia funcional
de X a Y o que Y depende funcionalmente de X.
Así pues, X determina funcionalmente a Y en un
esquema de relación R si y sólo si, siempre que dos
tuplas r(R) coincidan en su valor X, necesariamente
deben coincidir en su valor Y.
Dependencias funcionales 4
Las dependencias funcionales son propiedades de la
semántica o del significado de los atributos. Siempre
que la semántica de dos conjuntos de atributos de R
indique que debe cumplirse una dependencia funcional,
especificaremos esa dependencia como una restricción.
La utilidad principal de las dependencias funcionales es
describir mejor un esquema de relación R mediante la
especificación de restricciones sobre sus atributos que
deben cumplirse en todo momento.
Dependencias funcionales 5
Consideremos el siguiente esquema de relación:
EmpleadoEnProyecto
DNI númeroProy horas nombreEmp nombreProy localizaciónProy
A partir de la semántica de los atributos, deben
cumplirse las dependencias funcionales:
DNI nombreEmp
númeroProy {nombreProy, localizaciónProy}
{DNI, númeroProy} horas
(el valor del DNI determina de manera única el nombre de ese empleado)
Normalización 6
Una vez estudiadas las dependencias funcionales
podemos utilizarlas como información sobre la
semántica de los esquemas de relación.
Suponemos que se da un conjunto de dependencias
funcionales para cada relación y que cada relación
tiene una clave primaria designada; esta información
combinada con las condiciones para las formas
normales conduce al proceso de normalización.
Normalización 7
En el proceso de normalización se somete un esquema de
relación a una serie de pruebas para “certificar” si
pertenece o no a una cierta forma normal.
La normalización de los datos puede considerarse como
un proceso de análisis de los esquemas de relación
dados basado en sus dependencias funcionales (DF) y
claves primarias para alcanzar las propiedades
deseables de:
Minimizar la redundancia.
Minimizar las anomalías de inserción, eliminación y
actualización de tuplas.
Normalización 8
Los esquemas de relación insatisfactorios que no cumplan
con las pruebas de formas normales, se descomponen en
esquemas de relación más pequeños que satisfagan
dichas pruebas y que de este modo posean las
propiedades deseables.
Por consiguiente, el proceso de normalización proporciona
los siguientes aspectos:
Un marco formal para analizar los esquemas de relación
basándose en sus claves y en las DF entre sus atributos.
Una serie de pruebas de formas normales que pueden efectuarse
sobre esquemas de relación individuales de modo que la BD
relacional pueda normalizarse hasta el grado deseado.
Normalización 9
La forma normal de una relación hace referencia a la
condición de forma más alta y de este modo, indica el
grado al que ha sido normalizada.
Los diseñadores de Bases de Datos no tienen que
normalizar hasta la forma más alta posible. Las
relaciones pueden dejarse en formas normales
inferiores por razones de rendimiento.
Normalización 10
Repasemos algunas definiciones:
Una superclave es el conjunto de uno o más atributos que
cumple con las propiedades de unicidad e irreducibilidad.
Pueden haber más de una y en este caso, cada una de ellas se
denomina clave candidata. Una de las claves candidatas se
designa arbitrariamente como clave primaria.
Un atributo de esquema de relación R se denomina atributo
primo de R si es miembro de alguna superclave de R. Un
atributo es no primo si no es miembro de ninguna clave
candidata.
En la relación EmpleadoEnProyecto (DNI, númeroProy, horas,
nombreEmp, nombreProy, localizaciónProy) tanto DNI como
númeroProy son atributos primos y el resto son no primos.
Normalización 11
Analizaremos:
Primera forma normal.
Segunda forma normal.
Tercera forma normal.
Forma normal de Boyce-Codd
Primera forma normal 12
La primera forma normal (1FN) establece que el
dominio de un atributo debe incluir sólo valores atómicos
(simples, indivisibles) y que el valor de cualquier
atributo en una tupla debe ser un valor individual
proveniente del dominio de ese atributo.
Así pues, la 1FN prohíbe las “relaciones dentro de las
relaciones”.
Primera forma normal 13
Consideremos el esquema de relación Departamento,
suponiendo que cada departamento puede tener varios
lugares. Departamento
nombreD númeroD DNIJefe localizacionesD
No está en 1FN porque el atributo localizacionesD no es
atómico. Debemos eliminarlo y colocarlo en una relación
aparte junto con la clave primaria de Departamento.
Departamento (nombreD, númeroD, DNIJefe)
LocalizaciónDepto (númeroD, localizaciónD)
Segunda forma normal 14
La segunda forma normal (2FN) se basa en el
concepto de dependencia funcional total.
Una dependencia funcional X Y es una dependencia
funcional total si la eliminación de cualquier atributo A
de X hace que la dependencia deje de ser válida; es
decir, para cualquier atributo A X, (X – {A}) no
determina funcionalmente a Y.
Una dependencia funcional X Y es una dependencia
parcial si es posible eliminar un atributo A X de X y
la dependencia sigue siendo válida; es decir, para
algún A X, (X – {A}) Y.
Segunda forma normal 15
La prueba para 2FN incluye la verificación de
dependencias funcionales cuyos atributos del miembro
izquierdo son parte de la clave primaria.
Si la clave primaria contiene un único atributo no es en
absoluto preciso aplicar la prueba.
Un esquema de relación R está en 2FN si todo atributo
no primo A en R depende funcionalmente de manera
total de la clave primaria de R.
“Normalizar en 2FN” da origen a varias relaciones 2FN
en las que los atributos no primos están asociados sólo
a la parte de la clave primaria de la que dependen
funcionalmente de manera total.
Segunda forma normal 16
Consideremos nuevamente el esquema de relación:
EmpleadoEnProyecto
DNI númeroProy horas nombreEmp nombreProy localizaciónProy
DF1
DF2
DF3
Esta relación está en 1FN pero no en 2FN. El atributo no
primo nombreEmp viola la 2FN debido a DF2, y lo
mismo sucede con los atributos nombreProy y
localizaciónProy debido a DF3.
Segunda forma normal 17
Las dependencias funcionales DF2 y DF3 hacen que
nombreEmp, nombreProy y localizaciónProy dependan
parcialmente de la clave primaria {DNI, númeroProy},
violándose así la comprobación de 2FN.
Podemos “normalizar en 2FN” el esquema de relación
anterior obteniendo:
EmpleadoEnProyecto1 EmpleadoEnProyecto2
DNI númeroProy horas DNI nombreEmp
DF1 DF2
EmpleadoEnProyecto3
númeroProy nombreProy localizaciónProy
DF3
Tercera forma normal 18
La tercera forma normal (3FN) se basa en el concepto
de dependencia transitiva.
Una dependencia funcional X Y en un esquema de
relación R es una dependencia transitiva si existe un
conjunto de atributos Z que no sea un subconjunto de
cualquier clave candidata de R, y se cumplen tanto X Z
como Z Y.
Un esquema de relación R está en 3FN si está en 2FN y
ningún atributo no primo de R depende transitivamente
de la clave primaria.
Tercera forma normal 19
Consideremos el esquema de relación que está en 2FN,
pues no existen dependencias parciales sobre la clave:
EmpleadoEnDepartamento
DNI nombreEmp fechaNac dirección númeroDepto nombreDepto DNIJefeDepto
No está en 3FN debido a que el atributo no primo
DNIJefeDepto (y también nombreDepto) dependen
transitivamente de DNI a través de númeroDepto.
Tercera forma normal 20
Podemos normalizar EmpleadoEnDepartamento descom-
poniendo en dos esquemas de relación en 3FN.
EmpleadoEnDepartamento1
DNI nombreEmp fechaNac dirección númeroDepto
EmpleadoEnDepartamento2
númeroDepto nombreDepto DNIJefeDepto
Definiciones generales de la segunda
y tercera formas normales 21
En general, queremos diseñar esquemas de relación de
modo que no tengan dependencias parciales ni
transitivas.
Los pasos para la normalización en relaciones en 3FN
que hemos visto hasta ahora prohíben las dependencias
parciales y transitivas sobre la clave primaria.
Sin embargo, estas definiciones no tienen en cuenta otras
claves candidatas de una relación, si existen.
Diremos que un atributo es primo cuando es parte de
cualquier clave candidata y las DF parciales y totales y
las dependencias transitivas lo serán con respecto a todas
las claves candidatas de una relación.
Definiciones generales de la segunda
y tercera formas normales 22
Un esquema de relación R está en segunda forma
normal (2FN) todo atributo no primo A de R depende
funcionalmente de manera total de toda clave de R.
Un esquema de relación R está en tercera forma normal
(3FN) si, siempre que una dependencia funcional no
trivial X A se cumple en R, o bien
a) X es una superclave de R, o
b) A es un atributo primo de R.
Definiciones generales de la segunda
y tercera formas normales 23
Podemos expresar una definición general alternativa
de 3FN como sigue.
Un esquema de relación R está en 3FN si todo atributo
no primo de R es:
• Dependiente funcionalmente de manera total de toda clave
de R.
• Dependiente de manera no transitiva de toda clave de R.
Definiciones generales de la segunda
y tercera formas normales 24
Analicemos el siguiente esquema que describe terrenos
a la venta de diversos municipios. Supongamos que hay
dos claves candidatas: idPropiedad y {nombreMunicipio,
númeroParcela} y elegimos como clave primaria a
idPropiedad. Parcela
idPropiedad nombreMunicipio númeroParcela área precio tasaFiscal
DF1
DF2
DF3
DF4
Definiciones generales de la segunda
y tercera formas normales 25
La DF3 expresa que la tasa fiscal es fija para un
municipio dado y DF4 indica que el precio de una
parcela lo determina su área sin importar en qué
municipio se encuentre. Este esquema viola la definición
general de 2FN porque tasaFiscal depende
parcialmente de la clave candidata {nombreMunicipio,
númeroParcela} debido a DF3. Normalizando Parcela a
2FN obtenemos: Parcela1 Parcela2
idPropiedad nombreMunicipio númeroParcela área precio nombreMunicipio tasaFiscal
DF1 DF3
DF2
DF4
Definiciones generales de la segunda
y tercera formas normales 26
Podemos observar que Parcela2 están en 3FN; sin
embargo, Parcela1 viola la 3FN porque precio depende
transitivamente de cada una de las claves candidatas
de Parcela1 a través del atributo no primo área. Para
normalizar Parcela1 a 3FN, la descomponemos en los
siguientes esquemas de relación:
Parcela1A Parcela1B
idPropiedad nombreMunicipio númeroParcela área área precio
DF1 DF4
DF2
Forma normal de Boyce-Codd 27
La forma normal de Boyce-Codd (FNBC) fue propuesta
como una forma más simple que la 3FN, pero resultó ser
más estricta dado que toda relación que está en FNBC
está en 3FN; sin embargo, una relación en 3FN no está
necesariamente en FNBC.
Un esquema de relación R está en FNBC si, siempre que
una dependencia funcional no trivial X A es válida en R,
entonces X es una superclave de R.
La única diferencia entre FNBC y 3FN es que la condición
b) de 3FN, que permite que A sea primo si X no es
superclave, está ausente en FNBC.
Forma normal de Boyce-Codd 28
En general, una relación que no esté en FNBC debería
descomponerse para satisfacer esta propiedad, al
tiempo que posiblemente renuncie a conservar todas las
dependencias funcionales en las relaciones descom-
puestas.
Veamos el siguiente esquema de relación:
Imparte
idEstudiante nombreCurso profesor
DF1
DF2 (cada profesor imparte un curso)
Esta relación está en 3FN pero no en FNBC.
Forma normal de Boyce-Codd 29
La descomposición no es sencilla porque puede
descomponerse en uno de los tres pares posibles:
1. {idEstudiante, profesor} y {idEstudiante, curso}
2. {curso, profesor} y {curso, idEstudiante}
3. {profesor, curso} y {profesor, idEstudiante}
Estas tres descomposiciones “pierden” la dependencia
funcional DF1.
Nos conformaremos con esquemas de relación en 3FN,
en vez de FNBC.
Normalización 30
Llevar la relación propuesta a la tercera forma normal.
itemFactura (númeroFactura, idProducto, descripciónProducto,
fecha, idCliente, domicilioCliente, telCliente, nomCliente,
cantidad, precioUnitario)
Sus dependencias funcionales son:
idProducto {descripciónProducto, precioUnitario}
{númeroFactura, idProducto} cantidad
númeroFactura {fecha, idCliente, domicilioCliente, telCliente,
nomCliente}
idCliente {domicilioCliente, telCliente, nomCliente}