Elementos de Bases de Datos Integridad en los datos Ligaduras de

Anuncio
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Integridad en los datos
Elementos de
Bases de Datos
Entre las ventajas de mantener la
información con un Sistema de Manejo
Base de Datos (DBMS) está la
posibilidad de garantizar integridad de
datos.
Ejemplo: para la relación Cuentas,
deseamos poder asegurar que su saldo
nunca se inferior a los 300$.
Dpto.Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Lic. María Mercedes Vitturini
[[email protected]]
Clase 14
1er. Cuatrimestre de 2004
Elementos de Bases de Datos
Clase 14
Ligaduras de Integridad
Ligaduras de integridad
Proporcionan un medio para asegurar
que las actualizaciones hechas sobre la
base de datos mantengan la
consistencia de los datos.
Los sistemas de manejo de bases de
datos (DBMS) proveen diversos
mecanismos para implementar ligaduras
de integridad.
Elementos de Bases de Datos
Clase 14
3
Otras formas de ligadura
Mecanismos para asegurar integridad
vistos:
„
„
„
Claves: el conjunto de instancias legales
queda restringido a que dos tuplas no
pueden compartir la misma clave.
Multiplicidad de una relación (1-1, m-1,
etc): restringe el conjunto de relaciones
legales entre entidades.
Dependencias funcionales: juegan un rol
determinante en el diseño de las bases de
datos relacionales.
Elementos de Bases de Datos
Clase 14
4
Ligaduras de dominio
1. Ligaduras de dominio: permiten restringir a
cada atributo a un dominio de valores
posibles.
2. Ligaduras de integridad referencial:
permiten asegurar que el valor que aparece
en una relación para un conjunto de
atributos sea miembro también en otra
relación para cierto conjunto de atributos.
3. Disparardores o triggers: es una orden que
ejecuta el sistema como efecto de una
actualización.
Elementos de Bases de Datos
Clase 14
2
5
Son las de implementación más simple.
Restringen cada atributo a un dominio de
valores posibles. La restricción puede incluir
no aceptar valores nulos.
Es posible que varios atributos de la misma
relación o de distintas relaciones tengan el
mismo dominio asociado.
Gran parte de los sistemas relacionales
actuales tienen un número reducido de
tipos de dominio.
Elementos de Bases de Datos
Clase 14
6
1
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Ligaduras de dominio
Integridad Referencial
La clausula check en SQL provee facilidades
para implementar nuevas restricciones de
dominios.
Ejemplo: una manera de asegurar que todas las
cuentas tengan saldo mínimo de 300 $ podría
ser:
CREATE TABLE Cuentas (
...
ctasaldo
DECIMAL,
...
CONSTRAINT ch_ctasaldo CHECK (ctasaldo>=300.00),
Elementos de Bases de Datos
...);
Clase 14
7
Integridad Referencial
„
„
„
Cursa (aluLU, matCódigo)
Materias (matCódigo, matNombre).
De cursa|><| materias, se espera que toda tupla de
cursa haga join con alguna de las materias de la
relación materias. Por otra lado, no habría problemas
en que alguna tupla de materias no haga join con
ninguna tupla de cursa.
Elementos de Bases de Datos
Clase 14
8
Observar que la definición de clave foránea
en r2 referencia a la clave primaria de r1.
9
Elementos de Bases de Datos
Clase 14
10
Modificación de la Base de
Datos
Integridad Referencial E-R
Si el esquema de base de datos relacional se
obtiene a partir del E-R, entonces podemos
asegurar que cada esquema de relación que
proviene de un conjunto de relaciones tendrá
referencias foráneas a las entidades.
Lo mismo ocurre con los conjuntos de
entidades débiles con relación al conjunto de
entidades fuertes del que depende.
Elementos de Bases de Datos
Clase 14
„
Formalmente, sean r1(R1) y r2(R2) dos
relaciones con claves primarias K1 y K2
respectivamente. Se dice que un
subconjunto α de R2 es una clave foránea
que hace referencia a K1 de la relación r1 si se
exige que para cada t2 de r2 haya una tupla t1
de r1 tal que t1[K1]=t2[α].
El atributo matCódigo de Cursa tiene
definida una “clave foránea” hacia
Materias, indicando que toda materia de
Cursa referencia a alguna materia de la
relación Materias.
Por otra parte, el atributo matCódigo de
Materias NO tiene definida una “clave
foránea” hacia Cursa.
Elementos de Bases de Datos
Clase 14
Ejemplo: dadas las relaciones
Clave Foránea
En el ejemplo se dice que:
„
Dadas las relaciones r(R) y s(S) y la operación
r|><|s. Puede darse que una tupla t de r que no
haga join con ninguna tupla de s. Esta tupla se
denomina colgante. Hay situaciones en que no
se permiten tuplas colgantes.
11
Dadas dos relaciones r1 y r2, r2 con una
referencia foránea hacia r1.
El sistema realiza la siguiente
comprobación para asegurar que se
cumpla la restricción de integridad
referencial:
Πα (r2) ⊆ ΠK (r1)
Elementos de Bases de Datos
Clase 14
12
2
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Controles al modificar la base de
datos
Reglas de Integridad en SQL
Insertar en r2
„
Si se inserta una tupla t2 en r2, el sistema
debe asegurar que existe una tupla t1 en r1
tal que t1[K] = t2[α].
Borrar en r1
„
Si se borra una tupla t1 en r1, el sistema
debe calcular el conjunto de tuplas de r2
que hacen referencia a r1
Elementos de Bases de Datos
Clase 14
„
Un disparador es una orden que el sistema
ejecuta automáticamente como efecto
secundario a una modificación de la base de
datos.
En un disparador se deben especificar:
„
„
15
Elementos de Bases de Datos
Clase 14
16
Constituyen eventos la ejecución de una
instrucción SQL de INSERT, UPDATE o
DELETE.
ON evento IF precondición THEN acción
En base a este concepto simple es posible
plantear diferentes alternativas:
Una precondición cualquier condición
permitida en un WHERE.
Cuándo evaluar la condición.
Cuándo ejecutar las acciones.
Granularidad del cambio.
El comportamiento será diferente de acuerdo
con la alternativa elegida.
Según las necesidades de la aplicación se
deberá elegir la configuración más apropiada.
Elementos de Bases de Datos
Clase 14
Condiciones en las que se va a ejecutar el
disparador.
Acciones que se van a realizar cuando se ejecute
el disparador.
Triggers en SQL
La estructura de un trigger puede definirse
como:
„
14
Triggers o Disparadores
Triggers o Disparadores
„
PRIMARY KEY: para definir la clave
primaria.
UNIQUE: para definir claves candidatas
distintas a la primaria.
FOREIGN KEY: para definir claves
foráneas.
Elementos de Bases de Datos
Clase 14
13
CREATE TABLE atenciones (
at_numero
integer NOT NULL,
pa_numero
integer NOT NULL,
me_matricula
integer NOT NULL,
at_fecha
date,
PRIMARY KEY (at_número) CONSTRAINT
pk_atenciones,
FOREIGN KEY (me_matricula) REFERENCES
medicos CONSTRAINT fk_at_medicos,
FOREIGN KEY (pa_numero) REFERENCES
pacientes CONSTRAINT fk_at_pacientes
);
„
„
„
Ejemplo: restricciones de integridad en la
definición de una tabla
Elementos de Bases de Datos
Clase 14
La definición de claves forma parte del
LDD. La instrucción SQL CREATE TABLE
incluye facilidades para:
17
Una acción una consulta SQL, DELETE,
INSERT, UPDATE, ROLLBACK, SIGNAL, o la
ejecución de un programa SQL (Store
Procedure).
Elementos de Bases de Datos
Clase 14
18
3
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Ejemplo
En SQl
Supongamos que no se deben permitir
saldos en las cuentas negativos.
En caso de un descubierto, esto es la
cuenta queda con saldo negativo, la
manera de proceder sería la siguiente:
„
„
Dejar el saldo de la cuenta en 0
Crear un nuevo registro en préstamos por
la diferencia.
Elementos de Bases de Datos
Clase 14
19
Observaciones
Otro mecanismo para incorporar controles es
que los desarrolladores de programas de
aplicación hagan cumplir ciertas ligaduras de
integridad añadiendo código apropiado en
distintos puntos de control de la aplicación.
La desventaja de este último mecanismo es
que cuando cambian las reglas se deben
modificar los programas.
21
SQL en los programas de
aplicación
Interface a nivel de sentencia (StatementLavel Interface SLI).
Š SQL embebido.
Š SQL dinámico.
„
Interface a nivel de llamado (Call-Lavel
Interface CLI)
Elementos de Bases de Datos
Clase 14
20
Los programas de aplicación involucran una
mezcla de sentencias SQL y lenguaje
convencional.
Las sentencias SQL son las que permiten al
programa acceder a la base de datos.
El lenguaje convencional, se denomina
lenguaje propietario o lenguaje host, y
provee las características que no están
disponibles en SQL.
Elementos de Bases de Datos
Clase 14
22
Constructores SQL con SLI
Los constructores de SQL se pueden
incluir en un programa de aplicación de
diferentes maneras:
„
Elementos de Bases de Datos
Clase 14
SQL en el mundo real
Las ligaduras impuestas en la base de datos
siempre se van a controlar.
Elementos de Bases de Datos
Clase 14
DEFINE TRIGGER descubierto ON UPDATE OF cuenta T
IF NEW T.saldo < 0
THEN (
INSERT INTO prestamos VALUES
(T.nombre-suc, T.nro-cta, -NEW T.saldo)
INSERT INTO prestatario
(SELECT nombre-cli, nro-cta
FROM impositor
WHERE T.nro-cta, depositario.nro-cta)
UPDATE cuenta S SET s.saldo= 0 WHERE
s.nro-cta = T.nro-cta))
23
El programa es una combinación de
sentencias en dos lenguajes: el lenguaje
propietario y las nuevas sentencias SQL.
Antes de compilar el programa por el
lenguaje propietario, los constructores SQL
deben ser procesados por un precompilador,
que traslada los constructores a llamadas a
procedimientos del lenguaje propietario.
Elementos de Bases de Datos
Clase 14
24
4
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Aplicación C con sentencias SQL
Constructores SQL con SLI
prog.pc
SQL embebido: son sentencias SQL
ordinarias, (SELECT, INSERT).
Precompilador
„
prog.c
„
„
Compilador C
prog.o
ejecutable
Cargador
... EXEC SQL SELECT C.nroAlumno INTO :qnro_alumno
FROM curso C
WHERE C.CodCurso=:vcod_curso
Librerías
SQL
Elementos de Bases de Datos
Clase 14
26
Constructores SQL con CLI
SQL dinámico: son directivas para ejecutar
SQL.
Las sentencias SQL aparecen en el programa
como valores de variables de tipo cadena que son
construidas por el lenguaje propietario en tiempo
de ejecución.
...Printf (“Qué datos de curso desea ver ?”);
scanf(“%s”, colum) // El usuario ingresa un campo
sprintf (my_sql_stmt, “SELECT C.%s FROM Curso C \
WHERE C.CodCurso=?”)
EXEC SQL PREPARE st1 FROM :my_sql_stmt
EXEC SQL EXECUTE st1 INTO :var1 USING :vcod_curso
Elementos de Bases de Datos
Clase 14
Elementos de Bases de Datos
Clase 14
25
Constructores SQL con SLI
„
Requiere conocimiento previo del esquema de
base de datos.
Las sentencias SQL son precedidas EXEC SQL.
Las aplicaciones son dependientes de la base de
datos para la que fueron desarrolladas.
ODBS (Open Database Conectivity) es una
API al DBMS que provee una interface a nivel
de llamado para la ejecución de sentencias
SQL.
Se trabajo en la especificación de una
interface a nivel de llamada, conocida como
especificación SQL/CLI.
Las sentencias se pueden construir en tiempo
de ejecución.
Elementos de Bases de Datos
Clase 14
27
Ejemplo
28
Temas de la clase de hoy
A continuación se muestra un patrón de llamadas a
procedimientos necesarios para establecer una conexión
ODBC en un programa C.
Restricciones de integridad. Representación en SQL
„
„
„
SQLAllocEnv (&henv);
SQLAllocConnect (henv, &hdbc);
SQLConnect (hdbc, database_name, userid, passwd);
SQLAllocStmt (hdbc, &hstmt);
SQLExecDirect (hstmt, ...sentencias SQL ....);
.. Procesar resultados ...
SQL FreeStmt (hstmt, fOption);
SQLDisconnect (hdbc);
SQLFreeConnect (hdbc);
SQLFreeEnv(henv);
Elementos de Bases de Datos
Clase 14
„
Integridad de Claves.
Integridad de Dominios.
Integridad Referencial.
Disparadores.
Combinando SQL con lenguajes de programación.
Constructores
„
„
A nivel de sentencia (SLI).
A nivel de llamado (CLI).
Bibliografía
„
„
29
“Fundamentos de Bases de Datos” – A. Silberschatz. Capítulo 6.
Databases and Transaction Procesing - Philip Lewis. Capítulo
10.
Elementos de Bases de Datos
Clase 14
30
5
Descargar