Está en la página 1de 72

Ficheros y Bases de Datos Tema 4 Restricciones de integridad 1 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 2

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

Restricciones de Integridad Tipos de restricciones de integridad: Declaracin de claves. Cardinalidad de la relacin uno a uno. Restricciones de los dominios Integridad referencial Asertos Disparadores Dependencias funcionales Dependencias multivaloradas 5 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 6 de varios a varios, de uno a varios, de

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

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

11 Restricciones de dominio: Restricciones Check Ningn 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_orderCHECK(ART_NO <= 50000 OR ORDER_QTY <= 10) ) ALTER TABLE ORDER_ITEM DROP CONSTRAINT special_order ALTER TABLE ORDER_ITEM ADD CONSTRAINT special_orderCHECK(ART_NO < 50000 OR ORDER_QTY <= 10) 11 Restricciones de dominio: Restricciones Check Ningn 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_orderCHECK(ART_NO <= 50000 OR ORDER_QTY <= 10) ) ALTER TABLE ORDER_ITEM DROP CONSTRAINT special_order ALTER TABLE ORDER_ITEM ADD CONSTRAINT special_orderCHECK(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 permitavalores 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, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL W LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1), BIRTHDATE DATE, SALARY DECIMAL(9,2), BONUS DECIMAL(9,2), COMM DECIMAL(9,2)) Atributo NULLTipo de datos --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 permitavalores 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, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL W LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT,

SEX CHAR(1), BIRTHDATE DATE, SALARY DECIMAL(9,2), BONUS DECIMAL(9,2), COMM DECIMAL(9,2)) Atributo NULLTipo de datos ---

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 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 ); INSERT INTO departments (ID, DESCRIPTION) VALUES (3, Toto II ); INSERT INTO departments VALUES (4, Revelations , NULL); Toto II--3 PowerslaveAces High1 DESCRIPTIONNAMEID ERROR ERROR ERROR ERRORERROR 17 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 18

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

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_NOART_NOORDER_QTY22333 22333 40000 42500 2 8 35555 40000 1 ORDER_ITEMTabla dependiente ORDERTabla padre ORDER_NOORDER_DATEORDER_QTYORDER_REF22333 22444 35555 ARTICLETabla padre ART_NOART_NAMESTOCK_QTY40000 42500 75500 Clave ajena Clave primaria Clav e ajena Clave primaria Como puedo evitar que haya lneas de pedido que no sean de un pedido existente? 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_NOART_NOORDER_QTY22333 22333 40000 42500 2 8 35555 40000 1 ORDER_ITEMTabla dependiente ORDERTabla padre ORDER_NOORDER_DATEORDER_QTYORDER_REF22333 22444 35555 ARTICLETabla padre ART_NOART_NAMESTOCK_QTY40000 42500 75500 Clave ajena Clave primaria Clav e ajena Clave primaria Como puedo evitar que haya lneas de pedido que no sean de un pedido existente?

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 John Geyer E01 21 Clave simple Clave compuesta EMPNO FIRSTNME LASTNAME WORKDEPT 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

29 Integridad referencial: Clave Primaria E01 Support Services E11 Operations E21 Software Support . . . 000050 John 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 John B GEYER E01 000280 Ethel R SCHNEIDER E11 . . . DEPTNO EMPNO DEPT EMP Restriccin referencial PKPK FK 29 Integridad referencial: Clave Primaria E01 Support Services E11 Operations E21 Software Support . . . 000050 John 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 John B GEYER E01 000280 Ethel R SCHNEIDER E11 . . . DEPTNO EMPNO DEPT EMP Restriccin referencial PKPK FK

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 esta r definidas como NOT NULL NO ACTION: Evita que se actualice o borre la fila en la tabla padre si hay un va lor 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

33 Integridad referencial CREATE TABLE EMP (EMPNO CHAR(6) NOT NULL PRIMARY KEY, FIRSTNAME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL WITH DEFAULT, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1) BIRTHDATE DATE, SALARY DECIMAL (9,2), BONUS DECIMAL (9,2), COMM DECIMAL (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 FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL WITH DEFAULT, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3) REFERENCES DEPT ON DELETE SET NULL, PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1), BIRTHDATE DATE, SALARY DECIMAL(9,2), BONUS DECIMAL(9,2), COMM DECIMAL(9,2), PRIMARY KEY (EMPNO), FOREIGN KEY RED (WORKDEPT) REFERENCES DEPT ON DELETE SET NULL ) O bien 33 Integridad referencial CREATE TABLE EMP (EMPNO CHAR(6) NOT NULL PRIMARY KEY, FIRSTNAME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL WITH DEFAULT, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1) BIRTHDATE DATE, SALARY DECIMAL (9,2),

BONUS DECIMAL (9,2), COMM DECIMAL (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 FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL WITH DEFAULT, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3) REFERENCES DEPT ON DELETE SET NULL, PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1), BIRTHDATE DATE, SALARY DECIMAL(9,2), BONUS DECIMAL(9,2), COMM DECIMAL(9,2), PRIMARY KEY (EMPNO), FOREIGN KEY RED (WORKDEPT) REFERENCES DEPT ON DELETE SET NULL ) O bien

Integridad Referencial RI es la situacin en la que todos los valores de todas las FK son vlidos Ejemplo: PKEMP EMPNO INSERT UPDATE DELETE INSERT UPDATE DELETE FK DEPT MGRNO 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

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 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 JOHN P 5 BEAUMONT RD. 555-1411 JONES LARRY R 1921 HILL RD. 555-3242 WISE SARA J 25 RAWLINGS ST. 555-2345 JONES 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 JONES, 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 John 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)

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 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. 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 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 PGM n SGBD CUMPLIMIENTO: APLICACIN SGBD REGLAS DE NEGOCIO: Las acciones de INSERT, UPDATE, y DELETEsobre una tabla, pueden provocar que se deban realizar otras acciones para cubrir las necesidades de negocio 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

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] [Granularidad del evento] [WHEN condicin] Begin Cuerpo del trigger End; EVENTO CONDICIN ACCIN

Disparadores Temporalidad del evento BEFORE Operacin El cuerpo del disparador debe ejecutarseantes del evento que causa la activacin d el 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, po r 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 Se refiere a la nueva fila que se procesa Un ejemplo en SQL:1999: 56

Disparadores Se refiere a la nueva fila que se procesa Un ejemplo en MySQL: 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. 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 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 Id_empleado NombreE DireccinE Puesto Salario Centro DireccinC 123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 61 TelfonoC 123 123 789 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 X.Y (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,t2.R 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: X.Y no implica necesariamente Y.X. 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

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 cardinalidad entre conjuntos de atributos de una misma relacin. 70 Dependencias Funcionales Ejemplo 3. Corolario 1. Una restriccin de cardinalidad de uno a varios entre dos esquemas de relacin R1 y R2 y con superclaves X.R1 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 X.R1 e Y .R2 se especifica con las dependencias funcionales X .Ye 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. 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 .t1,t2.R 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. 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,Y.R, si todas las tuplas de r satisfacen .t1,t2.R 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. 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. 73 Satisfaccin de dependencias funcionales ..Definicin 2. ..Una relacin r con esquema R satisface una dependencia funcional X .Y con X,Y.R, si todas las tuplas de r satisfacen .t1,t2.R 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. 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 enumerable de tuplas ti.R, i=1..n y n conjunto enumerable de dependencias funcionales di=Xi .Yi, di.D, 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 76 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 ti.R, i=1..n, una tupla t para insertar en r y n conjunto enumerable de dependencias funcionales di=Xi .Yi, di.D, 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 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 enumerable de tuplas ti.R, i=1..n y n conjunto enumerable de dependencias funcionales di=Xi .Yi, di.D, 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 76 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 ti.R, i=1..n, una tupla t para insertar en r y n conjunto enumerable de dependencias funcionales di=Xi .Yi, di.D, 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

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 d.D 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 Una 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. 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 dependenciasfuncionales 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 dependenciasfuncionales 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 dependenciasfuncionales Notacin: Si X e Y son conjuntos de atributos, XY = X.Y 83 Cierre de un conjunto de dependenciasfuncionales 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 Y.X , entonces X . Y . 2. Aumentatividad: Si X . Y , entonces XZ . YZ. 3. Transitividad: Si X . Ye Y . Z , entonces X . Z . 84

Cierre de un conjunto de dependenciasfuncionales 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 dependenciasfuncionales 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 . Yy X . Z, entonces X. YZ 6. Descomposicin: Si X . YZ , entonces X . Yy 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 dependenciasfuncionales 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 dependenciasfuncionales 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 dependenciasfuncionales 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

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

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 Y.Z .S do if Y.resultado 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 una relacin r bajo todos los atributos los atributos de la si un conjunto de atributos C es superclave de un conjunto de dependencias funcionales S si de r pertenecen al cierre de C, es decir, si todos 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 dedependencias 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 dedependencias 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) dedependencias 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 dependenciasfuncionales Algoritmo 4 Calcular un recubrimiento mnimo G para un conjunto dedependencias funcionales F 1. G := F 2. Reemplazar cada dep. func. X.Y1Y2...Yk de G por k dep. func. X.Y1, X.Y2,. ..., X.Yk 3. // Eliminacin de atributos redundantes Para cada X.A . 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 {X.A}) U {X-B . A) 4. // Eliminacin de dependencias funcionales redundantes Para cada X.A . G, Calcular X+ con respecto a (G {X.A}) Si A . X+ entonces G := G {X.A} 103 Recubrimientos mnimos de dependencias funcionales Ejemplo 9: {A}.{B, C} {B}.{C} {A}.{B} {A, B}.{C} {A, C}.{D} 104

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 aumentatividad se 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 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}} 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 aumentatividad se 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 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}}

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

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 multivaloradas son 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. 111 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. 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.

Dependencias multivaloradas Empleados 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 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-(X.Y) 115 Dependencias multivaloradas Esta definicin es ms sencilla de lo que parece si se observa el siguiente grfico. XYZ t1 t2 t3 t4 116

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

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 X..Y , entonces tambin se cumple X..Z, que se representa de forma compacta como X..Y|Z. 119 Dependencias multivaloradas triviales Definicin 11. Una dependencia multivalorada X..Y se denomina trivial si Y . X o X.Y=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 lasdependencias 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 X.Y. 2. Aumentatividad para dependencias funcionales: Si X.Y, entonces XZ.YZ. 3. Transitividad para dependencias funcionales: Si X.Y e Y.Z, entonces X.Z. 4. Complemento para dependencias multivaloradas: Si X..Y, entonces X.. R-(X.Y) 5. Aumentatividad para dependencias multivaloradas: Si X..Y y V.W, entonces WX..VY. 121 Reglas de inferencia para lasdependencias multivaloradas 6. Transitividad para dependencias multivaloradas: Si X..Y e Y..Z, entonces X..(Z-Y) 7. Si X.Y, entonces X..Y. 8. Si , X.Y, y Z .Y existe un W disjunto de Y, entonces W.Z y X.Z. 122

Reglas de inferencia para lasdependencias 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.

También podría gustarte