Está en la página 1de 63

1

Ficheros y Bases de Datos


Tema 4
Restricciones de integridad
2
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
3
Objetos que viven en los SGBD
Dentro de los SGBD viven distintos elementos relacionados
entre s
Restriccin de Tabla
Bases de Datos
Tabla
T1
V1
Vista
Espacio para
Tablas
S1 ==> T1
Sinnimo
Indice
Integridad
Referencial
T1
T2
V1
4
Restricciones de integridad
Las restricciones de integridad proporcionan un medio de
asegurar que las modificaciones hechas a la base de datos por
los usuarios autorizados no provoquen la prdida de la
consistencia de los datos.
Por tanto, las restricciones de integridad protegen a la base
de datos contra los daos accidentales.
5
Restricciones de Integridad
Tipos de restricciones de integridad:
Declaracin de claves.
Cardinalidadde la relacin de varios a varios, de uno a varios, de
uno a uno.
Restricciones de los dominios
Integridad referencial
Asertos
Disparadores
Dependencias funcionales
Dependencias multivaloradas
6
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
7
4.1 Restricciones de dominio
Una definicin adecuada de las restricciones de los dominios
permite verificar los valores introducidos en la base de datos
Tambin permite examinar las consultas para asegurarse de
que tengan sentido las comparaciones que hagan.
El principio subyacente a los dominios de los atributos es
parecido al de los tipos de las variables en los lenguajes de
programacin.
Los lenguajes de programacin con tipos estrictos permiten
al compilador examinar el programa con mayor detalle.
8
Restricciones de dominio
Se ha visto que hay que asociar a cada atributo un dominio
de valores posibles.
En el Captulo 3 se vieron varios tipos de dominios estndar,
tales como los enteros, caracteres y fecha/tiempo en SQL.
La declaracin de que un atributo pertenezca a un
determinado dominio acta como una restriccin sobre los
valores que puede tomar.
Edad:entero 22, Acacia Avenue
9
Restricciones de dominio
La clusula CREATE DOMAIN se puede usar para definir nuevos
dominios. Ejemplo, las instrucciones:
createdomainEuros numeric(12,2)
createdomainDlares numeric(12,2)
Definen los dominios Euros y Dlares como nmeros decimales con un total de
12 dgitos, dos de los cuales se sitan despus de la coma decimal.
Un intento de asignar un valor de tipo Dlares a una variable detipo Euros
resultara en un error sintctico, aunque ambos tengan el mismo tipo numrico.
La declaracin de diferentes dominios para diferentes monedas ayuda a
detectar errores.
Los valores de un dominio pueden ser convertidos a otro dominio. Si el
atributo A de la relacin r es de tipo Euros, se puede convertir a Dlares
escribiendo:
cast r.A as Dlares
10
Restricciones de dominio
La clusula CHECK de SQL permite restringir los dominios
de maneras poderosas que no permiten la mayor parte de los
sistemas de tipos de los lenguajes de programacin.
Permite al diseador del esquema especificar un predicado
que debe satisfacer cualquier valor asignado a una variable
cuyo tipo sea el dominio.
Las condiciones check complejas pueden ser tiles cuando se
desee asegurar la integridad de los datos, pero se deben usar
con cuidado, dado que pueden ser costosas de comprobar.
11
Restricciones de dominio:
Restricciones Check
Ni ngn valor en columna ORDER_QTY
de la tabla ORDER_ITEM debe ser mayor
de 100.
REGLA:
CUMPLIMIENTO:
APLICACIN
SGBD
PGM n
REGLA
SGBD
PGM 1
REGLA
PGM 2
REGLA
PGM n

PGM 1

PGM 2

SGBD
REGLA
Cada programa (PGM)
gestiona las reglas
El SGBD gestiona las reglas
que afectarn a todos los programas
12
Restricciones de dominio:
Restricciones Check
CREATE TABLE ORDER_ITEM
(ORDER_NO INTEGER NOT NULL,
ART_NO INTEGER NOT NULL,
ORDER_QTY SMALLINT NOT NULL
CHECK(ORDER_QTY <= 100),
CONSTRAINT special_order
CHECK(ART_NO <= 50000 OR
ORDER_QTY <= 10) )
ALTER TABLE ORDER_ITEM
DROP CONSTRAINT special_order
ALTER TABLE ORDER_ITEM
ADD CONSTRAINT special_order
CHECK(ART_NO < 50000 OR
ORDER_QTY <= 10)
13
Restricciones de dominio
Ejemplo: Restringir un dominio para que no contenga valores nulos:
Ejemplo: Limitar dominio para que contenga slo un conjunto
especificado de valores usando la clusula in:
Ejemplo: Asegurar que un dominio de sueldo por hora slo permita
valores mayores que un valor especificado (como puede ser el sueldo
mnimo):

14
Restricciones de dominio
Dentro de las restricciones de los dominios, un tipo especial
de restriccin que se puede aplicar a cualquier dominio es la
restriccin de existencia.
Esta restriccin evita la aparicin de valores nulos en las
columnas.
CREATE TABLE EMP
( EMPNO CHAR( 6) NOT NULL,
FI RSTNME VARCHAR( 12) NOT NULL,
MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT
LASTNAME VARCHAR( 15) NOT NULL,
WORKDEPT CHAR( 3) ,
PHONENO CHAR( 4) ,
HI REDATE DATE,
J OB CHAR( 8) ,
EDLEVEL SMALLI NT,
SEX CHAR( 1) ,
BI RTHDATE DATE,
SALARY DECI MAL( 9, 2) ,
BONUS DECI MAL( 9, 2) ,
COMM DECI MAL( 9, 2) )
I N DBX. TSX
Atributo NULL
Tipo de datos
---
15
Restricciones de dominio
Nulos
NULL es un valor especial que indica que es un valor desconocido
No se tiene en cuenta cuando se usan funciones de columna (AVG,
SUM, MIN, MAX) excepto COUNT
Dos nulos no se consideran iguales, salvo para:
GROUP BY, ORDER BY
Unicidad de columna a menos que se utilice UNIQUE WHERE NOT
NULL
NULL +7 =NULL
Estas instancias representan
cosas muy diferentes
16
Restricciones de dominio
Nulos
Al definir una columna se puede elegir entre:
Admitir nulos (por omisin)
No admitirlos Columna tipo NOT NULL
Establecer valores por defecto Campo DEFAULT informado
17
Restricciones de dominio
Ejemplo Nulos
CREATE TABLE departments (
ID NUMBER(10) NOT NULL,
NAME VARCHAR2(50) NOT NULL DEFAULT ---
DESCRIPTION VARCHAR2(50) NOT NULL
);
INSERT INTO departments VALUES (1, Aces High, Powerslave);
INSERT INTO departments (ID, NAME) VALUES (2, Wasted Years);
INSERT INTO departments (ID, DESCRIPTION) VALUES (3, Toto II);
INSERT INTO departments VALUES (4, Revelations, NULL);
TotoII --- 3
Powerslave AcesHigh 1
DESCRIPTION NAME ID
ERROR ERROR
ERROR ERROR
18
Restricciones de dominio:
Nulos en columnas numricas
EMPNO SALARY
000320
000310
000290
000340
000330
19950.00
15900.00
15340.00
-
25370.00
AVG(SALARY)
19140.00
Obtener la media de salarios
de estos empleados
19
Restricciones de dominio:
Nulos en columnas de cadenas de caracteres
Resultado usando NULL
EMPNO WORKDEPT
000320
000290
000300
000330
E21
-
E11
-
EMPNO DEPTNAME
000320 SFTWR SUPP
000300 OPERATIONS
Proporcionar una lista de empleados y el nombre de su departamento,
emparejando DEPTNO con WORKDEPT
DEPTNO DEPTNAME
E11
E21
-
OPERATIONS
SFTWR SUPP
UNKNOWN
20
Restricciones de dominio:
Peligro de los nulos
A B
2 5
- 3
4 -
SUM (A) =
SUM (B) =
SUM (A) =
COUNT(*)
SUM (A +B) =
AVG (A) =
6
8
7
2
3
21
Restricciones de dominio:
Consideraciones de los nulos
Los nulos extienden el lgebra relacional a un lgebra de lo
desconocido.
Lo desconocido es absorbente:
nulo operado con cualquier cosa es nulo
nulo comparado con cualquier cosa es falso
Sin embargo, se agrupan en un mismo grupo de GROUP BY
( a pesar de que dos nulos son diferentes)
Se debe tener en cuenta el tratamiento que los SGBD realizan
sobre los nulos de manera concreta.
22
Restricciones de dominio
Restricciones de unicidad
Otro tipo especial de restriccin que se puede aplicar a cualquier dominio es la
restriccin de unicidad.
Esta restriccin evita la aparicin de valores duplicados en lascolumnas.
Ejemplo:
Slo se admite una sucursal en cada ciudad.
CREATE TABLE Sucursales
(nombre-sucursal VARCHAR(20),
ciudad-sucursal VARCHAR(20) NOT NULL,
- Restriccin de existencia
direccion-sucursal VARCHAR(20) UNIQUE
- Restriccin de unicidad
PRIMARY KEY(nombre-sucursal)
23
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
24
4.2 Integridad referencial
La integridad referencial permite asegurar que un valor que
aparece en una relacin para un conjunto de atributos
determinado aparezca tambin en otra relacin para un cierto
conjunto de atributos.
Clave
primaria
ORDER_NO ART_NO ORDER_QTY
22333
22333
40000
42500
2
8
35555 40000 1
ORDER_ITEM
Tabla
dependiente
ORDER
Tabla
padre
ORDER_NO ORDER_DATE ORDER_QTY ORDER_REF
22333
22444
35555
ARTICLE
Tabla
padre
ART_NO ART_NAME STOCK_QTY
40000
42500
75500
Claveajena
Clave
primaria
Claveajena
Clave
primaria
Como puedo evitar que haya lneas de pedido que no sean de un
pedido existente?
25
Integridad referencial:
Unicidad por Claves
Una clave es un conjunto ordenado
de columnas de una tabla
Una clave compuesta est formada por varias columnas
000010 Christine Haas A00
000020 Michael Thompson B01
000030 Sally Kwan C01
000050 J ohn Geyer E01
2 1
Clave simple Clave compuesta
EMPNO FIRSTNME LASTNAME WORKDEPT
26
Integridad referencial:
Columnas de identidad
Existen SGBD que permiten la utilizacin de
secuencias para generacin automtica de valores,
por ejemplo en Oracle:
27
Integridad referencial:
Columnas de identidad
Algunos SGBD admiten la generacin automtica
de valores, por ejemplo en MySQL:
28
Integridad referencial
El SGBD garantiza que slo se puede actualizar una clave
primaria (PRIMARY KEY) o nica (UNIQUE KEY) si no
hay ninguna clave externa (FOREIGN KEY) que dependa de
ella.
29
Integridad referencial:
Clave Primaria
E01 Support Services
E11 Operations
E21 Software Support
. . .
000050 J ohn B GEYER E01
000280 Ethel R SCHNEIDER E11
. . .
DEPTNO
EMPNO
DEPT
EMP
Una clave primaria define de forma nica cada fila de la tabla
Una Clave primaria debe ser y
Clave
primaria
Clave
primaria
nica no nula
30
Integridad referencial:
Clave ajena o externa
Una restriccin referencial garantiza que todos los
valores (no nulos) de una FK tambin son valores de la PK
E01 Support Services
E11 Operations
E21 Software Support
. . .
000050 J ohn B GEYER E01
000280 Ethel R SCHNEIDER E11
. . .
DEPTNO
EMPNO
DEPT
EMP
Restriccin referencial
PK PK
FK
31
Integridad referencial
Qu pasa cuando borramos una clave que es referenciada por una clave ajena?
Se puede establecer cmo gestionar las relaciones cuando se producen operaciones
como borrado o actualizacin.
La creacin estara controlada si el SGBD no deja crear filas para las que no exista
una clave ajena definida.
CASCADE: Borra o actualiza la fila de la tabla padre y automticamente borra o
actualiza las filas asociadas en la tabla hija
SET NULL: Borra o actualiza la fila de la tabla padre y establece la clave ajena en la
tabla hija como NULL. Las columnas de clave ajena en la fila hija no deberan estar
definidas como NOT NULL
NO ACTION: Evita que se actualice o borre la fila en la tabla padre si hay un valor
de clave ajena que lo invalida en la tabla hija.
RESTRICT: Rechaza el borrado o actualizacin en la tabla padre (similaa NO
ACTION)
32
Integridad referencial
ALTER TABLE ORDER
ADD PRIMARY KEY (ORDER_NO)
ALTER TABLE ARTICLE
ADD PRIMARY KEY (ART_NO)
ALTER TABLE ORDER_ITEM
ADD PRIMARY KEY (ORDER_NO, ART_NO)
ALTER TABLE ORDER_ITEM
ADD FOREIGN KEY(ORDER_NO)
REFERENCES ORDER
ON DELETE CASCADE
ALTER TABLE ORDER_ITEM
ADD FOREIGN KEY(ART_NO)
REFERENCES ARTICLE
ON DELETE RESTRICT
33
Integridad referencial
CREATE TABLE EMP
( EMPNO CHAR( 6) NOT NULL PRIMARY KEY,
FI RSTNAME VARCHAR( 12) NOT NULL,
MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT,
LASTNAME VARCHAR( 15) NOT NULL,
WORKDEPT CHAR( 3) ,
PHONENO CHAR( 4) ,
HI REDATE DATE,
J OB CHAR( 8) ,
EDLEVEL SMALLI NT,
SEX CHAR( 1)
BI RTHDATE DATE,
SALARY DECI MAL ( 9, 2) ,
BONUS DECI MAL ( 9, 2) ,
COMM DECI MAL ( 9, 2) ,
PRIMARY KEY (EMPNO)
)
Debe usarse en casos de multicolumna
O bien
34
Integridad referencial
La tabla DEPT debe estar definida
CREATE TABLE EMP
( EMPNO CHAR( 6) NOT NULL
FI RSTNME VARCHAR( 12) NOT NULL,
MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT,
LASTNAME VARCHAR( 15) NOT NULL,
WORKDEPT CHAR( 3) REFERENCES DEPT ON DELETE SET NULL,
PHONENO CHAR( 4) ,
HI REDATE DATE,
J OB CHAR( 8) ,
EDLEVEL SMALLI NT,
SEX CHAR( 1) ,
BI RTHDATE DATE,
SALARY DECI MAL( 9, 2) ,
BONUS DECI MAL( 9, 2) ,
COMM DECI MAL( 9, 2) ,
PRI MARY KEY ( EMPNO) ,
FOREIGN KEY RED (WORKDEPT) REFERENCES DEPT
ON DELETE SET NULL
)
O bien
35
Integridad Referencial
RI es la situacin en la que todos los
valores de todas las FK son vlidos
Ejemplo:
PK
EMP
EMPNO
INSERT
UPDATE
DELETE
INSERT
UPDATE
DELETE
FK
DEPT
MGRNO
Que har el sistema en estos 6 casos?
36
Integridad referencial:
Creacin de ndices
Un ndice de una base de datos es una estructura de datos que
mejora la velocidad de las operaciones, permitiendo un
rpido acceso a los registros de una tabla.
Al aumentar drsticamente la velocidad de acceso, se suelen
usar sobre aquellos campos sobre los cuales se hagan
frecuentes bsquedas.
Los ndices pueden ser definidos como nicos o no nicos.
Un ndice nico acta como una restriccin en la tabla previniendo
filasidnticas en el ndice.
37
Integridad referencial:
Creacin de ndices
38
Integridad referencial
PRIMARY KEY / UNIQUE KEY
Deben tener un ndice nico
No debe admitir nulos
FOREIGN KEY
Se recomienda un ndice por cuestin de rendimiento (cuando se
modifica/borra el valor padre, se comprueba la existencia de valores
dependientes)
Puede contener valores nulos
39
Integridad referencial:
ndices nicos y no nicos
PHONE NO
555-1111
LASTNAME FIRSTNME MIDINIT ADDRESS PHONENO
SMITH DIANA A 2253 DAHLIA ST. 555-1111
GAINES LOIS B 6094 BEAVER ST. 555-1221
BROWN TERRY S 45 RIVER WALK 555-2168
ADAMS SANDY A 26 CISCO LANE 555-1361
FRIEDRICH J OHN P 5 BEAUMONT RD. 555-1411
JONES LARRY R 1921 HILL RD. 555-3242
WISE SARA J 25 RAWLINGS ST. 555-2345
J ONES LAVERNE G 504 1ST AVE. 555-1777
ADAMS BOBBY D 1426 MAPLE DR. 555-1423
JONES LARRY R 240 BOSWELL DR. 555-5390
SMITH GRACE G 983 FAMOUS RD. 555-8764
CALDWELL SIMONE B 1224 42ND ST. 555-5367
INDICE UNICO VALOR DE CLAVE UNICA
UN RID PARA CADA
INDICE NO UNICO
MLTIPLES
RIDs
LASTNAME, FIRSTNME
J ONES, LARRY
Puede haber varias tuplas
con el mismo valor de ndice
No hay dos tuplas con
el mismo valor de ndice
Varias referencias para
un mismo ndice
40
Integridad referencial:
Creacin de ndices
LASTNAME FIRSTNME MIDINIT ADDRESS PHONENO PAGERNO
Smith Diana A 2253 Dahlia St. 555-1111 1234
Gaines Lois B 6094 Beaker St. 555-1221 --
Brown Terry S 45 River Walk 555-2168 3456
Adams Sandy A 26 Cisco Lane 555-1311 --
Friedrich J ohn P 5 Beaumont Rd. 555-1411 --
CREATE INDEX XLAST_FIRST_M
ON PHONEBOOK (LASTNAME, FIRSTNME,MIDINIT)
CREATE UNIQUE INDEX XPHONENO
ON PHONEBOOK (PHONENO)
CREATE UNIQUE INDEX WHERE NOT NULL INDEX XPAGER
ON PHONEBOOK (PAGERNO)
CREATE INDEX XNAME
ON PHONEBOOK (LASTNAME, FIRSTNME)
41
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
42
4.3 Asertos
Un aserto es un predicado que expresa una condicin que se
desea que la base de datos satisfaga siempre.
Las restricciones de dominio y las de integridad referencial
son formas especiales de los asertos.
Sin embargo, hay muchas restricciones que no se pueden
expresar utilizando nicamente estas formas especiales.
43
Asertos
Ejemplos de estas restricciones pueden ser
La suma de todos los importes de los prstamos de cada sucursal
debe ser menor que la suma de todos los saldos de las cuentas deesa
sucursal.
Cada prstamo tiene al menos un cliente que tiene una cuenta conun
saldo mnimo de 1200 Euros.
En SQL-92 los asertos adoptan la forma:
createassertion<nombre-aserto>check <predicado>
44
Asertos
createassertionrestriccin-saldo check
(not exists(select * fromprstamo
wherenot exists(select *
fromprestatario,impositor, cuenta
whereprstamo.nmero-prstamo=prestatario.nmero-prstamo
andprestatario.nombre-prestatario =impositor.nombre-cliente
andimpositor.nmero-cuenta =cuenta.nmero-cuenta
andcuenta.saldo >=1200)))
Cuando se crea un aserto el sistema comprueba su validez.
Si el aserto es vlido, slo se permiten las modificaciones posteriores de
la base de datos que no hagan que se viole el aserto.
Esta comprobacin puede introducir una sobrecarga importante si se han
realizado asertos complejos.
45
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
46
4.4 Disparadores
Un disparador es una orden que el sistema ejecuta de manera automtica
como efecto secundario de la modificacin de la base de datos.
Los disparadores son mecanismos tiles para alertar a los usuarios o para
realizar de manera automtica ciertas tareas cuando se cumplen
determinadas condiciones.
Se almacenan en la base de datos como si fueran datos normales,
persistentes y accesibles para las operaciones de la base de datos
PGM n
SGBD
CUMPLIMIENTO:
APLICACIN
SGBD
REGLAS DE
NEGOCIO:
Las acciones de INSERT,
UPDATE, y DELETE
sobre una tabla, pueden
provocar que se deban
realizar otras acciones
para cubrir las
necesidades de negocio
47
Disparadores
Paradisear un disparador es necesario:
Especificar las condiciones en las que se va a ejecutar el disparador:
Evento que provocala comprobacin del disparador
Una condicin que se debe cumplir para que se ejecute el disparador
Especificar las acciones que se vana realizar cuando se ejecute el
disparador
Siguen el modelo evento-condicin-accin
48
Disparadores
Los disparadores estn asociados a operaciones sobre las
filas de las tablaso vistas de la base de datos.
Cuando se realiza una operacin de insercin, modificacin o
borrado, el SGBD detecta si hay algn disparador asociado
que se ha de ejecutar
49
Disparadores
Un disparador (trigger) es un procedimiento especial que se
ejecuta en respuesta a un evento especfico.
Ej. Al aumentar el sueldo de un empleado, que se aumente
automticamente el total de gastos de la empresa.
Un disparador tiene 3 partes:
Evento: cabecera con la que se crea el trigger
Condicin: que tiene que suceder para que se dispare el trigger
Accin: que actividades se tienen que llevar a cabo
50
Disparadores
Crear o reemplazar un disparador:
Create[or replace] trigger nombre
[Temporalidad del evento]
[Granularidaddel evento]
[WHEN condicin]
Begin
Cuerpo del trigger
End;
EVENTO
CONDICIN
ACCIN
51
Disparadores
Temporalidad del evento
BEFORE Operacin El cuerpo del disparador debe ejecutarse
antes del evento que causa la activacin del disparador
AFTER Operacin El cuerpo del disparador debe ejecutarse
despus del evento que causa la activacin del disparador
Operacin:
INSERT: El disparador se activa cuando se inserta una nueva filaen la tabla, por
ejemplo, a travs de acciones INSERT
UPDATE: El disparador se activa cuando se modifica una fila en la tabla, por
ejemplo, a travs de acciones UPDATE
DELETE: El disparador se activa cuando se borra una fila en la tabla, por
ejemplo, a travs de acciones DELETE
Ejemplo:
AFTER DELETE ON nombre_tabla
AFTER DELETE OF nombre_columnaON nombre_tabla
52
Disparadores
Ejemplos:
1) CREATE OR REPLACE TRIGGER emp
BEFORE INSERT ON empleado
..
2) CREATE OR REPLACE TRIGGER salar
AFTER DELETE OF salario ON empleado
53
Disparadores
Por ejemplo, en lugar de permitir saldos de cuenta negativos,
el banco trata los descubiertos dejando a cero el saldo de las
cuentas y creando un prstamo por el importe del
descubierto.
Este prstamo recibe un nmero de prstamo idntico al
nmero de cuenta que ha tenido el descubierto.
54
Disparadores
En este ejemplo la condicin para ejecutar el disparador es
una actualizacin de la relacin cuenta que d lugar a un
valor negativo de saldo.
Supngase que Santos retir cierta cantidad de dinero de una
cuenta que dilugar a que el saldo de la cuenta fuera
negativo.
55
Disparadores
Las acciones que hay que emprender son las siguientes:
t denota la tuplade la cuenta con un valor negativo de saldo.
Insertar una nueva tuplas a la relacin prstamo con
s[nombre-sucursal] =t[nombre-sucursal]
s[nmero-prstamo] =t[nmero-cuenta]
s[importe] =- t[saldo]
Obsrvese que, dado que t[saldo] es negativo, hay que
cambiar el signo de t[saldo] para obtener el importe del
prstamo como un nmero positivo).
Insertar una nueva tuplau a la relacin prestatario con
u[nombre-cliente] =Santos
u[nmero-prstamo] =t[nmero-cuenta]
Hacer que t[saldo] sea 0.
56
Disparadores
Se refiere a la nueva
fila que se procesa
Un ejemplo en SQL:1999:
57
Disparadores
Se refiere a
la nueva
fila que se
procesa
Un ejemplo en MySQL:
58
Disparadores
Ejemplo de gestin de disparadores combinado con
la utilizacin de secuencias, por ejemplo en Oracle:
Trigger para insertar
nuevos identificadores
a partir de la secuencia
59
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
60
Dependencias Funcionales
Una dependencia funcional (DF) es una propiedad semntica
de un esquema de relacin que presentan las tuplasvlidas de
la relacin que determina para cada valor de un conjunto de
atributos X el valor de otro conjunto de atributos Y.
Es decir, dada una tuplat
1
de la relacin con un valor para X
y otro para Y, si aparece otra tuplat
2
con el mismo valor para
X, entonces esta tupladebe tener el mismo valor en Y que t
1
.
61
Dependencias Funcionales
Ejemplo 1.
En la siguiente relacin se combinan los datos de los empleados,
como su cdigo de identificacin y nombre, y de los centros a los
que estn adscritos, como la direccin y el telfono.
Empleados_Centros
Id_empleado NombreE DireccinE Puesto Salario Centro DireccinC TelfonoC
123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123
012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123
789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789

62
Dependencias Funcionales
En este ejemplo se muestra grficamente que el valor del
conjunto de campos DireccinC y TelfonoC depende del
valor del campo Centro.
En concreto, a un centro en particular le corresponden
unvocamente una direccin y un telfono.
Es decir, cada vez que aparezca una fila con el valor
Informtica para Centro, siempre le corresponder los
mismos valores para los campos DireccinC y TelfonoC.
63
Dependencias Funcionales
Se dice entonces que tanto DireccinC como TelfonoC son
dependientes funcionalmente de Centro.
Por cada fila con un mismo valor de Centro se repiten los
valores DireccinC y TelfonoC, lo que implica una
redundancia de valores no deseable que se estudiar ms
adelante en la normalizacin de relaciones.
64
Dependencias Funcionales
La validez de una relacin con respecto a las DF se interpreta
desde el significado que el diseador asocia a la relacin.
Por tanto, una DF no se puede inferir de una relacin, sino
que se debe definir explcitamente sobre los atributos de la
relacin conociendo perfectamente su semntica.
Una DF define los estados consistentes de una relacin en
funcin de las dependencias entre los valores de los
atributos.
65
Dependencias Funcionales
Definicin 1.
Sea R={A
1
,.., A
n
} el esquema universal de la base de datos
relacional, es decir, el conjunto de todos los atributos que
pueden definirla y r una instancia del esquema R.
Una dependencia funcional XY (los valores de X
determinan unvocamente (o funcionalmente) los valores de
Y) entre dos conjuntos de atributos X e Y , tales que X,Y R
especifica la siguiente restriccin:
t
1
,t
2
R tales que t
1
[X]=t
2
[X] entonces t
1
[Y]=t
2
[Y]
66
Dependencias Funcionales
X se denomina antecedente e Y consecuente.
En otras palabras, quiere decir que los componentes Y de
cada tuplade r estn determinados unvocamente por los
valores de X.
67
Dependencias Funcionales
Observaciones:
XY no implica necesariamente YX.
Ejemplo 2.
{Nif}{nombre}
Sin embargo, {Nombre}{Nif} no es cierto puesto que se pueden
repetir nombres para diferentes personas.
68
Dependencias Funcionales
No se debe confiar en general en la dependencia funcional
{Nif}{Nombre}porque en la prctica tambin hay Nif
repetidos.
Por ello, en las bases de datos generalmente se usa un
identificador propio que identifica unvocamente cada tupla
asociada a una persona.
69
Dependencias Funcionales
Una dependencia funcional determina una relacin uno a
varios entre dos conjuntos de atributos:
Para un valor de X slo puede haber un valor de Y, pero
para un valor de Y habr en general varios de X.
Por lo tanto, una dependencia funcional se puede observar
como una restriccin de cardinalidadentre conjuntos de
atributos de una misma relacin.
70
Dependencias Funcionales
Ejemplo 3.
Corolario 1.
Una restriccin de cardinalidadde uno a varios entre dos esquemas
de relacin R
1
y R
2
y con superclaves XR
1
e Y R
2
se especifica
con la dependencia funcional X Y en un nuevo esquema de
relacin R
3
.
Una restriccin de cardinalidadde uno a uno entre dos esquemas de
relacin R
1
y R
2
con superclaves XR
1
e Y R
2
se especifica con
las dependencias funcionales X Y e Y X en un nuevo esquema
de relacin R
3
.
No obstante, las relaciones uno a uno se implementan generalmente
como un atributo de la relacin.
Empleados_Centros
Id_empleado NombreE DireccinE Puesto Salario Centro DireccinC TelfonoC
123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123
012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123
789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789
X Y
71
Dependencias Funcionales
Una superclave se puede definir en trminos de dependencias
funcionales. S es superclave del esquema de relacin R si
S R y S R.
Es decir, si t
1
,t
2
R tales que t
1
[S]=t
2
[S] entonces
t
1
[R]=t
2
[R], lo cual implica t
1
=t
2
porque deben coincidir en
todos sus atributos, por lo que se est hablando de la misma
tupla.
72
Dependencias Funcionales
Ejemplo 5.
Dependencias funcionales
{ID_empleado}{NombreE, DireccinE, Puesto,Salario, Centro,
DireccinC,TelfonoC}
{Centro}{DireccinC,TelfonoC}
{DireccinC} {Centro, TelfonoC}
{TelfonoC} {Centro, DireccionC}
Empleados_Centros
Id_empleado NombreE DireccinE Puesto Salario Centro DireccinC TelfonoC
123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123
012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123
789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789
X Y
73
Satisfaccin de dependencias funcionales
Definicin 2.
Una relacin r con esquema R satisface una dependencia funcional
X Y con X,YR, si todas las tuplasde r satisfacen t
1
,t
2
R tales
que t
1
[X]=t
2
[X] entonces t
1
[Y]=t
2
[Y].
La comprobacin de la satisfaccin de dependencias funcionales es
necesaria en casos como la migracin de datos o la actualizacinde
sistemas heredados.
74
Satisfaccin de dependencias funcionales
Bajo esta definicin se pueden proponer algoritmos sencillos
para comprobar la satisfaccin de un conjunto de
dependencias funcionales de una relacin r, o para
comprobar la validez de la insercin de una tupla.
75
Algoritmos
Algoritmo 1.
Algoritmo para comprobar la integridad de una relacin con
respecto a un conjunto de dependencias funcionales.
Entrada: relacin r con un conjunto enumerablede tuplas t
i
R,
i=1..ny n conjunto enumerable de dependencias funcionales
d
i
=X
i
Y
i
, d
i
D, i=1..m
for i:=1 ton-1
for j:=i+1 ton
for k:=1 to m
if t
i
[X
k
]=t
j
[X
k
] andt
i
[Y
k
]t
j
[Y
k
] then
Valores inconsistentes de ti y tj debido a DF
76
Algoritmos
Algoritmo 2.
Algoritmo para comprobar la integridad de la insercin de
una tuplaen una relacin con respecto a un conjunto de
dependencias funcionales.
Entrada: relacin r con un conjunto enumerablede tuplas t
i
R,
i=1..n, una tuplat para insertar en r y n conjunto enumerable de
dependencias funcionales d
i
=X
i
Y
i
, d
i
D, i=1..m.
for i:=1 ton
for j:=1 to m
if t[X
j
]=t
i
[X
j
] andt[Y
j
]t
i
[Y
j
]
Valores inconsistentes de y debido a la DF
77
Mnimas dependencias funcionales
Las dependencias funcionales representan restricciones de
integridad que el sistema de gestin de bases de datos debe
asegurar.
As que, dado un cierto conjunto D de dependencias
funcionales, es deseable encontrar otro conjunto E que sea lo
menor posible que D de manera que cada dDse deduzca
de E, con el objetivo de que el coste de mantener la
integridad definida en D se reduzca con E.
78
Mnimas dependencias funcionales
Una de las maneras de reducir el coste del aseguramiento de
la consistencia mediante dependencias funcionales es
eliminar las que no aportan nada semnticamente, es decir,
son dependencias funcionales que cumple cualquier tupla.
79
Dependencias funcionales triviales
Una dependencia funcional X Y es trivial si y slo si
YX .
Esto slo dice que si dos tuplascoinciden en una serie de
atributos, entonces coinciden (obviamente) en un
subconjunto de esos mismos atributos.
Se denomina trivial porque no aporta ninguna restriccin al
esquema de relacin.
80
Dependencias funcionales
En general interesar encontrar el conjunto mnimo de
dependencias funcionales que sea semnticamente
equivalente (asegure el mismo nivel de integridad) a un
conjunto dado de dependencias funcionales aportadas por el
diseador de la base de datos.
81
Cierre de un conjunto de dependencias
funcionales
Definicin 4.
El cierre de un conjunto de dependencias funcionales S, denotado
S+, es el conjunto de todas las dependencias definidas
intensionalmentepor S.
En otras palabras, es el conjunto de todas las dependencias
funcionales que se pueden deducir de S.
Este concepto es importante para poder determinar la
equivalencia semntica de dos conjuntos de dependencias y
poder elegir el menor de forma que la comprobacin de su
satisfaccin sea ms rpida.
Por otra parte, permite razonar sobre la descomposicin de
relaciones que se estudia en el tema Normalizacin.
82
Cierre de un conjunto de dependencias
funcionales
Ejemplo 6.
Si a un centro le corresponden una direccin y un telfono
determinados, en particular tambin es cierto que a ese centro le
corresponde una direccin, y que a ese centro le corresponde un
telfono.
Es fcil ver que si {Centro}{DireccinC,TelfonoC}
entonces {Centro}{DireccinC} y {Centro}{TelfonoC}
83
Cierre de un conjunto de dependencias
funcionales
Notacin: Si X e Y son conjuntos de atributos, XY =XY
84
Cierre de un conjunto de dependencias
funcionales
Para calcular el cierre de un conjunto de dependencias
funcionales se dispone de un conjunto de axiomas de
produccin denominados Axiomas de Armstrongen honor a
la persona que los propuso.
1. Reflexividad: Si YX , entonces X Y .
2. Aumentatividad: Si X Y , entonces XZ YZ.
3. Transitividad: Si X Y e Y Z , entonces X Z .
85
Cierre de un conjunto de dependencias
funcionales
Estos axiomas son correctos en cuanto que derivan
informacin consistente con la definicin de dependencia
funcional.
Adems son completos porque permiten deducir todas las
consecuencias de un conjunto de dependencias funcionales,
es decir, su cierre.
86
Cierre de un conjunto de dependencias
funcionales
Hay otras reglas de inferencia que se deducen de los axiomas
de Armstrongy que permiten calcular el cierre de un
conjunto de dependencias funcionales.
4. Autodeterminacin: X X (por reflexividad).
5. Unin: Si X Y y X Z, entonces XYZ
6. Descomposicin: Si X YZ , entonces X Y y X Z.
7. Composicin: Si X Y y Z W , entonces XZ YW.
8. Pseudotransitividad: Si X Y , YZ Wentonces XZ W
87
Cierre de un conjunto de dependencias
funcionales
Ejemplo 7.
Dado el conjunto S de dependencias funcionales: {A}{B, C},
{C, D}{E, F},
Se puede demostrar que {A,D} {F}, esten S+:
{A} {B, C}, dada.
{A} {C}, descomposicin.
{A,D} {C, D}, aumentatividad.
{C, D} {E, F}, dada.
{A, D} {E, F}, transitividad
{A, D} {F}, descomposicin.
88
Cierre de un conjunto de dependencias
funcionales
Se puede desarrollar un algoritmo que calcule el cierre del
conjunto de dependencias funcionales a partir de slo las tres
primeras reglas de inferencia aplicndolas repetidamente
hasta que no se produzcan ms dependencias funcionales (se
alcance el punto fijo).
Este algoritmo es seguro con respecto a la completitud de los
axiomas.
La demostracin de completitud necesita la nocin de cierre
de un conjunto de atributos.
89
Cierre de un conjunto de dependencias
funcionales
Sin embargo, tambin es un algoritmo muy ineficiente por la
cantidad de dependencias funcionales que se generan.
Ejemplo 8.
Dado el conjunto de dependencias funcionales:
S={X{B1},...,{Bn}}
El cierre de S incluye todas las dependencias funcionales X Yi
tales que Y{B1,...,Bn}, es decir, 2
n-1
, demasiado grande aunque S
sea pequeo.
90
Cierre de un conjunto de atributos
En la prctica no es necesario en general calcular todo el
cierre de un conjunto de dependencias. Es ms interesante
calcular el conjunto de las dependencias que tienen en su
parte izquierda un conjunto especificado de atributos.
El clculo del cierre de un conjunto de atributos permite:
1. Comprobar si una dependencia funcional se deduce de un
conjunto de dependencias funcionales sin necesidad de calcular su
cierre. Se puede determinar si su comprobacin es redundante para la
integridad de los datos.
2. Comprobar si un conjunto de atributos es superclave. Asegura que
el conjunto de atributos elegido por el diseador es adecuado para
determinar unvocamente cada tuplade una relacin. Permite
determinar superclaves que se pueden usar como ndice sin repetidos
(algoritmo de indexacin ms eficiente) para el acceso a los datos
mediante consultas.
3. Calcular un conjunto mnimo de dependencias funcionales. til
para mantener la comprobacin de integridad menos costosa.
91
Cierre de un conjunto de atributos
Definicin 5.
El cierre de un conjunto de atributos X con respecto a un conjunto de
dependencias funcionales S, denotado X
+
S
, es el conjunto de
atributos Y tales que X Y se puede deducir de S.
En otras palabras, el cierre de un conjunto de atributos X es el
conjunto de atributos Y determinados funcionalmente por X.
92
Cierre de un conjunto de atributos
Lema 1:
X Y se deduce de un conjunto de dependencias funcionales S
Y X
+
S
.
93
Cierre de un conjunto de atributos:
Algoritmo
Algoritmo 3.
Entrada: Conjunto de atributos X y un conjunto de dependencias
funcionales S.
Salida: X
+
S
.
resultado :=X
whilecambios en resultado do
for eachYZ S do
if Yresultado thenresultado :=resultado Z.
94
Cierre de un conjunto de atributos:
Algoritmo
Se puede demostrar que el algoritmo es correcto y completo.
El algoritmo tiene una complejidad cuadrtica con la
cardinalidadde S.
Existen otros algoritmos de complejidad lineal.
95
Cierre de un conjunto de atributos:
Algoritmo
Corolario 2.
Se puede determinar si una dependencia funcional X Y se deduce
de un conjunto de dependencias funcionales S si Y X
+
S
.
Se puede determinar, por tanto, en tiempo lineal, si una dependencia
funcional esten S
+
.
96
Cierre de un conjunto de atributos:
Algoritmo
Corolario 3.
Se puede determinar si un conjunto de atributos C es superclave de
una relacin r bajo un conjunto de dependencias funcionales S si
todos los atributos de r pertenecen al cierre de C, es decir, si todos
los atributos de la relacin estn determinados funcionalmente por C.
Adems, serclave candidata si el conjunto de atributos es
irreducible (no hay ningn conjunto de cardinalidadmenor que tal
que determine funcionalmente todos los atributos de r).
97
Cierre de un conjunto de atributos:
Algoritmo
Ya es posible definir lo que es un recubrimiento mnimo de
dependencias o conjunto irreducible equivalente, que va a
permitir mantener la integridad definida por un conjunto de
dependencias funcionales a coste mnimo.
Para definir un recubrimiento mnimo hay que definir dos
conceptos: el recubrimiento de un conjunto de dependencias
funcionales y la equivalencia entre conjuntos de
dependencias funcionales.
98
Recubrimiento de un conjunto de
dependencias funcionales
Definicin 6.
Dados dos conjuntos de dependencias funcionales S1 y S2, se dice
que S2 es un recubrimiento de S1 si cada dependencia de S1 se
deduce de S2
es decir, se puede demostrar que cada dependencia de S1 esten el
cierre de S2
99
Equivalencia entre conjuntos de
dependencias funcionales
Definicin 7.
Dos conjuntos de dependencias funcionales S1 y S2 son
equivalentes si S1
+
=S2
+
.
De forma alternativa se define como
Dos conjuntos de dependencias funcionales S1 y S2 son equivalentes si
S1 es un recubrimiento de S2 y S2 es un recubrimiento de S1.
100
Conjunto mnimo (o irreducible) de
dependencias funcionales
Definicin 8.
Un conjunto S de dependencias funcionales es irreducible si y
solamente si cumple las siguientes propiedades:
1. La parte derecha de cada dependencia funcional de S tiene slo un
atributo.
2. La parte izquierda de cada dependencia funcional de S es irreducible
en el sentido en que si se elimina algn atributo, necesariamente cambia
el cierre de S.
3. No se puede eliminar ninguna dependencia funcional de S sin
cambiar su cierre.
101
Recubrimientos mnimos de
dependencias funcionales
Definicin 9.
Recubrimiento mnimo de un conjunto de dependencias funcionales
Al conjunto mnimo de dependencias funcionales S1 equivalente a
S2 se le denomina recubrimiento mnimo de S2.
Se puede demostrar que todo conjunto de dependencias funcionales
tiene al menos un recubrimiento mnimo, por lo que se plantea el
siguiente lema.
102
Recubrimientos mnimos de
dependencias funcionales
Lema 2.
Todo conjunto S de dependencias funcionales tiene un conjunto de
dependencias funcionales equivalente en el que el lado derecho de
cada dependencia funcional tiene un nico atributo.
Teorema 1.
Todo conjunto de dependencias funcionales tiene al menos un
recubrimiento mnimo.
103
Recubrimientos mnimos de dependencias
funcionales
Algoritmo 4
Calcular un recubrimiento mnimo G para un conjunto de
dependencias funcionales F
1. G :=F
2. Reemplazar cada dep. func. XY1Y2...Ykde G por k dep. func.
XY1, XY2,. ..., XYk
3. // Eliminacin de atributos redundantes
Para cada XA G hacer:
Para cada atributo B X hacer:
Calcular {X-B}
+
con respecto al conjunto de dep. func. G
Si A {X-B}
+
entonces
G :=(G {XA}) U {X-B A)
4. // Eliminacin de dependencias funcionales redundantes
Para cada XA G, Calcular X
+
con respecto a (G {XA})
Si A X
+
entonces
G :=G {XA}
104
Recubrimientos mnimos de
dependencias funcionales
Ejemplo 9:
{A}{B, C}
{B}{C}
{A}{B}
{A, B}{C}
{A, C}{D}
105
Recubrimientos mnimos de
dependencias funcionales
Primer Paso:
{A}{B}
{A}{C}
{B}{C}
{A}{B}
{A, B}{C}
{A, C}{D}
Antes de aplicar el segundo paso, vemos que se repite {A}{B},
por lo que se puede eliminar una de ellas (esto correspondera al
tercer paso).
Segundo paso:
Se puede eliminar C de {A, C}{D}porque se tiene {A}{C}, y
por la regla de aumentatividadse obtiene {A}{A,C}, como se
tiene tambin {A, C}{D}, se deduce por transitividad {A}{D}
106
Recubrimientos mnimos de
dependencias funcionales
Tercer paso:
Se puede eliminar {A, B}{C}porque se tiene {A}{C}, y por la
regla de aumentatividadse obtiene {A, B}{B,C}, y {A,B}{C}
por descomposicin.
Se puede eliminar {A}{C}porque se tiene {A}{B}, {B}{C}
y por transitividad se obtiene {A}{C}.
Se llega al recubrimiento mnimo T de S en el que las partes
derecha de las dependencias funcionales tienen un solo
atributo, las partes izquierda no son reducibles (ya que son
unitarias) y no se puede eliminar ninguna dependencia
funcional sin alterar S
+
:
T={{A}{B}, {B}{C}, {A}{D}}
107
Recubrimientos mnimos de
dependencias funcionales
Para comprobar que no se puede eliminar ninguna
dependencia funcional se usa el corolario 2:
Se comprueba si {A}{B}se puede deducir de U={{B}{C},
{A}{D}}comprobando si B{A}
+
U
={A,D}, que no se cumple.
Se comprueba si {B}{C}se puede deducir de U={{A}{B},
{A}{D}}comprobando si C{B}
+
U
U={B}, que no se cumple.
Se comprueba si {A}{D}se puede deducir de U={{A}{B},
{B}{C}}comprobando si D{A}
+
U
={A, B, C}, que no se
cumple.
Por lo tanto, es irreducible.
108
Dependencias funcionales
Las dependencias funcionales permiten imponer restricciones
de integridad que no son posibles de expresar con claves.
Una dependencia funcional es una generalizacin del
concepto de superclave.
109
Dependencias funcionales
Se ha mostrado un procedimiento que permite determinar el
mnimo nmero de dependencias funcionales necesario para
la comprobacin de la consistencia de una relacin a partir de
un conjunto inicial de dependencias funcionales.
Con este procedimiento el diseador de la base de datos tiene
una herramienta muy til para mejorar el rendimiento de sus
diseos.
110
Restricciones de Integridad
4. Restricciones de integridad
4.1. Restricciones de los dominios
4.2. Integridad referencial
4.3. Asertos
4.4. Disparadores
4.5. Dependencias funcionales
4.5.1. Cierre de un conjunto de dependencias funcionales
4.5.2. Cierre de un conjunto de atributos
4.5.3. Recubrimientos mnimos de dependencias funcionales
4.6. Dependencias multivaloradas
4.6.1. Reglas de inferencia para las dependencias multivaloradas
111
Dependencias multivaloradas
Las dependencias multivaloradasson restricciones de
integridad que expresan relaciones entre los atributos de un
esquema que no pueden ser expresables con las dependencias
funcionales.
112
Dependencias multivaloradas
Ejemplo 10.
En la siguiente relacin se representan los empleados, sus domicilios
y telfonos, asumiendo que pueden tener ms de una vivienda y
telfono, y que no se dispone informacin acerca del tipo de
telfono, fijo o mvil, por lo que no se puede relacionar con un
domicilio.
Estos atributos son independientes entre s. Para mantener la relacin
consistente es necesario expresar todas las combinaciones de los
atributos.
113
Dependencias multivaloradas
Emp l ea d os
Nombre Direccin Telfono
Ana Almansa c/ Argentales 1
Ana Almansa c/ Argentales 2
Ana Almansa c/ Argentales 3
Ana Almansa c/ Amaniel 1
Ana Almansa c/ Amaniel 2
Ana Almansa c/ Amaniel 3
114
Dependencias multivaloradas
Mientras que las dependencias funcionales impiden que
aparezcan ciertas tuplasen las relaciones, las dependencias
multivaloradasobligan a ello.
Las dependencias multivaloradasaparecen cuando en un
esquema de relacin hay varias relaciones 1:N
independientes entre s.
115
Dependencias multivaloradas
Definicin 10.
Dados dos subconjuntos de atributos X e Y y un esquema R, la
dependencia multivaloradaXY ( X multideterminaa Y)
especifica la siguiente restriccin sobre la relacin r del esquema R:
si existen en r dos tuplast
1
y t
2
tales que t
1
[X]=t
2
[X], entonces deben
existir dos tuplas, t
3
y t
4
, tales que:
t
1
[X]=t
2
[X]=t
3
[X]=t
4
[X],
t
1
[Y]=t
3
[Y] y t
2
[Y]=t
4
[Y],
t
2
[Z]=t
3
[Z] y t
1
[Z]=t
4
[Z] donde Z=R-(XY)
116
Dependencias multivaloradas
Esta definicin es ms sencilla de lo que parece si se observa
el siguiente grfico.
X Y Z
t
1
t
2
t
3
t
4
117
Dependencias multivaloradas
En definitiva se imponen todas las combinaciones de los
valores de los atributos Y y Z.
Si Z es vaco o sus valores son nicos, necesariamente t1 =t3
y t2 =t4 , es decir, estamos hablando slo de dos tuplas.
X Y
t
1
t
2
118
Dependencias multivaloradas
Informalmente se dice que siempre que existan dos tuplas
con valores iguales de X pero distintos de Y, los valores de Y
se deben repetir en tuplasseparadas por cada valor distinto
de Z.
En definitiva, con esta restriccin se dice que la relacin
entre X e Y es independiente de la relacin entre X y Z.
119
Dependencias multivaloradas
Ejemplo 11.
En el ejemplo anterior se observan las restricciones multivaloradas
{Nombre}{Direccin} y {Nombre}{Telfono} .
Debido a la simetra de la definicin (se pueden intercambiar los
papeles de Y y Z ) se deduce que si se cumple XY , entonces
tambin se cumple XZ, que se representa de forma compacta
como
XY|Z.
120
Dependencias multivaloradas triviales
Definicin 11.
Una dependencia multivaloradaXY se denomina trivial si Y
X o XY=R .
Se denomina trivial porque no aporta ninguna restriccin relevante al
esquema.
En el primer caso, Y X , slo se impone que un subconjunto de
los valores de X estasociado siempre a los valores de X, lo cual es
trivialmente cierto.
El segundo caso se vio en la definicin de dependencia
multivalorada.
121
Reglas de inferencia para las
dependencias multivaloradas
Para las dependencias multivaloradastambin se proponen
axiomas de produccin que permiten calcular el cierre de un
conjunto de ellas.
1. Reflexividadpara dependencias funcionales:
Si Y X, entonces XY.
2. Aumentatividadpara dependencias funcionales:
Si XY, entonces XZYZ.
3. Transitividad para dependencias funcionales:
Si XY e YZ, entonces XZ.
4. Complemento para dependencias multivaloradas:
Si XY, entonces XR- (XY)
5. Aumentatividadpara dependencias multivaloradas:
Si XY y VW, entonces WXVY.
122
Reglas de inferencia para las
dependencias multivaloradas
6. Transitividad para dependencias multivaloradas:
Si XY e YZ, entonces X(Z-Y)
7. Si XY, entonces XY.
8. Si , XY, y Z Y existe un W disjunto de Y, entonces WZ y
XZ.
123
Reglas de inferencia para las
dependencias multivaloradas
Las tres primeras son las mismas reglas que los axiomas de
Armstrong, las tres siguientes se refieren a dependencias
multivaloradasy las dos ltimas se refieren tanto a
dependencias multivaloradascomo funcionales.
En concreto, la sptima se refiere a que una dependencia
funcional es un caso particular de una dependencia
multivalorada.
Se puede demostrar que este conjunto de reglas de inferencia
es correcto y completo para calcular el cierre de un conjunto
de dependencias, denotado por S
+
.
124
Dependencias multivaloradas
Las dependencias multivaloradaspermiten asegurar la
consistencia cuando se expresan atributos multivalorados
independientes en un nico esquema de relacin.
Las dependencias funcionales permiten establecer relaciones
uno a varios y uno a uno entre los atributos de un esquema de
relacin, mientras que las dependencias multivaloradas
permiten expresar relaciones varios a varios.
125
Dependencias multivaloradas
Las dependencias funcionales y multivaloradasse usarn
como herramienta fundamental en el proceso de
normalizacin de esquemas.
Adems son tiles en la comprobacin de consistencia de
relaciones resultado de migraciones y de sistemas heredados.

También podría gustarte