Restricciones de Integridad en ORACLE E. Sánchez E. Tejadillos

Download Report

Transcript Restricciones de Integridad en ORACLE E. Sánchez E. Tejadillos

Restricciones de Integridad en ORACLE
E. Sánchez
E. Tejadillos
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
29/01/03
1
Índice
 Definición
 Tipos de restricciones de integridad
 Restricciones de Integridad en Oracle
Valores Nulos
Valores por Defecto
Clave Primaria
Clave Alternativa
Clave Ajena
Restricciones de integridad estáticas
 Demo
29/01/03
2
Definición
 Las restricciones de integridad aseguran que la información
contenida en una base de datos es correcta.
 Ventajas de declarar las restricciones de integridad como
parte del esquema de la base de datos:
Reduce el coste de desarrollo de software.
Es más confiable al ser centralizado y uniforme.
Mantenimiento más fácil.
29/01/03
3
Tipos
Según el estado
Estáticas
 limitan los estados
permitidos de la BD.
Dinámicas
 restringen las posibles
transiciones de estados de
la BD.







29/01/03
Según estén orientadas
Restricciones de Cardinalidad
Restricción de Dominio
Restricción de Unicidad
Restricción de Inverso
Restricción de Coexistencia
Restricción de Clases hijas
Disjuntas
Restricción de Cobertura
4
Restricciones de integridad
elementales en Oracle
 Integridad de Entidades
 Valores nulos
 Valores por defecto
 Claves primarias
 Claves alternativas
 Restricciones de integridad estáticas
 Integridad referencial
 Claves ajenas
29/01/03
5
Tratamiento de valores nulos

Especifica si una columna puede contener o no valores nulos.
ORACLE por defecto admite valores nulos.
atributo tipo [CONSTRAINT nombre] NOT NULL | NULL.
Ejemplo:
Dni integer CONSTRAINT nn_dni NOT NULL
29/01/03
6
Tratamiento de valores por
defecto

Especifica los valores que podrán ser asignados a una
columna, cuando en ésta no se introduzca ningún valor .
atributo tipo DEFAULT expresión.

Ejemplo:
Num integer DEFAULT 1+3.
29/01/03
7
Tratamiento de clave primaria

Designa una columna o combinación de columnas como clave
primaria de la tabla.
 Puede ser definida a nivel de tabla o columna.

A nivel columna:
atributo tipo [CONSTRAINT nombre] PRIMARY KEY.

A nivel tabla:
[CONSTRAINT nombre] PRIMARY KEY(colum1,.. colum ..)
29/01/03
8
Tratamiento de clave alternativa

Se designa una columna o combinación de columnas como
clave única alternativa a la clave seleccionada como primaria .
 Puede ser definida a nivel de tabla o columna.

A nivel columna:
atributo tipo [CONSTRAINT nombre] UNIQUE

A nivel tabla:
[CONSTRAINT nombre] UNIQUE (colum1,.. colum ..)
29/01/03
9
Tratamiento de las restricciones de integridad estáticas

Son fórmulas bien formadas de primer orden construidas con
atributos de la tabla como términos básicos, que satisfacen en
todos los estados válidos para las tuplas de una relación .
 Son restricciones de tipo CHECK asociadas a una columna o
una tabla .
atributo tipo [CONSTRAINT nombre] CHECK condición.
Ejemplo:
Saldo integer CHECK saldo!=saldo_base
29/01/03
10
Tratamiento de claves ajenas
 A nivel columna
 Se declara detrás del tipo asociado .
 Si solo se indica el nombre de la tabla, por defecto se
referencia a la clave primaria de la tabla.
 La columna donde se define el REFERENCES puede tener
valores nulos
[atributo tipo [CONSTRAINT nombre]
REFENCES ntabla[(columna)] [ON DELETE CASCADE]
 Ejemplo:
Dep char(10) REFERENCES departamento(nom)
29/01/03
11
Tratamiento de claves ajenas
 A nivel de tabla
 Se especifica la columna o composición de columnas que
forman parte de la clave ajena después de la palabra clave
FOREIGN KEY y la columna o columnas a la que se hace
referencia después de la palabra clave REFERENCES
 El número de columnas y tipos debe coincidir
[CONSTRAINT nombre]
FOREIGN KEY (columna1,
columna2,
...)
REFERENCES
n_tabla[(columna1,
columna2,...)] [ON DELETE CASCADE]

Ejemplo:
FOREIGN KEY(dep) REFERENCES departamento(nom)
29/01/03
12
Tratamiento de claves ajenas
 Acciones realizar en caso de borrado o modificación de la
clave primaria a la que hace referencia la clave ajena:
1.
Restringir (restrict),
2.
poner a nulos (set null),
3.
propagar (cascade),
 En ORACLE se puede especificar la situación en que se
borre la clave primaria y queramos propagarlo a la clave
ajena mediante la cláusula on delete cascade.
 Por defecto, ORACLE asume la operación como restringida y
para incluir otras características hay que generar
disparadores (”triggers”).
29/01/03
13
Modificación de restricciones
 Tipos de modificaciones sobre una BD:
 No afectan a la integridad de la BD ya existente.
 Si afectan a la integridad de la BD e implican la toma
de decisiones. El diseñador es quién debe elegir el
mecanismo para mantener la BD íntegra
 ALTER TABLE sirve para añadir o redefinir una columna,
a añadir o borrar una restricción de integridad y para
activar o desactivar cualquier restricción de integridad o
disparo
29/01/03
14