Está en la página 1de 63

Ficheros y Bases de Datos

Tema 4 Restricciones de integridad

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

Objetos que viven en los SGBD


Dentro

de los SGBD viven distintos elementos relacionados

entre s
Bases de Datos Tabla T1 Restriccin de Tabla

Espacio para Tablas V1 Vista

V1 ==> T1 S1

Indice

Sinnimo
Integridad Referencial T2 T1
3

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.

Restricciones de Integridad
Tipos

de restricciones de integridad:

Declaracin de claves. Cardinalidad de 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

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

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.

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

Restricciones de dominio

La clusula CREATE DOMAIN se puede usar para definir nuevos dominios. Ejemplo, las instrucciones:

create domain Euros numeric(12,2) create domain Dlares 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 de tipo 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

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.

10

Restricciones de dominio: Restricciones Check


REGLA: Ningn valor en columna ORDER_QTY de la tabla ORDER_ITEM debe ser mayor de 100.
PGM n

PGM n REGLA

SGBD CUMPLIMIENTO: APLICACIN SGBD

SGBD REGLA

PGM 1 REGLA

PGM 2 REGLA

PGM 1

PGM 2

Cada programa (PGM) gestiona las reglas

El SGBD gestiona las reglas que afectarn a todos los programas


11

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)

12

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):

13

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 FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM IN DBX.TSX CHAR(6) NOT VARCHAR(12) NOT CHAR(1) NOT VARCHAR(15) NOT CHAR(3), CHAR(4), DATE, CHAR(8), SMALLINT, CHAR(1), DATE, DECIMAL(9,2), DECIMAL(9,2), DECIMAL(9,2))

Tipo de datos Atributo NULL


NULL, NULL, NULL WITH DEFAULT --- NULL,

14

Restricciones de dominio

Nulos

NULL es un valor especial que indica que es un valor desconocido


Estas instancias representan cosas muy diferentes

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

15

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

16

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);

ERROR

INSERT INTO departments (ID, DESCRIPTION) VALUES (3, Toto II); INSERT INTO departments VALUES (4, Revelations, NULL); ERROR

ID 1 3

NAME Aces High ---

DESCRIPTION Powerslave Toto II


17

Restricciones de dominio: Nulos en columnas numricas


EMPNO 000320 000310 000290 000340 000330 SALARY 19950.00 15900.00 15340.00 25370.00

Obtener la media de salarios de estos empleados

AVG(SALARY) 19140.00
18

Restricciones de dominio: Nulos en columnas de cadenas de caracteres


Resultado usando NULL
EMPNO 000320 000290 000300 000330 WORKDEPT E21 E11 DEPTNO E11 E21 DEPTNAME OPERATIONS SFTWR SUPP UNKNOWN

Proporcionar una lista de empleados y el nombre de su departamento, emparejando DEPTNO con WORKDEPT

EMPNO 000320 000300

DEPTNAME SFTWR SUPP OPERATIONS

19

Restricciones de dominio: Peligro de los nulos

A 2 4
SUM (A) SUM (B)
= =

B 5 3 SUM (A + B) = 7

6 8

= 2 SUM (A) COUNT(*)

AVG (A) = 3

20

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.

21

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 las columnas.

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)
22

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

23

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.

Como puedo evitar que haya lneas de pedido que no sean de un pedido existente?
ORDER_NO ORDER_DATE ORDER_QTY ORDER_REF ART_NO ART_NAME STOCK_QTY

ORDER Tabla padre

22333 22444

40000 42500

ARTICLE Tabla padre

35555
Clave primaria

75500
Clave primaria

Clave ajena Clave ajena

ORDER_NO

ART_NO

ORDER_QTY

22333

40000 42500

2 8

ORDER_ITEM Tabla dependiente

22333

35555

40000

Clave primaria

24

Integridad referencial: Unicidad por Claves


EMPNO 000010 000020 000030 000050 FIRSTNME Christine Michael Sally John LASTNAME Haas Thompson Kwan Geyer WORKDEPT A00 B01 C01 E01

Clave simple

Clave compuesta

Una clave es un conjunto ordenado de columnas de una tabla


Una clave compuesta est formada por varias columnas
25

Integridad referencial: Columnas de identidad


Existen SGBD que permiten la utilizacin de secuencias para generacin automtica de valores, por ejemplo en Oracle:

26

Integridad referencial: Columnas de identidad


Algunos SGBD admiten la generacin automtica de valores, por ejemplo en MySQL:

27

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.

28

Integridad referencial: Clave Primaria


DEPTNO

DEPT

E01 E11 E21 ...

Support Services Operations Software Support

Clave primaria

EMPNO

EMP

000050 000280 ...

John Ethel

B R

GEYER SCHNEIDER

E01 E11

Clave primaria

Una clave primaria define de forma nica cada fila de la tabla Una Clave primaria debe ser
nica

y no nula
29

Integridad referencial: Clave ajena o externa


DEPTNO

DEPT

E01 E11 E21 ...

Support Services Operations Software Support

PK

EMPNO

EMP

000050 000280 ...

John Ethel

B R

GEYER SCHNEIDER

E01 E11

Restriccin referencial

FK

Una restriccin referencial garantiza que todos los valores (no nulos) de una FK tambin son valores de la PK
30

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 (simila a NO ACTION)

31

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
32

Integridad referencial
CREATE TABLE EMP (EMPNO FIRSTNAME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM

CHAR(6) VARCHAR(12) CHAR(1) VARCHAR(15) CHAR(3), CHAR(4), DATE, CHAR(8), SMALLINT, CHAR(1) DATE, DECIMAL (9,2), DECIMAL (9,2), DECIMAL (9,2),

NOT NOT NOT NOT

PRIMARY KEY, NULL NULL, NULL WITH DEFAULT, NULL,

O bien

PRIMARY KEY (EMPNO) )

Debe usarse en casos de multicolumna


33

Integridad referencial

CREATE TABLE EMP (EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM CHAR(6) NOT NULL VARCHAR(12) NOT NULL, CHAR(1) NOT NULL WITH DEFAULT, VARCHAR(15) NOT NULL, CHAR(3) REFERENCES DEPT ON DELETE SET NULL, CHAR(4), DATE, CHAR(8), SMALLINT, CHAR(1), DATE, DECIMAL(9,2), DECIMAL(9,2), DECIMAL(9,2),

O bien

PRIMARY KEY (EMPNO), FOREIGN KEY RED (WORKDEPT) REFERENCES DEPT ON DELETE SET NULL )

La tabla DEPT debe estar definida


34

Integridad Referencial
RI es la situacin en la que todos los valores de todas las FK son vlidos
Ejemplo: EMPNO INSERT UPDATE DELETE

EMP

PK

INSERT UPDATE DELETE FK MGRNO

DEPT

Que har el sistema en estos 6 casos?


35

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 filas idnticas en el ndice.

36

Integridad referencial: Creacin de ndices

37

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

38

Integridad referencial: ndices nicos y no nicos


MLTIPLES RIDs UN RID PARA CADA VALOR DE CLAVE UNICA

INDICE NO UNICO

INDICE UNICO PHONE NO 555-1111

LASTNAME, FIRSTNME JONES, LARRY

Varias referencias para un mismo ndice

No hay dos tuplas con el mismo valor de ndice

LASTNAME SMITH GAINES BROWN ADAMS FRIEDRICH JONES WISE JONES ADAMS JONES SMITH CALDWELL

FIRSTNME DIANA LOIS TERRY SANDY JOHN LARRY SARA LAVERNE BOBBY LARRY GRACE SIMONE

MIDINIT ADDRESS A B S A P R J G D R G B 2253 DAHLIA ST. 6094 BEAVER ST. 45 RIVER WALK 26 CISCO LANE 5 BEAUMONT RD. 1921 HILL RD. 25 RAWLINGS ST. 504 1ST AVE. 1426 MAPLE DR. 240 BOSWELL DR. 983 FAMOUS RD. 1224 42ND ST.

PHONENO 555-1111 555-1221 555-2168 555-1361 555-1411 555-3242 555-2345 555-1777 555-1423 555-5390 555-8764 555-5367

Puede haber varias tuplas con el mismo valor de ndice

39

Integridad referencial: Creacin de ndices


CREATE INDEX XLAST_FIRST_M ON PHONEBOOK (LASTNAME, FIRSTNME,MIDINIT) CREATE UNIQUE INDEX XPHONENO ON PHONEBOOK (PHONENO)

LASTNAME Smith Gaines Brown Adams Friedrich

FIRSTNME Diana Lois Terry Sandy John

MIDINIT ADDRESS A B S A P 2253 Dahlia St. 6094 Beaker St. 45 River Walk 26 Cisco Lane 5 Beaumont Rd.

PHONENO 555-1111 555-1221 555-2168 555-1311 555-1411

PAGERNO 1234 -3456 ---

CREATE UNIQUE INDEX WHERE NOT NULL INDEX XPAGER ON PHONEBOOK (PAGERNO)

CREATE INDEX XNAME ON PHONEBOOK (LASTNAME, FIRSTNME)

40

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

41

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.

42

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 de esa sucursal. Cada prstamo tiene al menos un cliente que tiene una cuenta con un saldo mnimo de 1200 Euros.

En

SQL-92 los asertos adoptan la forma:


create assertion <nombre-aserto> check <predicado>

43

Asertos
create assertion restriccin-saldo check (not exists (select * from prstamo where not exists (select * from prestatario,impositor, cuenta where prstamo.nmero-prstamo=prestatario.nmero-prstamo and prestatario.nombre-prestatario = impositor.nombre-cliente and impositor.nmero-cuenta = cuenta.nmero-cuenta and cuenta.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.

44

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

45

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
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

PGM n
CUMPLIMIENTO: APLICACIN SGBD

SGBD

46

Disparadores
Para

disear un disparador es necesario:


Especificar las condiciones en las que se va a ejecutar el disparador:


Evento que provoca la comprobacin del disparador Una condicin que se debe cumplir para que se ejecute el disparador

Especificar las acciones que se van a realizar cuando se ejecute el disparador

Siguen

el modelo evento-condicin-accin

47

Disparadores
Los disparadores estn asociados a operaciones sobre las filas de las tablas o 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

48

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

49

Disparadores
Crear

o reemplazar un disparador:

Create [or replace] trigger nombre


[Temporalidad del evento] [Granularidad del evento] [WHEN condicin] Begin Cuerpo del trigger End; EVENTO CONDICIN

ACCIN

50

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 fila en 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_columna ON nombre_tabla

51

Disparadores
Ejemplos:

1) CREATE OR REPLACE TRIGGER emp BEFORE INSERT ON empleado .. 2) CREATE OR REPLACE TRIGGER salar AFTER DELETE OF salario ON empleado

52

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.

53

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 di lugar a que el saldo de la cuenta fuera negativo.

54

Disparadores
Las

acciones que hay que emprender son las siguientes:


t denota la tupla de la cuenta con un valor negativo de saldo.

Insertar

una nueva tupla s 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 tupla u a la relacin prestatario con

u[nombre-cliente] = Santos u[nmero-prstamo] = t[nmero-cuenta]

Hacer

que t[saldo] sea 0.

55

Disparadores
Un ejemplo en SQL:1999:
Se refiere a la nueva fila que se procesa

56

Disparadores
Un ejemplo en MySQL:

Se refiere a la nueva fila que se procesa

57

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

58

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

59

Dependencias Funcionales
Una

dependencia funcional (DF) es una propiedad semntica de un esquema de relacin que presentan las tuplas vlidas 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 tupla t1 de la relacin con un valor para X y otro para Y, si aparece otra tupla t2 con el mismo valor para X, entonces esta tupla debe tener el mismo valor en Y que t1.

60

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 Puesto Salario Profesor 20.000 Ayudante 10.000 Catedrtico 30.000

Id_empleado NombreE 123A Ana Almansa 012D David Daz 789C Carlos Crespo

DireccinE c/ Argentales c/ Daroca c/ Cruz

Centro Informtica Informtica Empresariales

DireccinC TelfonoC c/ Complutense 123 c/ Complutense 123 c/ Corua 789

61

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.

62

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.

63

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.

64

Dependencias Funcionales
Definicin

1. Sea R={A1,.., An} 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: t1,t2R tales que t1[X]=t2[X] entonces t1[Y]=t2[Y]

65

Dependencias Funcionales
X

se denomina antecedente e Y consecuente. En otras palabras, quiere decir que los componentes Y de cada tupla de r estn determinados unvocamente por los valores de X.

66

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.

67

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.

68

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 cardinalidad entre conjuntos de atributos de una misma relacin.

69

Dependencias Funcionales
Ejemplo

3.
DireccinE c/ Argentales c/ Daroca c/ Cruz Empleados_Centros Puesto Salario Profesor 20.000 Ayudante 10.000 Catedrtico 30.000 Centro Informtica Informtica Empresariales Y DireccinC TelfonoC c/ Complutense 123 c/ Complutense 123 c/ Corua 789

Id_empleado NombreE 123A Ana Almansa 012D David Daz 789C Carlos Crespo X

Corolario

1.

Una restriccin de cardinalidad de uno a varios entre dos esquemas de relacin R1 y R2 y con superclaves XR1 e Y R2 se especifica con la dependencia funcional X Y en un nuevo esquema de relacin R3. Una restriccin de cardinalidad de uno a uno entre dos esquemas de relacin R1 y R2 con superclaves XR1 e Y R2 se especifica con las dependencias funcionales X Y e Y X en un nuevo esquema de relacin R3.

No obstante, las relaciones uno a uno se implementan generalmente como un atributo de la relacin.
70

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 t1,t2R tales que t1[S]=t2[S] entonces t1[R]=t2[R], lo cual implica t1=t2 porque deben coincidir en todos sus atributos, por lo que se est hablando de la misma tupla.

71

Dependencias Funcionales
Ejemplo

5.
DireccinE c/ Argentales c/ Daroca c/ Cruz Empleados_Centros Puesto Salario Profesor 20.000 Ayudante 10.000 Catedrtico 30.000 Centro Informtica Informtica Empresariales Y DireccinC TelfonoC c/ Complutense 123 c/ Complutense 123 c/ Corua 789

Id_empleado NombreE 123A Ana Almansa 012D David Daz 789C Carlos Crespo X

Dependencias

funcionales

{ID_empleado}{NombreE, DireccinE, Puesto,Salario, Centro, DireccinC,TelfonoC} {Centro}{DireccinC,TelfonoC} {DireccinC} {Centro, TelfonoC} {TelfonoC} {Centro, DireccionC}

72

Satisfaccin de dependencias funcionales


Definicin

2.

Una relacin r con esquema R satisface una dependencia funcional X Y con X,YR, si todas las tuplas de r satisfacen t1,t2R tales que t1[X]=t2[X] entonces t1[Y]=t2[Y]. La comprobacin de la satisfaccin de dependencias funcionales es necesaria en casos como la migracin de datos o la actualizacin de sistemas heredados.

73

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.

74

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 enumerable de tuplas tiR, i=1..n y n conjunto enumerable de dependencias funcionales di=Xi Yi, diD, i=1..m

for i:=1 to n-1 for j:=i+1 to n for k:=1 to m if ti[Xk]=tj[Xk] and ti[Yk]tj[Yk] then Valores inconsistentes de ti y tj debido a DF
75

Algoritmos
Algoritmo

2. Algoritmo para comprobar la integridad de la insercin de una tupla en una relacin con respecto a un conjunto de dependencias funcionales.

Entrada: relacin r con un conjunto enumerable de tuplas tiR, i=1..n, una tupla t para insertar en r y n conjunto enumerable de dependencias funcionales di=Xi Yi, diD, i=1..m .

for i:=1 to n for j:=1 to m if t[Xj]=ti[Xj] and t[Yj]ti[Yj] Valores inconsistentes de y debido a la DF

76

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 dD se deduzca de E, con el objetivo de que el coste de mantener la integridad definida en D se reduzca con E.

77

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.

78

Dependencias funcionales triviales


dependencia funcional X Y es trivial si y slo si Y X . Esto slo dice que si dos tuplas coinciden 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.
Una

79

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.

80

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 intensionalmente por 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.

81

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}

82

Cierre de un conjunto de dependencias funcionales


Notacin: Si X e Y son conjuntos de atributos, XY = XY

83

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 Armstrong en 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 .

84

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.

85

Cierre de un conjunto de dependencias funcionales


Hay

otras reglas de inferencia que se deducen de los axiomas de Armstrong y 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 X YZ 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 W entonces XZ W

86

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}, est en 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.

87

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.

88

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, 2n-1, demasiado grande aunque S sea pequeo.

89

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 tupla de 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.
90

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.

91

Cierre de un conjunto de atributos


Lema

1:

X Y se deduce de un conjunto de dependencias funcionales S Y X + S.

92

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 while cambios en resultado do for each YZ S do if Yresultado then resultado := resultado Z.

93

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 cardinalidad de S. Existen otros algoritmos de complejidad lineal.

94

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 est en S+.

95

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, ser clave candidata si el conjunto de atributos es irreducible (no hay ningn conjunto de cardinalidad menor que tal que determine funcionalmente todos los atributos de r).

96

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.

97

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 est en el cierre de S2

98

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.

99

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.

100

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.

101

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.

102

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...Yk de 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}
103

Recubrimientos mnimos de dependencias funcionales


Ejemplo

9:

{A}{B, C} {B}{C} {A}{B} {A, B}{C} {A, C}{D}

104

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 aumentatividad se obtiene {A}{A,C}, como se tiene tambin {A, C}{D}, se deduce por transitividad {A}{D}

105

Recubrimientos mnimos de dependencias funcionales


Tercer

paso:

Se puede eliminar {A, B}{C} porque se tiene {A}{C}, y por la regla de aumentatividad se 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}}

106

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.

107

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.

108

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.

109

Restricciones de Integridad
4.

Restricciones de integridad
4.1. 4.2. 4.3. 4.4. 4.5.

Restricciones de los dominios Integridad referencial Asertos Disparadores 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

110

Dependencias multivaloradas
Las

dependencias multivaloradas son restricciones de integridad que expresan relaciones entre los atributos de un esquema que no pueden ser expresables con las dependencias funcionales.

111

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.

112

Dependencias multivaloradas
Em p l ea d os Direccin c/ Argentales c/ Argentales c/ Argentales c/ Amaniel c/ Amaniel c/ Amaniel

Nombre Ana Almansa Ana Almansa Ana Almansa Ana Almansa Ana Almansa Ana Almansa

Telfono 1 2 3 1 2 3

113

Dependencias multivaloradas
Mientras

que las dependencias funcionales impiden que aparezcan ciertas tuplas en las relaciones, las dependencias multivaloradas obligan a ello. Las dependencias multivaloradas aparecen cuando en un esquema de relacin hay varias relaciones 1:N independientes entre s.

114

Dependencias multivaloradas
Definicin

10.

Dados dos subconjuntos de atributos X e Y y un esquema R, la dependencia multivalorada X Y ( X multidetermina a Y) especifica la siguiente restriccin sobre la relacin r del esquema R: si existen en r dos tuplas t1 y t2 tales que t1[X]= t2[X], entonces deben existir dos tuplas, t3 y t4, tales que: t1[X]= t2[X]= t3[X]= t4[X], t1[Y]= t3[Y] y t2[Y]= t4[Y], t2[Z]= t3[Z] y t1[Z]= t4[Z] donde Z=R-(XY)

115

Dependencias multivaloradas
Esta

definicin es ms sencilla de lo que parece si se observa el siguiente grfico.

X t1 t2 t3 t4

116

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 t1 t2

117

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 tuplas separadas 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.

118

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.

119

Dependencias multivaloradas triviales


Definicin

11.

Una dependencia multivalorada XY 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 est asociado siempre a los valores de X, lo cual es trivialmente cierto. El segundo caso se vio en la definicin de dependencia multivalorada.

120

Reglas de inferencia para las dependencias multivaloradas


Para

las dependencias multivaloradas tambin se proponen axiomas de produccin que permiten calcular el cierre de un conjunto de ellas.

1. Reflexividad para dependencias funcionales:


Si Y X, entonces XY. Si XY, entonces XZYZ. Si XY e YZ, entonces XZ. Si XY, entonces X R- (XY) Si XY y VW, entonces WXVY.

2. Aumentatividad para dependencias funcionales:


3. Transitividad para dependencias funcionales:


4. Complemento para dependencias multivaloradas:


5. Aumentatividad para dependencias multivaloradas:


121

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.

122

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 multivaloradas y las dos ltimas se refieren tanto a dependencias multivaloradas como 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+.

123

Dependencias multivaloradas
Las

dependencias multivaloradas permiten 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.

124

Dependencias multivaloradas
Las

dependencias funcionales y multivaloradas se 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.

125

También podría gustarte