INTEGRIDAD REFERENCIAL

Documentos relacionados
Restricciones de Integridad

Carlos A. Olarte Ligaduras de Integridad y Restricciones sobre la BD

Modelo Relacional. El modelo relacional...1 El modelo entidad relación (que vimos ayer) es un modelo conceptual que sirve

Integridad Referencial. Restricciones (constraints)

Ing. Yim Isaias Apestegui Florentino

Fundamentos de Bases de Datos Facultad de Ciencias UNAM

BASES DE DATOS (IG18 Semipresencial) El Modelo Relacional Reglas de Integridad

Modelo relacional. El modelo relacional

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

MODELO RELACIONAL BASE DE DATOS RELACIONALES

Tema II: El modelo relacional de datos. (2.4)

Introducción a las Bases de Datos

id_trabajador nombre tarifa_hr tipo_de_oficio id_supv 1235 F. Aguilera 12,50 Electricista A. Calvo 13,75 Fontanero N.

El Modelo Relacional de Bases de Datos

GESTORES GESTORES DE BASES DE DATOS

Práctica 4: Estudio del SGBD Oracle 10 Gestión de Transacciones

TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD)

Transformación ER Relacional para el diseño de bases de datos relacionales

EL MODELO RELACIONAL

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

Bases de Datos OTROS ASPECTOS MODELO E-R

CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS.

Asignatura: Administración de Bases de Datos

TEMA 4: EL MODELO RELACIONAL. ESTÁTICA

UNIDAD 1: CONCEPTOS BA SICOS DE BASE DE DATOS

NORMAS DE DISEÑO DE BASE DE DATOS

Microsoft Virtual Academy

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

RESUMEN DEL LENGUAJE SQL

GBD Diseño físico de DDBB

El modelo relacional y el álgebra relacional

TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD)

Lenguaje SQL (2ª Parte) Definición de datos

Insertar Datos en Tablas

Conocimiento de las Bases de Datos relacionales.

EJEMPLOS PRÁCTICOS SQL

Bases de Datos. Laboratorio III, L106/L111. Profesor: Goyo Celada

Oracle Express y Toad for Oracle

Conceptos de Bases de Datos Relacionales Triggers

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

Tema II: El modelo relacional de datos. (2.4)

EJERCICIO SQL CREACIÓN Y CONSULTAS EN UNA BASE DE DATOS BANCARIA. Pág. 1 de 18

- Bases de Datos - - Diseño Físico - Luis D. García

Base de Datos Práctica 1.

PBS 8 Gestión de Riesgos y Controles Internos

1.- Etapas del diseño lógico Diseño lógico estándar Diseño lógico específico 2.- Transformación del esquema conceptual al lógico estándar

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Modelos de Datos. Modelo Entidad-Relación

REGLAS DE CODD DEL MODELO RELACIONAL

SQLModificaciones a la BD

El modelo relacional y el álgebra relacional

El Sistema Gestor de Base de Datos (DBMS)

Materia requisito: DOMINIOS COGNITIVOS (Objetos de estudio, temas y subtemas) I. INTRODUCCION A LAS BASES DE DATOS

Bases de datos 1. Teórico: Modelo Relacional

Oracle Database y Oracle SQL Developer

Diseño Lógico Modelo Relacional. Ges3ón y Modelación de Datos María Constanza Pabón

Restricciones de Integridad. Claves Primarias. Protección. Índice. Clave de una Relación. Declaración n de Claves

Modelos y Bases de Datos

Metodología de Diseño Lógico. Sistemas Gestores de Bases de Datos

Tema 3 Modelo relacional

PRUEBA DE NIVEL DE ACCES

Diseño Lógico El modelo relacional. M.Sc.Lic. Cimar H. Meneses España

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Relaciones en Access 2010

Bases de Datos y Sistemas de Información

El Modelo Relacional. Carlos A. Olarte BDI

Modelo relacional de datos. Modelo relacional de datos. Presentación y orígenes del MR. Modelo relacional de datos

En primer lugar se obtiene el modelo lógico de alto nivel, independiente del modelo de base de datos y los objetivos a conseguir son:

Bases de Datos. Sistemas de Gestión de Bases de Datos

PROPIEDADES DE LOS CAMPOS. Cada campo de una tabla dispone de una serie de características que proporcionan un control

Apéndice A: Documentación Base de Datos.

Diseñar la base de datos biblioteca Soluciones:

DI SEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN (31 de mayo de 2005) 3DUFLDO. APELLIDOS: NOMBRE: TITULACIÓN (Sistemas/Gestión):

Informática Básica Práctica Tema 3 Ejercicios de SQL

entre menú y plato con cardinalidades (0,N) y (3,3), respectivamente. Esta solución garantiza que no se puede "repetir" un plato en el (1,1)

1.Introducción al Modelo Relacional.

Una empresa almacena la información de sus empleados en dos tablas llamadas "empleados" y "secciones". Eliminamos las tablas, si existen:

Computación Web (Curso 2015/2016)

El Modelo Relacional: Está1ca. El Modelo Relacional Tema 7

Introducción a las Bases de Datos y al Modelo Relacional

BASES DE DATOS 2º CURSO E.U.I. / F.I. Práctica 4: Estudio del SGBD ORACLE8 1 Gestión de transacciones 22 DE MAYO DE 2000

Nomenclatura para Tablas, Triggers, Secuencias, Procedimientos Almacenados y Constraints

Diseño e Implementación SQL Server

La relación r es subordinada. La entidad e es dominante.

La relación r es subordinada. La entidad e es dominante.

Introducción a SQL 07/11/2014. Introducción a SQL

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Ítems/Entidades/Objetos [sustantivos]: Objetos que existen en el mundo y que son

Nomenclatura para Tablas, Triggers, Secuencias, Procedimientos Almacenados y Constraints

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Gestor de bases de datos MicroSoft Access (2 de 4)

- Bases de Datos (2012/2013) Tema 2: Diseño lógico. Modelo Relacional

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

Restricciones (constraints) FOREIGN KEY

4. FUNDAMENTOS DEL MODELO RELACIONAL

Tema II: El modelo relacional de datos Objetivos:

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

6. Integridad en Sistemas de Bases de Datos Relacionales

EJERCICIO SQL BIBLIOTECA

Transcripción:

INTEGRIDAD REFERENCIAL 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 pérdida de la consistencia de los datos. Por tanto, las restricciones de integridad protegen a la base de datos contra los daños accidentales. Una base de datos contiene unos datos que, en cada momento, deben reflejar la realidad o, más concretamente, la situación de una porción del mundo real. En el caso de las bases de datos relacionales, esto significa que las tuplas o filas que contienen las relaciones deben tener valores que reflejen la realidad correctamente. Ejemplo: En la relación de esquema (DNI, nombre, apellido, sueldo), una tupla que tiene un valor de 1.000 para el sueldo probablemente no tiene sentido, porque los sueldos no pueden ser negativos. Como es evidente, para que los datos sean íntegros, es preciso que cumplan varias condiciones. El hecho de que los sueldos no. puedan ser negativos es una condición que se debería cumplir en la relación En general, las condiciones que garantizan la integridad de los datos pueden ser de dos tipos: 1) Las restricciones de integridad de usuario son condiciones específicas de una base de datos concreta; es decir, son las que se deben cumplir en una base de datos particular con unos usuarios concretos, pero que no son necesariamente relevantes en otra base de datos. Restricción de integridad de usuario en Éste sería el caso de la condiciónn anterior, según la cual los sueldos no podían ser negativos. Observe que esta condición era necesaria en la base de datos concreta de este ejemplo porque aparecía el atributo sueldo, al que se quería dar un significado; sin embargo, podría no ser necesaria en otra base de datos diferente donde, por ejemplo, no hubiese sueldos. 2) Las reglas de integridad de modelo, en cambio, son condiciones más generales, propias de un modelo de datos, y se deben cumplir en toda base de datos que siga dicho modelo. Ejemplo de regla de integridadd del modelo de datos relacional En el caso del modelo de datos relacional, habrá una regla de integridad para garantizar que los valores de una clave primaria de una relación no se repitan en tuplas diferentes de la relación. Toda base de datos relacional debe cumplir esta regla que, por lo tanto, es una regla de integridad del modelo. Los SGBD deben proporcionar la forma de definir las restricciones de integridad de usuario de una base de datos; una vez definidas, deben velar por su cumplimiento.

Las reglas de integridad del modelo, en cambio, no se deben definir para cada base de datos concreta, porque se consideran preestablecidas para todas las base de datos de un modelo. Un SGBD de un modelo determinado debe velar por el cumplimiento de las reglas de integridad preestablecidas por su modelo. A continuación estudiaremos con detalle las reglas de integridad del modelo relacional, reglas que todo SGBD relacional debe obligar a cumplir. 1. REGLA DE INTEGRIDADD DE UNICIDAD DE LA CLAVE PRIMARIA La regla de integridad de unicidadd está relacionada con la definición de clave primaria. Concretamente, establece que toda clave primaria que se elija para una relación no debe tener valores repetidos. Ejemplo Tenemos la siguiente relación: SALON ID_SALON ID_EDIFICIO DIMENSIÓN 101 10 102 14 103 14 20 103 15 En esta relación, dado que la clave primaria está formada por ID-SALON y ID-EDIFICIO, no hay ningún salón que repita tanto id-edificio como número de otro salón. Sin embargo, sí se repiten valores de id-edificio (por ejemplo, ); y también se repiten valores de id-salón (103). A pesar de ello, el edificio y el número no se repiten nunca al mismo tiempo. Un SGBD relacional deberá garantizar el cumplimiento de esta regla de integridad en todas las inserciones, así como en todas las modificaciones que afecten a atributos que pertenecen a la clave primaria de la relación. CÓDIGO CREACIÓN DE CLAVE PRIMARIA (PRIMARY KEY) EN MYSQL Create table salon( Id_salon integer not null, Id_edificio integer not null, Dimension integer not null, PRIMARY KEY(ID_SALON,ID_EDIFICIO));

2. REGLA DE INTEGRIDAD DE ENTIDAD DE LA CLAVE PRIMARIA La regla de integridad de entidad de la clave primaria dispone que los atributos de la clave primaria de una relación no puedan tener valores nulos. Ejemplo Tenemos la siguiente relación: SALON ID-SALON ID-EDIFICIO DIMENSIÓN 101 10 102 14 103 14 20 103 15 En esta relación, puesto que la clave primaria está formada por ID-EDIFICIO y ID-SALÓN, no hay ningún salón que tenga un valor nulo para id-edificio, ni tampoco para id-salón. Esta regla es necesaria para que los valores de las claves primarias puedan identificar las tuplas individuales de las relaciones. Si las claves primarias tuviesen valores nulos, es posible que algunas tuplas no se pudieran distinguir. Un SGBD relacional tendrá que garantizar el cumplimiento de esta regla de integridad en todas las inserciones y, también, en todas las modificaciones que afecten a atributos que pertenecen a la clave primaria de la relación. Establecer valores no nulos (NOT NULL) en MYSQL Cuando se crean las tablas, los campos que se requieren que sean NO NULOS deben tener la sentencia NOT NULL después de especificar el tipo de dato: Create table salon( Id_salon integer NOT NULL, Id_edificio integer NOT NULL, Dimension integer NOT NULL, Primary key(id_salon,id_edificio));

3. REGLA DE INTEGRIDADD REFERENCIAL La regla de integridad referencial está relacionada con el concepto de clave foránea. Concretamente, determina que todos los valores que toma una clave foránea deben ser valores nulos o valores que existen en la clave primaria que referencia. Ejemplo Si tenemos las siguientes relaciones: SALON ID-SALON ID-EDIFICIO DIMENSIÓN 101 10 102 14 103 14 20 103 15 ESTUDIANTES CODIGO NOMBRE APELLIDO SALON_IDSALON 12376876 JUAN ROJAS 101 32345412 FEDERICO PEREZ 101 22312376 ANTONIO DIAZ 102 34345645 FERNANDO LALINDE 103 SALON_IDEDIFICIO 15 Donde SALON-ID-EDIFICIO y SALON-ID-SALON de la relación ESTUDIANTES forman una clave foránea que referencia la relación SALÓN. Debe ocurrir que los valores no nulos de SALON-ID-EDIFICIO y SALON-ID-SALON de la relación ESTUDIANTES estén en la relación SALÓN como valores de ID-SALON y ID-EDIFICIO. Por ejemplo, el empleado <22312376, ANTONIO DIAZ, 102,> tiene el valor para ID-EDIFICIO y el valor 102 para ID-SALÓNvalor para ID-EDIFICIO y con valor 102 para de modo que en la relación SALÓN hay un salón con ID-SALÓN. La necesidad de la regla de integridad relacional proviene del hecho de que las claves foráneas tienen por objetivo establecer una conexión con la clave primaria que referencian. Si un valor de una clave foránea no estuviese presente en la clave primaria correspondiente, representaría una referencia o una conexión incorrecta. Código de creación de clave foránea (FOREIGN KEY) en MYSQL Create table salon( Id_salon integer not null, Id_edificio integer not null, Dimension integer not null, Primary key(id_salon,id_edificio)); Create table estudiantes( Codigo integer not null, Apellido varchar(20) not null, Salon_idsalon integer not null, Salon_idedificio integer not null, Primary key(codigo), FOREIGN KEY (SALON_IDSALON,SALON_IDEDIFICIO) REFERENCES SALON(ID_SALON,ID_EDIFICIO));

Un SGBD relacional tendrá que hacer cumplir esta regla de integridad. Deberá efectuar comprobaciones cuando se produzcan las siguientes operaciones: a) Inserciones en una relación que tenga una clave foránea. b) Modificaciones que afecten a atributos que pertenecen a la clave foránea de una relación. c) Borrados en relaciones referenciadas por otras relaciones. d) Modificaciones que afecten a atributos que pertenecen a la clave primaria de una relación referenciada por otra relación. Ejemplo Retomamos el ejemplo anterior, donde salón-id-edificio y salón-id-salón de la relación ESTUDIANTES forman una clave foránea que referencia la relación SALON. SALON ID-SALON ID-EDIFICIO DIMENSIÓN 101 10 102 14 103 14 20 103 15 ESTUDIANTES CODIGO NOMBRE APELLIDO SALON-IDSALON 12376876 JUAN ROJAS 101 32345412 FEDERICO PEREZ 101 22312376 ANTONIO DIAZ 102 34345645 FERNANDO LALINDE 103 SALON- ID-EDIFICIO 15 Las siguientes operaciones provocarían el incumplimiento de la regla de integridad referencial: Inserción de <12764411, JOSE, RIOS, 105,15> en ESTUDIANTES. Incumple la regla de integridad referencial porque el salón 105, edificio 15 no existe en la relación SALON. Modificación de <34345645, FERNANDO, LALINDE, 103,15,> de ESTUDIANTES por <34345645, Incumple la regla de integridad referencial porque el salón 101, edificio 16 no existe en la relación SALON. Borrado de <101,,10> de SALÓN. Incumple la regla de integridad referencial porque está referenciado en la tabla estudiantes. FERNANDO, LALINDE, 101,16>. Modificación de <101,,10> de SALÓN por <107,, 10>. Incumple la regla de integridad referencial porque está modificando id-salón que es un atributo que pertenece a la clave primaria de SALON que a su vez está referenciada por la relación ESTUDIANTES en la tupla 1 y 2. Un SGBD relacional debe procurar que se cumplan las reglas de integridad del modelo. Una forma habitual de mantener estas reglas consiste en rechazar toda operación de actualización que deje la base de datos en un estado en el que alguna regla no se cumpla. En algunos casos, sin embargo, el SGBD tiene la posibilidad de aceptar la operación y efectuar acciones adicionales compensatorias, de modo que el estado que se obtenga satisfaga las reglas de integridad, a pesar de haber ejecutado la operación. Esta última política se puede aplicar en las siguientes operaciones de actualización que violarían la regla de integridad: a) Borrado de una tupla que tiene una clave primaria referenciada.

b) Modificación de los valores de los atributos de la clave primaria de una tupla que tiene una clave primaria referenciada. En los casos anteriores, algunas de las políticas que se podrán aplicar serán las siguientes: restricción, actualización en cascada y anulación. A continuación explicamos el significado de las tres posibilidades mencionadas. Restricción La política de restricción consiste en no aceptar la operación de actualización. Más concretamente, la restricción en caso de BORRADO, consiste en NO permitir borrar una tupla si tiene una clave primaria referenciada por alguna clave foránea. De forma similar, la restricción en caso de MODIFICACION consiste en NO permitir modificar ningún atributo de la clave primaria de una tupla si tiene una clave primaria referenciada por alguna clave foránea. Ejemplo: Supongamos que tenemos las siguientes relaciones, donde departamento se relaciona con empleados de uno a muchos. La clave primaria de departamento (cod_dep) se referencia como clave foránea en Empleados (dept_cod_dep). 10 Ventas Bogotá 20 sistemas Cali 1232 María Rodas 10 2124 Nubia Pérez 10 5467 Wilson Quiroz 20 a) Si aplicamos la restricción en caso de borrado y, por ejemplo, queremos borrar al departamento de VENTAS, no podremos hacerlo porque tiene empleados asociados que lo referencian. Implementar RESTRICCION en caso de BORRADO en MYSQL FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON DELETE RESTRICT); DEPT_COD_DEP clave foránea referenciada de la tabla departamento

b) Si aplicamos la restricción en caso de modificación y queremos modificar el número del departamento 20, no será posible hacerlo porque también tiene empleados asociados que lo referencian. Implementar RESTRICCION en caso de MODIFICACION en MYSQL FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON UPDATE RESTRICT); Actualización en cascada La política de actualización en cascada consiste en permitir la operación de actualización de la tupla, y en efectuar operaciones compensatorias que propaguen en cascada la actualización a las tuplas que la referenciaban; se actúa de este modo para mantener la integridad referencial. Más concretamente, la actualización en cascada en caso de borrado consiste en permitir el borrado de una tupla t que tiene una clave primaria referenciada, y borrar también todas las tuplas que referencian t. De forma similar, la actualización en cascada en caso de modificación consiste en permitir la modificación de atributos de la clave primaria de una tupla t que tiene una clave primaria referenciada, y modificar del mismo modo todas las tuplas que referencian t. Ejemplo: Supongamos que tenemos las siguientes relaciones, donde departamento se relaciona con empleados de uno a muchos. La clave primaria de departamento (cod_dep) se referencia como clave foránea en Empleados (dept_cod_dep). 10 Ventas Bogotá 20 sistemas Cali 1232 María Rodas 10 2124 Nubia Pérez 10 5467 Wilson Quiroz 20

a) Si aplicamos la actualización en cascada en caso de borrado y, por ejemplo, queremos borrar el departamento de Ventas, se borrarán también los empleados María Rodas y Nubia Pérez que están asociados al departamento de ventas. Y nos quedará: 20 sistemas Cali 5467 Wilson Quiroz 20 Implementar ACTUALIZACIÓN EN CASACADA en caso de BORRADO en MYSQL FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON DELETE CASCADE); b) Si aplicamos la actualización en cascada en caso de modificación, y queremos modificar el código del departamento 20 por 21, también se cambiará el 20 por 21 en el empleado 5467 Wilson Quiroz 20. Y nos quedará: 21 sistemas Cali 5467 Wilson Quiroz 21 Implementar ACTUALIZACIÓN EN CASACADA en caso de MODIFICIACION en MYSQL FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON UPDATE CASCADE);

ANULACION Ésta política consiste en permitir la operación de actualización de la tupla y en efectuar operaciones compensatorias que pongan valores nulos a los atributos de la clave foránea de las tuplas que la referencian; esta acción se lleva a cabo para mantener la integridad referencial. Puesto que generalmente los SGBD relacionales permiten establecer que un determinado atributo de una relación no admite valores nulos, sólo se puede aplicar la política de anulación si los atributos de la clave foránea sí los admiten. Más concretamente, la anulación en caso de borrado consiste en permitir el borrado de una tupla t que tiene una clave referenciada y, además, modificar todas las tuplas que referencian t, de modo que los atributos de la clave foránea correspondiente tomen valores nulos. De forma similar, la anulación en caso de modificación consiste en permitir la modificación de atributos de la clave primaria de una tupla t que tiene una clave referenciada y, además, modificar todas las tuplas que referencian t, de modo que los atributos de la clave foránea correspondiente tomen valores nulos. EJEMPLO: 10 Ventas Bogotá 20 sistemas Cali 1232 María Rodas 10 2124 Nubia Pérez 10 5467 Wilson Quiroz 20 a) Si aplicamos la anulación en caso de borrado y, por ejemplo, queremos borrar al departamento de ventas, se modificarán todos los empleados asociados y pasarán a tener un valor nulo en DEPT_COD_DEP. Quedará así: 20 sistemas Cali Implementar ANULACION en caso de BORRADO en MYSQL 1232 María Rodas NULL 2124 Nubia Pérez NULL 5467 Wilson Quiroz 20 FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON DELETE SET NULL);

b) Si aplicamos la anulación en caso de modificación, y ahora queremos cambiar el número del departamento 20 por 22, se modificarán todos los empleados asociados y pasarán a tener un valor nulo en DEPT_COD_DEP. Quedará así: 22 sistemas Cali 1232 María Rodas NULL 2124 Nubia Pérez NULL 5467 Wilson Quiroz NULL Implementar ANULACION en caso de MODIFICACION en MYSQL FOREIGN KEY(DEPT_COD_DEP) REFERENCES (COD_DEP) ON UPDATE SET NULL); Selección de la política de mantenimiento de la integridad referencial Hemos visto que en caso de borrado o modificación de una clave primaria referenciada por alguna clave foránea hay varias políticas de mantenimiento de la regla de integridad referencial. El diseñador puede elegir para cada clave foránea qué política se aplicará en caso de borrado de la clave primaria referenciada, y cuál en caso de modificación de ésta. El diseñador deberá tener en cuenta el significado de cada clave foránea concreta para poder elegir adecuadamente. BIBLIOGRAFÍA Abraham Silberschatz, Henry F. Korth, S. Sudarshan. FUNDAMENTOS DE BASES DE DATOS, Cuarta edición, Copyright MMI, por McGraw-Hill Inc. ISBN: 0-07-228363-7