Está en la página 1de 14

Las Restricciones de Integridad en ORACLE 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 !ratamiento de "alores nulos. #alores por defecto. $ntegridad de cla"e primaria. %la"es alternati"as. $ntegridad referencial. &estricciones de integridad estticas. 'stas 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. 'sto puede lle"ar conlle"ar a (inconsistencia) de los datos *a introducidos en la base de datos. +or ello, Oracle tiene definidos mecanismos para modificacin de los datos *a e-istentes. .dems se estudiar cuando son e/ecutas 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 ue asegura informaci!n dada es correcta, al cumplir ciertas aserciones. ue

Las restricciones de integridad aseguran ue la informaci!n contenida en una "ase de datos es correcta. 1
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

$n los primeros puntos del tra"a%o, se reali&ar una definici!n a modo general de lo ue son las restricciones de integridad, los tipos ' venta%as ue tiene su implementaci!n en el es uema de la "ase de datos. La segunda parte est orientada ms a la parte prctica. #e especifica ms concretamente las definiciones ' modificaciones ue se pueden reali&ar so"re restricciones de integridad en ()*+L$. Para todos ' cada uno de los puntos se especificar el formato de la clusula correspondiente en ()*+L$ ' un e%emplo de la misma. La modificaci!n de las restricciones de integridad en ()*+L$ tan s!lo se puede implementar a travs de la clusula *L,$) ,*-L$. . !e"inicin de restricciones .1 !escri#cin general

La evoluci!n en el tiempo de una -ase de .atos puede descri"irse por una secuencia de estados. Dato un estado D, su sucesor D0, se obtiene aplicando a D una transaccin !, tal que D ! D0 /01. Las restricciones de integridad aseguran ue la informaci!n contenida en la "ase de datos cumple ciertas restricciones para los diferentes estados. $2isten dos tipos de restricciones: $stticas: limitan los estados permitidos de la -ase de .atos. .inmicas: restringen las posi"les transiciones de estados de la "ase datos. Para incorporar el tratamiento de las restricciones de integridad en el sistema pueden reali&arse: *3adiendo c!digo adicional para verificar ' asegurar ue se cumplen las restricciones. .eclarando las restricciones como parte del es uema de la "ase de datos. La definici!n en la fase de dise3o de las restricciones de integridad proporciona ma'or n4mero de venta%as, 'a ue: )educe el coste de desarrollo de soft5are. 2
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

$s ms confia"le al ser centrali&ado ' uniforme. 6antenimiento ms fcil.

$n las siguientes secciones se descri"irn ms ampliamente la definici!n de las restricciones de integridad a modo general, as7 como los tipos de restricciones ue podemos encontrar ' otras clasificaciones. ,am"in se descri"ir como se implementa el tratamiento de las restricciones en ()*+L$, declarndolas como parte del es uema de la "ase de datos en la fase de creaci!n de las ta"las ' c!mo se pueden ser modificadas con posterioridad. . Re#resentacin de restricciones de integridad estticas. )estricciones de +ardinalidad: se restringe la cantidad de o"%etos ue puede referenciar a travs de un atri"uto o la cantidad de o"%etos agregados ue lo pueden referenciar como elemento de la agregaci!n. Inclu'e el control de permiso para ue un atri"uto pueda incluir un indicador definido por el sistema, como es el indicador 8ULL ' ue represente informaci!n faltante. )estricci!n de .ominio: s!lo los o"%etos especificados pueden servir como dominio de un atri"uto. )estricci!n de Unicidad: un o"%eto podr ser un7vocamente identifica"le usando un determinado atri"uto. )estricci!n de Inverso: si un *tri"uto *0 es el inverso de otro *9, entonces si (9 es un valor del atri"uto *0 de alg4n o"%eto (0 implica ue (0 es un valor del atri"uto *9 para el o"%eto (9. )estricci!n de +oe2istencia: una instancia de la clase :i%a de"e ser tam"in e2istir como instancia de sus clases padre. )estricci!n de +lases :i%as .is%untas: las instancias de la clase padre s!lo pueden pertenecer a una clase :i%a dentro de la %erar u7a. )estricci!n de +o"ertura: todas las instancias de al menos una clase :i%a dentro de la %erar u7a. .$ Com#ro%acin de la integridad.

3
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

La compro"aci!n de la integridad consiste en asegurar ue un par de estados ;.,.<=, implicados en una transacci!n, satisface las restricciones dinmicas ' ue el estado final .< satisface las restricciones esttica >dinmicas. La compro"aci!n de la integridad dentro de ()*+L$, se reali&a mediante el algoritmo (), donde se define la e%ecuci!n del evento intercalado con la e%ecuci!n de las reglas activadas por l ' la compro"aci!n de las restricciones de integridad relevantes para el evento. .& Restricciones de integridad elementales.

Integridad de $ntidades: ning4n componente de clave primaria de una relaci!n puede aceptar nulos. 8ulo se referir a informaci!n faltante. $l concepto de unicidad es parte de la definici!n de clave primaria en s7. Integridad )eferencial: la "ase de datos no puede contener valores de clave a%ena sin concordancia. La posi"ilidad de aceptaci!n de valores nulos de"er ser evaluada por el analista, al igual de las opciones a seguir ;restricci!n, propagaci!n o anulaci!n=

$n el caso de ()*+L$, todas las definiciones de restricciones ;tratamiento de nulos, claves primarias, a%enas etc.= 'a sean a nivel de columna o a nivel de ta"la, tienen un nom"re. +omo esta asignaci!n de nom"re por parte del dise3ador es opcional, si no se le asigna nom"re en el momento de la definici!n, ()*+L$ le asigna uno interno. $n cual uier caso, es conveniente declarar una restricci!n con su nom"re por ue as7 es posi"le referenciarla posteriormente en sentencias *L,$) ,*-L$, para activarla o desactivarla. * continuaci!n se indicarn c!mo son tratadas las distintas variantes de las restricciones de integridad elementales dentro de ()*+L$. .' Tratamiento de (alores nulos en ORACLE.

$sta restricci!n especifica si una columna puede contener o no valores nulos. ()*+L$ por defecto se asume ue la columna admite valores nulos. Formato: atri"uto tipo /+(8#,)*I8, nom"re1 )OT )*LL + )*LL. 4
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

$%emplo: .ni integer +(8#,)*I8, nn?dni )OT )*LL ., Tratamiento de los (alores #or de"ecto en ORACLE.

$n este caso, las restricciones de integridad se utili&an para especificar valores ue sern asignados a una columna, cuando en sta no se introdu&ca ning4n valor. $l valor especificado en este campo de"e ser del mismo tipo ue la columna. Las restricciones se especifican como parte de la definici!n de la columna. Para el tratamiento de informaci!n faltante, se le puede especificar un 8ULL como valor por defecto siempre ue la columna permita nulos. $n la e2presi!n no se puede :acer referencia a otras columnas. Formato: atri"uto tipo !E-A*LT e2presi!n. $%emplo: 8um integer !E-A*LT 0@A. .. Tratamiento de cla(e #rimaria en ORACLE

$n este caso la restricci!n de integridad designa una columna o com"inaci!n de columnas como clave primaria de la ta"la. Para facilitar su especificaci!n, ()*+L$ permite definir la restricci!n a nivel de columna ;en el m"ito de definici!n de una columna= o a nivel de ta"la ;si se definen despus de introducir todas las columnas, en una secci!n genrica final de definici!n de restricciones=. * nivel de columna: #e define dentro de una constraint asociada a la misma. La definici!n de una clave primaria lleva impl7cita la restricci!n de valores no nulos. La misma columna puede ser definida como primaria ' a%ena pero no como primaria ' alternativa. * nivel de ta"la: #e utili&a para definir claves primarias compuestas. #e declara antes o despus de :a"er introducido las columnas de la ta"la en cuesti!n.

Formato: 5
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

* nivel columna: atri"uto tipo /+(8#,)*I8, nom"re1 /RI0AR1 2E1. * nivel ta"la: /+(8#,)*I8, nom"re1 /RI0AR1 2E1;colum0,.. colum ..=. $%emplo: * nivel columna: !ni integer 3CO)STRAI)T #45dni6 P)I6*)B C$B * nivel ta"la: %O1S!&.$1! p23nomapelli PRIMARY KEY(nom,apelli). Por defecto, ()*+L$ no permite la inserci!n de valores nulos en las columnas definidas como clave primaria. .7 Tratamiento de cla(es alternati(as en ORACLE

Para las claves alternativas en ()*+L$, se designa una columna o com"inaci!n de columnas como clave 4nica alternativa a la clave seleccionada como primaria. $2isten dos posi"ilidades para seleccionar una clave primaria, Para definir una columna como 4nica se especifica dentro de una constraint asociada a dic:a columna.

Formato: atributo tipo 4%O1S!&.$1! nobmre5 UNIQUE. $%emplo: nom"re c:ar +(8#,)*I8, un ?nom"re *)I8*E. Para definir una com"inaci!n de columnas como clave 4nica se especifica dentro de una constraint asociada a la ta"la.

Formato: /+(8#,)*I8, nom"re1 *)I8*E ;columan0, columana9 ...= $%emplo: %O1S!&.$1! unq3nomapell UNIQUE(nombre, apellidos) .9 Tratamiento de cla(es ajenas en ORACLE 6
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

$n ()*+L$ pueden definirse claves a%enas a nivel columna o a nivel de ta"la. La integridad referencial de claves a%enas a nivel columna se declara detrs del tipo asociado al atri"uto en cuesti!n, con el formato presentado a continuaci!n, en el ue la pala"ra columna representa la clave primaria o 4nica referenciada en la ta"la n3tabla. #i no se especifica la columna o columnas, sino tan s!lo el nom"re de la ta"la, se asume por defecto ue estamos referenciando a su clave primaria. * diferencia de la columna a la ue se :ace referencia, la columna donde se define el )$F$)$8+$# puede tener valores nulos. * acciones a reali&ar: 0. )estringir ;restrict), 9. poner a nulos ;set null=, A. propagar ;cascade=, #i la clave primaria a la ue :ace referencia la clave a%ena es "orrada o actuali&ada, en este caso s!lo podemos especificar la situaci!n en ue se "orre la clave primaria ' ueramos propagarlo a la clave a%ena. $sto es reali&ado mediante la clusula on delete cascade. #i sta no aparece, al igual ue para actuali&aciones de la clave primaria, la operaci!n se asume restringida. Para incluir esas caracter7sticas faltantes :a' ue generar ;es decir, programar= los disparos correspondientes. Formato: atri"uto tipo /+(8#,)*I8, nom"re1 RE-E)CES nta"la/;columna=1 3O) !ELETE CASCA!E1 $%emplo: Dep c6ar(78) REFERENCES departamento(nom) #i las restricciones se definen a nivel de ta"la se especifica la columna o composici!n de columnas ue forman parte de la clave a%ena despus de la pala"ra clave F()$ID8 C$B ' la columna o columnas a la ue se :ace referencia despus de la pala"ra clave )$F$)$8+$#. ("viamente, el n4mero de columnas ' tipos de la clave a%ena de"e coincidir con el n4mero de columnas ' tipos de la clave primaria referenciada. 7
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

Formato: 4%O1S!&.$1! nombre5 FOREIGN KEY (columna7, columna9, ...) REFERENCES n3tabla4(columna7, columna9,...)5 4ON DELETE CASCADE5 $%emplo: FOREIGN KEY(dep) REFERENCES departamento(nom) .1: Tratamiento de las restricciones de integridad estticas en ORACLE Las restricciones de integridad estticas sern a uellas f!rmulas "ien formadas de primer orden construidas con atri"utos de la ta"la como trminos "sicos, ue depende satisfacerse en todos los estados vlidos para las tuplas de una relaci!n. $stas restricciones de integridad estn especificadas en ()*+L$ dentro de una restricci!n de tipo C;EC2 asociada a una columna o una ta"la. La implementaci!n de esta restricci!n en una columna ser7a: Formato: atributo tipo 4%O1S!&.$1! nombre5 CHECK condicin. $%emplo: Saldo integer CHECK saldo:;saldo3base * diferencia de otros gestores, en esa condici!n se puede :acer referencia a cual uier columna de la ta"la. 8o se pueden introducir en estas condiciones atri"utos de otras ta"las. $n ese caso, s!lo ueda el recurso de programar e2pl7citamente la restricci!n de integridad, lo ue :a"itualmente se :ace generando disparos ;EtriggersF= de la "ase de datos. La implementaci!n a nivel de ta"la ser7a e uivalente. $. 0odi"icacin de restricciones Una ve& creada una ta"la es inevita"le enfrentarse a situaciones en las ue cam"ios no previstos o"liguen a modificar las restricciones de integridad declaradas en el momento de su creaci!n.

8
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

La fle2i"ilidad proporcionada por un #D-. para a"ordar este tipo de modificaciones es un factor diferenciador ue puede resultar "sico. #e trata de un pro"lema clsico en -ase de .atos, al ue se le conoce como Desti!n de $voluci!n de $s uemas. $ntre las modificaciones a ue est e2puesta una "ase de datos en e2plotaci!n, es importante distinguir entre: * uellas ue no afectan a la integridad de los datos 'a e2istentes ;por e%emplo, a3adir una columna nueva a una ta"la, o permitir ue admita nulos un atri"uto ue :asta a:ora no los admit7a=. B las ue s7 afectan a la integridad de los datos e implican toma de decisiones ;por e%emplo, cam"iar una restricci!n de integridad: la cuesti!n ue se plantea es u :acer con los datos pree2istentes ue no la cumplen, G"orrarlosH Gignorarlos ' aplicar la restricci!n a partir del momento de su introducci!n en el es uemaH=. Las elecci!n del mecanismo a seguir para mantener la "ase de datos 7ntegra de"er ser elegida por el dise3ador de la "ase de datos, seg4n considere oportunas. $stas compro"aciones se reali&arn mediante disparos o reglas de actividad definidas tam"in en la "ase de datos.

La sentencia .L!'& !.BL' sirve para a3adir o redefinir una columna, a3adir o "orrar una restricci!n de integridad ' para activar o desactivar cual uier restricci!n de integridad o disparo. #u implementaci!n en ()*+L$ ser7a la siguiente: Formato: ALTER TABLE 4esquema.5nom3tabla 4ADD nom3col < defe3de3restriccion3col5 4MODIFY nom3col tipo < def3de3restriccion3col5 4ADD < def3restriccion3tabla5 4DROP PRIMARY KEY = UNIQUE = %O1S!&.$1! nombre 4CASCADE55 4ENABLE PRIMARY KEY = UNIQUE = %O1S!&.$1! nombre = ALL TRIGGERS5 4DISABLE PRIMARY KEY = UNIQUE = %O1S!&.$1! nombre 4CASCADE55 donde: def3de3restriccion3col ' def3restriccion3tabla se refieren a las declaraciones de restricciones ue se pueden reali&ar en el m"ito de una columna o de la ta"la en su con%unto respectivamente. 9
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

#i des:a"ilitamos una restricci!n tenemos la posi"ilidad de des:a"ilitar en cascada todas las restricciones ue dependan de ella a travs de la clusula cascade. #i :a"ilitamos una restricci!n de integridad referencial, la restricci!n de clave primaria o 4nica asociada de"e ser :a"ilitada con anterioridad ;si no lo esta"a 'a=. Las opciones asociadas a U8IIU$ identifican la clave 4nica implicada en la modificaci!n indicndola entre parntesis.

La clusula '1.BL' .LL !&$GG'&S permite activar disparos ue puedan :a"er sido desactivados con la orden .L!'& !&$GG'& opci!n D$S.BL' proporcionada por ()*+L$. &. 0ecanismo de acti(acin de las restricciones de integridad en ORACLE. La e%ecuci!n de los eventos en una "ase de datos ()*+L$ viene definida por el *lgoritmo *9 or ' (). *lgoritmo *9or recursivo: 0ientras e-istan reglas acti"adas 0. seleccionar una regla activada ) 9. compro"ar la condici!n de ) A. si la condici!n de ) es cierta: a. e%ecutar la acci!n de ) ". e%ecutar () para las reglas activadas por la acci!n de ) "in mientras $l algoritmo () indica como se intercala la e%ecuci!n de las reglas activadas por l ' la compro"aci!n de las restricciones de integridad relevantes para el evento. 0. Procesar con *9or las reglas activadas de tipo B'>O&' evento >O& '.%? S!.!'@'1!. 9. Para cada tupla afectada por el evento a. Procesar con *9 or las instancias ;para la tupla actuali&adaJ de las reglas activadas de tipo B'>O&' evento >O& '.%? &OA

10
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

". $%ecutar la actuali&aci!n so"re la tupla ' compro"ar las restricciones de integridad relevantes para la tupla actuali&ada. * u7 se comprue"a las restriciones de integridad relevantes par ael evento ue son compro"adas a nivel de tupla individual (1O! 1BLL, %?'%C(), ...=. c. Procesar con *9or las instancias ;para la tupla actuali&ada = de las reglas activadas de tipo .>!'& evento >O& '.%? &OA A. +ompro"ar las restricciones de integridad relevantes para la operaci!n de actuali&aci!n a nivel de sentencia #IL ;>O&'$1G C'D=. K. Procesar con .9or las reglas activadas de tipo .>!'& evento >O& '.%? S!.!'@'1!. ,. Ejem#lo #rctico so%re una %ase de datos com<n.

$l dise3o de las ta"las de esta pe ue3a "ase de datos vendr7a dado por: CREATE TABLE Departamento (codigo %?.&(E) 1O! 1BLL, nombre #.&%?.&(788) 1O! 1BLL, director #.&%?.&(E8), telefono %?.&(77), %O1S!&.$1! %+3dpto +&$@.&D C'D (codigo)F Para la ta"la Edepartamento) tiene definidas las restricciones de integridad de: tratamiento de no nulos para las columnas: cdigo nombre tratamiento de clave primaria denominada %+3dpto para la columna cdigo %&'.!' !.BL' Profesor 11
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

(codigo %?.&(E) 1O! 1BLL, nombre #.&%?.&(788) 1O! 1BLL direccion #.&%?.&(E8), telefono %?.&(77), categoria %?.&(G) 1O! 1BLL %O1S!&.$1! &$3cat %?'%C (categoria;0!'B0 O& categoria;0%B0 O& categoria;0%'B0), dpto %?.&(E), %O1S!&.$1! %+3prof +&$@.&D C'D (codigo), %O1S!&.$1! %a/3prof3dpto >O&'$G1 C'D (dpto) &'>'&'1%'S Departamennto)F +omo puede verse, la ta"la E profesor) tiene definidas las restricciones de integridad de: tratamiento de no nulos para las columnas: cdigo nombre categorHa restricciones de integridad estticas con la clusula c6ec2 llamada &$3cat para la columna categorHa, ue delimita el rango de valores ue puede contener la columna a tres cadenas de caracteres, L,$U<, L+U< ' L+$U<. tratamiento de clave primaria denominada %+3prof para la columna cdigo tratamiento de clave a%ena denominada %a/3prof3dpto de la columna dpto :aciendo referencia a la ta"la departamento. %&'.!' !.BL' Asigna !ra (codigo %?.&(E) 1O! 1BLL, nombre #.&%?.&(788) 1O! 1BLL, cre3teo 1B@B'&(G,7) 1O! 1BLL %O1S!&.$1! &$3teo %?'%C (cre3teoI8), cre3pra 1B@B'&(G,7) 1O! 1BLL %O1S!&.$1! &$3teo %?'%C (cre3praI8), dpto %?.&(E), %O1S!&.$1! %+3asg +&$@.&D C'D (codigo), +(8#,)*I8, +a%?asg?dpto F()$ID8 C$B ;dpto=, )$F$)$8+$# .epartamento=M La ta"la Easignatura) tiene definidas las restricciones de integridad de: tratamiento de no nulos para las columnas: cdigo nombre cre3teo cre3pra 12
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

restricciones de integridad estticas con la clusula c6ec2 para las columnas: cre3teo ;denominada &$3teo= cre3pra ;denominada &$3pra= tratamiento de clave primaria denominada %+3asg para la columna cdigo tratamiento de clave a%ena denominada %a/3asg3dpto de la columna dpto :aciendo referencia a la ta"la departamento.

%&'.!' !.BL' Do"en"ia (cod3prof %?.&(E) 1O! 1BLL, cod3asg %?.&(E) 1O! 1BLL, creditos 1B@B'&(G,7) 1O! 1BLL %O1S!&.$1! &$3cre %?'%C (creditosI8), %O1S!&.$1! %+3doc +&$@.&D C'D (cod3prof, cod3asg), %O1S!&.$1! %a/3doc3prof >O&'$G1 C'D (cod3prof) &'>'&'1%'S +rofesor, %O1S!&.$1! %a/3doc3asg >O&'$G1 C'D (cod3asg) &'>'&'1%'S .signatura)F Finalmente, la ta"la Edocencia) tiene definidas las restricciones de integridad de: tratamiento de no nulos para las columnas: cod3prof cod3asg crJditos restricciones de integridad estticas con la clusula c6ec2 denominada &$3cre para la columna crJditos. tratamiento de clave primaria denominada %+3doc para la com"inaci!n de columnas cod3prof ' cod3asg. tratamiento de clave a%ena denominada %./3doc3prof de la columna cod3prof :aciendo referencia a la ta"la profesor. ,ratamiento de clave a%ena denominada %./3doc3asg de la columna cod3asg :aciendo referencia a la ta"la asignatura. .. Conclusiones Finalmente, podemos esta"lecer ue la inclusi!n de las restricciones de integridad dentro del dise3o del es uema de la "ase de datos se traduce en venta%as. ()*+L$ da muc:as posi"ilidades a la :ora de implementar los distintos tipos de restricciones de integridad ue se pueden dar so"re una "ase de datos. Las restricciones de entidades son definidas al mismo tiempo ue son creadas las ta"las. Las restricciones 13
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

referenciales se definen primeramente en la creaci!n de las ta"las, ' su mecanismo de validaci!n de datos puede :acerse mediante disparos ;triggers=. Los disparos ;triggers= es un punto importante dentro de las restricciones de integridad ue no :a sido desarrollado en este tra"a%o. La ra&!n de no profundi&ar so"re los disparadores es de"ido a ue otros compa3eros nuestros son los encargados de desarrollar el tema. 7. Re"erencias /01 Pastor (., -lesa P., Desti!n de -ases de .atos, #ervicio de Pu"licaciones UPVN9OOO.P0Q0 /91 (racle +orporation, (racle Q #erver +oncepts 6anual. /A1555.dsic.upv.es>asignaturas>facultad>"dv. ,ransparencias curso de 9OOO>9OO0 de la asignatura -ase de .atos *van&adas. del

14
La"oratorio de #istemas de Informaci!n Facultad de Informtica Universidad Politcnica de Valencia

También podría gustarte