Introducción a las BD



Documentos relacionados
Bases de Datos Relacionales. Conceptos y consideraciones para su uso.

BD Relacionales. Introducción. Marta Zorrilla

Bases de Datos Relacionales. Conceptos y consideraciones para su uso.

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

Base de datos relacional

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

BASES DE DATOS AVANZADAS Tema 2. Repaso de SQL y Lenguajes Relacionales. Univ. Cantabria Fac. de Ciencias Francisco Ruiz, Marta Zorrilla

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

Restricciones de Integridad

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.


Iniciación al trabajo con bases de datos

Tema 11 Bases de datos. Fundamentos de Informática

ADMINISTRACIÓN DE BASE DE DATOS

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

Oracle 12c DISEÑO Y PROGRAMACIÓN

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

1

Microsoft SQL Server 2005

Introducción a los Sistemas de Gestión de Bases de Datos

Estructura de Bases de datos. Leonardo Víquez Acuña

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

Consultas con combinaciones

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Bases de Datos 3º Informática de Sistemas

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.

CURSO DE SQL SERVER 2005

Introducción a los sistemas de bases de datos

Tema 1. Conceptos básicos

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

A.1. Definiciones de datos en SQL

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

BASES DE DATOS OFIMÁTICAS

SQL Los fundamentos del lenguaje

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

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

Lenguaje para descripción de datos

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

ESPECIALISTA EN BASE DE DATOS

Formato para prácticas de laboratorio

Sistemas de Gestión de Bases de Datos

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

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

Universidad Nacional del Sur Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos 2do. Cuatrimestre de 2004

T ema 2. S is tem as ges tores de bas es de datos

Repaso de Conceptos Básicos de Bases de Datos

BASE DE DATOS RELACIONALES

[CASI v.0110] Pág. 1

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Temario Curso Bases de Datos

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

DEPARTAMENTO: Computación y diseño NOMBRE DEL CURSO: Base de datos I CLAVE: ACADEMIA A LA QUE PERTENECE: Base de datos I

Fundamentos de Oracle

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

Bases de Datos: Structured Query Language (SQL)

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

ELEMENTO I INTRODUCCION A LOS SISTEMAS DE BASES DE DATOS

Bases de Datos 2. Teórico

Curso Online de Microsoft

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

VISIO: Herramienta CASE

IWG-101: Introducción a la Ingeniería. Departamento de Informática, UTFSM 1

Tema 33. El lenguaje SQL

Ventajas, Características y Aplicaciones de los SGBD Distribuidos.

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

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

MANUAL BÁSICO DEL LENGUAJE SQL

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

ADMINISTRACIÓN DE BASES DE DATOS DISTRIBUIDAS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Tema 1. Bases de datos activas

CI Politécnico Estella

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Asignaturas, profesores, alumnos. Profesores, grupos, asignaturas, aulas

Sistemas de Gestión de Bases de Datos

ÍNDICE PRIMERA PARTE... 17

SQL (Structured Query Language)

Gestion de archivos. Problemas al almacenar datos sólo en la memoria:

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

Práctica 3. Consultas SQL

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Tema 1: Sistemas de Gestión de Bases de Datos

Integridad en sistemas de bases de datos relacionales

8 SQL SERVER 2008 RA-MA

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

Bases de Datos Modelo Relacional

CÓDIGO: 773 CRÉDITOS: 4 POST REQUISITO: CATEGORÍA: Obligatorio SEMESTRE: 2do AUXILIAR: EDIFICIO: T-5, T-3 SECCIÓN: A+ / A-

BASES DE DATOS - SQL. Javier Enciso

Índice. iii. Objetivos... 24

Introducción. Componentes de un SI. Sistema de Información:

Es una colección de datos operativos almacenados y utilizados por los programadores de aplicaciones y por usuarios finales de muy diversa índole!

rg.o El l c i c c i l c o l o de d vi v d i a d a cm a l@ rza e de d u n u n si s s i t s e t ma m a de d in i f n or o ma m c a i c ó i n ó b

Almacenamiento de documentos XML

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón

Transcripción:

Introducción a las BD Dra. Marta E. Zorrilla Pantaleón Departamento de Matemáticas, Estadística y Computación Universidad de Cantabria

Tabla de contenido Aplicaciones de BDs. Concepto de Base de Datos y SGBD. De los sistemas de ficheros a la BD relacional. Razones que justifican el uso de BD. Bases de datos relacionales. El estándar SQL. Restricciones de integridad. BD activas. Transacciones. Aplicaciones de usuario

Aplicaciones de de BD Qué bases de de datos conocéis? Con qué aplicaciones de de bases de de datos trabajáis? Qué interfaces presentan? Ejemplos: Biblioteca Gestión académica Reservas de de hoteles, aviones, Servicios bancarios: tarjetas, cuentas, préstamos, Compras y ventas Etc. Etc.

Bases de de Datos. Finalidad Base de Datos: colección organizada de datos, relativa a un problema concreto, que puede ser compartida por un conjunto de usuarios/aplicaciones. ALMACENAR CONTROLAR INFORMACIÓN CONSULTAR ACTUALIZAR DATOS RELACIONES RESTRICCIONES Sistema Gestor de Bases de Datos Sistema Gestor de Bases de Datos: programa o conjunto de programas que sirve para mantener bases de datos y responder consultas sobre ellas.

Revisión n histórica de de los los sistemas de de Bases de de Datos De De 1950 1950 a 1960, 1960, se se desarrollaron las las cintas cintas magnéticas para para el el almacenamiento de de datos. datos. Lectura Lectura secuencial. COBOL. En En la la década década de de los los 70, 70, aparición de de los los discos discos magnéticos lo lo que que permitió el el acceso acceso directo directo a los los datos. datos. BD BD jerárquicas y en en red. red. Tratamiento Tratamiento de de información información requería requería conocer conocer detalles detalles de de implementación implementación (bajo (bajo nivel) nivel) Codificación Codificación de de consultas consultas de de forma forma procedimental procedimental Codd Codddefinió definióel el modelo modelo relacional relacional (1970) (1970) modelo modelo teórico teórico bien bien fundamentado fundamentado.. Jerárquica (IMS de IBM) Red (IDMS/R de Cullinet)

Revisión n histórica de de los los sistemas de de Bases de de Datos Pero Pero hasta 1980 no no aparecieron gestores relacionales comerciales (Oracle, IBM IBM DB2, Ingres, ) con con buen rendimiento y más más fáciles de de diseñar y mantener (independencia física y lógica) Estudios BD BD distribuidas y paralelas Inicio Inicio en en BD BD orientadas a objetos objetos Desde 1990: BD BD relacionales orientadas a objetos objetos BD BD dimensionales y OLAP OLAP XML XML Minería Minería de de datos datos

Niveles de abstracción La finalidad de trabajar con técnicas de BD es disfrutar de una visión abstracta de los datos que facilite el desarrollo y uso de aplicaciones. Programa 1 Programa 1 Programa 2 Programa 2 Programa n Programa n Vista A Nivel Lógico Sistema Gestor de Bases de Datos (SGBD) Nivel Interno DATE (1981) define la independencia como la inmunidad de las aplicaciones ante cambios de la estructura del almacenamiento y de los métodos de acceso

Justificación Bases de de Datos. Justificación Flexibilidad de adaptación a cada problema. Optimización en la gestión de la información. Independencia física y lógica de los datos. Control de la integridad de los datos. Garantía sobre la consistencia de la información. Facilidad de acceso concurrente. Protección ante fallos del sistema. Seguridad ante accesos restringidos.

BD Relacional I Personal NOMBRE PROFESION LOCALIDAD Pedro Luis María Ana profesor estudiante estudiante estudiante Santander Santander Las Palmas Madrid Los datos se conciben agrupados en forma de tablas Cada fila establece una relación entre un conjunto de valores Operadores generan nuevas tablas SELECT NOMBRE, LOCALIDAD FROM Personal WHERE PROFESION = estudiante NOMBRE Luis María Ana LOCALIDAD Santander Las Palmas Madrid

BD Relacional II II BANCOS ENTIDAD NOMBRE 0893 Santander 0059 Popular 3428 Bilbao Vizcaya 5632 Banesto Toda tabla tiene una columna o conjunto de columnas que permiten identificar cada una de sus filas; éstas componen la llamada clave principal de la tabla. Los valores de la clave principal no se pueden repetir. Unas tablas se refieren a otras mediante vínculos de tipo jerárquico. Este vínculo de referencia entre dos tablas se establece mediante columnas de idénticos tipos de datos en las dos tablas. ENTIDAD OFICINAS CODIGO_OFICINA La referencia de una fila de una tabla a otra de la otra tabla se produce cuando ambas tienen el mismo valor. POBLACION DIRECCION 0893 001 Madrid Castellana, 73 3428 022 Las Palmas Triana, 21 0893 022 Gáldar R. Moreno, 3 5632 213 Oviedo Uría, 43 0893 300 Barcelona Diagonal, 435

Tipos de datos Tipos de datos Cadena de caracteres (character string). Cada carácter requiere un byte para su almacenamiento. Numérico (numeric). Enteros: Cortos (ocupan 2 bytes). Largos (ocupan 4 bytes). Decimales: definidos por su precisión y escala. Notación científica: Simple precisión (ocupan 4 bytes). Doble precisión (ocupan 8 bytes). Fecha y hora (datetime). Diferentes opciones según nivel de precisión. Objeto grande (large object, LOB). Binary large object (blob). Character large object (clob). Tipos definidos por el usuario.

Índices Búsquedas más ágiles. pero supone una sobrecarga en actualizaciones Restricción de unicidad No permite repeticiones del valor en la columna o columnas afectadas por el índice Índices únicos: PRIMARY KEY, UNIQUE, CREATE UNIQUE INDEX Índices con duplicados: CREATE INDEX

Índices Índices ndices Cod_art Descripción WRD ACC Access-97 Word-97 EXC ACC Access-2002 Excel-2000...... ARTÍCULOS Versión 97 97 2000 2002... Unidades 50 4... LÍNEAS_DE_PEDIDO Num_ped 742 742 742... Cod_art ACC EXC WRD ACC... Versión 2002 2000 97 2002... Num_lin 1 2 3 1... 30 849 30 Cod_art WRD ACC EXC ACC... Versión 97 97 2000 2002... Índice de unicidad Cod_art WRD ACC EXC ACC... Versión 97 2002 2000 2002... Índice con repeticiones Cod_art Descripción WRD ACC Access-97 Word-97 EXC ACC Acces-2002 Excel-2000...... Num_ped Fecha_ped 742 849 10-8-2002 5-7-2002 860 11-8-2002...... PEDIDOS ARTÍCULOS Unidades 50 4... LÍNEAS_DE_PEDIDO Versión 97 97 2000 2002... Num_ped 742 742 742... Cod_art ACC EXC WRD ACC... Versión 2002 2000 97 2002... Num_lin 1 2 3 1... 30 849 30

El El problema del diseño o I Ejemplo aclaratorio PROPIETARIOS: PROPIETARIOS: DNI DNI LOCALES: LOCALES: CODIGO CODIGO NOMBRE NOMBRE UBICACION UBICACION DIRECCION DIRECCION SUPERFICIE SUPERFICIE Locales_propietarios Primera alternativa CODIGO UBICACION SUPERFICIE DNI NOMBRE DIRECCION Problemas del diseño Repetición de de información Posibilidad de de contradicciones en en los los datos Problemas en en inserciones Pérdida de de información al al borrar

El El problema del diseño o II II Propietarios DNI NOMBRE DIRECCION Segunda alternativa Locales CODIGO UBICACION SUPERFICIE Problemas del diseño Pérdida de de dependencias funcionales

El El problema del diseño o III III Propietarios DNI NOMBRE DIRECCION Tercera alternativa Locales DNI CODIGO UBICACION SUPERFICIE Problemas del diseño Sólo un un propietario para cada local

El El problema del diseño o IV IV La referencia entre tablas siempre es una relación de 1 a n o de n a 1 Tercera Cuarta alternativa Un propietario Propietariospuede tener varios locales (n) mientras que Propietarios un local sólo puede ser de un propietario (1). DNI DNI NOMBRE DIRECCION NOMBRE DIRECCION DNI Propiedad CODIGO DNI Locales Locales CODIGO CODIGO UBICACION UBICACION SUPERFICIE SUPERFICIE Si se desea que un propietario pueda tener varios locales y, al mismo tiempo, que un local pueda se de varios propietarios, la relación es simétrica, es de n a n y no puede ser resuelta con sólo dos tablas. Para conseguirlo, es necesario introducir una tabla auxiliar que tenga relaciones de de n a 1 con las de propietarios y locales.

Sistemas distribuidos Los sistemas centralizados realizan todas sus operaciones en un único sistema informático. La distribución entre varias sedes permite que los datos residan donde se han generado o donde son más necesarios. En el sistema centralizado los datos tienen una sola ubicación y en el distribuido, residen en varios emplazamientos. En el caso distribuido, el usuario percibe los datos como si estuviesen en un solo ordenador. Cuando la distribución es a nivel de tabla, el problema del diseño no ha terminado. Para distribuir los datos de una tabla entre varias sedes, hay varias alternativas: Réplica. Se conservan varias copias idénticas de una misma tabla en diferentes sedes. Fragmentación. La tabla se divide en varios fragmentos que se guardan en emplazamientos diferentes. La fragmentación puede ser horizontal, cuando se distribuyen filas; vertical, si son columnas las que se reparten; o mixta. Réplica y fragmentación. La tabla se divide en varios fragmentos. El sistema conserva varias réplicas de estos fragmentos en diferentes sedes.

Lenguajes de BD SQL, lenguaje declarativo cuya base se encuentra en el álgebra relacional (lenguaje procedimiental). Comercial. Estándar. QBE, lenguaje gráfico. Introducido en algunos gestores. Datalog, a nivel investigador, no comercial. Prolog. Ambos se apoyan en dos lenguajes de consulta formales basados en lógica matemática: el cálculo relacional de tuplas y de dominios el resultado se define como el conjunto de valores que hacen cierta una determinada fórmula lógica

Lenguajes de BD: QBE

El El lenguaje SQL SQL (Structured Query Language) Lenguaje declarativo de acceso a los datos. Estándar para las bases de datos relacionales. Incluye la capacidad de actuar tanto sobre la estructura de la base de datos como sobre sus propios datos. Desarrollado en el San José Research Center (IBM) Fue utilizado por primera vez en 1970. En 1986: ANSI (American National Standards Institute) e ISO (International Standards Organization) publicaron las normas SQL/ANSI y SQL-86. En 1989: se incorpora la integridad referencial básica (no actualizaciones en cascada)

SQL-92 y SQL-99 SQL-92 incorpora: Nuevos operadores relacionales: OUTER JOIN y JOIN SQL dinámico El parámetro SQLSTATE para gestión de errores Cursores de desplazamiento (scroll cursor). Modo de acceso (lectura o lectura/escritura) y nivel de aislamiento de las transacciones. Definir dominios (CREATE DOMAIN). En la actualidad, se trabaja con el SQL:1999 (parte del SQL3). Las características más relevantes son: Nuevos tipos de datos: LOB, BOOLEAN, ROW, ARRAY, DISTINCT. Posibilidad de definir nuevos tipos de datos por parte del usuario. Disparadores (triggers), vistas actualizables Cursores (punteros) sensitivos. Queries recursivos. Definición de roles de usuario Incorporación de las características de orientación a objetos: tipos de datos abstractos, generalización, herencia y polimorfismo.

SQL 2003 Fuente: JCC Consulting, Inc Part Part 1 - SQL/Framework Part 2 - SQL/Foundation SQL/OLAP Part 3 - SQL/CLI Part 4 - SQL/PSM Part 5 - SQL/Bindings Part 6 - SQL/Transaction Part 7 - SQL/Temporal Part 8 - SQL/Objects Explanation Structure of the standard and relationship between various parts. Common definitions and concepts. Conformance requirements statement. SQK Data definition and data maniputlation syntax and semantics, including SQL embedded in non-object programming languages. Online Analytical Processing: Amendment describing functions and operations useful for analytical processing. Call Level Interface: Corresponds to ODBC. Persistent Stored Modules: Stored routines, external routines, and procedural language extensions to SQL. Embedded SQL. SQL specialization of the X-Open XA specification. Project has been canceled. Extensions to SQL to deal with time-oriented data types. Included in SQL/Foundation, so this part no longer exists. State Completed Completed Completed Completed Foundation Canceled Postposed Foundation

SQL 2003 Part Part 9 - SQL/MED Part 10 - SQL/OLB Part 11 - SQL/Schemata Part 12 - SQL/Replication Part 13 - SQL/JRT Part 14 - SQL/XML Explanation Management of External Data: Adds syntax and definitions to SQL/Foundation to allow SQL access to non-sql data sources (files). Object Language Bindings: Specifies the syntax and semantics of embedding SQL in Java. Information and Definition Schemas. INFORMATION_SCHEMA (85 vistas) Replication facilities for SQL. The goal is to define syntax and semantics to allow definition of replication schemes and rules, including rules for resolution of conflicts. Java Routines and Types: Routines using the Java Programming Language (Persistent Stored SQLJ) SQL and XML State Completed Completed Completed Canceled Completed Completed SQL/MM: SQL/MM: especificación especificación de de tipos tipos de de datos datos abstractos abstractos (aprob. (aprob. 2006 2006 )) Part Part1: 1: Framework Framework Part Part5: 5: Still Stillimage image Part Part2: 2: Full Full Text Text Part Part6: 6: Data Data mining mining Part Part3: 3: Spatial Spatial

SQL:2003 Nuevos tipos de datos: MULTISET, BIGINT y XML Columnas calculadas en tablas (valores escalares) Funciones escalares y que devuelven tablas Creación de tablas: LIKE, AS MERGE: permite la combinación de operaciones de inserción y actualización en una sola instrucción Generadores de secuencia. Nuevas funciones escalares, de agregación, de distribución, ventana (RANK, ROW_NUMBER...)

El El lenguaje SQL: manipulación Manipulación de datos. Ejemplos: PROPIETARIOS DNI NOMBRE DIRECCION LOCALES CODIGO DNI UBICACION SUPERFICIE Insertar una nueva fila en la tabla PROPIETARIOS INSERT INSERT INTO INTO PROPIETARIOS PROPIETARIOS (DNI, (DNI, NOMBRE, NOMBRE, DIRECCION) DIRECCION) VALUES VALUES ( 13234567R, ( 13234567R, Sanz, Sanz, Luis, Luis, Gran Gran Vía Vía 26 ) 26 ) Encontrar los locales con superficie mayor que 200 y su propietario SELECT SELECT CODIGO, CODIGO, UBICACION, UBICACION, NOMBRE, NOMBRE, DIRECCION DIRECCION FROM FROM LOCALES, LOCALES, PROPIETARIOS PROPIETARIOS WHERE WHERE LOCALES.DNI LOCALES.DNI = = PROPIETARIOS.DNI PROPIETARIOS.DNI AND AND SUPERFICIE SUPERFICIE > > 200 200 Resultado Modificar la dirección del propietario cuyo D.N.I. es 20333444F CODIGO UBICACION NOMBRE DIRECCION UPDATE UPDATE PROPIETARIOS PROPIETARIOS SET SET DIRECCION DIRECCION = Alta = Alta 87 87 WHERE WHERE DNI DNI = = 20333444F 20333444F L-31 Alta 236 Sanz, Luis Gran Vía 26 L-234 Bailén 46 Laso, Ana Isabel II 38 L-9 Cuesta 2 Sanz, Luis Gran Vía 26 L-302 Becedo 10 Fe, Pedro Borrar el local de código L-234 DELETE DELETE FROM FROM LOCALES LOCALES WHERE WHERE CODIGO CODIGO = = L-234 L-234

Otras restricciones I CREATE CREATE TABLE TABLE JUGADORES JUGADORES (DNI (DNI CHAR(10) CHAR(10) NOT NOT NULL, NULL, NOMBRE NOMBRE CHAR(25) CHAR(25) NOT NOT NULL, NULL, DIRECCION DIRECCION CHAR(30) CHAR(30) NOT NOT NULL, NULL, TELEFONO TELEFONO CHAR(15), CHAR(15), SEXO SEXO CHAR(1) CHAR(1) CHECK CHECK ( ( SEXO SEXO in in ( M, ( M, F ) F ) NOT NOT NULL, NULL, FE_ALTA FE_ALTA DATE DATE DEFAULT DEFAULT today today NOT NOT NULL, NULL, ESTATURA ESTATURA DEC(3,2) DEC(3,2) CONSTRAINT CONSTRAINT Valor_estatura Valor_estatura CHECK CHECK (ESTATURA (ESTATURA > > 1,75) 1,75) PRIMARY PRIMARY KEY KEY ( ( DNI DNI )); )); Otras restricciones: - Valores requeridos - Dominio de valores: * atributo * relación Ejemplo: para cada fila de la tabla PERSONAS LOCALES Mediante LOCALES, la instrucción los valores CREATE de DNI_propietario DOMAIN (SQL-99) y se pueden definir un tipo de dato de usuario DNI_arrendatario a partir de un no tipo pueden dato ser iguales. estándar (no la incluyen todos los gestores) X DNI Codigo Nombre DNI_propietario Direccion DNI_arrendatario Ubicacion CREATE DOMAIN Estatura DEC(3,2) Superficie ALTER TABLE LOCALES CONSTRAINT WITH NOCHECK Valor_estatura ADD CHECK (Estatura > 1,75) CONSTRAINT CK_locales CHECK (DNI_propietario <> DNI_arrendatario)

Otras restricciones II II Asertos y disparadores Mediante la instrucción CREATE ASSERTION (SQL-99) se puede expresar una condición que la base de datos debe satisfacer siempre (no la incluyen todos los gestores) CREATE ASSERTION restriccion_suma CHECK (not exists (select * from sucursal where (select sum(importe) from prestamo where prestamo.nombresucursal= sucursal.nombresucursal) >= (select sum(saldo) from cuenta where cuenta.nombresucursal = sucursal.nombresucursal))) Los triggers (disparadores) son procesos predefinidos que entran en acción en respuesta a eventos específicos de manipulación de datos (insert, update, delete). Son más flexibles que los asertos para expresar restricciones semánticas. Generalmente se utilizan para: recoger restricciones complejas automatizar procesos anotar acciones (log) Los incluyen generalmente los gestores.

Otras restricciones II II Reglas de negocio Ejemplo: para cada fila de la tabla LOCALES, los valores de DNI_propietario y DNI_arrendatario no pueden ser iguales. ALTER TABLE LOCALES WITH NOCHECK ADD PERSONAS DNI Nombre Direccion LOCALES Codigo DNI_propietario DNI_arrendatario Ubicacion Superficie CONSTRAINT CK_locales CHECK (DNI_propietario <> DNI_arrendatario) X Los triggers son procesos predefinidos que entran en acción en respuesta a eventos específicos de manipulación de datos. LOCALES UPDATE LOCALES SET DNI_propietario = '60601602' WHERE DNI_propietario = '40401402' Codigo DNI_propietario DNI_arrendatario Ubicacion Superficie L-31 50501502 60601602 Alta 236 220 L-234 40401402 50501502 Bailén 46 350 L-9 30301302 70701702 Cuesta 2 280 L-302 40401402 60601602 Becedo 10 255

Ejemplo de trigger UPDATE LOCALES SET DNI_propietario = '60601602' WHERE DNI_propietario = '40401402' inserted Codigo DNI_propietario DNI_arrendatario Ubicacion Superficie L-234 L-302 60601602 60601602 50501502 60601602 Bailén 46 Becedo 10 350 255 CREATE TRIGGER CTRL_locales ON LOCALES FOR INSERT, UPDATE AS DECLARE @num int SELECT @num=count(*) FROM inserted I WHERE I.dni_propietario=I.dni_arrendatario IF (@num>0) BEGIN RAISERROR ('El DNI del propietario no puede coincidir con el DNI del Arrendatario.', 16, 1) goto on_error END GoTo fin on_error: ROLLBACK TRANSACTION fin:

Trigger en SQL:99 Si un saldo queda negativo, se crea un préstamo por el importe del descubierto. El nº de préstamo toma el valor del nº de cuenta create trigger descubierto after update on cuenta referencing new row as nueva_fila for each row when nueva_fila.saldo < 0 begin atomic insert into prestamo values (nueva_fila.numero_cuenta, nueva_fila.nombre_sucursal,-nueva_fila.saldo); insert into prestatario (select nombre_cliente, numero_cuenta from impositor where nueva_fila.numero_cuenta = impositor.numero_cuenta); end update cuenta set saldo = 0 where cuenta.numero_cuenta = nueva_fila.numero_cuenta

Transacciones I Transacción: conjunto de operaciones de manipulación de datos que deben ser consideradas como una unidad. BANCOS ENTIDAD NOMBRE 0893 Santander 0059 Popular 3428 Bilbao Vizcaya 5632 Banesto BEGIN WORK Propiedades: INSERT INTO BANCOS( ENTIDAD, NOMBRE ) VALUES ( 3322, BSCH ) ATOMICIDAD: UPDATE OFICINAS todo o nada SET ENTIDAD = 3322 Ejemplo: CONSISTENCIA: Eliminar WHERE coherencia el Banco ENTIDAD de los Santander = datos 0893 de la base de datos y asignar todas sus oficinas AISLAMIENTO: DELETE a una FROM nueva serialización BANCOS entidad bancaria, de transacciones el WHERE ENTIDAD = 0893 BSCH, cuyo código de entidad es el 3322 DURABILIDAD: Si no ha habido ningún los cambios error son permanentes COMMIT WORK Gestor de transacciones Gestor de concurrencia Y si ha habido Gestor algún de error recuperación ROLLBACK WORK OFICINAS ENTIDAD CODIGO_OFICINA POBLACION DIRECCION 0893 001 Madrid Castellana, 73 3428 022 Las Palmas Triana, 21 0893 022 Gáldar R. Moreno, 3 5632 213 Oviedo Uría, 43 0893 300 Barcelona Diagonal, 435

Transacciones II II Inicio de transacción K = 1 Bloqueo de los datos afectados por la instrucción K K = K+1 Se puede ejecutar la instrucción K? SI NO Desbloqueo de datos Apunte de la instrucción en el dispositivo LOG NO K = n? SI Fin de transacción ( con error ) Ejecución de las instrucciones del dispositivo LOG Desbloqueo de datos Fin de transacción ( sin error )

Bibliografía Date, C. Introducción a los sistemas de bases de datos. 8ª edición. Pearson Educación. 2004. Krishna Kulkarni. Overview of SQL:2003. Silicon Valley Laboratory Silicon Valley Laboratory IBM Corporation, San Jose.2003-11-06 Mora, E., Zorrilla, M. E., Díaz de Entresotos, J. Iniciación a las bases de datos con Access 2002. Díaz de Santos, 2003. Silberschatz, A., Korth, H.F., Sudarshan, S., Fundamentos de Bases de Datos, 5ª edición, Madrid, 2006 Piattini, M., Díaz, O. Advanced database technology and design. Artech House, cop. 2000. Ullman, J., Widom, J. A First Course in Database Systems (2nd Edition). Prentice Hall. 2002 Whitemarsh Information Systems Corporation. http://www.wiscorp.com/sqlstandards.html