Tema 4 Integridad v131

Embed Size (px)

Citation preview

  • 5/26/2018 Tema 4 Integridad v131

    1/63

    1

    Ficheros y Bases de Datos

    Tema 4

    Restricciones de integridad

    2

    Restricciones de Integridad

    4. Restricciones de integridad 4.1. Restricciones de los dominios

    4.2. Integridad referencial

    4.3. Asertos

    4.4. Disparadores

    4.5. Dependencias funcionales 4.5.1. Cierre de un conjunto de dependencias funcionales

    4.5.2. Cierre de un conjunto de atributos

    4.5.3. Recubrimientos mnimos de dependencias funcionales

    4.6. Dependencias multivaloradas 4.6.1. Reglas de inferencia para las dependencias multivaloradas

  • 5/26/2018 Tema 4 Integridad v131

    2/63

    3

    Objetos que viven en los SGBD

    Dentro de los SGBD viven distintos elementos relacionadosentre s

    Restriccin de Tabla

    Bases de Datos

    Tabla

    T1

    V1

    Vista

    Espacio para Tablas

    S1 ==> T1

    Sinnimo

    Indice

    IntegridadReferencial

    T1

    T2

    V1

    4

    Restricciones de integridad

    Las restricciones de integridad proporcionan un medio deasegurar que las modificaciones hechas a la base de datos porlos usuarios autorizados no provoquen la prdida de laconsistencia de los datos.

    Por tanto, las restricciones de integridad protegen a la basede datos contra los daos accidentales.

  • 5/26/2018 Tema 4 Integridad v131

    3/63

    5

    Restricciones de Integridad

    Tipos de restricciones de integridad: Declaracin de claves.

    Cardinalidad de la relacin de varios a varios, de uno a varios, deuno a uno.

    Restricciones de los dominios

    Integridad referencial

    Asertos

    Disparadores

    Dependencias funcionales

    Dependencias multivaloradas

    6

    Restricciones de Integridad

    4. Restricciones de integridad 4.1. Restricciones de los dominios

    4.2. Integridad referencial

    4.3. Asertos

    4.4. Disparadores

    4.5. Dependencias funcionales 4.5.1. Cierre de un conjunto de dependencias funcionales

    4.5.2. Cierre de un conjunto de atributos

    4.5.3. Recubrimientos mnimos de dependencias funcionales

    4.6. Dependencias multivaloradas 4.6.1. Reglas de inferencia para las dependencias multivaloradas

  • 5/26/2018 Tema 4 Integridad v131

    4/63

    7

    4.1 Restricciones de dominio

    Una definicin adecuada de las restricciones de los dominiospermite verificar los valores introducidos en la base de datos

    Tambin permite examinar las consultas para asegurarse deque tengan sentido las comparaciones que hagan.

    El principio subyacente a los dominios de los atributos esparecido al de los tipos de las variables en los lenguajes deprogramacin.

    Los lenguajes de programacin con tipos estrictos permitenal compilador examinar el programa con mayor detalle.

    8

    Restricciones de dominio

    Se ha visto que hay que asociar a cada atributo un dominiode 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 losvalores que puede tomar.

    Edad:entero 22, Acacia Avenue

  • 5/26/2018 Tema 4 Integridad v131

    5/63

    9

    Restricciones de dominio

    La clusula CREATE DOMAIN se puede usar para definir nuevosdominios. 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 Eurosresultara en un error sintctico, aunque ambos tengan el mismo tipo numrico.

    La declaracin de diferentes dominios para diferentes monedas ayuda adetectar errores.

    Los valores de un dominio pueden ser convertidos a otro dominio. Si elatributo A de la relacin r es de tipo Euros, se puede convertir a Dlaresescribiendo: cast r.A as Dlares

    10

    Restricciones de dominio

    La clusula CHECK de SQL permite restringir los dominiosde maneras poderosas que no permiten la mayor parte de lossistemas de tipos de los lenguajes de programacin.

    Permite al diseador del esquema especificar un predicadoque debe satisfacer cualquier valor asignado a una variablecuyo tipo sea el dominio.

    Las condiciones check complejas pueden ser tiles cuando sedesee asegurar la integridad de los datos, pero se deben usarcon cuidado, dado que pueden ser costosas de comprobar.

  • 5/26/2018 Tema 4 Integridad v131

    6/63

    11

    Restricciones de dominio:Restricciones Check

    Ningn valor en columna ORDER_QTYde la tabla ORDER_ITEM debe ser mayorde 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 reglasque 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

  • 5/26/2018 Tema 4 Integridad v131

    7/63

    13

    Restricciones de dominio

    Ejemplo: Restringir un dominio para que no contenga valores nulos:

    Ejemplo: Limitar dominio para que contenga slo un conjuntoespecificado 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 sueldomnimo):

    14

    Restricciones de dominio

    Dentro de las restricciones de los dominios, un tipo especialde restriccin que se puede aplicar a cualquier dominio es larestriccin de existencia.

    Esta restriccin evita la aparicin de valores nulos en lascolumnas.

    CREATE TABLE EMP

    ( EMPNO CHAR(6) NOT NULL, FI RSTNME VARCHAR( 12) NOT NULL, MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3) , PHONENO CHAR(4) , HI REDATE DATE, J OB CHAR( 8) , EDLEVEL SMALLI NT, SEX CHAR( 1) , BI RTHDATE DATE, SALARY DECI MAL( 9, 2) , BONUS DECI MAL( 9, 2) , COMM DECI MAL( 9, 2) )

    I N DBX. TSX

    Atributo NULLTipo de datos

    ---

  • 5/26/2018 Tema 4 Integridad v131

    8/63

    15

    Restricciones de dominio

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

    No se tiene en cuenta cuando se usan funciones de columna (AVG,SUM, MIN, MAX) excepto COUNT

    Dos nulos no se consideran iguales, salvo para: GROUP BY, ORDER BY

    Unicidad de columna a menos que se utilice UNIQUE WHERE NOTNULL

    NULL + 7 = NULL

    Estas instancias representancosas muy diferentes

    16

    Restricciones de dominio

    Nulos Al definir una columna se puede elegir entre:

    Admitir nulos (por omisin)

    No admitirlos Columna tipo NOT NULL

    Establecer valores por defecto Campo DEFAULT informado

  • 5/26/2018 Tema 4 Integridad v131

    9/63

    17

    Restricciones de dominio

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

    ERRORERROR

    ERRORERROR

    18

    Restricciones de dominio:Nulos en columnas numricas

    EMPNO SALARY000320000310

    000290000340000330

    19950.0015900.00

    15340.00-25370.00

    AVG(SALARY)

    19140.00

    Obtener la media de salariosde estos empleados

  • 5/26/2018 Tema 4 Integridad v131

    10/63

    19

    Restricciones de dominio:Nulos en columnas de cadenas de caracteres

    Resultado usando NULL

    EMPNO WORKDEPT000320000290000300000330

    E21-

    E11-

    EMPNO DEPTNAME

    000320 SFTWR SUPP000300 OPERATIONS

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

    DEPTNO DEPTNAMEE11E21

    -

    OPERATIONSSFTWR SUPPUNKNOWN

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

    68

    7

    2 3

  • 5/26/2018 Tema 4 Integridad v131

    11/63

    21

    Restricciones de dominio:Consideraciones de los nulos

    Los nulos extienden el lgebra relacional a un lgebra de lodesconocido.

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

  • 5/26/2018 Tema 4 Integridad v131

    12/63

    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 queaparece en una relacin para un conjunto de atributosdeterminado aparezca tambin en otra relacin para un ciertoconjunto de atributos.

    Clave

    primaria

    ORDER_NO ART_NO ORDER_QTY

    22333

    22333

    40000

    42500

    2

    8

    35555 40000 1

    ORDER_ITEM

    Tabladependiente

    ORDER

    Tablapadre

    ORDER_NO ORDER_DATE ORDER_QTY ORDER_REF

    22333

    22444

    35555

    ARTICLE

    Tablapadre

    ART_NO ART_NAME STOCK_QTY

    40000

    42500

    75500

    Claveajena

    Clave

    primaria

    Claveajena

    Clave

    primaria

    Como puedo evitar que haya lneas de pedido que no sean de unpedido existente?

  • 5/26/2018 Tema 4 Integridad v131

    13/63

    25

    Integridad referencial:Unicidad por Claves

    Una clave es un conjunto ordenadode columnas de una tabla

    Una clave compuesta est formada por varias columnas

    000010 Christine Haas A00

    000020 Michael Thompson B01000030 Sally Kwan C01000050 John Geyer E01

    21

    Clave simple Clave compuesta

    EMPNO FIRSTNME LASTNAME WORKDEPT

    26

    Integridad referencial:Columnas de identidad

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

  • 5/26/2018 Tema 4 Integridad v131

    14/63

    27

    Integridad referencial:Columnas de identidad

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

    28

    Integridad referencial

    El SGBD garantiza que slo se puede actualizar una claveprimaria (PRIMARY KEY) o nica (UNIQUE KEY) si nohay ninguna clave externa (FOREIGN KEY) que dependa deella.

  • 5/26/2018 Tema 4 Integridad v131

    15/63

    29

    Integridad referencial:Clave Primaria

    E01 Support Services

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

    Claveprimaria

    Claveprimaria

    nica no nula

    30

    Integridad referencial:Clave ajena o externa

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

    E01 Support Services

    E11 Operations

    E21 Software Support. . .

    000050 John B GEYER E01000280 Ethel R SCHNEIDER E11

    . . .

    DEPTNO

    EMPNO

    DEPT

    EMP

    Restriccin referencial

    PKPK

    FK

  • 5/26/2018 Tema 4 Integridad v131

    16/63

    31

    Integridad referencial

    Qu pasa cuando borramos una clave que es referenciada por una clave ajena? Se puede establecer cmo gestionar las relaciones cuando se producen operaciones

    como borrado o actualizacin. La creacin estara controlada si el SGBD no deja crear filas para las que no exista

    una clave ajena definida.

    CASCADE: Borra o actualiza la fila de la tabla padre y automticamente borra oactualiza las filas asociadas en la tabla hija

    SET NULL: Borra o actualiza la fila de la tabla padre y establece la clave ajena en latabla hija como NULL. Las columnas de clave ajena en la fila hija no deberan estardefinidas como NOT NULL

    NO ACTION: Evita que se actualice o borre la fila en la tabla padre si hay un valorde clave ajena que lo invalida en la tabla hija. RESTRICT: Rechaza el borrado o actualizacin en la tabla padre (simila a NO

    ACTION)

    32

    Integridad referencial

    ALTER TABLE ORDER ADD PRIMARY KEY (ORDER_NO)

    ALTER TABLEARTICLE

    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) REFERENCESARTICLE ON DELETE RESTRICT

  • 5/26/2018 Tema 4 Integridad v131

    17/63

    33

    Integridad referencial

    CREATE TABLE EMP

    ( EMPNO CHAR( 6) NOT NULL PRIMARY KEY,

    FI RSTNAME VARCHAR( 12) NOT NULL,

    MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT,LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHAR( 3) ,PHONENO CHAR(4) ,

    HI REDATE DATE,J OB CHAR( 8) ,EDLEVEL SMALLI NT,SEX CHAR( 1)BI RTHDATE DATE,

    SALARY DECI MAL ( 9, 2) ,BONUS DECI MAL ( 9, 2) ,COMM DECI MAL ( 9, 2) ,

    PRIMARY KEY (EMPNO))

    Debe usarse en casos de multicolumna

    O bien

    34

    Integridad referencial

    La tabla DEPT debe estar definida

    CREATE TABLE EMP

    ( EMPNO CHAR(6) NOT NULL

    FI RSTNME VARCHAR( 12) NOT NULL,

    MI DI NI T CHAR( 1) NOT NULL WI TH DEFAULT,

    LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHAR(3) REFERENCES DEPT ON DELETE SET NULL,

    PHONENO CHAR(4) ,

    HI REDATE DATE,

    J OB CHAR( 8) ,

    EDLEVEL SMALLI NT,

    SEX CHAR( 1) ,

    BI RTHDATE DATE,

    SALARY DECI MAL(9, 2) ,

    BONUS DECI MAL( 9, 2) ,

    COMM DECI MAL(9, 2) ,

    PRI MARY KEY ( EMPNO) ,

    FOREIGN KEY RED (WORKDEPT) REFERENCES DEPT

    ON DELETE SET NULL

    )

    O bien

  • 5/26/2018 Tema 4 Integridad v131

    18/63

    35

    Integridad Referencial

    RI es la situacin en la que todos losvalores de todas las FK son vlidos

    Ejemplo:

    PKEMPEMPNO INSERT

    UPDATE

    DELETE

    INSERT

    UPDATE

    DELETE

    FK DEPT

    MGRNO

    Que har el sistema en estos 6 casos?

    36

    Integridad referencial:Creacin de ndices

    Un ndice de una base de datos es una estructura de datos quemejora la velocidad de las operaciones, permitiendo unrpido acceso a los registros de una tabla.

    Al aumentar drsticamente la velocidad de acceso, se suelenusar sobre aquellos campos sobre los cuales se haganfrecuentes 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.

  • 5/26/2018 Tema 4 Integridad v131

    19/63

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

    Puede contener valores nulos

  • 5/26/2018 Tema 4 Integridad v131

    20/63

    39

    Integridad referencial:ndices nicos y no nicos

    PHONE NO

    555-1111

    LASTNAME FIRSTNME MIDINIT ADDRESS PHONENO

    SMITH DIANA A 2253 DAHLIA ST. 555-1111GAINES LOIS B 6094 BEAVER ST. 555-1221BROWN TERRY S 45 RIVER WALK 555-2168ADAMS SANDY A 26 CISCO LANE 555-1361FRIEDRICH JOHN P 5 BEAUMONT RD. 555-1411JONES LARRY R 1921 HILL RD. 555-3242

    WISE SARA J 25 RAWLINGS ST. 555-2345JONES LAVERNE G 504 1ST AVE. 555-1777ADAMS BOBBY D 1426 MAPLE DR. 555-1423JONES LARRY R 240 BOSWELL DR. 555-5390SMITH GRACE G 983 FAMOUS RD. 555-8764CALDWELL SIMONE B 1224 42ND ST. 555-5367

    INDICE UNICO VALOR DE CLAVE UNICAUN RID PARA CADA

    INDICE NO UNICOMLTIPLES

    RIDs

    LASTNAME, FIRSTNME

    JONES, LARRY

    Puede haber varias tuplascon el mismo valor de ndice

    No hay dos tuplas conel mismo valor de ndice

    Varias referencias paraun mismo ndice

    40

    Integridad referencial:Creacin de ndices

    LASTNAME FIRSTNME MIDINIT ADDRESS PHONENO PAGERNO

    Smith Diana A 2253 Dahlia St. 555-1111 1234Gaines Lois B 6094 Beaker St. 555-1221 --Brown Terry S 45 River Walk 555-2168 3456Adams Sandy

    A 26 Cisco Lane 555-1311 --Friedrich John P 5 Beaumont Rd. 555-1411 --

    CREATE INDEX XLAST_FIRST_MON PHONEBOOK (LASTNAME, FIRSTNME,MIDINIT)

    CREATE UNIQUE INDEX XPHONENOON PHONEBOOK (PHONENO)

    CREATE UNIQUE INDEX WHERE NOT NULL INDEX XPAGER

    ON PHONEBOOK (PAGERNO)

    CREATE INDEX XNAMEON PHONEBOOK (LASTNAME, FIRSTNME)

  • 5/26/2018 Tema 4 Integridad v131

    21/63

    41

    Restricciones de Integridad

    4. Restricciones de integridad 4.1. Restricciones de los dominios

    4.2. Integridad referencial 4.3. Asertos

    4.4. Disparadores

    4.5. Dependencias funcionales 4.5.1. Cierre de un conjunto de dependencias funcionales

    4.5.2. Cierre de un conjunto de atributos

    4.5.3. Recubrimientos mnimos de dependencias funcionales

    4.6. Dependencias multivaloradas

    4.6.1. Reglas de inferencia para las dependencias multivaloradas

    42

    4.3 Asertos

    Un aserto es un predicado que expresa una condicin que sedesea 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.

  • 5/26/2018 Tema 4 Integridad v131

    22/63

    43

    Asertos

    Ejemplos de estas restricciones pueden ser La suma de todos los importes de los prstamos de cada sucursal

    debe ser menor que la suma de todos los saldos de las cuentas de esasucursal.

    Cada prstamo tiene al menos un cliente que tiene una cuenta con unsaldo mnimo de 1200 Euros.

    En SQL-92 los asertos adoptan la forma: create assertion check

    44

    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 dela base de datos que no hagan que se viole el aserto.

    Esta comprobacin puede introducir una sobrecarga importante si se han

    realizado asertos complejos.

  • 5/26/2018 Tema 4 Integridad v131

    23/63

    45

    Restricciones de Integridad

    4. Restricciones de integridad 4.1. Restricciones de los dominios

    4.2. Integridad referencial 4.3. Asertos

    4.4. Disparadores

    4.5. Dependencias funcionales 4.5.1. Cierre de un conjunto de dependencias funcionales

    4.5.2. Cierre de un conjunto de atributos

    4.5.3. Recubrimientos mnimos de dependencias funcionales

    4.6. Dependencias multivaloradas

    4.6.1. Reglas de inferencia para las dependencias multivaloradas

    46

    4.4 Disparadores

    Un disparador es una orden que el sistema ejecuta de manera automticacomo efecto secundario de la modificacin de la base de datos.

    Los disparadores son mecanismos tiles para alertar a los usuarios o pararealizar 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

    SGBDCUMPLIMIENTO:

    APLICACIN

    SGBD

    REGLAS DENEGOCIO:

    Las acciones de INSERT,UPDATE, y DELETEsobre una tabla, puedenprovocar que se debanrealizar otras accionespara cubrir lasnecesidades de negocio

  • 5/26/2018 Tema 4 Integridad v131

    24/63

    47

    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 eldisparador

    Siguen el modelo evento-condicin-accin

    48

    Disparadores

    Los disparadores estn asociados a operaciones sobre lasfilas 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 asociadoque se ha de ejecutar

  • 5/26/2018 Tema 4 Integridad v131

    25/63

    49

    Disparadores

    Un disparador (trigger) es un procedimiento especial que seejecuta en respuesta a un evento especfico.

    Ej. Al aumentar el sueldo de un empleado, que se aumenteautomticamente 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

  • 5/26/2018 Tema 4 Integridad v131

    26/63

    51

    Disparadores

    Temporalidad del evento BEFORE Operacin El cuerpo del disparador debe ejecutarse

    antes del evento que causa la activacin del disparador

    AFTER Operacin El cuerpo del disparador debe ejecutarsedespus 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

    52

    Disparadores

    Ejemplos:

    1) CREATE OR REPLACE TRIGGER emp

    BEFORE INSERT ON empleado

    ..

    2) CREATE OR REPLACE TRIGGER salar

    AFTER DELETE OF salario ON empleado

  • 5/26/2018 Tema 4 Integridad v131

    27/63

    53

    Disparadores

    Por ejemplo, en lugar de permitir saldos de cuenta negativos,el banco trata los descubiertos dejando a cero el saldo de las

    cuentas y creando un prstamo por el importe deldescubierto.

    Este prstamo recibe un nmero de prstamo idntico alnmero de cuenta que ha tenido el descubierto.

    54

    Disparadores

    En este ejemplo la condicin para ejecutar el disparador esuna actualizacin de la relacin cuenta que d lugar a unvalor negativo de saldo.

    Supngase que Santos retir cierta cantidad de dinero de unacuenta que di lugar a que el saldo de la cuenta fueranegativo.

  • 5/26/2018 Tema 4 Integridad v131

    28/63

    55

    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 quecambiar el signo de t[saldo] para obtener el importe delprstamo 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.

    56

    Disparadores

    Se refiere a la nueva

    fila que se procesa

    Un ejemplo en SQL:1999:

  • 5/26/2018 Tema 4 Integridad v131

    29/63

    57

    Disparadores

    Se refiere ala nuevafila que seprocesa

    Un ejemplo en MySQL:

    58

    Disparadores

    Ejemplo de gestin de disparadores combinado conla utilizacin de secuencias, por ejemplo en Oracle:

    Trigger para insertarnuevos identificadoresa partir de la secuencia

  • 5/26/2018 Tema 4 Integridad v131

    30/63

    59

    Restricciones de Integridad

    4. Restricciones de integridad 4.1. Restricciones de los dominios

    4.2. Integridad referencial 4.3. Asertos

    4.4. Disparadores

    4.5. Dependencias funcionales 4.5.1. Cierre de un conjunto de dependencias funcionales

    4.5.2. Cierre de un conjunto de atributos

    4.5.3. Recubrimientos mnimos de dependencias funcionales

    4.6. Dependencias multivaloradas

    4.6.1. Reglas de inferencia para las dependencias multivaloradas

    60

    Dependencias Funcionales

    Una dependencia funcional (DF) es una propiedad semnticade un esquema de relacin que presentan las tuplas vlidas dela relacin que determina para cada valor de un conjunto deatributos X el valor de otro conjunto de atributos Y.

    Es decir, dada una tupla t1 de la relacin con un valor para Xy otro para Y, si aparece otra tupla t2 con el mismo valor paraX, entonces esta tupla debe tener el mismo valor en Y que t1.

  • 5/26/2018 Tema 4 Integridad v131

    31/63

    61

    Dependencias Funcionales

    Ejemplo 1. En la siguiente relacin se combinan los datos de los empleados,

    como su cdigo de identificacin y nombre, y de los centros a losque estn adscritos, como la direccin y el telfono.

    Empleados_Centros

    Id_empleado NombreE DireccinE Puesto Salario Centro DireccinC TelfonoC123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789

    62

    Dependencias Funcionales

    En este ejemplo se muestra grficamente que el valor delconjunto de campos DireccinC y TelfonoC depende delvalor del campo Centro.

    En concreto, a un centro en particular le correspondenunvocamente una direccin y un telfono.

    Es decir, cada vez que aparezca una fila con el valorInformtica para Centro, siempre le corresponder losmismos valores para los campos DireccinC y TelfonoC.

  • 5/26/2018 Tema 4 Integridad v131

    32/63

    63

    Dependencias Funcionales

    Se dice entonces que tanto DireccinC como TelfonoC sondependientes funcionalmente de Centro.

    Por cada fila con un mismo valor de Centro se repiten losvalores DireccinC y TelfonoC, lo que implica unaredundancia de valores no deseable que se estudiar msadelante en la normalizacin de relaciones.

    64

    Dependencias Funcionales

    La validez de una relacin con respecto a las DF se interpretadesde 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 larelacin conociendo perfectamente su semntica.

    Una DF define los estados consistentes de una relacin enfuncin de las dependencias entre los valores de losatributos.

  • 5/26/2018 Tema 4 Integridad v131

    33/63

    65

    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 quepueden definirla y r una instancia del esquema R.

    Una dependencia funcional XY (los valores de Xdeterminan unvocamente (o funcionalmente) los valores deY) entre dos conjuntos de atributos X e Y , tales que X,Y Respecifica la siguiente restriccin:

    t1,t2R tales que t1[X]=t2[X] entonces t1[Y]=t2[Y]

    66

    Dependencias Funcionales

    X se denomina antecedente e Y consecuente.

    En otras palabras, quiere decir que los componentes Y decada tupla de r estn determinados unvocamente por los

    valores de X.

  • 5/26/2018 Tema 4 Integridad v131

    34/63

    67

    Dependencias Funcionales

    Observaciones: XY no implica necesariamente YX.

    Ejemplo 2. {Nif}{nombre}

    Sin embargo, {Nombre}{Nif} no es cierto puesto que se puedenrepetir nombres para diferentes personas.

    68

    Dependencias Funcionales

    No se debe confiar en general en la dependencia funcional{Nif}{Nombre} porque en la prctica tambin hay Nifrepetidos.

    Por ello, en las bases de datos generalmente se usa unidentificador propio que identifica unvocamente cada tuplaasociada a una persona.

  • 5/26/2018 Tema 4 Integridad v131

    35/63

    69

    Dependencias Funcionales

    Una dependencia funcional determina una relacin uno avarios entre dos conjuntos de atributos:

    Para un valor de X slo puede haber un valor de Y, peropara un valor de Y habr en general varios de X.

    Por lo tanto, una dependencia funcional se puede observarcomo una restriccin de cardinalidad entre conjuntos deatributos 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 XR1 e Y R2 se especificacon la dependencia funcional X Y en un nuevo esquema derelacin R3.

    Una restriccin de cardinalidad de uno a uno entre dos esquemas derelacin R1 y R2 con superclaves XR1 e Y R2 se especifica con

    las dependencias funcionales X Y e YX en un nuevo esquemade 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 TelfonoC123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123

    012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789

    X Y

  • 5/26/2018 Tema 4 Integridad v131

    36/63

    71

    Dependencias Funcionales

    Una superclave se puede definir en trminos de dependenciasfuncionales. 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=t2porque deben coincidir entodos sus atributos, por lo que se est hablando de la mismatupla.

    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 TelfonoC123A Ana Almansa c/ Argentales Profesor 20.000 Informtica c/ Complutense 123012D David Daz c/ Daroca Ayudante 10.000 Informtica c/ Complutense 123789C Carlos Crespo c/ Cruz Catedrtico 30.000 Empresariales c/ Corua 789

    X Y

  • 5/26/2018 Tema 4 Integridad v131

    37/63

    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 talesque t1[X]=t2[X] entonces t1[Y]=t2[Y].

    La comprobacin de la satisfaccin de dependencias funcionales esnecesaria en casos como la migracin de datos o la actualizacin desistemas heredados.

    74

    Satisfaccin de dependencias funcionales

    Bajo esta definicin se pueden proponer algoritmos sencillospara comprobar la satisfaccin de un conjunto dedependencias funcionales de una relacin r, o paracomprobar la validez de la insercin de una tupla.

  • 5/26/2018 Tema 4 Integridad v131

    38/63

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

    i=1..n y n conjunto enumerable de dependencias funcionalesdi=Xi Yi, diD, i=1..m

    for i:=1 to n-1

    for j:=i+1 to n

    for k:=1 to mif 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 dedependencias 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 dedependencias funcionales di=Xi Yi, diD, i=1..m .

    for i:=1 to nfor j:=1 to m

    if t[Xj]=ti[Xj] and t[Yj]ti[Yj]

    Valores inconsistentes de y debido a la DF

  • 5/26/2018 Tema 4 Integridad v131

    39/63

    77

    Mnimas dependencias funcionales

    Las dependencias funcionales representan restricciones deintegridad 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 lomenor posible que D de manera que cada dD se deduzcade E, con el objetivo de que el coste de mantener laintegridad definida en D se reduzca con E.

    78

    Mnimas dependencias funcionales

    Una de las maneras de reducir el coste del aseguramiento dela consistencia mediante dependencias funcionales eseliminar las que no aportan nada semnticamente, es decir,son dependencias funcionales que cumple cualquier tupla.

  • 5/26/2018 Tema 4 Integridad v131

    40/63

    79

    Dependencias funcionales triviales

    Una dependencia funcional X Y es trivial si y slo siYX .

    Esto slo dice que si dos tuplas coinciden en una serie deatributos, entonces coinciden (obviamente) en unsubconjunto de esos mismos atributos.

    Se denomina trivial porque no aporta ninguna restriccin alesquema de relacin.

    80

    Dependencias funcionales

    En general interesar encontrar el conjunto mnimo dedependencias funcionales que sea semnticamenteequivalente (asegure el mismo nivel de integridad) a unconjunto dado de dependencias funcionales aportadas por eldiseador de la base de datos.

  • 5/26/2018 Tema 4 Integridad v131

    41/63

    81

    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 dependenciasfuncionales que se pueden deducir de S.

    Este concepto es importante para poder determinar laequivalencia semntica de dos conjuntos de dependencias ypoder elegir el menor de forma que la comprobacin de susatisfaccin sea ms rpida.

    Por otra parte, permite razonar sobre la descomposicin derelaciones que se estudia en el tema Normalizacin.

    82

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

  • 5/26/2018 Tema 4 Integridad v131

    42/63

    83

    Cierre de un conjunto de dependenciasfuncionales

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

    84

    Cierre de un conjunto de dependenciasfuncionales

    Para calcular el cierre de un conjunto de dependenciasfuncionales se dispone de un conjunto de axiomas deproduccin denominados Axiomas de Armstrong en honor ala 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 .

  • 5/26/2018 Tema 4 Integridad v131

    43/63

    85

    Cierre de un conjunto de dependenciasfuncionales

    Estos axiomas son correctos en cuanto que derivaninformacin consistente con la definicin de dependencia

    funcional.Adems son completos porque permiten deducir todas las

    consecuencias de un conjunto de dependencias funcionales,es decir, su cierre.

    86

    Cierre de un conjunto de dependenciasfuncionales

    Hay otras reglas de inferencia que se deducen de los axiomasde Armstrong y que permiten calcular el cierre de unconjunto 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 ZW , entonces XZ YW.

    8. Pseudotransitividad: Si X Y , YZW entonces XZW

  • 5/26/2018 Tema 4 Integridad v131

    44/63

    87

    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.

    88

    Cierre de un conjunto de dependenciasfuncionales

    Se puede desarrollar un algoritmo que calcule el cierre delconjunto de dependencias funcionales a partir de slo las tresprimeras reglas de inferencia aplicndolas repetidamentehasta que no se produzcan ms dependencias funcionales (sealcance el punto fijo).

    Este algoritmo es seguro con respecto a la completitud de losaxiomas.

    La demostracin de completitud necesita la nocin de cierrede un conjunto de atributos.

  • 5/26/2018 Tema 4 Integridad v131

    45/63

    89

    Cierre de un conjunto de dependenciasfuncionales

    Sin embargo, tambin es un algoritmo muy ineficiente por lacantidad 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 XYitales que Y{B1,...,Bn}, es decir, 2n-1, demasiado grande aunque Ssea pequeo.

    90

    Cierre de un conjunto de atributos

    En la prctica no es necesario en general calcular todo elcierre de un conjunto de dependencias. Es ms interesantecalcular el conjunto de las dependencias que tienen en suparte 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 sucierre. Se puede determinar si su comprobacin es redundante para laintegridad de los datos.

    2. Comprobar si un conjunto de atributos es superclave. Asegura queel conjunto de atributos elegido por el diseador es adecuado paradeterminar unvocamente cada tupla de una relacin. Permitedeterminar superclaves que se pueden usar como ndice sin repetidos

    (algoritmo de indexacin ms eficiente) para el acceso a los datosmediante consultas. 3. Calcular un conjunto mnimo de dependencias funcionales. til

    para mantener la comprobacin de integridad menos costosa.

  • 5/26/2018 Tema 4 Integridad v131

    46/63

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

  • 5/26/2018 Tema 4 Integridad v131

    47/63

    93

    Cierre de un conjunto de atributos:Algoritmo

    Algoritmo 3. Entrada: Conjunto de atributos X y un conjunto de dependencias

    funcionales S. Salida: X+S.

    resultado := X

    while cambios en resultado do

    for each YZ S do

    if Yresultado then resultado := resultado Z.

    94

    Cierre de un conjunto de atributos:Algoritmo

    Se puede demostrar que el algoritmo es correcto y completo.

    El algoritmo tiene una complejidad cuadrtica con lacardinalidad de S.

    Existen otros algoritmos de complejidad lineal.

  • 5/26/2018 Tema 4 Integridad v131

    48/63

    95

    Cierre de un conjunto de atributos:Algoritmo

    Corolario 2. Se puede determinar si una dependencia funcional X Y se deduce

    de un conjunto de dependencias funcionales S si Y

    X+

    S. Se puede determinar, por tanto, en tiempo lineal, si una dependencia

    funcional est en S+.

    96

    Cierre de un conjunto de atributos:Algoritmo

    Corolario 3. Se puede determinar si un conjunto de atributos C es superclave de

    una relacin r bajo un conjunto de dependencias funcionales S sitodos 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 talque determine funcionalmente todos los atributos de r).

  • 5/26/2018 Tema 4 Integridad v131

    49/63

    97

    Cierre de un conjunto de atributos:Algoritmo

    Ya es posible definir lo que es un recubrimiento mnimo dedependencias o conjunto irreducible equivalente, que va a

    permitir mantener la integridad definida por un conjunto dedependencias funcionales a coste mnimo.

    Para definir un recubrimiento mnimo hay que definir dosconceptos: el recubrimiento de un conjunto de dependenciasfuncionales y la equivalencia entre conjuntos dedependencias funcionales.

    98

    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 sededuce de S2 es decir, se puede demostrar que cada dependencia de S1 est en el

    cierre de S2

  • 5/26/2018 Tema 4 Integridad v131

    50/63

    99

    Equivalencia entre conjuntos dedependencias funcionales

    Definicin 7.

    Dos conjuntos de dependencias funcionales S1 y S2 sonequivalentes si S1+ = S2+.

    De forma alternativa se define como Dos conjuntos de dependencias funcionales S1 y S2 son equivalentes si

    S1 es un recubrimiento de S2 y S2 es un recubrimiento de S1.

    100

    Conjunto mnimo (o irreducible) 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 unatributo.

    2. La parte izquierda de cada dependencia funcional de S es irreducibleen el sentido en que si se elimina algn atributo, necesariamente cambiael cierre de S.

    3. No se puede eliminar ninguna dependencia funcional de S sincambiar su cierre.

  • 5/26/2018 Tema 4 Integridad v131

    51/63

    101

    Recubrimientos mnimos dedependencias funcionales

    Definicin 9. Recubrimiento mnimo de un conjunto de dependencias funcionales

    Al conjunto mnimo de dependencias funcionales S1 equivalente aS2 se le denomina recubrimiento mnimo de S2.

    Se puede demostrar que todo conjunto de dependencias funcionalestiene al menos un recubrimiento mnimo, por lo que se plantea elsiguiente lema.

    102

    Recubrimientos mnimos dedependencias funcionales

    Lema 2. Todo conjunto S de dependencias funcionales tiene un conjunto de

    dependencias funcionales equivalente en el que el lado derecho decada dependencia funcional tiene un nico atributo.

    Teorema 1. Todo conjunto de dependencias funcionales tiene al menos un

    recubrimiento mnimo.

  • 5/26/2018 Tema 4 Integridad v131

    52/63

    103

    Recubrimientos mnimos de dependenciasfuncionales

    Algoritmo 4Calcular un recubrimiento mnimo G para un conjunto de

    dependencias funcionales F

    1. G := F2. Reemplazar cada dep. func. XY1Y2...Yk de G por k dep. func.

    XY1, XY2,. ..., XYk3. // 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. GSi A {X-B}+ entonces

    G := (G {XA}) U {X-B A)4. // Eliminacin de dependencias funcionales redundantesPara cada XA G, Calcular X+ con respecto a (G {XA})

    Si A X+ entoncesG := G {XA}

    104

    Recubrimientos mnimos dedependencias funcionales

    Ejemplo 9: {A}{B, C}

    {B}{C}

    {A}{B}

    {A, B}{C}

    {A, C}{D}

  • 5/26/2018 Tema 4 Integridad v131

    53/63

    105

    Recubrimientos mnimos dedependencias 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 altercer 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 setiene tambin {A, C}{D}, se deduce por transitividad {A}{D}

    106

    Recubrimientos mnimos dedependencias 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 partesderecha de las dependencias funcionales tienen un soloatributo, las partes izquierda no son reducibles (ya que sonunitarias) y no se puede eliminar ninguna dependencia

    funcional sin alterar S+

    : T={{A}{B}, {B}{C}, {A}{D}}

  • 5/26/2018 Tema 4 Integridad v131

    54/63

    107

    Recubrimientos mnimos dedependencias funcionales

    Para comprobar que no se puede eliminar ningunadependencia 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 secumple.

    Por lo tanto, es irreducible.

    108

    Dependencias funcionales

    Las dependencias funcionales permiten imponer restriccionesde integridad que no son posibles de expresar con claves.

    Una dependencia funcional es una generalizacin del

    concepto de superclave.

  • 5/26/2018 Tema 4 Integridad v131

    55/63

    109

    Dependencias funcionales

    Se ha mostrado un procedimiento que permite determinar elmnimo nmero de dependencias funcionales necesario para

    la comprobacin de la consistencia de una relacin a partir deun conjunto inicial de dependencias funcionales.

    Con este procedimiento el diseador de la base de datos tieneuna herramienta muy til para mejorar el rendimiento de susdiseos.

    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

  • 5/26/2018 Tema 4 Integridad v131

    56/63

    111

    Dependencias multivaloradas

    Las dependencias multivaloradas son restricciones deintegridad que expresan relaciones entre los atributos de un

    esquema que no pueden ser expresables con las dependenciasfuncionales.

    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 ytelfono, y que no se dispone informacin acerca del tipo de

    telfono, fijo o mvil, por lo que no se puede relacionar con undomicilio.

    Estos atributos son independientes entre s. Para mantener la relacinconsistente es necesario expresar todas las combinaciones de losatributos.

  • 5/26/2018 Tema 4 Integridad v131

    57/63

    113

    Dependencias multivaloradas

    Em p lea d os

    Nombre Direccin TelfonoAna Almansa c/ Argentales 1Ana Almansa c/ Argentales 2Ana Almansa c/ Argentales 3Ana Almansa c/ Amaniel 1Ana Almansa c/ Amaniel 2Ana Almansa c/ Amaniel 3

    114

    Dependencias multivaloradas

    Mientras que las dependencias funcionales impiden queaparezcan ciertas tuplas en las relaciones, las dependenciasmultivaloradas obligan a ello.

    Las dependencias multivaloradas aparecen cuando en unesquema de relacin hay varias relaciones 1:Nindependientes entre s.

  • 5/26/2018 Tema 4 Integridad v131

    58/63

    115

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

    116

    Dependencias multivaloradas

    Esta definicin es ms sencilla de lo que parece si se observael siguiente grfico.

    X Y Z

    t1

    t2

    t3

    t4

  • 5/26/2018 Tema 4 Integridad v131

    59/63

    117

    Dependencias multivaloradas

    En definitiva se imponen todas las combinaciones de losvalores de los atributos Y y Z.

    Si Z es vaco o sus valores son nicos, necesariamente t1 =t3y t2 =t4 , es decir, estamos hablando slo de dos tuplas.

    X Yt1

    t2

    118

    Dependencias multivaloradas

    Informalmente se dice que siempre que existan dos tuplascon valores iguales de X pero distintos de Y, los valores de Yse deben repetir en tuplas separadas por cada valor distintode Z.

    En definitiva, con esta restriccin se dice que la relacinentre X e Y es independiente de la relacin entre X y Z.

  • 5/26/2018 Tema 4 Integridad v131

    60/63

    119

    Dependencias multivaloradas

    Ejemplo 11. En el ejemplo anterior se observan las restricciones multivaloradas

    {Nombre}

    {Direccin} y {Nombre}

    {Telfono} . Debido a la simetra de la definicin (se pueden intercambiar los

    papeles de Y y Z ) se deduce que si se cumple XY , entoncestambin se cumple XZ, que se representa de forma compactacomo

    XY|Z.

    120

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

    En el primer caso, Y X , slo se impone que un subconjunto delos valores de X est asociado siempre a los valores de X, lo cual estrivialmente cierto.

    El segundo caso se vio en la definicin de dependenciamultivalorada.

  • 5/26/2018 Tema 4 Integridad v131

    61/63

    121

    Reglas de inferencia para lasdependencias multivaloradas

    Para las dependencias multivaloradas tambin se proponenaxiomas de produccin que permiten calcular el cierre de un

    conjunto de ellas. 1. Reflexividad para dependencias funcionales:

    Si Y X, entonces XY.

    2. Aumentatividad para dependencias funcionales: Si XY, entonces XZYZ.

    3. Transitividad para dependencias funcionales: Si XY e YZ, entonces XZ.

    4. Complemento para dependencias multivaloradas:

    Si XY, entonces X R- (XY) 5. Aumentatividad para dependencias multivaloradas:

    Si XY y VW, entonces WXVY.

    122

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

  • 5/26/2018 Tema 4 Integridad v131

    62/63

    123

    Reglas de inferencia para lasdependencias multivaloradas

    Las tres primeras son las mismas reglas que los axiomas deArmstrong, las tres siguientes se refieren a dependencias

    multivaloradas y las dos ltimas se refieren tanto adependencias multivaloradas como funcionales.

    En concreto, la sptima se refiere a que una dependenciafuncional es un caso particular de una dependenciamultivalorada.

    Se puede demostrar que este conjunto de reglas de inferenciaes correcto y completo para calcular el cierre de un conjunto

    de dependencias, denotado por S+

    .

    124

    Dependencias multivaloradas

    Las dependencias multivaloradas permiten asegurar laconsistencia cuando se expresan atributos multivaloradosindependientes en un nico esquema de relacin.

    Las dependencias funcionales permiten establecer relacionesuno a varios y uno a uno entre los atributos de un esquema derelacin, mientras que las dependencias multivaloradaspermiten expresar relaciones varios a varios.

  • 5/26/2018 Tema 4 Integridad v131

    63/63

    125

    Dependencias multivaloradas

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