Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Restricciones de Integridad en una Base de Datos

No description
by

Williams Canul

on 20 June 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Restricciones de Integridad en una Base de Datos

Restricciones
Restricciones de los dominios
Restricciones de Integridad de una Base de Datos
Tipos de restricciones de integridad:
Una definición adecuada de las restricciones de los dominios permite verificar los valores introducidos en la base de datos. También permite examinar las consultas para asegurarse de que tengan sentido las comparaciones que hagan.
¿Qué es una restricción?...
Restricciones de Integridad:
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 restricción es una condición que obliga el cumplimiento de ciertas condiciones en la base de datos.
Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional.
Otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
Las Restricciones...
Proveen un método de implementar reglas en la base de datos.
Restringen los datos que pueden ser almacenados en las tablas
Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no.
Elementos que existen en un SGBD
Declaración de claves.
Cardinalidad de la relación
Restricciones de los dominios
Integridad referencial
Asertos
Disparadores
Dependencias
De varios a varios, de uno a varios,
de uno a uno.
-funcionales
-multivaloradas
Hay que asociar a cada atributo un dominio de valores posibles.
La declaración de que un atributo pertenezca a un determinado dominio actúa como una restricción sobre los valores que puede tomar.
La cláusula CREATE DOMAIN
Se puede usar para definir nuevos dominios.
Ejemplo:
create domain Euros numeric(12,2)
create domain Dólares numeric(12,2)
Definen los dominios Euros y Dólares como números decimales con un total de
12 dígitos, dos de los cuales se sitúan después de la coma decimal.
Un intento de asignar un valor de tipo Dólares a una variable de tipo Euros resultaría en un error sintáctico, aunque ambos tengan el mismo tipo numérico.
La cláusula CHECK de SQL
Permite restringir los dominios de maneras poderosas que no permiten la mayor parte de los sistemas de tipos de los lenguajes de programación
Permite al diseñador del esquema especificar un predicado que debe satisfacer cualquier valor asignado a una variable cuyo tipo sea el dominio.
Las condiciones check complejas pueden ser útiles cuando se desee asegurar la integridad de los datos, pero se deben usar con cuidado, dado que pueden ser costosas de comprobar.
Ejemplo: Restringir un dominio para que no contenga valores nulos:
create-domain
número-cuenta
char
(10)
constraint
comprobación-número-cuenta-nulo
check
(
value not null
)
Dentro de las restricciones de los dominios, un tipo especial de restricción que se puede aplicar a cualquier dominio es la restricción de existencia.
Esta restricción evita la aparición de valores nulos en las columnas.
NULL es un valor especial que indica que es un valor desconocido.
Al definir una columna se puede elegir entre:
Admitir nulos (por omisión).
No admitirlos -> Columna tipo NOT NULL.
Establecer valores por defecto -> Campo DEFAULT informado.
Integridad referencial
La integridad referencial permite asegurar que un valor que
aparece en una relación para un conjunto de atributos
determinado aparezca también en otra relación para un cierto
conjunto de atributos.
Existen SGBD que permiten la utilización de
secuencias para generación automática de valores,
por ejemplo en Oracle:
Algunos SGBD admiten la generación automática
de valores, por ejemplo en MySQL:
El SGBD garantiza que sólo se puede actualizar una clave primaria (PRIMARY KEY) o única (UNIQUE KEY) si no hay ninguna clave externa (FOREIGN KEY) que dependa de ella.
Se puede establecer cómo gestionar las relaciones cuando se producen operaciones como borrado o actualización.
La creación estaría 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 automáticamente borra o
actualiza las filas asociadas en la tabla hija.
SET NULL: Borra o actualiza la fila de la tabla padre y establece la clave ajena en la
tabla hija como NULL. Las columnas de clave ajena en la fila hija no deberían estar
definidas como NOT NULL
NO ACTION: Evita que se actualice o borre la fila en la tabla padre si hay un valor de clave ajena que lo invalida en la tabla hija.
RESTRICT: Rechaza el borrado o actualización en la tabla padre
(simila a NO ACTION)
Asertos
Un aserto es un predicado que expresa una condición que se desea 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.
Ejemplo de estas restricciones:
La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal.
Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1200 Euros.
create assertion
restricción-saldo
check
(
not exists
(
select * from
préstamo
where not exists
(
select
*
from
prestatario,impositor, cuenta
where
préstamo.número-préstamo=prestatario.número-préstamo
and
prestatario.nombre-prestatario = impositor.nombre-cliente
and
impositor.número-cuenta = cuenta.número-cuenta
and
cuenta.saldo >= 1200)))
Cuando se crea un aserto el sistema comprueba su validez. Si el aserto es válido, sólo se permiten las modificaciones posteriores de
la base de datos que no hagan que se viole el aserto.
Esta comprobación puede introducir una sobrecarga importante si se han
realizado asertos complejos.
Disparadores
Un disparador es una orden que el sistema ejecuta de manera automática
como efecto secundario de la modificación de la base de datos.
Son mecanismos útiles para alertar a los usuarios o para realizar de manera automática 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
Para diseñar un disparador es necesario:
Especificar las condiciones en las que se va a ejecutar el disparador:
Evento
que provoca la comprobación del disparador.
Una condición
que se debe cumplir para que se ejecute el disparador.
Especificar las acciones que se van a realizar cuando se ejecute el disparador.
Los disparadores están asociados a operaciones sobre las
filas de las tablas o vistas de la base de datos.
Cuando se realiza una operación de inserción, modificación o
borrado, el SGBD detecta si hay algún disparador asociado
que se ha de ejecutar
Un disparador tiene 3 partes:
Evento:
cabecera con la que se crea el trigger.
Condición:
que tiene que suceder para que se dispare el trigger.
Acción:
que actividades se tienen que llevar a cabo.
Temporalidad del evento:
BEFORE Operación -> El cuerpo del disparador debe ejecutarse
antes del evento que causa la activación del disparador.
AFTER Operación -> El cuerpo del disparador debe ejecutarse
después del evento que causa la activación del disparador.

Operación:
INSERT:
El disparador se activa cuando se inserta una nueva fila en la tabla, por
ejemplo, a través de acciones INSERT.
UPDATE:
El disparador se activa cuando se modifica una fila en la tabla, por
ejemplo, a través de acciones UPDATE.
DELETE:
El disparador se activa cuando se borra una fila en la tabla, por
ejemplo, a través de acciones DELETE.
Dependencias multivaloradas
Las dependencias multivaloradas son restricciones de
integridad que expresan relaciones entre los atributos de un esquema que no pueden ser expresables con las dependencias funcionales.
Las dependencias funcionales y multivaloradas se usarán
como herramienta fundamental en el proceso de
normalización de esquemas.

Además son útiles en la comprobación de consistencia de
relaciones resultado de migraciones y de sistemas heredados.
Ejemplo:
En la siguiente relación se representan los empleados, sus domicilios
y teléfonos, asumiendo que pueden tener más de una vivienda y
teléfono, y que no se dispone información acerca del tipo de
teléfono, fijo o móvil, por lo que no se puede relacionar con un
domicilio.
Estos atributos son independientes entre sí. Para mantener la relación
consistente es necesario expresar todas las combinaciones de los
atributos.
Mientras que las dependencias funcionales impiden que aparezcan ciertas tuplas en las relaciones, las dependencias multivaloradas obligan a ello.

Las dependencias multivaloradas aparecen cuando en un esquema de relación hay varias relaciones 1:N independientes entre sí.
Dependencias Funcionales
Una dependencia funcional (DF) es una propiedad semántica de un esquema de relación que presentan las tuplas válidas de la relación que determina para cada valor de un conjunto de atributos X el valor de otro conjunto de atributos Y. Es decir, dada una tupla t1 de la relación con un valor para X y otro para Y, si aparece otra tupla t2 con el mismo valor para
X, entonces esta tupla debe tener el mismo valor en Y que t1.
Ejemplo:
En la siguiente relación se combinan los datos de los empleados,
como su código de identificación y nombre, y de los centros a los
que están adscritos, como la dirección y el teléfono.
En este ejemplo se muestra gráficamente que el valor del
conjunto de campos DirecciónC y TeléfonoC depende del
valor del campo Centro.
En concreto, a un centro en particular le corresponden
unívocamente una dirección y un teléfono. Es decir, cada vez que aparezca una fila con el valor Informática para Centro, siempre le corresponderá los mismos valores para los campos DirecciónC y TeléfonoC.
Cierre de un conjunto de dependencias funcionales
Definición:
El cierre de un conjunto de dependencias funcionales S, denotado S+, es el conjunto de todas las dependencias definidas intencionalmente por S.
En otras palabras, es el conjunto de todas las dependencias
funcionales que se pueden deducir de S.
Este concepto es importante para poder determinar la
equivalencia semántica de dos conjuntos de dependencias y
poder elegir el menor de forma que la comprobación de su
satisfacción sea más rápida.
Cierre de un conjunto de atributos
Definición:
El cierre de un conjunto de atributos X con respecto a un conjunto de
dependencias funcionales S, denotado X+
S, es el conjunto de atributos 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.
El cálculo 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 su
cierre. Se puede determinar si su comprobación es redundante para la integridad de los datos.
2. Comprobar si un conjunto de atributos es superclave. Asegura que el conjunto de atributos elegido por el diseñador es adecuado para determinar unívocamente cada tupla de una relación. Permite
determinar superclaves que se pueden usar como índice sin repetidos (algoritmo de indexación más eficiente) para el acceso a los datos mediante consultas.
3. Calcular un conjunto mínimo de dependencias funcionales. Útil
para mantener la comprobación de integridad menos costosa.
Recubrimiento de un conjunto de dependencias funcionales
Definición 1:
Dados dos conjuntos de dependencias funcionales S1 y S2, se dice
que S2 es un recubrimiento de S1 si cada dependencia de S1 se
deduce de S2.
es decir, se puede demostrar que cada dependencia de S1 está en el
cierre de S2
Definición 2:
Dos conjuntos de dependencias funcionales S1 y S2 son
equivalentes 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.
Definición 3:
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 sólo un
atributo.
2. La parte izquierda de cada dependencia funcional de S es irreducible
en el sentido en que si se elimina algún atributo, necesariamente cambia
el cierre de S.
3. No se puede eliminar ninguna dependencia funcional de S sin
cambiar su cierre.
Elaborado por:
Williams Canul Kuk SI32
williamscanul@gmail.com
Full transcript