Clase 4 2013

30
GESTIÓN DE DATOS 2013 - Clase 4 -

Transcript of Clase 4 2013

GESTIÓN DE DATOS 2013

- Clase 4 -

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}