Documente Academic
Documente Profesional
Documente Cultură
Snchez E
Tejadillos E.
Facultad de Informtica Universidad Politcnica de Valencia
email: evsanar@inf.upv.es, eltepe@inf.upv.es
Resumen
Las restricciones de integridad son propiedades de la base de datos
que se deben satisfacer en cualquier momento.
Oracle es un sistema de gestin de base de datos (SGBD) relacional
que permite la definicin de restricciones de integridad dentro del
diseo de su base de datos al ser creada.
Se estudiar los diferentes tipos de restricciones que comprenden los
siguientes puntos:
Tratamiento de valores nulos.
Valores por defecto.
Integridad de clave primaria.
Claves alternativas.
Integridad referencial.
Restricciones de integridad estticas.
Estas restricciones sern definidas en la fase de diseo de la base de
datos e incluidas en la los scripts de creacin de tablas.
Otra cualidad del sistema de gestin de Oracle es la posibilidad de
modificar las restricciones definidas para una tabla. Esto puede llevar
conllevar a inconsistencia de los datos ya introducidos en la base
de datos. Por ello, Oracle tiene definidos mecanismos para
modificacin de los datos ya existentes.
Adems se estudiar cuando son ejecutas las restricciones de
integridad dentro del esquema de funcionamiento de una base de
datos Oracle.
1. Introduccin
La integridad de los datos es la propiedad que asegura que
informacin dada es correcta, al cumplir ciertas aserciones.
Las restricciones de integridad aseguran que la informacin contenida
en una base de datos es correcta.
1
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
Descripcin general
Restriccin de Unicidad: un
objeto podr ser unvocamente
identificable usando un determinado atributo.
2.3
Comprobacin de la integridad.
3
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
Ejemplo:
Dni integer CONSTRAINT nn_dni NOT NULL
2.6
Formato:
5
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
A nivel columna:
atributo tipo [CONSTRAINT nombre] PRIMARY KEY.
A nivel tabla:
[CONSTRAINT nombre] PRIMARY KEY(colum1,.. colum ..).
Ejemplo:
A nivel columna:
Dni integer [CONSTRAINT pk_dni] PRIMARY KEY
A nivel tabla:
CONSTRAINT pk_nomapelli PRIMARY KEY(nom,apelli).
Por defecto, ORACLE no permite la insercin de valores nulos en las
columnas definidas como clave primaria.
2.8
Formato:
atributo tipo [CONSTRAINT nobmre] UNIQUE.
Ejemplo:
nombre char CONSTRAINT unq_nombre UNIQUE.
-
Formato:
[CONSTRAINT nombre] UNIQUE (columan1, columana2 ...)
Ejemplo:
CONSTRAINT unq_nomapell UNIQUE(nombre, apellidos)
2.9
Formato:
[CONSTRAINT nombre] FOREIGN KEY (columna1, columna2, ...)
REFERENCES n_tabla[(columna1, columna2,...)] [ON DELETE
CASCADE]
Ejemplo:
FOREIGN KEY(dep) REFERENCES departamento(nom)
2.10 Tratamiento de las restricciones de integridad estticas
en ORACLE
Las restricciones de integridad estticas sern aquellas frmulas bien
formadas de primer orden construidas con atributos de la tabla como
trminos bsicos, que depende satisfacerse en todos los estados
vlidos para las tuplas de una relacin.
Estas restricciones de integridad estn especificadas en ORACLE
dentro de una restriccin de tipo CHECK asociada a una columna o
una tabla.
La implementacin de esta restriccin en una columna sera:
Formato:
atributo tipo [CONSTRAINT nombre] CHECK condicin.
Ejemplo:
Saldo integer CHECK saldo!=saldo_base
A diferencia de otros gestores, en esa condicin se puede hacer
referencia a cualquier columna de la tabla.
No se pueden introducir en estas condiciones atributos de otras
tablas. En ese caso, slo queda el recurso de programar
explcitamente la restriccin de integridad, lo que habitualmente se
hace generando disparos (triggers) de la base de datos.
La implementacin a nivel de tabla sera equivalente.
3. Modificacin de restricciones
Una vez creada una tabla es inevitable enfrentarse a situaciones en
las que cambios no previstos obliguen a modificar las restricciones de
integridad declaradas en el momento de su creacin.
La flexibilidad proporcionada por un SGBD para abordar este tipo de
modificaciones es un factor diferenciador que puede resultar bsico.
8
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
9
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
El
diseo
de
las
tablas
de
esta
pequea
base
de
datos
vendra
dado por:
CREATE TABLE Departamento
(codigo CHAR(5) NOT NULL,
nombre VARCHAR(100) NOT NULL,
director VARCHAR(50),
telefono CHAR(11),
CONSTRAINT CP_dpto PRIMARY KEY (codigo);
Para la tabla departamento tiene definidas las restricciones de
integridad de:
tratamiento de no nulos para las columnas:
cdigo
nombre
tratamiento de clave primaria denominada CP_dpto
para la
columna cdigo
CREATE TABLE Profesor
(codigo CHAR(5) NOT NULL,
nombre VARCHAR(100) NOT NULL
11
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
direccion VARCHAR(50),
telefono CHAR(11),
categoria CHAR(3) NOT NULL CONSTRAINT RI_cat CHECK
(categoria=TEU OR categoria=CU OR categoria=CEU), dpto
CHAR(5),
CONSTRAINT CP_prof PRIMARY KEY (codigo),
CONSTRAINT Caj_prof_dpto FOREIGN KEY (dpto) REFERENCES
Departamennto);
Como puede verse, la tabla profesor tiene definidas las
restricciones de integridad de:
tratamiento de no nulos para las columnas:
cdigo
nombre
categora
restricciones de integridad estticas con la clusula check llamada
RI_cat para la columna categora, que delimita el rango de valores
que puede contener la columna a tres cadenas de caracteres,
TEU, CU y CEU.
tratamiento de clave primaria denominada CP_prof para la
columna cdigo
tratamiento de clave ajena denominada Caj_prof_dpto de la
columna dpto haciendo referencia a la tabla departamento.
CREATE TABLE Asignatura
(codigo CHAR(5) NOT NULL,
nombre VARCHAR(100) NOT NULL,
cre_teo NUMBER(3,1) NOT NULL CONSTRAINT RI_teo CHECK
(cre_teo>0),
cre_pra NUMBER(3,1) NOT NULL CONSTRAINT RI_teo CHECK
(cre_pra>0),
dpto CHAR(5),
CONSTRAINT CP_asg PRIMARY KEY (codigo),
CONSTRAINT Caj_asg_dpto FOREIGN KEY (dpto), REFERENCES
Departamento);
La tabla asignatura tiene definidas las restricciones de integridad
de:
tratamiento de no nulos para las columnas:
cdigo
nombre
cre_teo
cre_pra
restricciones de integridad estticas con la clusula check para las
columnas:
12
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
curso
de
14
Laboratorio de Sistemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia