Sei sulla pagina 1di 12

RESTRICCIONES DE INTEGRIDAD Y DEPENDENCIAS FUNCIONALES Bases de Datos Universidad de Talca, II Semestre 2006 Jorge Prez R.

Restricciones de Dominio
Son la forma ms elemental de restricciones de integridad. a El dominio de cada atributo es el conjunto desde donde los datos provienen:

nombre: strings, cadenas de s mbolos. sueldo: enteros positivos. f echa creac: fechas vlidas. a
Son simples de comprobar y mantener. Pueden existir dominios un poco ms restrictivos, por ejempa lo para una base de datos de clientes de un banco podr amos tener dominios como:

edad: enteros positivos mayores que 17. numero cta: string de d gitos de largo 8.
En cada insercin y actualizacin de datos se debe chequear o o que el dominio de los valores concuerde con el denido para cada atributo de cada relacin. o Algunas actualizaciones o inserciones pueden resultar en valores nulos y depender del uso de los datos el que se permita a o rechace esta situacin. o Por ejemplo, si almacenamos datos de direcciones de habitantes de una ciudad con un esquema (nombre, edad, direccion, telef ono)

nombre: string, null no permitido. telef ono: string de d gitos de largo 8, null permitido. ...
El permitir o no el valor null para un atributo es una restriccin de dominio, Es esencial prohibir valores nulos en la o llave primaria de una relacin. o
2

Integridad Referencial
A veces queremos obligar que cierto valor de atributo de una relacin aparezca tambin en otra relacin. o e o Por ejemplo, si el valor del atributo que indica el cdigo de o departamento para Soto es A2, queremos que efectivamente exista un departamento con ese cdigo (tupla amarrada). o Pero si el cdigo del departamento de Recursos Humanos es o A4, no es imprescindible que exista un empleado cuyo valor para el atributo cdigo de departamento sea A4. o Esto es porque el atributo cod dept es la llave primaria de la relacin departamento y la relacin empleado hace referencia o o a esa llave. El atributo cod dept en la relacin empleado es una llave fornea o a o llave exterior, o sea, hace referencia a la llave primaria de otra relacin (en este caso departamento). o Lo dibujaremos nombre cod dept f ech creac

nombre sueldo cod dept f ech ing

Integridad Referencial Formalizacin o


Sean r1(R1) y r2(R2) relaciones con llaves primarias K1 y K2 respectivamente. Sea un subconjunto de los atributos de r2 ( R2). Las siguientes armaciones son equivalentes:

es una llave fornea en r2 con referencia a K1 en r1. a t r2, u r1 tal que u[K1] = t[]. (r2) K1 (r1).
En nuestro ejemplo
cod dept A1 A2 A3 cod dept A1 A2 A3 A4

cod

emp (emp)

= cod

emp (dept)

Integridad Referencial Modicaciones


Si se inserta una tupla en una relacin con llave fornea se o a debe asegurar que su valor exista en la tabla que relacionada por esta llave.

empleado empleado {Gomez,300000,A6,5/8/2004} no est permitida, a empleado empleado{Gomez,300000,A4,5/8/2004} si se permite.


Si se quiere eliminar un tupla en una relacin cuya llave prio maria existe como llave fornea en otra relacin existen dos a o casos:

Si la tupla no tiene tuplas relacionadas en otras tablas simplemente se elimina. Si la tupla tiene tuplas relacionadas, la eliminacin puede o prohibirse o realizarse como una eliminacin en cascada. o
departamento departamentonombre=Marketing (departamento) nombre Informtica a Ventas Recursos Humanos nombre Torres Figueroa Salas R os Venegas Gonzalez sueldo $ 1.200.000 $ 600.000 $ 1.500.000 $ 2.000.000 $ 600.000 $ 2.000.000 cod dept A1 A3 A4 cod dept A1 A1 A1 A3 A1 A3 f ech creac 01/03/2002 01/01/2001 01/01/2003 f ech ing 01/01/2004 01/03/2002 01/01/2002 01/06/2002 01/06/2002 01/10/2002

Integridad Referencial Actualizacin o


Se hace una prueba similar a la de insercin si se actualiza o un valor de llave fornea. a

cod cod

depto=A6 (nombre=Soto (empleado)) depto=A4 (nombre=Soto (empleado))

no est permitida, a si se permite.

Si se hace una actualizacin en una tabla donde la llave prio maria existe como llave fornea en otra relacin, se realiza a o una actualizacin en cascada. o cod
dept=A5 (nombre=Marketing (departamento)

nombre Informtica a Marketing Ventas Recursos Humanos nombre Torres Soto Prez e Figueroa Salas R os Campos Venegas Carcamo Gonzalez sueldo $ 1.200.000 $ 500.000 $ 300.000 $ 600.000 $ 1.500.000 $ 2.000.000 $ 800.000 $ 600.000 $ 500.000 $ 2.000.000

cod dept A1 A5 A3 A4 cod dept A1 A5 A5 A1 A1 A3 A5 A1 A5 A3

f ech creac 01/03/2002 01/01/2002 01/01/2001 01/01/2003 f ech ing 01/01/2004 01/01/2003 01/10/2003 01/03/2002 01/01/2002 01/06/2002 01/11/2003 01/06/2002 01/04/2003 01/10/2002

Dependencias Funcionales
Son un caso particular de restriccin de integridad o Nos permiten expresar propiedades semnticas de los datos a de nuestra base de datos (propiedades del signicado de los datos). Son una generalizacin del concepto de llaves. o La siguiente es la denicin formal de dependencia funcional: o Sea r(R) una relacin, R y R. Decimos que o depende funcionalmente de si en cualquier relacin legal todos los pares de tuplas t1 y t2 o cumplen con: t1 [] = t2[] t1[] = t2[] es decir, si las tuplas estn de acuerdo en sus atributos a entonces tambin estn de acuerdo en sus atributos . e a Es similar a la denicin de llave, de hecho se puede denir o una super-llave formalmente usando dependencias funcionales: K R es super-llave de una relacin legal r(R) ssi K R. o O sea, el conjunto de todos los atributos siempre dependen funcionalmente de una super-llave. Una dependencia funcional no puede ser inferida desde el esquema de una relacin. o Debe ser denida expl citamente por alguien que conoce la semntica de los atributos de la relacin. a o El diseador de la Base de Datos adems de especicar el n a esquema, debe especicar el conjunto de dependencias funcionales que se deben cumplir.
7

Dependencias Funcionales Ejemplos


Tabla de casas con telfono en Chile. e calle numero ciudad region telef ono color

{calle, numero, ciudad, region} {color} {ciudad, region, telef ono} {calle, numero} {color} {telef ono} {ciudad, region} {calle}

Tabla de alumnos de la universidad. nombre rut n alumno carrera f acultad campus

{rut} {nombre, n alumno, carrera} {carrera} {f acultad} {carrera} {nombre} {nombre, carrera} {rut} {n alumno} {rut, nombre}

En adelante omitiremos los parntesis de conjuntos cuando e especiquemos dependencias funcionales.

Clausura de Dependencias Funcionales


No es suciente considerar un conjunto dado de dependencias funcionales, necesitamos considerar todas las dependencias que se cumplen. Considere la siguiente tabla para aliados a un seguro de vejez rut sexo edad grupo ahorro jubilacion periodo y el siguiente conjunto F de dependencias funcionales:

rut sexo, edad, ahorro sexo, edad grupo grupo, ahorro jubilacion edad, jubilacion periodo
La dependencia sexo, edad, ahorro periodo se deduce lgio camente desde F . Ms aun, podr a amos deducir que rut es la unica llave candidata. Dado un conjunto F de dependencias funcionales se dene la clausura de F como el conjunto de todas las dependencias funcionales que pueden deducirse de F . Denotamos la clausura de F por F + . Para calcular F + a partir de F podemos usar la denicin de o dependencia funcional o un conjunto de reglas de inferencia.

Reglas de Inferencia

1. 2. 3. 4. 5. 6.

reexividad: aumento: transitividad: unin: o descomposicin: o pseudotransitividad:

Las tres primeras reglas, llamadas las reglas de Armstrong, son correctas y completas bastan para deducir cualquier dependencia funcional. Son consecuencia de la denicin de dependencia funcional. o 4, 5, y 6 pueden deducirse a partir de 1, 2 y 3. Veremos algunos ejemplos: consideremos el mismo conjunto F de dependencias: 1. rut sexo, edad, ahorro 2. sexo, edad grupo 3. grupo, ahorro jubilacion 4. edad, jubilacion periodo Usando la regla de pseudotransitividad en 2 y 3 obtenemos 5. sexo, edad, ahorro jubilacion. Usando la regla de aumento en 5 obtenemos 6. sexo, edad, ahorro edad, jubilacion. Usando la regla de transitividad en 4 y 6 obtenemos 7. sexo, edad, ahorro periodo.
10

Clausura de un Conjunto de Atributos


Dado el conjunto de dependencias funcionales F de una relacin r(R) y un conjunto de atributos R, denimos o la clausura de bajo F como: + = {X R | X se deduce de F } El siguiente algoritmo calcula + : clausura(): alpha+_ant = { } alpha+ = while(alpha+ != alpha+_ant) alpha+_ant = alpha+ foreach( in F ) if( alpha+) alpha+ = alpha+ return alpha+ Por ejemplo:
F = rut sexo, edad, ahorro , grupo, ahorro jubilacion , sexo, edad grupo , edad, jubilacion periodo

{edad}+ = {edad} {edad}+ = {edad} {sexo, edad, ahorro}+ {sexo, edad, ahorro}+ {sexo, edad, ahorro}+ {sexo, edad, ahorro}+ {sexo, edad, ahorro}+ {rut}+ {rut}+ {rut}+ {rut}+ {rut}+ {rut}+ = {sexo, edad, ahorro} = {sexo, edad, ahorro, grupo} = {sexo, edad, ahorro, grupo, jubilacion} = {sexo, edad, ahorro, grupo, jubilacion, periodo} = {sexo, edad, ahorro, grupo, jubilacion, periodo}

= {rut} = {rut, sexo, edad, ahorro} = {rut, sexo, edad, ahorro, grupo} = {rut, sexo, edad, ahorro, grupo, jubilacion} = {rut, sexo, edad, ahorro, grupo, jubilacion, periodo} = {rut, sexo, edad, ahorro, grupo, jubilacion, periodo} 11

Equivalencia y Cobertura
Dados E y F dos conjuntos de dependencias funcionales, decimos que:

F cubre a E ssi E + F +. F es equivalente a E ssi F + = E +. F es equivalente a E ssi E cubre a F y F cubre a E.


Dado F un conjunto de dependencias funcionales, F es m nimo si:

Toda dependencia en F tiene un slo atributo a la derecha. o Para todo E F , E no es equivalente a F . No se puede reemplazar ninguna dependencia X por otra X con y seguir teniendo un conjunto equivalente.
Si Fm es m nimo y cubre a F se dice que Fm es una cobertura m nima de F .

12

Potrebbero piacerti anche