T07 Opciones de integridad referencial

Documentos relacionados
EJEMPLOS PRÁCTICOS SQL

Integridad Referencial. Restricciones (constraints)

T12 Vistas y tablas temporales

EXAMEN TEMAS 3, 4 y 5. CREACIÓN Y EXPLOTACIÓN DE UNA BASE DE DATOS

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

select nombre from profesores where categoria='aso6';

Trabajos de Ampliación. Bases de datos NoSQL.

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

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

Bases de datos relacionales y el modelo entidad-relación

LEA ATENTAMENTE LAS PREGUNTAS Y RESUELVA CADA EJERCICIO COMO SE INDIQUE (EN CASO CONTRARIO EL EJERCICIO NO PUNTUARÁ) CADA EJERCICIO VALE UN PUNTO

SQL básico. SQL básico 1. Contenido

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

El Sistema Gestor de Base de Datos (DBMS)

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

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

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

Modificación de datos

* Size es el tamaño inicial y Filegrowth es el incremento * El size del Primary debe ser 3 veces mayor que el Log necesariamente

RESUMEN DEL LENGUAJE SQL

Formato para prácticas de laboratorio

Bases de Datos: Structured Query Language (SQL)

Base de Datos Conjunto de información organizada especialmente para búsqueda y entrada de datos. Base de Datos: Ejemplo Usuarios

[ EDICION ESPECIAL] En el siguiente ejemplo se agrega un archivo de datos de 5 MB a la base de datos BD_Ejemplo01.

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

departamento NUMBER(3) FK (DEPARTAMENTOS.CODIGO) salario NUMBER(3) NOT NULL fecha_alta DATE NOT NULL jefe NUMBER(5) FK (EMPLEADOS.

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

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

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

Restricciones de Integridad

GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa)

SQLModificaciones a la BD

Restricciones de Integridad

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

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

Integridad en sistemas de bases de datos relacionales

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

SENTENCIAS Y CONSULTAS EN SQL SERVER

Microsoft Virtual Academy

Temario. Índices simples Árboles B Hashing

Checks, Triggers y Excepciones en InterBase: validando desde la base de datos

Conceptos de Bases de Datos Relacionales Triggers

6. Integridad en Sistemas de Bases de Datos Relacionales

GESTORES GESTORES DE BASES DE DATOS

RICHARD ALEXANDER BETANCUR SIERRA

Bases de Datos 1. práctica. Dpto. de Lenguajes y Sistemas Informáticos. Universidad de Alicante

RESTRICCIONES DE DOMINIOS

Lenguaje para descripción de datos

APÉNDICE SQL (Structures Query Language)

Curso de MySQL y Java

Diseño de bases de datos Práctica-1 Definición de datos

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

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

Base de Datos SQL Server

MANUAL BÁSICO DE MySQL

Solución Ejercicio Prac. 3b (Esquema).

A.1. Definiciones de datos en SQL

BASES DE DATOS - SQL. Javier Enciso

CURSO DE SQL SERVER 2005

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Asignatura: Administración de Bases de Datos

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

APUNTES DE SQL. Version 1. Abril Luis Vinuesa Martínez vinuesa

Base de Datos Práctica 1.

2.5.- El lenguaje estándar SQL

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

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

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

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

PHP. Tipos de campo en MySql char(longitud): Cualquier carácter. El campo tendrá siempre la misma longitud. Máximo de 255 caracteres.

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

SQL. Orígenes y Evolución

Tema 33. El lenguaje SQL

Formatos para prácticas de laboratorio

Gestión de nóminas diciembre 2011

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Número de Práctica: 1 Nombre de la Práctica: Comunicación Cliente Servidor Vía Sockets Java con Sistema Manejador de Bases de Datos

Formato para prácticas de laboratorio

Grupo Kybele, Pág. 1

TEMA 22: LENGUAJES DE MANIPULACIÓN Y DEFINICIÓN DE DATOS.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

Restricciones (constraints) FOREIGN KEY

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

Proyecto 2 Base de Datos SQL Server y MySQL

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción:

InterBase / Firebird: el uso de eventos

Tema 3 Modelo relacional

Acceso a bases de datos MySQL con PHP

Fundamentos de las bases de datos

LENGUAJE DE MANIPULACIÓN DE DATOS

Bases de Datos / Elementos de Bases de Datos 2015

Bases de Datos SEGURIDAD E INTEGRIDAD EN BASES DE DATOS. Ejemplo del Lado del servidor

6. PROGRAMACIÓN CON TRANSACT-SQL

ÍNDICE INTRODUCCIÓN...17

EJERCICIO TRABAJADORES.

Práctica 3. Consultas SQL

Transcripción:

1 de 9 17/05/2013 13:48 Lecciones SQL > T07 Opciones de integridad referencial Contenidos 1 Las opciones para mantener la integridad Las opciones para mantener la integridad referencial 2 On delete referencial 2.1 Propagar 2.2 Anular 3 On update Ya se ha practicado con la integridad referencial en sesiones anteriores y se ha visto que el intento de borrar ciertas filas es rechazado por el SGBD si éstas están siendo referenciadas por alguna clave ajena. El sistema está velando por la integridad de los datos almacenados. No obstante, es posible automatizar y prever estas situaciones expresando en el esquema de la base de datos nuestra voluntad de propagar las operaciones de borrado de filas y de actualización de valores de clave primaria hasta donde haga falta. Antes de mostrar estas opciones, el siguiente ejemplo nos recuerda las restricciones que impone el exigir integridad referencial a las claves ajenas. -- selecciona tu base de datos -- use zxxx select '**************** Preparando la BD MiEjemplo...' acción from dual; drop table if exists imparte; drop table if exists asignaturas; drop table if exists profesores; create table profesores ( dni varchar(10), nombre varchar(40), categoria char(4), ingreso date, primary key (dni)) engine=innodb; create table asignaturas ( codigo char(5), descripcion varchar(35), creditos decimal(3,1), creditosp decimal(3,1), primary key (codigo)) engine=innodb; insert into profesores (select * from ejemplo.profesores); insert into asignaturas (select * from ejemplo.asignaturas); create table imparte ( dni varchar(10), asignatura char(5), primary key (dni, asignatura), foreign key (dni) references profesores (dni), foreign key (asignatura) references asignaturas (codigo)) engine=innodb;

2 de 9 17/05/2013 13:48 insert into imparte (select * from ejemplo.imparte); select * from imparte; **************** estado de la BD INICIAL 21111222 FBD delete from asignaturas where codigo = 'FBD'; La ejecución fallará porque hay profesores que imparten la asignatura FBD. delete from asignaturas where codigo = 'HI';

3 de 9 17/05/2013 13:48 Se cumple la orden porque nadie imparte HI. select * from imparte;; **************** estado de la BD FINAL 21111222 FBD On delete Propagar En ciertos sistemas de información es posible redefinir las restricciones de clave ajena para que no se den estos mensajes de error. Ello es posible mediante la cláusula ON DELETE al crear una tabla: FOREIGN KEY (columna[,columna[,...]]) REFERENCES tabla ON DELETE {CASCADE SET NULL}

4 de 9 17/05/2013 13:48 La acción a realizar ante el borrado de una fila que está siendo referenciada por alguna clave ajena puede ser el propagar la operacion (ON DELETE CASCADE) o anular (ON DELETE SET NULL), dependiendo de la decisión del diseñador de la base de datos. Veamos ahora el efecto de utilizar la opción ON DELETE CASCADE. drop table if exists imparte; delete from asignaturas; delete from profesores; insert into asignaturas (select * from ejemplo.asignaturas); insert into profesores(select * from ejemplo.profesores); create table imparte( dni varchar(10), asignatura char(5), primary key (dni, asignatura), foreign key (dni) references profesores(dni), foreign key (asignatura) references asignaturas(codigo) ON DELETE CASCADE ) engine=innodb; insert into imparte (select * from ejemplo.imparte); select * from imparte; dni asignatura

5 de 9 17/05/2013 13:48 21111222 FBD El borrado de FBD provoca borrados automáticos en IMPARTE y el borrado de HI sigue sin generar problemas delete from asignaturas where codigo = 'FBD'; delete from asignaturas where codigo = 'HI'; Sin embargo, en la CAj a PROFESORES no hemos definido método alguno para mantener la IR. delete from profesores where dni = '21111222'; Falla porque este profesor imparte DGBD delete from profesores where dni = '21222333'; Éxito ya que no imparte ninguna asignatura

6 de 9 17/05/2013 13:48 Anular Si la modificación de una clave ajena es ON DELETE SET NULL, la acción que llevará a cabo automáticamente el SGBD es la de poner NULOS en aquellos casos en que la integridad referencial se vea comprometida. Esta definición tiene más dificultad de aplicación puesto que prevalecen las definiciones de VALOR NO NULO. Por ejemplo, es inútil utilizarla en IMPARTE.DNI ya que forma parte de la clave primaria y no admite nulos en ningún caso. Vamos a cambiar el esquema de IMPARTE. drop table if exists imparte; delete from asignaturas; delete from profesores; insert into profesores (select * from ejemplo.profesores); insert into asignaturas (select * from ejemplo.asignaturas); create table imparte ( ficha integer, dni varchar(10), asignatura char(5), primary key (ficha), foreign key (dni) references profesores (dni) ON DELETE SET NULL, foreign key (asignatura) references asignaturas (codigo) ) engine=innodb; Las claves ajenas, ahora, permiten nulos. insert into imparte values (1,'21111222','FBD'); insert into imparte values (2,'21111222','DGBD'); insert into imparte values (3,'21333444','PC'); select * from imparte;

7 de 9 17/05/2013 13:48 ficha 1 2 21111222 FBD 3 delete from profesores where dni = '21111222'; ficha 1 DGBD 2 FBD 3

8 de 9 17/05/2013 13:48 On update La definición ON UPDATE se rige por los mismos parámetros que la anterior, se puede elegir entre propagar o anular (o rechazar, si no definimos nada). Nótese que se pueden hacer todas las combinaciones posibles en todas las claves ajenas, no necesariamente ha de ser todas propagar o todas anular, ni tampoco tienen por qué coincidir en la misma clave ajena. drop table if exists imparte; delete from asignaturas; delete from profesores; insert into asignaturas (select * from ejemplo.asignaturas); insert into profesores(select * from ejemplo.profesores); create table imparte( dni varchar(10), asignatura char(5), primary key (dni, asignatura), foreign key (dni) references profesores(dni) ON DELETE CASCADE ON UPDATE CASCADE, foreign key (asignatura) references asignaturas(codigo) ON DELETE CASCADE ON UPDATE CASCADE ) engine=innodb; insert into imparte (select * from ejemplo.imparte); select * from imparte;

9 de 9 17/05/2013 13:48 21111222 FBD update asignaturas set codigo = 'AAA' where codigo = 'FBD'; update profesores set dni = '33' where dni = '21111222'; AAA FUNDAMENTOS DE LAS BASES DE DATOS 6.0 1.5 33 EVA GOMEZ TEU 1993-10-01 33 DGBD 33 AAA