Vous êtes sur la page 1sur 89

Captulo 1. Caracterizacin de las Bases de Datos Relacinales y el Modelo Relacional.

El presente captulo muestra una panormica general de lo que son las Bases de Datos Relacionales, as como su fundamento terico: El Modelo Relacional. 1.1 Bases de Datos Relacionales. Anteriormente el enfoque que se tena de las Bases de Datos era muy diferente a la actual, en ese momento se utilizaba un enfoque de punteros fsicos para relacionar registros de distintos ficheros, esto constitua un problema ya que las bases de datos eran muy vulnerables a cambios en el entorno fsico, ya que si se llegaba a aadir un nuevo disco al sistema los datos, se movan de una localizacin fsica a otra y a la informacin que ahora se estaba direccionando ya no era la requerida. Todos estos sistemas se basaban en un modelo jerrquico y de red, los cuales constituyeron la primera generacin de Sistemas Gestores de Bases de Datos (SGBD), llamados de otra forma como DBMS (Sistemas Manejadores de Bases de Datos), termino que ser utilizado a lo largo de este trabajo. Sin embargo Edgar F. Codd revoluciono por completo la forma de ver a las Bases de Datos, cuando en los aos 70s introdujo EL MODELO RELACIONAL, el cual constituy un slido fundamento terico para el desarrollo de nuevos productos. En su documento Codd propone un modelo de datos estructurados a nivel lgico como tablas, formadas por filas (tuplas) y columnas (atributos), aunque en realidad a nivel fsico podan tener una estructura completamente diferente, siendo un objetivo fundamental del modelo mantener la independencia de esta estructura lgica con respecto del modo de almacenamiento y otras caractersticas de tipo fsico, demostrando as que las anteriores bases de datos limitaban en gran medida los tipos de operaciones que los usuarios podan realizar con los datos, adems del problema de direccionamiento fsico. As es como nace la segunda generacin de los DBMS. Este trabajo propuesto por Codd persegua toda una serie de objetivosi los cuales se pueden resumir en los siguientes: Independencia fsica: es decir, el modo en el que se almacenan los datos no influya en su manipulacin lgica y, por tanto, los usuarios que acceden a esos datos no tienen que modificar sus programas por cambios en el almacenamiento fsico. Independencia lgica: esto es, que el aadir, eliminar o modificar objetos de la base de datos no repercuta en los programas y/o usuarios que estn accediendo a subconjuntos parciales de los mismos (vistas). Flexibilidad: en el sentido de poder presentar a cada usuario los datos de la forma en que ste prefiera. Uniformidad: las estructuras lgicas de los datos presentan un aspecto uniforme, lo que facilita la concepcin y manipulacin de la base de datos por parte de los usuarios. Sencillez: las caractersticas anteriores, as como unos lenguajes de usuario muy sencillos, producen como resultado que el modelo de datos relacional sea fcil de comprender y de utilizar por parte del usuario final.

Cabe mencionar que este modelo se basa en dos ramas de las matemticas: la teora de conjuntos y la lgica de predicados de primer orden, razn por la cual es tan seguro y robusto, lo cual marca una diferencia significativa entre este modelo y los anteriores. Al mismo tiempo estas ramas de las matemticas proporcionan los elementos necesarios para crear una base de datos relacional con dos lenguajes matemticos muy especficos sobre los que se asienta el modelo: el lgebra relacional y el calculo relacional, los cuales aportan un sistema de acceso y consultas orientado a conjuntos. Una Base de Datos Relacionalii es una base de datos percibida por el usuario como una coleccin de relaciones (tablas) normalizadas en diversos grados que varia con el tiempo. En general, el objetivo del diseo de una base de datos relacional es generar un conjunto de esquemas de relaciones que permitan almacenar la informacin con un mnimo de redundancia, pero que a la vez faciliten la recuperacin de la informacin. Una de las tcnicas para lograrlo consiste en disear esquemas que tengan una forma normal adecuada. Para determinar si un esquema de relaciones tiene una de las formas normales, se requiere mayor informacin sobre la empresa del "mundo real" que se intenta modelar con la base de datos. La informacin adicional la proporciona una serie de limitantes que se denominan dependencias de los datos. Podra decirse en trminos tradicionales que una relacin se asemeja a un archivo, una tupla a un registro y un atributo a un campo, sin embargo cabe sealar que una relacin no se debe considerar solo como un archivo, si no como un archivo disciplinado, con estructuras de datos bien definidas las cuales interactan con el usuario por medio de cierto operadores. Algunas caractersticas que podemos mencionar de los archivos relacionales son: Cada archivo contiene solo un tipo de registros. Los campos no tienen orden especifico, de izquierda a derecha. Los registros no tienen un orden especifico, de arriba abajo. Cada campo tiene un solo valor. Los registros poseen un campo identificador nico(o combinacin de campos) llamada clave primaria. As podemos decir que, todos los datos en una base de datos relacional se representan de una y solo una manera, por su valor explcito (esta se denomina en ocasiones ``principio bsico del modelo relacional' Tambin cabe mencionar que las conexiones lgicas dentro ' ). de una relacin y entre las relaciones se representan mediante esos valores; no existen ligas o apuntadores visibles para el usuario, ni ordenamientos visibles para el usuario, ni grupos repetitivos visibles para el usuario, etc.

Tambin es importante mencionar que en 1985 CODD publica sus famosas 12+1 reglas, ya que la inclusin de caractersticas relacionales en productos no relacionales en su origen, hizo surgir un debate en torno a que si la aplicacin relacional estaba o no justificada en muchos de los casos. Las reglas son las siguientes: Regla 0: Un DBMS relacional debe emplear para gestionar la Base de Datos exclusivamente sus facilidades relacionales. 1. Representacin de la informacin: Toda informacin de la base de datos relacional debe representarse explcitamente a nivel lgico, y de manera nica, por medio de valores en tablas. Se podra decir que este es el principio bsico el modelo relacional que mencionbamos anteriormente. 2. Acceso garantizado: Todo dato debe de ser accesible mediante una combinacin de un nombre de tabla, un valor de su clave y el nombre de una columna. Es una forma de insistir en la obligatoriedad de la clave primaria. 3. Tratamiento sistemtico de valores nulos: Los valores nulos, informacin desconocida o inaplicable, han de ser tratados sistemticamente por el sistema, el cual ha de ofrecer las facilidades necesarias para su tratamiento. 4. Catlogo activo en lnea basado en el modelo relacional: La representacin de la metainformacin (descripcin de la base de datos) debe ser igual a la de los otros datos, y su acceso debe de poder realizarse por medio del mismo lenguaje relacional que se utiliza para los demas datos; es decir, el modelo de datos para la metainformacion debe ser tambin relacional. 5. Sublenguaje de datos completo: Debe existir un lenguaje que permita un completo manejo de la base de datos (definicin de datos, definicin de vistas, manipulacin de datos, restricciones de integridad, autorizaciones y gestin de transacciones). 6. Actualizacin de vistas: Toda vista tericamente actualizable debe poder ser actualizada por el sistema. 7. Inserciones, modificaciones y eliminaciones de alto nivel: todas las operaciones de manipulacin de datos (consulta, insercin, modificacin y borrado) deben de operar sobre conjuntos de filas. 8. Independencia fsica de datos: El acceso lgico a los datos debe mantenerse incluso cuando cambien los mtodos de acceso o la forma de almacenamiento. 9. Independencia lgica de los datos: Los programas de aplicacin no deben verse afectados por cambios realizados en las tablas que estn permitidos tericamente y que preserven la informacin. 10. Independencia de la integridad: Las reglas integridad de una base de datos deben ser definibles por medio del sublenguaje de datos relacional y habrn de almacenarse en l catalogo de la base de datos, no en los programas de aplicacin.

11. Independencia de la distribucin: Debe existir un sublenguaje de datos que pueda soportar base de datos distribuidas sin alterar los programas de aplicacin cuando se distribuyan los datos por primera vez o se redistribuyan estos posteriormente. 12. Regla de la no-subversin: si un DBMS soporta un lenguaje de bajo nivel que permite el acceso de fila a fila, este no puede utilizarse para saltarse las reglas de integridad expresadas por medio del lenguaje de ms alto nivel. (Miguel y Piattini, 1997:158) Los sistemas relacionales se basan principalmente en el modelo relacional, el cual se abordar en el siguiente apartado. 1.1.1 Ejemplo de Base de Datos Relacionaliii. Como ejemplo introductorio de una Base de Datos relacional, en esta seccin se presenta la Base de Datos llamada PINACOTECA. Primero se mencionarn los requerimientos de informacin de la base de datos(mini mundo, la parte de la Pinacoteca que se representar en la base de datos): Enunciado El Ministerio de Educacin y Ciencia desea mantener informacin acerca de todos los cuadros que se encuentran en las Pinacotecas y toda la informacin relacionada con ellos. o De cada pinacoteca se desea saber el nombre (que se supone nico), la ciudad en la que se encuentra, la direccin y los metros cuadrados que tiene(Tabla Pinacoteca). o Cada pinacoteca tiene una serie de cuadros de los que se quiere guardar su cdigo, nombre, medidas, fecha en que fue pintado y tcnica utilizada para pintarlo(Tabla Cuadro). Cada cuadro es pintado por un determinado pintor (nombre, pas, ciudad, fecha de nacimiento y fecha de fallecimiento). Un pintor puede tener a otro como maestro; a su vez, un maestro puede serlo de varios (o de ninguno) (Tabla Pintor). o Los pintores pueden pertenecer o no a una escuela de la que se desea saber su nombre y en qu pas y fecha apareci (Tabla Escuela). o Los pintores pueden tener tambin uno o varios mecenas que los protegen (nombre, pas y ciudad de nacimiento, fecha de su fallecimiento, y fecha en que se inicia y termina el mecenazgo). A su vez un mismo mecenas puede serlo de varios pintores. Se desea registrar la relacin que existe entre un pintor y su mecenas. (Tabla Patrocinio) En conclusin esta base de datos consta del siguiente esquema en forma de tablas; los denominados identificadores nicos claves primarias se encuentran subrayados, en algunos casos se presenta llaves ajenas, las cuales se consideran referencias vlidas a otras tablas:

PINACOTECA CUADRO PINTOR

NOMBREP CIUDADP DIRECCINP METROSP

CODIGOC

NOMBREC

MEDIDAS

TECNICA

FECHA

NOMBREP NOMBREPT

NOMBREPT

PAISPT

CIUDADPT

FECHAN

FECHAF NOMBRE_MAESTRO NOMBREE

ESCUELA MECENA

NOMBREE

PAISE

FECHAE

NOMBREM

PAISM

CIUDADM

FECHA_FALL

PROTROCINIO
NOMBREPT

NOMBREM

RELACIN

FECHAINIC

FECHAFIN

El siguiente esquema representa el grafo relacional de la base de datos, el cual muestra mediante las fechas las referencias validas a otras tablas:
NOMBREP CIUDADP DIRECCINP METROSP

PINACOTECA

CUADRO

CODIGOC

NOMBREC

MEDIDAS

TECNICA

FECHA

NOMBREP NOMBREPT

PINTOR

NOMBREPT

PAISPT

CIUDADPT

FECHAN

FECHAF NOMBRE_MAESTRO NOMBREE

ESCUELA

NOMBREE

PAISE

FECHA_AP

MECENA

NOMBREM

PAISM

CIUDADM

FECHA_FALL

PROTROCINIO
NOMBREPT

NOMBREM

RELACIN

FECHAINIC

FECHAFIN

1.2 El Modelo Relacional. Es importante entender que el modelo relacional es el fundamento de la tecnologa moderna de base de datos y que no es algo esttico, ya que a travs de los aos ha evolucionando y se ha extendido y continua hacindolo. El modelo relacional tiene que ver con tres aspectos bsicos de los datos: Estructura de Datos. El usuario percibe la informacin como tablas. Integridad de Datos. Los datos satisfacen ciertas restricciones de integridad. Manejo o manipulacin de Datos. Los operadores necesarios para que el usuario manipule los datos.

1.3 Estructura de Datos Relacional. La estructura del modelo relacional se basa principalmente en elementos bsicos que son: Relacin Dominio Atributo Tupla Clave primaria Estos se pueden entender de una manera informal y general como: Termino relacional formal Relacin Tupla Atributo Cardinalidad Grado Clave primaria Dominio 1.3.1 Relacin. Como ya se haba mencionado la relacin es el elemento bsico en el modelo relacional y se puede representar como una tabla, dicho de una manera informal. Formalmente, podemos decir que una relaciniv R sobre los conjuntos D1, D2, ...Dn denominados dominios se define como: R D1 x D2 x ... x Dn Donde los conjuntos D1, D2, ...Dn pueden ser cualesquiera, e incluso estar repetidos, donde n es el grado la aridad de R. 6 Equivalente informal Tabla Fila o registro Columna o campo Numero de filas Numero de columnas Identificador nico Conjunto de valores validos

La percepcin de tablas solo se aplica a la estructura lgica de la base de datos, no a la estructura fsica. Una relacin se caracteriza porv: Un nombre que la identifica. Una cabecera que contiene un conjunto finito de n pares atributo-dominio subyacente donde toma valores el mismo. Donde n es el grado de la relacin. Un cuerpo contiene m tuplas, el cual varia con el tiempo. Cada tupla estar compuesta de n pares atributo-valor. Donde m se denomina cardinalidad de la relacin. El esquema que esta formado por el nombre R de la relacin y la cabecera de la relacin. Es similar al concepto de Entidad en el Modelo Entidad/Relacin. El estado r de una relacin de esquema R(se suele denominar simplemente relacin) se representa como r(R) y esta constituido por el esquema y el cuerpo de la relacin: r(R)=<esquema,cuerpo>.

Ejemplo de relacin: Nombre: Ciudad Dominios Nombres xxxxxxxxxx 10 Pases Mxico Filipinas Francia Kenia. ........ Continentes Amrica Asia Europa frica Oceana

Nombre Puebla Manila Paris Nairobi Sidney

Pas Mxico Filipinas Francia Kenia Australia Grado (3)

Continente Amrica Asia Europa frica Oceania

Tupla 1 Tupla 2 . . Tupla n

Cardinalidad (5)

Propiedades de las relaciones: No existen tuplas repetidas. Es una propiedad que parte del hecho que el cuerpo de la relacin es un conjunto matemtico, por tanto los conjuntos por definicin no contienen elementos repetidos. Las tuplas no estn ordenadas (de arriba hacia abajo). Esta propiedad se desprende del hecho de que el cuerpo de una relacin es un conjunto matemtico y los conjuntos en matemticas no se encuentran ordenados, esto quiere decir que el direccionamiento por posicin no existe. Los atributos no estn ordenados (de izquierda a derecha). Al igual que las propiedades anteriores, la cabecera de una relacin se defina tambin como un conjunto. Todos los valores de los atributos simples son atmicos. Se trata de una consecuencia del hecho de que todos los dominios subyacentes son a su vez simples, es decir, solo contienen valores atmicos. Cada relacin tiene un nombre y este es distinto del nombre de todas las dems. No hay atributos que se llamen igual. Tipos de Relaciones: Relaciones base. Son relaciones reales que tienen nombre y forman parte directa de la base de datos almacenada (son autnomas). Vistas. Tambin denominadas relaciones virtuales, son relaciones con nombre y derivadas: se representan mediante su definicin en trminos de otras relaciones con nombre, no poseen datos almacenados propios. Instantneas. Son relaciones con nombre y derivadas. Pero a diferencia de las vistas, son reales, no virtuales: estn representadas no slo por su definicin en trminos de otras relaciones con nombre, sino tambin por sus propios datos almacenados. Son relaciones de slo de lectura y se refrescan peridicamente. Resultados de consultas. Son las relaciones resultantes de alguna consulta especificada. Pueden o no tener nombre y no persisten en la base de datos. Resultados intermedios. Son las relaciones que contienen los resultados de las subconsultas. Normalmente no tienen nombre y tampoco persisten en la base de datos. Resultados temporales. Son relaciones con nombre, similares a las relaciones base o a las instantneas, pero la diferencia es que se destruyen automticamente en algn momento apropiado. 1.3.2 Dominio. Un dominio es un conjunto finito y homogneo de valores escalares, entindase como valor escalar, el valor de un dato individual, el cual representa la menor unidad semntica de informacin en el sentido que son atmicos (no poseen estructura interna, es decir no se pueden descomponer).

Puede tambin entenderse simplemente como un tipo (conjunto de valores) de datos ya sea simple(definido por el sistema) o un ms complejo definido por el usuario; as el tipo de datos Ciudades es una tira de caracteres de longitud 10. El dominio ciudades tiene valores: Puebla, Francia,... Si descompusiramos Puebla en P, u, e,... perdera semntica o significado. Pero Cul es la importancia real de los dominios? Una respuesta es que los dominios restringen las comparaciones, as una ventaja del manejo de dominios por parte del sistema es que lo hace capaz de impedir errores tontos de los usuarios, como si el usuario intentara ejecutar una operacin que incluyera una comparacin entre dominios distintos, el sistema podra interrumpirla e indicar al usuario un posible error. Tambin hay que considerar los dominios compuestos, que no son ms que una combinacin de dominios simples que tiene un nombre y a la que se pueden aplicar ciertas restricciones de integridad. Como ejemplo podemos considerar que un usuario necesita manejar tres dominios que son Da, Mes y Ao, y un dominio compuesto de estos seria al dominio compuesto denominado Fecha. Cabe mencionar que no tiene importancia el orden de especificacin de los componentes de un dominio compuesto; los componentes se identifican por su nombre, no por su posicin relativa. 1.3.3 Tuplas Una tupla corresponde a una fila de una tabla o relacin. Formalmente una tupla se pude definir como un conjunto de atributos <A1,...,An> donde A1D1,.., An Dn, D es el dominio en una relacin. 1.3.4 Atributo Un atributo A es el papel que tiene un determinado dominio D en una relacin. Se dice que D es el dominio de A y se denota DOM(A). Es usual dar el mismo nombre al atributo y al dominio subyacente. En el caso de que sean varios los atributos de una misma tabla, definidos por el mismo dominio, habr que darles nombres distintos, ya que una tabla no puede tener dos atributos con el mismo nombre. 1.4 Integridad de Datos Relacional. l termino integridad se refiere a la exactitud o correccin de los datos en la base de datos, para ello es necesario incluir ciertas reglas de integridad, cuyo propsito es informar al DBMS de ciertas restricciones del mundo real (como la restriccin de que no existen pesos de ciertos artculos no pueden ser negativos) para que puedan impedir la ocurrencia de tales configuraciones imposibles de valores. La mayora de las Bases de Datos deben de estar sujetas a ciertas reglas de integridad especificas para ella misma, es decir que solo se aplicaran a una base de datos especifica. 9

Sin embargo el modelo relacional incluye dos reglas generales de integridad, estas dos se refieren a las claves primarias y a las claves ajenas, para poder entender mejor estos dos conceptos se definirn a continuacin: 1.4.1 Claves Candidatas Una clave candidata se define como: El atributo K (posiblemente compuesto) de la relacin R es una clave candidata de R si y solo si satisface las dos propiedades: 1. Unicidad. En cualquier momento dado, no existen dos tuplas en R con el mismo valor de K. 2. Minimalidad. Si K es compuesto, no ser posible eliminar ningn componente de K sin destruir la propiedad de unicidad. Cabe mencionar que toda relacin tiene por lo menos una clave candidata ya que las relaciones no contienen tuplas repetidas, pero en la practica las relaciones tienden a tener solo una clave candidata. Cuando una clave candidata est formada por ms de un atributo, se dice que es una clave compuesta. Una relacin puede tener varias claves candidatas. Para identificar las claves candidatas de una relacin no hay que fijarse en un estado o instancia de la base de datos. El hecho de que en un momento dado no haya duplicados para un atributo o conjunto de atributos, no garantiza que los duplicados no sean posibles. Sin embargo, la presencia de duplicados en un estado de la base de datos s es til para demostrar que cierta combinacin de atributos no es una clave candidata. El nico modo de identificar las claves candidatas es conociendo el significado real de los atributos, ya que esto permite saber si es posible que aparezcan duplicados. Slo usando esta informacin semntica se puede saber con certeza si un conjunto de atributos forman una clave candidata. 1.4.2 Claves Alternas Son aquellas claves candidatas que no han sido seleccionadas como claves primarias. 1.4.3 Claves Primarias

La clave llave primaria de una relacin es aquella clave candidata que se escoge para identificar sus tuplas de modo nico. Ya que una relacin no tiene tuplas duplicadas, siempre hay una clave candidata y, por lo tanto, la relacin siempre tiene clave primaria. En el peor caso, la clave primaria estar formada por todos los atributos de la relacin, pero normalmente habr un pequeo subconjunto de los atributos que haga esta funcin. Ahora es importante considerar los siguientes puntos: 1. Toda relacin tiene por lo menos una clave candidata, entonces toda relacin tendra por fuerza una clave primaria. 10

2. Para elegir la clave primaria, en los casos donde hay muchas claves candidatas, queda fuera del alcance del modelo relacional, si no suele elegirse en la practica. 3. En ningn momento se implica la necesidad de un ndice para la clave primaria. Ya en la practica se encontrara una ruta de acceso especial. De todo lo anterior podemos concluir que la clave primaria es importante por que las claves primarias constituyen un mecanismo de direccionamiento a nivel de tuplas bsico en un sistema relacional. As, llegamos a la primer regla de integridad, tambin llamada regla de integridad de entidades. Ningn componente de la clave primaria de una relacin base puede aceptar nulos 1.4.4 Claves Ajenas

La segunda regla de integridad se aplica a las claves ajenas, definiendo clave ajena de una manera informal como, un atributo (quiz compuesto) de una relacin R2 cuyos valores deben concordar con los de la clave primaria de alguna relacin R1. En otras palabras si en una relacin hay alguna clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace referencia, o bien, deben ser completamente nulos. Una definicin formal de Clave Ajena es: El atributo LF (quiz compuesto) de la relacin base R2 es una clave ajena si y solo si satisface estas dos propiedades independientes del tiempo: 1. Cada valor de LF es nulo del todo o bien no nulo del todo (con nulo del todo o no nulo del todo se quiere decir que s LF es compuesto, todos sus componentes son nulos o bien todos sus componentes son no nulos, no una combinacin.). 2. Existe una relacin base R1 con clave primaria LP tal que cada valor no nulo de LF es idntico al valor de LP en alguna tupla de R1. Un valor de clave ajena representa una referencia a la tupla donde se encuentra el valor correspondiente a la clave primaria, por tanto el problema de garantizar que la base de datos no incluya valores no vlidos de una clave ajena se conoce como el problema de integridad referencial. La relacin que contiene a la clave ajena se conoce como relacin referencial y la relacin que contiene a la clave primaria correspondiente se denomina relacin referida o relacin objetivo. Regla de Integridad Referencial. La Base de Datos no debe contener valores de clave ajena sin concordancia Dicho de otra manera la regla de integridad referencial dice tan solo que si B hace referencia a A, entonces A debe de existir.

11

1.5 Manipulacin de Datos Relacional: El lgebra Relacional Para la manipulacin de datos relacional se crearon dos lenguajes formales: El lgebra y el calculo relacional. El lgebra relacional es un lenguaje formal con una serie de operadores que trabajan sobre una o varias relaciones para obtener otra relacin resultado, sin que cambien las relaciones originales. Tanto los operandos como los resultados son relaciones, por lo que la salida de una operacin puede ser entrada de otra operacin. Para el lgebra relacional se establecen ocho operadores originales propuestos por Codd: restriccin, proyeccin, producto cartesiano, unin, diferencia, concatenacin, interseccin y divisin. Los primeros cinco son fundamentales ya que permiten realizar la mayora de las operaciones de obtencin de datos. Cabe mencionar que la restriccin y la proyeccin son operaciones unitarias por que operan sobre una sola relacin, el resto de las operaciones son binarias ya que trabajan sobre pares de relaciones. Operadores del lgebra Relacional: Seleccionar (). La operacin seleccin consiste en recuperar un conjunto de registros de una tabla o de una relacin indicando las condiciones que deben cumplir los registros recuperados, de tal forma que los registros devueltos por la seleccin han de satisfacer todas las condiciones que se hayan establecido. Esta operacin es la que normalmente se conoce como consulta. En este tipo de consulta se emplean los diferentes operadores de comparacin (=, >, <, >=, <=, <>), los operadores lgicos (and, or, xor) o la negacin lgica (not). Proyectar (). Una proyeccin es un caso concreto de la operacin seleccin, esta ltima devuelve todos los campos de aquellos registros que cumplen la condicin que he establecido. Una proyeccin es una seleccin en la que seleccionamos aquellos campos que deseamos recuperar. Tomando como referencia el caso de la operacin seleccin es posible que lo nico que nos interese recuperar sea el nmero de la seguridad social, omitiendo as los campos telfono, direccin, etc. Este ltimo caso, en el que seleccionamos los campos que deseamos, es una proyeccin. Producto Cartesiano (x) La operacin producto consiste en la realizacin de un producto cartesiano entre dos tablas dando como resultado todas las posibles combinaciones entre los registros de la primera y los registros de la segunda.

12

Unin (U) La operacin de unin permite combinar datos de varias relaciones. Supongamos que una determinada empresa internacional posee una tabla de empleados para cada uno de los pases en los que opera. Para conseguir un listado completo de todos los empleados de la empresa tenemos que realizar una unin de todas las tablas de empleados de todos los pases. No siempre es posible realizar consultas de unin entre varias tablas, para poder realizar esta operacin es necesario e imprescindible que las tablas a unir tengan las mismas estructuras, que sus campos sean iguales. Interseccin() La operacin de interseccin permite identificar filas que son comunes en dos relaciones. Diferencia (-) La operacin diferencia permite identificar filas que estn en una relacin y no en otra. Juntar () Regresa una relacin que contiene todas las tuplas posibles que son una combinacin de dos tuplas de cada una de las relaciones especificadas, tales que las dos tuplas que contribuyen a cualquier combinacin dada tengan un valor comn para los atributos comunes de las dos relaciones (y ese valor comn aparece solo una vez, y no dos en la tupla resultante) Dividir Toma dos relaciones unarias y una relacin binaria y regresa una relacin que contiene todas las tuplas de una relacin unaria que aparecen en la relacin binaria y que a la vez coinciden con todas las tuplas de una relacin unaria. El lgebra relacional constituye el fundamento para definir los lenguajes de consulta relacionales como podra ser el caso de SQL.

13

Captulo 2. Problema de Soporte de Integridad y las Reglas de Integridad en Bases de Datos Relacinales. El presente captulo hace un anlisis de las restricciones de integridad que debe presentar una base de datos totalmente relacional, mostrando dos grandes clasificaciones, as como de las dos reglas generales de integridad, y por ultimo se establece el marco de evaluacin bajo el cual se hacen las pruebas en los tres diferentes manejadores de bases de datos relacionales. 2.1 Restricciones de integridad. Cuando se disea una base de datos se desea que refleje lo mejor posible el universo de discurso que se esta tratando de mostrar en el sistema de informacin, para ello se deben establecer reglas que nos permiten representar a los datos de una forma correcta, a estas reglas se les llama restricciones de integridad tambin llamadas restricciones semnticas, las cuales pueden ser definidas como condiciones que limitan el conjunto de ocurrencias vlidas de un esquema. En el Modelo Relacional existen ciertas restricciones propias del l. Algunos autores prefieren emplear el termino reglas en lugar de restriccin, como ejemplo DATE (1993), reservando la palabra restriccin para la condicin que se debe de satisfacer. Adoracin de Miguel y Mario Piattinivi mencionan que la denominacin ms habitual es la de restriccin semntica, ya que semntica e integridad suelen ser conceptos similares en bases de datos. Semntica se refiere al significado de los datos, e integridad a la correccin y consistencia respecto del mundo real del cual proceden esos datos. En la Sptima edicin de Date se retoma esta notacin y se refiere a restricciones. En este trabajo se utilizaran indistintamente los trminos de restricciones de integridad, restricciones semnticas o simplemente restricciones. Inicialmente la semntica de los datos se encontraba solamente en la mente de los usuarios y comprobaba manualmente si los datos cumplan no las reglas a ellos asociadas, posteriormente ese trabajo migr hacia los programas de aplicacin, y posteriormente a la Base de Datos. Una Base de Datos completa debe de tener integrada la descripcin de las restricciones con los datos y no dispersa entre los diferentes programas de aplicacin, esto lo tiene que hacer el DBMS mediante la gestin y reconocimiento de estas restricciones, lo que conlleva a tener diferentes ventajas relativas a la integridad, ya que no se producen inconsistencias debidas a no realizar la definicin de manera uniforme en todos los programas; adems se disminuyen considerablemente las cargas de programacin destinadas a controlar la integridad de los datos, que puede ser hasta de un 90% del total de una aplicacin. Una de las ventajas semnticas que se pueden presentar es: el significado de los datos se encuentra descrito junto con el resto de sus caractersticas, as nicamente y solo una vez el diseador se ocupa de definir la semntica y no todos los programadores de aplicaciones por separado; evitando as redundancias y permitir a los usuarios consultar el esquema de la Base de Datos sin consultar en diferentes aplicaciones. En el caso de que un DBMS no sea capaz de soportar cierto tipo de restricciones, ser preciso incluir estas restricciones en los programas de aplicacin, si se desea impedir que la 14

base de datos pueda alcanzar estados inconsistentes con el mundo real, con los inconvenientes que todo esto conlleva. En este trabajo se analizar y documentar el soporte para la integridad y restricciones que ofrecen en los tres casos de estudio. Es importante mencionar dos clasificaciones generales que se les ha dado a las restricciones: DATEvii propone un esquema de clasificacin en cuatro grandes categoras: Restriccin de Tipo.

Una restriccin de tipo es una sola enumeracin de los valores validos del tipo. En otras palabras, una especificacin de los valores que conforman el tipo en cuestin. Un ejemplo sencillo seria la restriccin de tipo PESO: TYPE PESO POSSREP ( RATIONAL ) CONSTRAINT THE_PESO ( PESO ) > 0.0; Por convencin es posible que una restriccin de tipo haga uso del nombre del tipo aplicable para denotar un valor cualquiera del tipo en cuestin, en el ejemplo, los pesos los limita para que puedan ser representados por un numero racional mayor a cero. Conceptualmente, las restricciones de tipo son verificadas durante la ejecucin de alguna invocacin a cierto sector(PESO) y de inmediato, as ninguna relacin puede adquirir nunca un valor para ningn atributo de cualquier tupla si este no es del tipo apropiado. Este tipo de restriccin tambin puede considerarse de Dominio. Restriccin de atributo.

Una restriccin de atributo es bsicamente solo una declaracin para que un atributo especificado sea de un tipo en particular. En otras palabras las restricciones de atributo son parte de la definicin del atributo en cuestin y pueden ser identificadas por medio del nombre de atributo correspondiente. Restriccin de relacin.

Una restriccin de relacin es la que es impuesta a una relacin individual, en el caso especifico de proveedores y partes los proveedores en Londres deben tener un status de 20, las partes rojas deben almacenarse en Londres, etc. Restriccin de Bases de Datos.

Una restriccin de Base de Datos es aquella que relaciona dos o ms relaciones distintas. Cmo ejemplo se puede mencionar Cules son las operaciones de actualizacin que el DBMS debe realizar o monitorear para hacer cumplir la restriccin todo numero de proveedor en la relacin de envos existe tambin en la relacin de proveedores? El primer

15

monitoreo a realizar es que todo numero de proveedor en la relacin de envos exista tambin en la relacin de proveedores (restriccin referencial), y la segunda es que toda parte debe tener por lo menos un envi. Adoracin de Miguel y Mario Piattini proponen otra clasificacin en dos grandes categoras: Restricciones Inherentes.

Son restricciones que impone en este caso el modelo relacional, el cual no permite ciertas estructuras. Como la estructura bsica del modelo relacional es la relacin (tabla), entonces serian las derivadas a relacin, que son las caractersticas propias de ellas ya mencionadas en el captulo 1. La Regla Integridad de Entidades es considerada una restriccin inherente. Restricciones de Usuario Semnticas.

Dentro del contexto relacional son las facilidades que el modelo ofrece a los usuarios a fin de que stos puedan reflejar en el esquema la semntica del mundo real. Por ello algunos productos aaden ciertas facilidades que permiten programarlas1 (ORACLE ofrece la posibilidad de incluir en el SQL/FORMS la definicin de claves ajenas de forma declarativa, lo que resulta muy til especialmente cuando no estaba incluida en el ncleo del DBMS la integridad referencial). Las restricciones semnticas del modelo relacional basado en el estndar de SQL92vii son las siguientes: Clave Primaria: Permite declarar un atributo o un conjunto de atributos como clave primaria de una relacin, por lo que los valores no se podrn repetir ni se admitirn los nulos. La obligatoriedad de la clave primaria es una restriccin inherente del modelo relacional; pero la declaracin de un atributo como clave primaria de una relacin es una restriccin semntica. Unicidad. (Unique). Mediante la cual se indica que los valores de un conjunto de atributos no pueden repetirse en una relacin. Esta definicin permite la declaracin de llaves alternativas. Obligatoriedad (NOT NULL), de uno o ms atributos, con lo que se indica que el conjunto de atributos no admite valores nulos. Integridad Referencial (FOREIGN KEY). Si una relacin R2 tiene un descriptor que es una clave candidata de la relacin R1, todo valor de dicho descriptor debe concordar con un valor de la clave candidata referenciada de R1 o bien ser nulo. Cabe destacar que la clave ajena puede ser tambin parte de la clave primaria de R2.

16

Restricciones de Rechazo. Verificacin (CHECK) y Asercin(ASSERTION). El usuario formula una condicin mediante un predicado definido sobre un conjunto de atributos, tuplas o dominios, que debe ser verificado en toda operacin de actualizacin para que el nuevo estado constituya una ocurrencia valida del esquema, en SQL92 existen dos clases: - Verificacin (CHECK): Comprueba, en toda operacin de actualizacin, si el predicado es cierto o falso y, en el segundo caso, rechaza la operacin. La restriccin de verificacin se define sobre un nico elemento (dentro de un CREATE TABLE) y puede o no tener nombre. - Asercin (ASSERTION): Acta de forma idntica a la anterior, pero se diferencia de ella en que puede afectar a varios elementos (por ejemplo, a dos tablas distintas). Por tanto, su definicin no va unida a la de un determinado elemento del esquema y siempre ha de tener un nombre. Disparador.(trigger) Restriccin en la que el usuario pueda especificar libremente la respuesta (accin) ante una determinada condicin. As como las anteriores reglas de integridad son declarativas, los disparadores son procedimentales, siendo preciso que el usuario escriba el procedimiento que ha de aplicarse en caso de que se cumpla la condicin. Adems de definir todas estas restricciones hay que determinar las consecuencias que puede tener ciertas operaciones de eliminacin y actualizacin realizadas sobre tuplas de la relacin referenciada: Restringida, cascada, nulos y valor por defecto, los cuales se mencionaran y detallaran en los siguientes apartados. 2.2 Anlisis de la Regla de integridad de las Entidades. Antes de comenzar propiamente el anlisis de esta regla es importante definir de forma precisa el concepto de valor nulo, como una seal utilizada para representar informacin desconocida, inaplicable, inexistente, no valida, no proporcionada, indefinida, etc. (Miguel y Piattini 1997:149) Un nulo no representa el valor cero ni la cadena vaca, stos son valores que tienen significado. El nulo implica ausencia de informacin, bien porque al insertar la tupla se desconoca el valor del atributo, o bien porque para dicha tupla el atributo no tiene sentido. Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa problemas de implementacin. Hay una diversidad de razones por las que es importante que un DBMS soporte valores nulos: Cuando por necesidad se requiere crear tuplas con algunos atributos desconocidos por el momento, que posteriormente se llenaran.

17

Cuando se desea aadir un nuevo atributo a una relacin y en el instante que se aade ese atributo no tendr valores hasta llenado. Atributos que no son aplicables como en la generalidad de las tuplas, como por ejemplo el atributo profesin para un menor de edad.

DATE (1995) seala que es preciso introducir dos operadores especiales: ES_NULO(IS_NULL), si el operador es nulo toma el operador de verdadero y en caso contrario falso. SI_NULO(IF_NULL), este se aplica a dos operandos, devuelve el valor del primero por default en el caso de que no sea nulo, en caso contrario devuelve el del segundo.

Tambin es importante considerar otras situaciones que se pueden presentar, el caso de la evaluacin de la igualdad de tuplas; dos tuplas se consideran iguales si ambas son iguales atributo a atributo, sin mencionar no nulos o ambos nulos. Esto puede afectar de manera considerable en la insercin y modificacin de relaciones en lo que refiere a clave primaria, por lo que tambin tiene participacin en varios operadores del lgebra relacional. Otra situacin puede ser que las operaciones aritmticas con valores nulos, toman el valor nulo. As se muestra la importancia de considerar los valores nulos a fin de evitar perdidas de informacin a la hora de hacer consultas en la Base de Datos, as se llega a la regla de integridad de entidades: Ningn componente de la clave primaria de una relacin base puede aceptar nulos La justificacin que propone DATE (1995:274) en su quinta edicin para la regla de integridad de entidades es la siguiente: Las relaciones base corresponden a entidades del mundo real. Las entidades del mundo real son distinguibles, es decir, se les puede identificar de alguna manera. Los representantes de entidades dentro de una base de datos deben ser distinguibles(identificables). Las claves primarias realizan la funcin de identificacin nica en el modelo relacional. En una relacin cualquiera se incluye una tupla en la que su clave primaria fuera nulo, equivaldra a decir que en el mundo real existe y no tendra sentido agregarla. Si ese nulo significa La propiedad no es aplicable, la tupla no tiene sentido ya que las entidades deben de tener identidades, y la propiedad deber ser aplicable. Si significa el valor se desconoce, surge todo un tipo de problemas que se mencionaron en la definicin de nulo y las razones por lo que se tiene que considerar el termino. En conclusin: Si una entidad es lo bastante importante en el mundo real como para requerir una representacin explicita en la base de datos, tal entidad deber

18

de ser definitivamente susceptible de identificacin definida y sin ambigedad, pues de lo contrario seria imposible siquiera hablar de ella en cualquier forma sensata. Observaciones importantes de la Regla de Integridad de Entidades:

Sobre que tipo de Relaciones se debe aplicar la regla? La regla se aplica a las relaciones base (parte directa de la base de datos). Qu sucede con las claves alternativas en cuanto a la aplicacin de la Regla? La regla se aplica slo a la clave primaria (no a las claves alternativas). Para las claves primarias compuestas tiene sentido que exista uno de los campos como nulo o ambos? La regla de integridad de entidades dice que cada valor individual de la clave primaria debe ser no nulo en su totalidad(no solo parte), por tanto se aplica a las claves primarias compuestas y cada uno de sus elementos.

2.3 Anlisis de la Regla de Integridad Referencial La integridad referencial se considera como una metarrestriccin ya que como se sabe toda base de datos se debe someter a ciertas restricciones de integridad especificas que garanticen que esa base de datos no viole la regla. Junto con el concepto de clave ajena que ya se defini en el captulo anterior se mencion la regla de integridad referencial: La Base de datos no debe contener un valor de clave externa sin correspondencia Como ya se menciono la regla de integridad referencial menciona tan solo que si B hace referencia a A, entonces A debe existir. As, es importante considerar los siguientes puntos: La integridad referencial exige la concordancia de las claves ajenas muy especficamente con las claves primarias, no con las claves alternativas, y los conceptos de clave ajena e integridad referencial van de la mano ya que no es posible definir uno son el otro. Observaciones importantes derivadas de la regla de Integridad Referencial: La clave ajena dada y la clave primaria se deben definir sobre el mismo dominio subyacente, el cual puede ser compuesto. La clave ajena no necesariamente debe formar parte de la clave primaria de la relacin que la contiene. Una relacin puede ser una relacin referida como una relacin referencial. El termino ruta referencial se define: Sean las relaciones Rn, R(n-1),...,R2,R1 tales que existe una restriccin referencial de Rn a R(n-1), una restriccin referencial de R(n-1) a R(n-2),..., y una restriccin referencial de R2 a R1: RnR(n-1) R(n-2) ... R2R1 La cadena de flechas desde Rn hasta R1 representa una ruta referencial de Rn a R1.(DATE, 1995:277)

19

Son permitidas las relaciones autoreferenciales es decir, a la representacin de un caso especial en la que pueden existir ciclos referenciales. Las relaciones Rn, R(n1),R(n-2),...,R2,R1 forman un ciclo referencial si Rn incluye una clave ajena que hace referencia a R(n-1), si R(n-1) incluye una clave ajena que hace referencia a R(n-2),..., y as sucesivamente hasta que si R1 incluye una clave ajena que hace referencia de vuelta a Rn. En ocasiones las claves ajenas deben de aceptar valores nulos, a diferencia de las claves primarias. La concordancia entre la clave ajena y la clave primaria es un caso especial de dos atributos definidos sobre el mismo dominio, los cuales representan ciertas interrelaciones entre tuplas.

Reglas para las claves ajenas. La regla de integridad referencial se enmarca en trminos de estados de la base de datos: indica lo que es un estado ilegal, pero no dice cmo puede evitarse. La cuestin es qu hacer si estando en un estado legal, llega una peticin para realizar una operacin que conduce a un estado ilegal? Existen dos opciones: rechazar la operacin, o bien aceptar la operacin y realizar operaciones adicionales compensatorias que conduzcan a un estado legal. Entonces se puede decir que para cualquier Base de Datos, el usuario deber poder especificar cuales operaciones han de rechazarse y cuales han de aceptarse, en este caso cuales operaciones de compensacin debe de realizar el sistema. Por lo tanto, para cada clave ajena de la base de datos habr que contestar a tres preguntas:

Regla de los nulos: Tiene sentido que la clave ajena acepte nulos? Aparentemente la respuesta es no, pero en algunos casos es diferente, como el caso de la base de datos de empleados y departamentos, podra existir un empleado al cual aun no se le haya asignado departamento. Cabe sealar que esta restriccin no depende del diseador, si no de la parte del mundo real que la base de datos pretende representar. Regla de eliminacin: Qu ocurre si se intenta borrar la tupla referenciada por la clave ajena? Para responder esta pregunta existen tres posibilidades: o Restringir(restricted): No se permite borrar la tupla referenciada. o Propagar(cascades): Se borra la tupla referenciada y se propaga el borrado a las tuplas que la referencian mediante la clave ajena. o Anular(nullifies): Se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (slo si acepta nulos). Regla de actualizacin: Qu ocurre si se intenta modificar el valor de la clave primaria de la tupla referenciada por la clave ajena? o Restringir(restricted): No se permite modificar el valor de la clave primaria de la tupla referenciada. o Propagar(cascades): se modifica el valor de la clave primaria de la tupla referenciada y se propaga la modificacin a las tuplas que la referencian mediante la clave ajena.

20

Anular(nullifies): se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (slo si acepta nulos).

Por lo tanto se puede decir que al disear una base de datos se deber especificar, el atributo o combinacin de atributos que constituyen la clave ajena y la relacin a la cual hace referencia dicha clave, as como tambin las reglas particulares para claves ajenas(nulos, eliminacin y actualizacin). El marco de referencia que se utilizar en este anlisis de integridad ser la propuesta de sintaxis planteada por DATE (1995:280) para una clusula FOREIGN KEY: FOREIGN KEY (clave ajena) REFERENCES objetivo NULLS [not] ALLOWED DELETE OF objetivo efecto UPDATE OF clave-primaria-del-objetivo efecto donde el efecto es RESTRICTED, CASCADES o NULLIFIES(SET NULL). Como una referencia complementaria cabe mencionar que, en la Tesis de la M.C. Beatriz Bernab Loranca, se desarroll una gramtica BNFx basada en la propuesta por Codd, que persigue cubrir la totalidad de integridad en sistemas relacionales. 2.4 Definicin del Marco de Evaluacin. Dos pasos importantes al disear las tablas son identificar los valores aceptables para una columna y decidir cmo aplicar la integridad de los datos a la columna. En este trabajo se evaluaran componentes de integridad en los DBMS seleccionados (Access, MySQL, SQL Server 2000), el marco de evaluacin que se propone para tal fin se contemplan los siguientes aspectos:

REGLA DE INTEGRIDAD DE ENTIDADES Restriccin de Accin CUMPLE/ Integridad Referencial/ ACEPTA/ Opcin VERIFICA/ Definicin de Llaves primarias Insercin de clave Nulos primaria de un Valores componente Repetidos Insercin de clave Nulos primaria de ms Valores de un componente Repetidos

Observaciones y Especificaciones

21

Actualizacin de Nulos clave primaria de Valores un solo Repetidos componente Actualizacin de Nulos clave primaria de Valores ms de un repetidos componente REGLA DE INTEGRIDAD REFERENCIAL Restriccin de Accin CUMPLE/ Integridad Referencial ACEPTA/ VERIFICA/ Definicin de Llaves Ajenas Soporte de Integridad Referencial Eliminacin Restricted (DELETE) Casacades Nullifies Actualizacin Restricted (UPDATE) Casacades Nullifies RESTRICCIONES DE RECHAZO Restriccin de Accin CUMPLE/ Integridad Referencial ACEPTA/ VERIFICA/ Restriccin CHECK Restriccin ASSERTION OTRAS RESTRICCIONES IMPORTANTES Restriccin de Accin CUMPLE/ Integridad Referencial ACEPTA/ VERIFICA/ Restriccin UNIQUE Definicin DEFAULT Restriccin de Tipo Disparador

Observaciones y Especificaciones

Observaciones y Especificaciones

Observaciones y Especificaciones

La descripcin de cada uno de los factores de la tabla anterior se muestran a continuacin:

22

Aspectos a evaluar de la Regla de Integridad de Entidades. Se verificar si el DBMS efectivamente valida que ningn campo de llave primaria puede aceptar valores nulos e inherentemente por ser llave primaria s valida que no existan valores repetidos.

Los casos que se evaluaran sern: Definicin de llaves primarias. Se verificar si el DBMS permite definir llaves primarias. -Insercin de clave primaria que contenga un solo componente y sus variantes de que no acepte nulos y que no acepte valores repetidos. -Insercin de clave primaria que contenga ms de un componente, es decir cuando su clave primaria es compuesta y sus variantes de que no acepte nulos en la clave compuesta, ya sea en un solo componente, o en todos y que no acepte valores repetidos ya tomando la composicin de clave. -Que al realizar la actualizacin de clave primaria de un solo componente no acepte un valor nulo y que verifique si no hay un elemento ya insertado con ese valor. -Que al realizar la actualizacin de clave primaria de ms de un componente no acepte un valor nulo o que todos sean nulos y que verifique si no hay un elemento como conjunto de clave primaria ya insertado con ese valor. Aspectos a evaluar de la Regla de Integridad Referencial. Definicin de llaves ajenas. Se verificar si el DBMS permite definir llaves ajenas. Soporte de Integridad Referencial. Se verificar que el DBMS cheque si el valor de cualquier clave ajena T diferente de null hace referencia a una tupla que existe en la relacin referida. Los casos de accin referencial que se evalan son: -Eliminacin(que se realicen las siguientes acciones referenciales y se cumpla el efecto): o Restringir(restricted): Se verificar que al intentar eliminar el objetivo de una referencia de clave ajena , se restringa al caso en que no existan, o no tenga relaciones referenciadas asociadas(Deber rechazar la eliminacin). o Propagar(cascades): Si se llega a borrar la tupla referenciada que se propague el borrado a las tuplas que la referencian mediante la clave ajena. o Anular(nullifies): Si se borra la tupla referenciada que las tuplas que la referenciaban establecen como nulo la clave ajena (slo si acepta nulos). -Actualizacin(que se realicen las siguientes acciones referenciales y se cumpla el efecto): o Restringir(restricted): Se verificar que al intentar actualizar el objetivo de una referencia de clave ajena , se restringa al caso en que no existan, o no tenga relaciones referenciadas asociadas(Deber rechazar la actualizacin). o Propagar(cascades): Si se modifica el valor de la clave primaria de la tupla referenciada se debe lograr propagar la modificacin a las tuplas que la referencian mediante la clave ajena.

23

Anular(nullifies): Al realizar una actualizacion, si se modifica la tupla referenciada, las tuplas que la referenciaban establecen a nulo la clave ajena (slo si acepta nulos).

Verificacin de algunas otras restricciones: Restricciones de Rechazo: - CHECK: El DBMS debe tener la opcin de comprobar en toda operacin de actualizacin si el predicado es cierto o falso y aceptar o rechazar la operacin. Esta definida sobre la creacin de una relacin(implcita en la Base de Datos) - ASSERTION: Se verificar la misma funcionalidad que el punto anterior pero con la variante de que se permita aplicar tal condicin a varios elementos (como ejemplo dos tablas). Restriccin UNIQUE: Se verificar que el DBMS permita que los valores de un conjunto de atributos no pueden repetirse en una relacin, aunque no sean claves primarias. Esta definicin permite la declaracin de llaves alternativas. Definicin DEFAULT: Se verificar que el DBMS acepte mediante una clusula que se ponga un valor por defecto elegido por el usuario. Restricciones de tipo: Se verificar que se permita la definicin de tipos en el DBMS y posteriormente hacer referencia a este tipo definido por el usuario. Disparador (trigger). Con esta restriccin se verificar que en el DBMS el usuario pueda especificar libremente la respuesta(accin) ante una determinada condicin.

La Base de Datos que se utilizar para este fin es la mencionada como ejemplo en el captulo uno, llamada PINACOTECA. El anlisis de algunas de las restricciones semnticas que se analizaran se mencionan a continuacin: Primer Caso:

Opciones de borrado y modificacin No se permite eliminar una pinacoteca mientras existan cuadros en ella (B:R). Adems si modificamos (bien sea por insercin o por actualizacin) los datos de una Pinacoteca, deben poderse modificar en cascada todos los cuadros de la correspondiente pinacoteca modificada (M:C). Reglas ECA Deberamos controlar mediante disparadores, que todo cuadro pertenezca siempre a una pinacoteca. Segundo Caso:

24

Opciones de borrado y modificacin No se debe permitir eliminar un pintor de nuestra base de datos, mientras existan cuadros de ese pintor en alguna de las pinacotecas almacenadas, por tanto el borrado debe ser restringido (B:R). Sin embargo la modificacin debe realizarse en cascada (M:C). Reglas ECA Al igual que en el caso anterior, necesitaramos disparadores para controlar que todo pintor tenga al menos un cuadro. Restricciones de rechazo Se debera controlar mediante un CHECK, que la fecha de nacimiento de los pintores siempre sea anterior a la fecha de fallecimiento. Tercer Caso: Todo maestro es un pintor y por tanto sus caractersticas (atributos) son los mismos que los del pintor. Estamos ante una relacin reflexiva. Introducimos un atributo "Nombre Maestro", cuyo contenido es el mismo que el del atributo "Nombre_Pt", como clave ajena de la relacin PINTOR, que se referencia a s misma. Adems, como cada pintor puede o no tener a otro como maestro, el atributo "Nombre Maestro" puede tomar valores nulos.

Opciones de borrado y modificacin Como un pintor puede ser maestro de otro pintor, si eliminamos un pintor, no debemos permitir que se borre al maestro, por lo tanto el borrado es con puesta a nulos (B:N), pues la clave ajena admite valores nulos. Cuarto Caso:

Opciones de borrado y modificacin No se debe permitir eliminar los pintores pertenecientes a una escuela cuando sta se elimine de la base de datos, por tanto el borrado es restringido (B:R); en cambio la modificacin de una escuela debe permitir la modificacin en cascada de los pintores pertenecientes a ella (M:C). Restricciones de rechazo

25

Deberamos controlar mediante una ASERCIN que la fecha de aparicin de una escuela fuese anterior a la fecha de fallecimiento de los pintores pertenecientes a ella. Quinto Caso:

Opciones de borrado y modificacin Como se desea guardar la relacin existente entre el pintor y su mecenas, no debemos permitir el borrado en cascada en la relacin PATROCINIO(Mecenazgo), es decir, el borrado debe ser restringido (B:R). Al no decir el enunciado nada en contra, la modificacin debe hacerse en cascada (M:C). Restricciones de rechazo Deberamos controlar mediante una ASERCIN que las fechas de inicio y fin del mecenazgo sean anteriores a la fecha de fallecimiento del mecenas. Tambin deberamos controlar con un CHECK que la fecha de inicio del mecenazgo es anterior a la fecha de terminacin del mismo. xxxxxxxxxx xxxxxxx xx x x x x x x x x x x x xxxx xxx xxxxxxxxxxxxxxxxkjbs djashdlkjsha ldjh asklj hdklajshdkljshadk ljhskljdhskljhdksljdhkljshd..........................

26

Captulo 3. CASO DE ESTUDIO ACCESS. El presente captulo proporciona un panorama general de las caractersticas de Access, as como su soporte de integridad y el resultado y justificacin de la evaluacin de integridad realizada a este manejador. 3.1 Caractersticas de Access Microsoft Access es un sistema interactivo de administracin de bases de datos relacionales para Microsoft Windows. Microsoft Access nos ayuda a gestionar nuestra base de datos proporcionando una estructura eficiente para almacenar y recuperar la informacin, el lugar en donde almacenamos la informacin se denomina tabla. Para ingresar los datos Access puede generar automticamente un formulario y una vez que hayamos introducido algunos o todos los datos, podemos pedirle a Access que visualice toda o una parte de la informacin seleccionada utilizando los procedimientos de bsqueda o consulta. Por ltimo, Microsoft Access nos permite imprimir en forma personaliza lo que deseamos ver en un informe. A continuacin se presenta una descripcin general de la pantalla y ventanas principales de Access: Access presenta una pantalla principal(Vase Ilustracin 1) en la cual se muestran los objetos principales de Access, los cuales son: Tablas. Las tablas se componen de filas y columnas de celdas que se pueden rellenar con texto y grficos. Las tablas suelen utilizarse con frecuencia para organizar y presentar informacin, pero tambin tienen muchos otros usos. Las tablas pueden utilizarse para alinear nmeros en columnas y posteriormente ordenarlos y realizar operaciones con ellos. Tambin pueden utilizarse para crear diseos de pgina interesantes y organizar texto y grficos. Consultas. En Microsoft Query o Microsoft Access, sirve para localizar todos los registros de un origen de datos que se ajusten a un conjunto de criterios especificado. Las consultas pueden contener operadores, comillas, caracteres comodn y parntesis para limitar la bsqueda. Se utilizan consultas para ver, modificar y analizar datos de formas diferentes. Tambin pueden utilizarse como el origen de registros para formularios, informes y pginas de acceso a datos. Formularios. Pueden utilizarse formularios con varios propsitos: para describir datos en una tabla, un formulario de panel de control para abrir otros formularios o informes o un cuadro de dialogo para aceptar datos introducidos por el usuario y posteriormente realizar una accin basada en estos datos. Informes. Un informe es un mtodo eficaz de presentar los datos en formato impreso. Dado que tiene el control sobre el tamao y el aspecto de todo el informe, puede mostrar la informacin en la manera que desee verla. Pginas. Crea una pagina de acceso de datos especificando el origen de los registros, los controles y las propiedades de los controles. 27

Macros. Un macro es un conjunto de una o ms acciones que cada una realiza una operacin determinada, tal como abrir un formulario o imprimir un informe. Las macros pueden ayudar a automatizar las tareas comunes. Por ejemplo, puede ejecutar una macro que imprima un informe cuando el usuario haga clic en un botn de comando.

Ilustracin 1

Las especificaciones generales acerca de la Base de Datos Microsoft Access son: Atributo Tamao de archivo de una base de datos de Access (.mdb) Mximo 2 gigabytes. Sin embargo, debido a que la base de datos puede incluir tablas de otros archivos, su tamao total slo est limitado por la capacidad de almacenamiento disponible. 32.768 1.000

Nmero de objetos en una base de datos Mdulos (incluyendo formularios e informes con la propiedad TieneUnMduloAsociado (HasModule) establecida a True) Nmero de caracteres en un nombre de objeto Nmero de caracteres en una contrasea Nmero de caracteres en un nombre de usuario o de grupo Nmero de usuarios que pueden tener acceso a la vez

64 14 20 255

28

Especificaciones generales de un proyecto de Microsoft Access Atributo Nmero de objetos en un proyecto de Microsoft Access (.ADP) Mdulos (incluidos formularios e informes con la propiedad TieneUnMduloAsociado (HasModule) establecida a True) Nmero de caracteres en un nombre de objeto 32,768 1,000 Mximo

64

Especificaciones acerca de la tabla de base de datos de Microsoft Access Atributo Nmero de caracteres en un nombre de tabla Nmero de caracteres en un nombre de campo Nmero de campos en una tabla Nmero de tablas abiertas 64 64 255 2.048. El nmero real puede ser menor debido a tablas que abre Microsoft Access internamente. 1 gigabyte 255 65.535 cuando se introducen datos desde la interfaz de usuario; 1 gigabyte cuando se introducen datos mediante cdigo. 1 gigabyte 32 10 255 2.048 Mximo

Tamao de tabla Nmero de caracteres en un campo de texto Nmero de caracteres en un campo memo

Tamao de un campo objeto OLE Nmero de ndices en una tabla Nmero de campos en un ndice Nmero de caracteres en un mensaje de validacin Nmero de caracteres en una regla de validacin

Nmero de caracteres en una descripcin de tabla o campo 255

29

Nmero de caracteres en un registro (sin incluir los campos memo y objeto OLE) Nmero de caracteres en la configuracin de una propiedad

2.000 255

Especificaciones acerca de la consulta de base de datos de Microsoft Access: Atributo Nmero de relaciones forzadas Mximo 32 por tabla menos el nmero de ndices que hay en la tabla para campos o combinaciones de campos que no forman parte de las relaciones 32 255 1 gigabyte 255 caracteres en uno o ms campos 50 1.024 255 40 aproximadamente 64.000

Nmero de tablas en una consulta Nmero de campos en un conjunto de registros Tamao de un conjunto de registros Lmite para ordenar Nmero de niveles de consultas anidadas Nmero de caracteres en una celda de la cuadrcula de diseo de consulta Nmero de caracteres para un parmetro en una consulta de parmetros Nmero de AND en una clusula WHERE o HAVING Nmero de caracteres en una instruccin SQL Tipos de datos en Microsoft Access: Texto Memo Numrico Fecha/Hora Moneda Autonumrico

30

S/No Objeto OLE Hipervnculo Los tipos de datos Numrico, Fecha/Hora, Moneda y S/No proporcionan formatos de visualizacin predefinidos. Se establece la propiedad Formato (Format) para elegir entre los formatos disponibles para cada tipo de datos. Tambin se puede crear un formato de visualizacin personalizado para todos los tipos de datos, excepto el tipo de datos Objeto OLE. 3.2 Facilidades para el soporte de integridad. Eleccin de la Clave Principal a utilizar. La potencia de un sistema de base de datos relacional como Microsoft Access reside en su capacidad para encontrar y reunir rpidamente informacin almacenada en tablas independientes mediante consultas, formularios e informes. Para ello, cada tabla debe incluir un campo o un conjunto de campos que identifican exclusivamente cada registro almacenado en la tabla. Esta informacin se denomina clave principal de la tabla. Una vez designada una clave principal de una tabla, con el fin de garantizar su exclusividad, Microsoft Access impide que se almacenen valores duplicados o nulos en los campos de la clave principal. Existen tres tipos de clave principal que pueden definirse en Microsoft Access: Autonumrico, Campo simple y Campos mltiples. Claves principales de Autonumrico Un campo Autonumrico puede establecerse para que introduzca automticamente un nmero secuencial cuando se agrega un registro a la tabla. Designar un campo de este tipo como clave principal de una tabla es la forma ms sencilla de crear una clave principal. Si no establece una clave principal antes de guardar una tabla recin creada, Microsoft Access le preguntar si desea que cree una clave principal automticamente. Si contesta afirmativamente, Microsoft Access crear una clave principal de Autonumrico. Claves principales de Campo simple Si se tiene un campo que contiene valores exclusivos, como nmeros de identificacin o nmeros de pieza, puede designar ese campo como la clave principal. Si el campo seleccionado como clave principal tiene valores duplicados o Nulos, Microsoft Access no establece la clave principal. Se puede ejecutar una Consulta de buscar duplicados con el fin de determinar qu registros contienen datos duplicados. Si no puede eliminar fcilmente las entradas duplicadas mediante la edicin de los datos, puede agregar un campo Autonumrico y establecerlo como clave principal o bien definir una clave principal de campos mltiples. 31

Claves principales de Campos mltiples En situaciones en las que no se puede garantizar la exclusividad de un solo campo, puede designar dos o ms campos como clave principal. La situacin ms comn en la que surge este problema es en la tabla utilizada para relacionar otras dos tablas en una relacin muchos a muchos. Si no se est seguro de poder seleccionar una combinacin de campos apropiada para una clave principal de campos mltiples, probablemente resultar ms conveniente agregar un campo Autonumrico y designarlo como la clave principal en su lugar. La Integridad Referencial en Microsoft Access La integridad referencial es un sistema de reglas que utiliza Microsoft Access para garantizar que las relaciones entre los registros de tablas relacionadas son vlidas y que no se eliminan ni modifican accidentalmente datos relacionados. Puede establecer la integridad referencial cuando se cumplen todas las siguientes condiciones:

El campo coincidente de la tabla principal es una clave principal o tiene un ndice nico. Los campos relacionados tienen el mismo tipo de datos. Existen dos excepciones: un campo Autonumrico puede estar relacionado con un campo Numrico con la propiedad Tamao del campo establecida a Entero largo, y un campo Autonumrico con la propiedad Tamao del campo establecida a Id. de rplica puede estar relacionado con un campo Numrico con la propiedad Tamao del campo establecida a Id. de rplica. Ambas tablas pertenecen a la misma base de datos de Microsoft Access. Si las tablas son tablas vinculadas, deben ser tablas en el formato de Microsoft Access y debe abrir la base de datos en la que estn almacenadas para poder establecer la integridad referencial. La integridad referencial no puede exigirse para tablas vinculadas procedentes de bases de datos en otros formatos.

Cuando se exige la integridad referencial, deben observarse las reglas siguientes:

No puede introducir un valor en el campo de clave externa de la tabla relacionada que no exista en la clave principal de la tabla principal. No obstante, puede introducir un valor Nulo en la clave externa, especificando que los registros no estn relacionados. No puede eliminar un registro de una tabla principal si existen registros coincidentes en una tabla relacionada. No puede cambiar un valor de clave principal en la tabla principal si ese registro tiene registros relacionados.

Si se desea que Microsoft Access exija esas reglas para una relacin, se debe seleccionar la casilla de verificacin Exigir integridad referencial al crear la relacin. Si se exige la integridad referencial y se infringe una de las reglas con las tablas relacionadas, Microsoft Access muestra un mensaje y no permite el cambio. 32

Se puede anular las restricciones sobre la eliminacin o la modificacin de registros relacionados y an as conservar la integridad referencial mediante la activacin de las casillas de verificacin Actualizar en cascada los campos relacionados y Eliminar en cascada los registros relacionados. Cuando la casilla de verificacin Actualizar en cascada los campos relacionados est activada, el cambio de un valor de clave principal en la tabla principal actualiza automticamente el valor coincidente en todos los registros relacionados. Cuando la casilla de verificacin Eliminar en cascada los registros relacionados est activada, la eliminacin de un registro en la tabla principal elimina todos los registros relacionados en la tabla relacionada. Por qu se deben utilizar actualizaciones o eliminaciones en cascada? Para las relaciones en las que se exige la integridad referencial, se puede especificar si se desea que Microsoft Access actualice en cascada y elimine en cascada automticamente los registros relacionados. Si establece estas opciones, las operaciones de eliminacin y actualizacin que normalmente impedira la integridad referencial se permiten ahora. Al eliminar registros o al cambiar los valores de clave principal de una tabla principal, Microsoft Access realiza los cambios necesarios en las tablas relacionadas con el fin de conservar la integridad referencial. Si se activa la casilla de verificacin Actualizar en cascada los campos relacionados al definir una relacin, siempre que se cambie la clave principal de un registro de la tabla principal, Microsoft Access actualizar automticamente la clave principal con el nuevo valor en todos los registros relacionados. Si la clave principal de la tabla principal es un campo Autonumrico, la activacin de la casilla de verificacin Actualizar en cascada los campos relacionados no tendr ningn efecto, porque no puede cambiar el valor de un campo Autonumrico. Si se selecciona la casilla de verificacin Eliminar en cascada los registros relacionados al definir una relacin, siempre que elimine registros de la tabla principal, Microsoft Access eliminar automticamente los registros relacionados de la tabla relacionada. Al eliminar registros de un formulario u hoja de datos con la casilla de verificacin Eliminar en cascada los registros relacionados activada, Microsoft Access avisa que es posible que tambin se eliminen los registros relacionados. No obstante, al eliminar registros mediante una consulta de eliminacin, Microsoft Access elimina automticamente los registros de las tablas relacionadas sin mostrar un aviso. Algunos de los sntomas o conflictos de integridad que presenta Access. 1. Microsoft Access permite un valor Null de un campo que es la clave externa en una relacin incluso si se exige integridad referencial. La solucin para impedir a usuarios abandonar los espacios en blanco externos de clave, establezca su propiedad Requerido a S. Esto ocurre si utiliza un clave principal de campo solo, una clave externa, un clave principal de campo mltiple y una clave externa. Sin embargo, Microsoft Access permite un valor Null de un campo que forma parte de una clave externa de campo mltiple si tambin cada otro campo de la clave externa 33

2.

3.

4.

5.

slo contiene un valor Null. Si al menos un campo de la clave externa contiene un valor Null y si contiene datos al menos un otro campo de la clave externa, recibe el mensaje siguiente de error cuando intenta guardar el registro. Al definir claves externas se presenta lo siguiente: En la mayora de los casos, se arrastra el campo de clave principal de una tabla a un campo similar (normalmente con el mismo nombre) denominado la clave externa de la otra tabla. Los campos relacionados no tienen que tener los mismos nombres, pero deben tener el mismo tipo de datos (con dos excepciones) y deben contener el mismo tipo de informacin. Adems, cuando los campos coincidentes son campos Numricos, deben tener el mismo valor de la propiedad Tamao del campo. Las dos excepciones a los tipos de datos coincidentes son que se puede hacer coincidir un campo Autonumrico con un campo Numrico cuya propiedad Tamao del campo est establecida a Entero largo y que se puede hacer coincidir un campo Autonumrico con un campo Numrico si ambos campos tienen la propiedad Tamao del campo establecida a Id. de rplica(Copia de una base de datos, incluyendo sus tablas, consultas, formularios, informes, macros y mdulos. Una rplica es un miembro de un conjunto de rplicas y puede estar sincronizada con otras rplicas del conjunto. Los cambios efectuados en los datos de una tabla replicada en una rplica se envan y se aplican a las dems rplicas). Los conflictos de actualizacin de integridad referencial se producen cuando la clave principal se actualiza en una rplica y los registros secundarios nuevos que hacen referencia al valor de clave principal original se agregan a una rplica diferente. Los conflictos de eliminacin de integridad referencial se producen cuando un registro de clave principal se elimina en una rplica mientras los registros secundarios nuevos que hacen referencia a la clave principal eliminada se agregan a una segunda rplica. Cuando las dos rplicas se sincronizan, los registros secundarios nuevos se marcan para su eliminacin y se agregan a la tabla de conflictos. Un conflicto de clave nica se puede producir en uno de los siguientes casos: Dos rplicas especifican un registro nuevo con el mismo valor en un campo que es una clave principal o tiene un ndice nico. El diseo principal crea un ndice nico y una rplica agrega simultneamente dos o ms registros con el mismo valor de clave. Cuando el cambio del esquema llega a la primera rplica con registros de clave duplicada, el primer registro de clave duplicada permanece en la tabla base. Los registros subsiguientes se marcan para su eliminacin y se escriben en la tabla de conflictos.

6. Un conflicto de infraccin de clave externa se produce cuando hay un registro de clave principal no vlido. Esto puede deberse a uno cualquiera de los dems tipos de conflicto.

34

3.3 Resultados de la Evaluacin de Integridad en Access. En la siguiente tabla se muestra en forma sintetizada los resultados obtenidos de la evaluacin realizada a Microsoft ACCESS, la cual corresponde al Marco de Evaluacin definido en el captulo 2. REGLA DE INTEGRIDAD DE ENTIDADES Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe seleccionar un campo simple como Definicin de SI clave principal Llaves primarias Insercin de No Nulos SI Se debe elegir en el diseo, la propiedad clave primaria Valores SI Indexado , sin duplicados. de un Repetidos componente Insercin de No Nulos SI Se debe seleccionar una combinacin de clave primaria Valores SI campos como clave principal. de ms de un Repetidos componente Actualizacin No Nulos SI de clave Valores SI primaria de un Repetidos solo componente Actualizacin Nulos SI de clave Valores SI primaria de repetidos ms de un componente REGLA DE INTEGRIDAD REFERENCIAL Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe crear la relacin entre tablas, mediante Definicin de SI un atributo con igual o diferente nombre. Llaves Ajenas Se deben crear tuplas en donde el campo de Soporte de SI clave principal exista en la relacin referida Integridad Referencial Se debe establecer Exigir Integridad Referencial Eliminacin Restricted SI Se debe activar eliminar en cascada (DELETE) Casacades SI Nullifies NO Se debe establecer Exigir Integridad Referencial Actualizacin Restricted SI Se debe activar actualizar en cascada (UPDATE) Casacades SI Nullifies NO 35

RESTRICCIONES DE RECHAZO Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe insertar una regla de validacin en el Restriccin SI diseo de una relacin. CHECK Restriccin NO ASSERTION OTRAS RESTRICCIONES IMPORTANTES Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Restriccin NO UNIQUE Se debe de escribir un valor predeterminado en Definicin SI el diseo de una tabla. DEFAULT Restriccin de NO Tipo Disparador NO

3.4 Anlisis de los resultados de la evaluacin de integridad en Access. Definicin de Claves Primarias: El manejador menciona que, una clave principal no es necesaria pero sugiere que se cree para hacer interrelaciones con otras relaciones(Vase Ilustracin 2). Verifica que efectivamente se haya definido una clave primaria, ya sea definida por el usuario o proporciona la opcin de que el propio manejador cree una llave primaria con un campo autonumrico, el cual le asigna un valor numrico consecutivo automticamente cada vez que se ingresa una nueva tupla(Ver Ilustracin 3).

36

Ilustracin 2

Ilustracin 3

Existe una propiedad que se llama Requerido, el cual se puede o no seleccionar, para que sea obligatorio el ingreso de datos en ese campo, sin embargo por la definicin de clave principal el manejador verifica automticamente que ese campo sea requerido sin la necesidad de colocarlo en SI. Regla de Integridad de Entidades Efectivamente el DBMS verifica que en un atributo de clave principal no se permitan valores nulos, si esto sucede el manejador enva un mensaje que como es el identificador nico forzosamente debe contener informacin identificable de manera nica(Vase ilustracin 4).

37

Ilustracin 4

Sin embargo puede haber un detalle en la definicin de tal atributo de clave primaria ya que en la declaracin de cada uno de los atributos, se encuentra una opcin llamada valor predeterminado la cual introduce un valor automticamente antes de llenar tal campo. Dentro de las constantes que da como opcin el valor predeterminado, existe una llamada NULO, el cual coloca la palabra (null) en el campo de la clave primaria. Todo esto puede generar diversos problemas al realizar consultas, ya que si se defini una llave principal y se da la opcin de la constante NULO como valor predeterminado, al ingresar datos en la base de datos, permite que exista un atributo de clave primaria con la palabra (null), esto se considera informacin desconocida, aunque no faltante, ya que el no introducir datos en ese campo significa que se deja el predeterminado (null) en la clave primaria, con lo cual pueden surgir errores y confusiones en la informacin. A razn de sugerencia lo que el Manejador debe de hacer es no establecer opciones para el valor predeterminado, si no que el usuario lo escriba de forma propia, para que no se preste a confusiones este campo como si fuera un nulo, aunque en realidad solo es la palabra escrita como (null). Insercin de Clave Primaria de un solo componente (No nulos): El concepto de nulos se considera como: informacin desconocida, inaplicable, inexistente, no valida, no proporcionada, indefinida, etc. Al realizar la insercin de un campo de clave primaria con informacin que se desconoce, que no existe o que jams se proporciona el manejador enva un mensaje de advertencia para no permitir que eso suceda, si el usuario quiere cerrar esa relacin el manejador automticamente elimina la tupla que no contiene informacin y solo guarda las tuplas que cuentan con los campos de clave primaria con informacin. (Vase Ilustracin 5)

38

Ilustracin 5

Insercin de Clave Primaria de un solo componente(Valores repetidos): Inherentemente por la definicin de llave primaria, no se deben aceptar valores repetidos ya que este campo es el cual los identifica de forma nica a la relacin. Esa verificacin la realiza correctamente, ya que el manejador no permite continuar insertando tuplas hasta no escribir un identificador diferente al que se esta repitiendo(Vase Ilustracin 6).

39

Ilustracin 6

Insercin de Clave Primaria de ms de un componente (No Nulos): Al intentar insertar alguna informacin no valida, inexistente, o que aun no se ha proporcionado en alguno de los atributos de la clave primaria el manejador automticamente enva un mensaje de error y pide que se introduzca informacin en tal campo(Vase Ilustracin 7) o en el caso de que no se introduzca informacin en ninguno de ellos realiza la misma accin que en el caso anterior (Vase Ilustracin 8).

Ilustracin 7

Ilustracin 8

40

Aqu se presenta el mismo problema del valor predeterminado para las claves primarias en NULL, ya que en este caso si el campo de clave primaria acepta que se ponga nulo, desde donde se hace referencia y en ellos mismos, habra la posibilidad de que exista una llave primaria de ms de un componente con cada valor de atributo predeterminado en la palabra (null). Sin embargo en la regla de validacin la opcin ES NULO, lo maneja como que no se encuentren valores inexistentes en el campo, pero si permite que se quede la palabra (null) por default(Ver ilustracin 9).

Ilustracin 9

Insercin de clave primaria de ms de un solo componente (Valores repetidos): La verificacin de que no existan valores repetidos en la clave primaria como conjunto, la realiza perfectamente bien, si encuentra un valor de clave primaria que se ha ingresado con anterioridad, manda un mensaje de que se tiene que modificar esa clave primaria ya que no es valida como lo muestra la Ilustracin 10.

Ilustracin 10

41

Actualizacin de Clave Primaria de un solo componente (No Nulos): La actualizacin de un campo no permite que se inserte informacin inexistente, no valida o nula. El manejador en el momento que se deja ese valor de atributo de forma vaca y se quiere hacer otro cambio, enva un mensaje en el cual indica que los valores de clave primaria no pueden contener valores nulos (Vase Ilustracin 4). En este caso no se presenta la excepcin del valor predeterminado ya que la actualizacin solo modifica un valor de atributo ya creado y no se crea uno nuevo, por lo que el manejador no coloca el valor predeterminado por no ser una nueva tupla. Actualizacin de Clave Primaria de un solo componente(Valores repetidos): La actualizacin de clave primaria de un solo componente al igual que realiza la verificacin de no valores repetidos a la insercin de nuevas tuplas de un solo componente, realiza la verificacin cuando es una actualizacin, si se desea insertar un valor que ya se ha ingresado antes, se enva un mensaje de error y solicita que se cambie ya que por definicin de clave primaria no se aceptan valores repetidos. Actualizacin de clave primaria de ms de un solo componente(Nulos): Al igual que en la clave de un solo componente, la actualizacin de claves de dos o ms componentes verifica que no contenga valores nulos en los campos correspondientes, si esto sucede Access enva un mensaje que no se acepta valores nulos. Actualizacin de clave primaria de ms de un solo componente(Valores Repetidos): ACCESS realiza la verificacin que mediante la combinacin de dos o ms componentes al actualizar uno de ellos, la combinacin de ellos no de cmo resultado una tupla ya existente en la relacin correspondiente. Enviando un mensaje de error y no permitiendo el ingreso de tal tupla si esto sucediera, en el caso de querer guardar tales cambios, el manejador elimina ese ultimo cambio automticamente dejando la base de datos como originalmente se tenia o eliminando por completo tal tupla. Definicin de claves ajenas El manejador permite la definicin de claves ajenas mediante la definicin de interrelaciones entre las relaciones elaboradas(Vase Ilustracin 11).

Ilustracin 11

42

Soporte de Integridad Referencial Como se mencion este punto evala si ACCESS verifica que el valor de cualquier clave ajena hace referencia a una tupla que existe en la relacin referida. Esto lo hace automticamente ya que cuando el usuario desea insertar una tupla en la relacin que hace referencia a otra, el manejador no lo permite hasta que no se encuentre en la tupla o la clave principal en la relacin que esta siendo referenciada(Vase Ilustracin 12).

Ilustracin 12

Eliminacin (Restringida) Access no tiene implcita la accin referencial de eliminacin restringida. Sin embargo si en la definicin de una clave ajena no se especifica que es en cascada, la toma como restringida. En el ejemplo de patrocinio, hace referencia a el NombreP del pintor en la relacin PINTOR, si quiero eliminar una tupla en PINTOR, el manejar indica que tiene se esta haciendo referencia a ese atributo y que no se puede eliminar. Vase Ilustracin 13

Ilustracin 13

43

Eliminacin en Cascada La nica propiedad de eliminacin que permite implcitamente ACCESS es la eliminacin en cascada. La eliminacin la realiza de forma correcta, si se elimina una tupla que esta referenciada por otra en otra relacin borra la tupla que esta haciendo referencia y tambin la referenciada. Eliminacin con puesta a Nulos No permite la puesta de nulos cuando se elimina un campo de clave principal referenciada. Actualizacin Restringida La actualizacin en ACCESS no contiene el efecto restringido. Sin embargo al no elegir el efecto que se le dar a la actualizacin, este lo hace de forma restringida automticamente, ya que no permite modificar cuando estn relacionado otros campos con esa relacin. Vase Ilustracin 14.

Ilustracin 14

Actualizacin en Cascada En la actualizacin solo se da la opcin implcitamente de actualizar en cascada y tanto la verificacin como la actualizacin la realiza correctamente. Vase ilustracin 15.

44

Ilustracin 15

Actualizacin con puesta a Nulos No permite la puesta a nulos cuando se actualiza un campo de clave principal referenciada. Restricciones de Rechazo (check) El Manejador en la definicin de una relacin como ya se menciono contiene un apartado implcito en ella que se llama Regla de Validacin, la cual acta como un CHECK sobre esta relacin y sin embargo esta limitado a las operaciones que incluye el manejador como: funciones con las operaciones bsicas, lgicas y constantes. Restriccin de Rechazo (ASSERTION) No permite la funcionalidad de incluir en la base de datos una operacin que se aplique a varias relaciones(tablas) o a otros elementos. Restriccin UNIQUE Se puede realizar esta verificacin mediante una opcin parecida que aparentemente puede funcionar mediante la definicin en el diseo como indexado y sin duplicados, as se puede definir alguna clave alternativa, para que no se permitan valores duplicados en un campo sin ser precisamente clave primaria, sin embargo se crea forzosamente un ndice y se duplican valores en el campo por lo que la actualizacin se pude tornar lenta. Restriccin DEFAULT Permite el manejador en la definicin de un Valor Predeterminado el cual coloca un valor por default en las nuevas tuplas creadas, se pueden establecer funciones, constantes, etc. Esta propiedad de diseo es general para cualquier atributo no solo para claves ajenas.

45

Restriccin de TIPO En ACCESS solo se puede hacer referencia o colocar los tipos ya definidos por el manejador no da la opcin de crear un tipo propio o un dominio creado por el usuario y hacer referencia a l mediante el nombre del tipo. Disparador. El Manejador no tiene la opcin de incluir dentro de la base de datos un procedimiento que se pueda especificar respuesta ante determinada condicin solicitada por el usuario. Esto se tiene que hacer en los programas de aplicacin.

46

Captulo 4: Caso de Estudio MySQL.


El presente captulo da un panorama general de las caractersticas de MySQL, as como su soporte de integridad y el resultado y justificacin de la evaluacin de integridad realizada a este manejador. 4.1 Caractersticas Generales de MySQL. Qu es MySQL ? MySQL es un Sistema de Gestin de Base de Datos Relacional SQL (Structured Query Language). MySQL es una implementacin Cliente-Servidor que consta de un servidor y diferentes clientes (programas/libreras), con el cual podemos agregar, acceder, y procesar datos grabados en una base de datos. Actualmente el gestor de base de datos juega un rol central en la informtica, como nica utilidad, o como parte de otra aplicacin. MySQL es un software de cdigo abierto esto quiere decir que es accesible para cualquiera, para usarlo o modificarlo. Podemos descargar MySQL desde Internet y usarlo sin pagar nada, de esta manera cualquiera puede inclinarse a estudiar el cdigo fuente y cambiarlo para adecuarlo a sus necesidades. MySQL usa el GNU Licencia Publica General para definir qu podemos y qu no podemos hacer con el software en diferentes situaciones. Entre otras cuestiones esta licencia aclara que no cuesta dinero a menos que lo incluyamos en un software comercial y tengamos el cdigo fuente. MySQL puede ser usado tambin en modo batch: es decir, se pueden colocar toda una serie de consultas en un archivo, y posteriormente decirle que ejecute dichas consultas. Principales Caractersticas de MySQL.

El principal objetivo de MySQL es velocidad y robustez. Escrito en C y C++. Usa GNU autoconf para portabilidad. Clientes C, C++, JAVA, Perl, TCL. Multiproceso, es decir puede usar varias CPU si stas estn disponibles. Puede trabajar en distintas plataformas y S.O. distintos. Sistema de contraseas y privilegios muy flexible y segura. Todas la palabras de paso viajan encriptadas en la red. Registros de longitud fija y variable. 16 ndices por tabla, cada ndice puede estar compuesto de 1 a 15 columnas o partes de ellas con una longitud mxima de 127 bytes. Todas las columnas pueden tener valores por defecto. Utilidad (Isamchk) para chequear, optimizar y reparar tablas. Todos los datos estn grabados en formato ISO8859_1. Los clientes usan TCP o UNIX Socket para conectarse al servidor. El servidor soporta mensajes de error en distintas lenguas. Todos los comandos tienen -help o -? Para las ayudas.

47

Diversos tipos de datos como enteros de 1, 2, 3, 4, y 8 bytes, coma flotante, doble precisin, carcter, fechas, horas, texto libre y enumerados. ODBC para Windows 95 (con fuentes), se puede utilizar ACCESS para conectar con el servidor.

Sistemas operativos soportados por MySQL:


Los siguientes son solo algunos de los Sistemas operativos que soporta MySQL: AIX 4.x con consulta nativa. BSDI 2.x con el paquete MIT-pthreads incluido. BSDI 3.0, 3.1 y 4.x con consulta nativa. DEC Unix 4.x con consulta nativa. FreeBSD 2.x con el paquete MIT-pthreads incluido. FreeBSD 3.x y 4.x con consulta nativa. HP-UX 10.20 con el paquete MIT-pthreads incluido. HP-UX 11.x con consulta nativa. Linux 2.0+ con LinuxThreads 0.7.1+ o glibc 2.0.7+ . Mac OS X Server. NetBSD 1.3/1.4 Intel y NetBSD 1.3 Alpha (carece de la marca GNU). OpenBSD > 2.5 con consulta nativa. OpenBSD < 2.5 con el paquete MIT-pthreads incluido. OS/2 Warp 3, FixPack 29 y OS/2 Warp 4, FixPack 4. SGI Irix 6.x con consulta nativa. Solaris 2.5 y con consulta nativa sobre SPARC y x86. SunOS 4.x con el paquete MIT-pthreads incluido. SCO OpenServer con un puerto reciente al paquete de FSU Pthreads. SCO UnixWare 7.0.1. Tru64 Unix Win95, Win98, NT, y Win2000.

Porque usar MySQL? MySQL es muy rpido, confiable, robusto y fcil de usar tanto para volmenes de datos grandes como pequeos. Adems tiene un conjunto muy prctico de caractersticas desarrolladas en cooperacin muy cercana con los usuarios. Sin embargo bajo un constante desarrollo, MySQL hoy en da ofrece un rico y muy til conjunto de funciones. La conectividad, velocidad y seguridad hace de MySQL altamente conveniente para acceder a bases de datos en Internet. 4.2 Soporte de Integridad en MySQL. MySQL 4.0 soporta cinco tipos de tablas: MyISAM, ISAM, HEAP, BDB (Base de datos Berkeley), e InnoDB. BDB e InnoDB son ambas tipos de tablas transaccionales. Adems de poder trabajar con transacciones en MySQL, las tablas del tipo InnoDB tambin tienen soporte para la definicin de claves forneas, por lo que se nos permite definir reglas o restricciones que garanticen la integridad referencial de los registros.

48

A partir de la versin 4.0, MySQL ha agregado InnoDB a la lista de tipos de tablas soportados en una instalacin tpica. En este artculo se asume que se cuenta ya con un servidor MySQL con soporte para el tipo de tablas InnoDB. En nuestro caso haremos uso de un servidor MySQL 4.1.2 alpha ejecutndose en un sistema Windows XP. Llaves Primarias MySQL requiere que se especifique NOT NULL para las columnas que se van a utilizar como claves primarias al momento de crear una tabla. En las versiones 3 no permite la definicin de claves primarias sin especificarlo, sin embargo en las versiones a partir del 4.0 el manejador no toma como error el no especificar NOT NULL, sin embargo es necesario incluirlo por razones de seguridad. Claves Forneas e Integridad Referencial en MySQL Podemos decir de manera simple que integridad referencial significa que cuando un registro en una tabla haga referencia a un registro en otra tabla, el registro correspondiente debe existir. En el pasado, MySQL no se esforzaba en evitar cierto tipo de situaciones de integridad pobre, y la responsabilidad pasaba a la aplicacin. Para muchos desarrolladores, esta no era una situacin del todo grata, y por lo tanto no se consideraba a MySQL para ser usado en sistemas "serios". Por supuesto, esta fue una de las cosas ms solicitadas en las anteriores versiones de MySQL; que se tuviera soporte para claves forneas, para que MySQL mantenga la integridad referencial de los datos. Estrictamente hablando, para que un campo sea una clave fornea, ste necesita ser definido como tal al momento de crear una tabla. Se pueden definir claves forneas en cualquier tipo de tabla de MySQL, pero nicamente tienen sentido cuando se usan tablas del tipo InnoDB. A partir de la versin 3.23.43b, se pueden definir restricciones de claves forneas con el uso de tablas InnoDB. InnoDB es el primer tipo de tabla que permite definir estas restricciones para garantizar la integridad de los datos. Para trabajar con claves forneas, necesitamos hacer lo siguiente: Crear ambas tablas del tipo InnoDB. Usar la sintaxis FOREIGN KEY(campo_fk) REFERENCES nombre_tabla (nombre_campo) Opcionalmente crear un ndice en el campo que ha sido declarado clave fornea. InnoDB no crea de manera automtica ndices en las claves forneas o en las claves referenciadas, as que debemos crearlos de manera explcita. Los ndices son necesarios para que la verificacin de las claves forneas sea ms rpida. A continuacin se muestra como definir las dos tablas de ejemplo con una clave fornea.

49

CREATE TABLE cliente ( id_cliente INT NOT NULL, nombre VARCHAR(30), PRIMARY KEY (id_cliente) ) TYPE = INNODB; CREATE TABLE venta ( id_factura INT NOT NULL, id_cliente INT NOT NULL, cantidad INT, PRIMARY KEY(id_factura), INDEX (id_cliente), FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) ) TYPE = INNODB;

La sintaxis completa de una restriccin de clave fornea es la siguiente: [CONSTRAINT smbolo] FOREIGN KEY (nombre_columna, ...) REFERENCES nombre_tabla (nombre_columna, ...) [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}] Las columnas correspondientes en la clave fornea y en la clave referenciada deben tener tipos de datos similares para que puedan ser comparadas sin la necesidad de hacer una conversin de tipos. El tamao y el signo de los tipos enteros debe ser el mismo. En las columnas de tipo carcter, el tamao no tiene que ser el mismo necesariamente. Si MySQL emite un mensaje de error cuyo nmero es el 1005 al momento de ejecutar una sentencia CREATE TABLE, y el mensaje de error se refiere al nmero 150, la creacin de la tabla fall porque la restriccin de la clave fornea no se hizo de la manera adecuada. De la misma manera, si falla una sentencia ALTER TABLE y se hace referencia al error nmero 150, esto significa que la definicin de la restriccin de la clave fornea no se hizo adecuadamente. A partir de la versin 4.0.13 de MySQL, se puede usar la sentencia SHOW INNODB STATUS para ver una explicacin detallada del ltimo error que se gener en relacin a la definicin de una clave fornea. Si en una tabla, un registro contiene una clave fornea con un valor NULO, significa que no existe ninguna relacin con otra tabla. A partir de la versin 3.23.50, se pueden agregar restricciones de clave fornea a una tabla con el uso de la sentencia ALTER TABLE. La sintaxis es: ALTER TABLE nombre_tabla ADD [CONSTRAINT smbolo] FOREIGN KEY(...) REFERENCES otra_tabla(...) [acciones_ON_DELETE][acciones_ON_UPDATE]

50

En las versiones 3.23.50 y menores no deben usarse las sentencias ALTER TABLE o CREATE INDEX en tablas que ya tienen definidas restricciones de claves forneas o bien, que son referenciadas en restricciones de claves forneas: cualquier sentencia ALTER TABLE elimina todas las restricciones de claves forneas definidas para la tabla. No debe usarse una sentencia ALTER TABLE en una tabla que est siendo referenciada, si se quiere modificar el esquema de la tabla, se recomienda eliminar la tabla y volverla a crear con el nuevo esquema. Cuando MySQL hace un ALTER TABLE, puede ser que use de manera interna un RENAME TABLE, y por lo tanto, se confundan las acciones referenciales de clave fornea que se refieren a la tabla. Esta restriccin aplica tambin en el caso de la sentencia CREATE INDEX, ya que MySQL la procesa como un ALTER TABLE. Cuando se ejecute un script para cargar registros en una base de datos, es recomendable agregar las restricciones de claves forneas utilizando un ALTER TABLE. De esta manera no se tiene el problema de cargar los registros en las tablas de acuerdo a un orden lgico (las tablas referenciadas deberan ir primero). Eliminacin de una clave fornea No podemos slo eliminar una restriccin de clave fornea como si fuera un ndice ordinario. Veamos que sucede cuando lo intentamos.
mysql> ALTER TABLE pintor DROP FOREIGN KEY; ERROR 1005: Can't create table '.test#sql-228_4.frm' (errno: 150)

Para eliminar la clave fornea se tiene que especificar el ID que ha sido generado y asignado internamente por MySQL a la clave fornea. En este caso, se puede usar la sentencia SHOW CREATE TABLE para determinar dicho ID. En nuestro ejemplo, la restriccin tiene el ID pintor_ibfk_1 (es muy probable que este valor sea diferente en cada caso).
mysql> ALTER TABLE venta DROP FOREIGN KEY pintor_ibfk_1; Query OK, 3 rows affected (0.23 sec) Records: 3 Duplicates: 0 Warnings: 0

Eliminacin de registros con claves forneas Una de las principales bondades de las claves forneas es que permiten eliminar y actualizar registros en cascada. Las opciones estndar cuando se elimina una registro con clave fornea son: ON DELETE RESTRICT ON DELETE NO ACTION ON DELETE SET DEFAULT ON DELETE CASCADE ON DELETE SET NULL 51

ON DELETE RESTRICT es la accin predeterminada, y no permite una eliminacin si existe un registro asociado. ON DELETE NO ACTION hace lo mismo. ON DELETE SET DEFAULT actualmente no funciona en MySQL - se supone que establece el valor de la clave fornea igual al valor por omisin (DEFAULT) que se defini al momento de crear la tabla. Si se especifica ON DELETE CASCADE, y una fila en la tabla padre es eliminada, entonces se eliminarn las filas de la tabla hijo cuya clave fornea sea igual al valor de la clave referenciada en la tabla padre. Si se especifica ON DELETE SET NULL, las filas en la tabla hijo se actualizan automticamente estableciendo en las columnas de la clave fornea el valor NULL. Si se especifica una accin SET NULL, debemos asegurarnos de no declarar las columnas en la tabla como NOT NULL. Actualizacin de registros con claves forneas Las opciones correspondientes a ON UPDATE estn disponibles a partir de la versin 4.0.8. Estas opciones son muy similares cuando se ejecuta una sentencia UPDATE, en lugar de una sentencia DELETE. Estas son:

ON UPDATE CASCADE ON UPDATE SET NULL ON UPDATE RESTRICT

A manera de conclusin podemos decir que, el Gestor de bases de datos, MySQL comparado con los de su categora, es considerado como el ms rpido y robusto tanto para volmenes de datos grandes como pequeos. Pero est rapidez es a costa de no implementar ciertos aspectos del estndar SQL. Los triggers no es nada ms que una porcin de cdigo almacenado que se "dispara" o se ejecuta cuando se realiza una operacin ( actualizacin, borrado, etc.) con la base de datos. Naturalmente comprobar la propia existencia de disparador y ejecutarlo si existe consume recursos y tiempo y es como su propio manual indica, la nica razn por la que los triggers no estn soportados.

52

4.3 Resultados de la evaluacin de integridad en MySQL. La siguiente tabla muestra los resultados de la evaluacin hecha a MySQL de acuerdo a los criterios de evaluacin. REGLA DE INTEGRIDAD DE ENTIDADES Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe especificar el campo de clave primaria en la Definicin de SI creacin de la relacin razones de seguridad declarar Llaves como NOT NULL el atributo de clave primaria. primarias Se debe especificar la propiedad NOT NULL en la Insercin de No Nulos SI creacin del atributo de clave primaria de la relacin clave primaria Valores SI de un Repetidos componente Se debe especificar la propiedad NOT NULL en la Insercin de No Nulos SI creacin de la combinacin de los atributos de clave clave primaria primaria de la relacin de ms de un Valores SI componente Repetidos Se recomienda no realizar la asignacin de null en la Actualizacin No Nulos NO actualizacin de un campo de clave primaria de clave Valores SI primaria de un Repetidos solo componente Se recomienda no realizar la asignacin de null en la Actualizacin Nulos NO actualizacin de una combinacin de campos de clave de clave primaria primaria de Valores SI ms de un repetidos componente REGLA DE INTEGRIDAD REFERENCIAL Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe declarar las llaves ajenas dentro del cdigo de Definicin de SI creacin de la relacin Llaves Ajenas Se debe especificar la integridad referencial en la Soporte de SI creacin de la relacin, con la definicin de claves Integridad ajenas. Referencial En la declaracin de la clave ajena se debe especificar Eliminacin Restricted SI la accin refencial RESTRICT en la eliminacin o su (DELETE) Casacades Nullifies SI SI
equivalente NOACTION En la declaracin de la clave ajena se debe especificar la accin referencial CASCADE en la eliminacin En la declaracin de la clave ajena se debe especificar la accin referencial SET NULL en la eliminacin

53

Actualizacin (UPDATE)

Restricted Casacades Nullifies

SI SI SI

RESTRICCIONES DE RECHAZO Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe especificar en la creacin de la tabla o el Restriccin NO elemento la expresin a verificar, precedido de la CHECK Restriccin NO ASSERTION OTRAS RESTRICCIONES IMPORTANTES Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe especificar en la creacin de un atributo de Restriccin S una relacin UNIQUE, o alterar la tabla y agregarlo UNIQUE Definicin DEFAULT Restriccin de Tipo Disparador S NO NO
en el atributo deseado palabra reservada CHECK.

En la declaracin de la clave ajena se debe especificar la accin referencial RESTRICT o su equivalente NO ACTION en la actualizacin (UPDATE) En la declaracin de la clave ajena se debe especificar la accin referencial CASCADE en la actualizacin. En la declaracin de la clave ajena se debe especificar la accin referencial SET NULL.

4.4 Anlisis de los resultados de evaluacin de integridad en MySQL. Definicin de Llaves Primarias y Llaves Ajenas. El manejador permite en su sintaxis la definicin de llaves tanto primarias como ajenas, y las identifica colocando la palabra PRI en el campo Key de la descripcin de la relacin para las primarias y MUL para las ajenas. A continuacin se muestra la creacin de la relacin Pintor, y su descripcin, en la cual se puede observar que MySQL no detect ningn problema al declarar estas claves y que en su descripcin las identifica de la forma mencionada.
mysql> -> -> -> -> -> -> -> -> CREATE TABLE PINTOR ( NOMBREPT CHAR(40), PAISPT CHAR(15) NOT NULL, CIUDADPT CHAR(20) NOT NULL, FECHA_N DATE NOT NULL, FECHA_F DATE NOT NULL, NOMBRE_MASTER CHAR(40), NOMBREE CHAR(40),

54

-> PRIMARY KEY(NOMBREPT), -> CHECK (FECHA_N<FECHA_F), -> FOREIGN KEY(NOMBRE_MASTER) REFERENCES PINTOR(NOMBREPT -> ON UPDATE CASCADE -> ON DELETE SET NULL, -> FOREIGN KEY(NOMBREE) REFERENCES ESCUELA(NOMBREE) -> ON UPDATE CASCADE -> ON DELETE RESTRICT -> ) TYPE = INNODB; Query OK, 0 rows affected, 1 warning (0.13 sec)

Soporte de Regla de Integridad de Entidades. El manejador cuenta con soporte de Integridad de Entidades ya que no admite la insercin de un campo de clave primaria como nulo, esa verificacin, la hace automticamente, sin embargo se recomienda que al definir claves primarias se coloque la restriccin NOT NULL, ya que para versiones igual o menores a 3.23 la requiere, ya que si esta restriccin no es especificada por el usuario no permite la definicin de la clave primaria. A continuacin se dar la justificacin del cmo una clave primaria no acepta valores nulos para uno o ms componentes. Insercin de Clave Primaria de un componente (NO NULOS). MyQSL no permite la insercin de nulos en clave primaria con un componente, esto se justifica al intentar asignar a este campo de clave primaria un nulo como lo muestra el siguiente ejemplo:
mysql> select * from Pinacoteca; +---------------------+-----------+---------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+---------------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA BUAP | PUEBLA | AV. JUAN DE PALAFOX | 160 | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+---------------------+---------+ 10 rows in set (0.00 sec)

| | | | |

mysql> INSERT INTO PINACOTECA(NOMBREP,CIUDADP,DIRECCIONP,METROSP) VALUES (NULL,'MONTERREY','AV. CERRO DE LA SILLA','200'); ERROR 1048 (23000): Column 'NOMBREP' cannot be null

Sin embargo el manejo de nulos tiene una vulnerabilidad, la cual es que si se desea insertar una tupla y no se inserta el campo de clave primaria, el manejador deja este espacio en blanco, aparentemente un valor nulo. El manejador no le asigna el valor nulo, ya que la llave primaria no lo acepta, si no que le asigna cadena vacia. Este tipo de vulnerabilidad 55

puede general diversos errores y problemas en la manipulacin de los datos, ya que si se da el caso de que no se inserte clave primaria y el manejador no solicite forzosamente un valor, este queda sin identificador, a menos que su identificador se considere la cadena vaca o nada. Veamos el siguiente ejemplo:
mysql> select * from Pinacoteca; +---------------------+-----------+---------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+---------------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA BUAP | PUEBLA | AV. JUAN DE PALAFOX | 160 | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+---------------------+---------+ 10 rows in set (0.00 sec) mysql> INSERT INTO PINACOTECA(CIUDADP,DIRECCIONP,METROSP) VALUES ('MONTERREY','AV. CERRO DE LA SILLA','200'); Query OK, 1 row affected, 1 warning (0.06 sec) mysql> select * from Pinacoteca; +---------------------+-----------+----------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+----------------------+---------+ | | MONTERREY | AV. CERRO DE LA SILL | 200 | | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA BUAP | PUEBLA | AV. JUAN DE PALAFOX | 160 | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+----------------------+---------+ 11 rows in set (0.00 sec)

| | | | |

| | | | |

Se puede observa que al desplegar los datos existentes en tal relacin, existe un campo de clave primaria con informacin desconocida, por el cual no se puede tener referencia exacta a una tupla. Obsrvese el comportamiento de la relacin, cuando se inserta un valor de cadena vaca, se comporta exactamente igual que cuando no se introduce un valor especifico:
mysql> INSERT INTO PINACOTECA(NOMBREP,CIUDADP,DIRECCIONP,METROSP) VALUES ('','MONTERREY','AV. CERRO DE LA SILLA','200'); Query OK, 1 row affected, 1 warning (0.04 sec)

56

mysql> select * from Pinacoteca; +---------------------+-----------+----------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+----------------------+---------+ | | MONTERREY | AV. CERRO DE LA SILL | 200 | | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA BUAP | PUEBLA | AV. JUAN DE PALAFOX | 160 | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+----------------------+---------+ 11 rows in set (0.00 sec)

| | | | |

Insercin de Clave Primaria de un componente (Valores Repetidos). MySQL verifica que un valor de clave primaria no se repita en el momento de la insercin, si se desea ingresar un valor de clave primaria que ya existe, el manejador automticamente enva un mensaje de error de entrada duplicada y evita que se inserte tal tupla en la relacin. Vase el ejemplo:
mysql> SELECT NOMBREPT FROM PINTOR; +-----------------------+ | NOMBREPT | +-----------------------+ | LEONARDO DA VINCI | | MAQUIAVELLO | | MARCO MARZIALE | | MIGUEL ANGELO | | PIERO DELLA FRANCESCO | | PIERO SANSEPOLCRO | | REMBRANTL VAN RIJN | | SIR JOSHUA REYNOLDS | +-----------------------+ 8 rows in set (0.01 sec) mysql> INSERT INTO PINTOR(NOMBREPT) VALUES ('MIGUEL ANGELO'); ERROR 1062 (23000): Duplicate entry 'MIGUEL ANGELO' for key 1

Insercin de clave primaria de ms de un componente (No nulos)

La insercin de claves primarias de ms de dos componentes con valores nulos MySQL las verifica, enva automticamente un mensaje de error de que tal campo no admite valores nulos y evita que esa tupla se ingrese a la relacin.

57

mysql> SELECT * FROM PATROCINIO; +----------------+---------------------+----------+-----------+----------+ | NOMBREM | NOMBREPT | RELACION | FECHA_INI | FECHA_FIN | +----------------+---------------------+----------+-----------+----------+ | ESTADO FRANCIA | MAQUIAVELLO | LABORAL | NULL | NULL | | ESTADO FRANCIA | MIGUEL ANGELO | FAMILIAR | NULL | NULL | | ESTADO HOLANDA | REMBRANTL VAN RIJN | LABORAL | NULL | NULL | | ESTADO ITALIA | LEONARDO DA VINCI | LABORAL | NULL | NULL | | ESTADO ITALIA | MARCO MARZIALE | LABORAL | NULL | NULL | | ESTADO USA | SIR JOSHUA REYNOLDS | LABORAL | NULL | NULL | +----------------+---------------------+----------+-----------+----------+ 6 rows in set (0.00 sec) mysql> INSERT INTO PATROCINIO(NOMBREM,NOMBREPT,RELACION,FECHA_INI,FECHA_FIN) -> VALUES (NULL,NULL,'LABORAL','1900-01-02','1905-02-06'); ERROR 1048 (23000): Column 'NOMBREM' cannot be null

Insercin de clave primaria de ms de un componente (Valores repetidos) Al igual que en la insercin de la clave de un componente el manejador verifica que no se repitan los valores de clave primaria, sin embargo la diferencia de este es que la clave primaria es la combinacin de estos dos o ms atributos, as que para que sea un campo de clave primaria idntico se tiene que tener que cada atributo tiene que ser igual.
mysql> SELECT * FROM PATROCINIO; +----------------+---------------------+----------+-----------+----------+ | NOMBREM | NOMBREPT | RELACION | FECHA_INI | FECHA_FIN | +----------------+---------------------+----------+-----------+----------+ | ESTADO FRANCIA | MAQUIAVELLO | LABORAL | NULL | NULL | | ESTADO FRANCIA | MIGUEL ANGELO | FAMILIAR | NULL | NULL | | ESTADO HOLANDA | REMBRANTL VAN RIJN | LABORAL | NULL | NULL | | ESTADO ITALIA | LEONARDO DA VINCI | LABORAL | NULL | NULL | | ESTADO ITALIA | MARCO MARZIALE | LABORAL | NULL | NULL | | ESTADO USA | SIR JOSHUA REYNOLDS | LABORAL | NULL | NULL |

58

+----------------+---------------------+----------+-----------+----------+ 6 rows in set (0.01 sec) mysql> INSERT INTO PATROCINIO(NOMBREM,NOMBREPT,RELACION,FECHA_INI,FECHA_FIN) -> VALUES ('ESTADO FRANCIA','MAQUIAVELLO','LABORAL','1900-0102','1905-02-06 '); ERROR 1062 (23000): Duplicate entry 'ESTADO FRANCIA-MAQUIAVELLO' for key 1

Actualizacin de clave primaria de un componente(No nulos) La actualizacin es un caso especial, ya que es el manejador lo utiliza de una forma diferente a la insercin incluso sus reglas y manipulacin de datos son distintas. Cuando un usuario desea realizar la actualizacin de un campo de clave primaria, la palabra reservada que no acepta cuando se inserta una tupla, en la modificacin la acepta e incluso el campo de clave primaria que se actualizo queda con un espacio vaco, vase el siguiente ejemplo:
mysql> SELECT * FROM PINACOTECA; +---------------------+-----------+---------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+---------------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA BUAP | PUEBLA | AV. JUAN DE PALAFOX | 160 | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+---------------------+---------+ 10 rows in set (0.00 sec) mysql> UPDATE PINACOTECA -> SET NOMBREP=NULL -> WHERE NOMBREP='PINACOTECA BUAP'; Query OK, 1 row affected, 1 warning (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> SELECT * FROM PINACOTECA; +---------------------+-----------+---------------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+---------------------+---------+ | | PUEBLA | AV. JUAN DE PALAFOX | 160 | | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200

| | | | |

| | | |

59

| PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+---------------------+---------+ 10 rows in set (0.01 sec)

Obsrvese que se deseaba actualizar la tupla donde nombrept=Pinacoteca BUAP, al campo de clave primaria se le asigno null, al realizar posteriormente el desplegado de informacin correspondiente a la base de datos, se puede observar que no aparece clave primaria alguna que identifique a la tupla que anteriormente era Pinacoteca BUAP y ms aun el manejador asignara a null tal campo. Actualizacin de clave primaria de un componente(Valores repetidos) La actualizacin de clave primaria de un componente, MySQL la realiza de forma correcta impidiendo el ingreso de una nueva tupla identificada por un valor de clave primaria ya existente.
mysql> SELECT NOMBREP FROM PINACOTECA; +---------------------+ | NOMBREP | +---------------------+ | CAPITOLINE PINACOTECA | | LA NOTTE BIANCA | | LA PINACOTECA GALLERY | | LOUVRE MOSEUM | | MUSEO DIOCESANO | | PINACOTECA DI BRERA | | PINACOTECA NACIONAL | | PRADO MOSEUM | | THE PICTURE GALLERY | +---------------------+ 9 rows in set (0.00 sec) mysql> UPDATE PINACOTECA -> SET NOMBREP='THE PICTURE GALLERY' -> WHERE NOMBREP='LA NOTTE BIANCA'; ERROR 1062 (23000): Duplicate entry 'THE PICTURE GALLERY' for key 1

Actualizacin de clave primaria de ms de un componente(No nulos). MySQL permite la asignacin de NULL al campo de clave primaria cuando es una actualizacin y no ingresa ningn valor distinguible o referenciable por el usuario
mysql> UPDATE PINTOR -> SET NOMBREPT=NULL -> WHERE NOMBREPT='PIERO DELLA FRANCESCO'; Query OK, 1 row affected, 1 warning (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> SELECT NOMBREPT FROM PINTOR; +---------------------+ | NOMBREPT | +---------------------+

60

| | | LEONARDO DA VINCI | | MAQUIAVELLO | | MARCO MARZIALE | | MIGUEL ANGELO | | PIERO SANSEPOLCRO | | REMBRANTL VAN RIJN | | SIR JOSHUA REYNOLDS | +---------------------+ 8 rows in set (0.01 sec)

Actualizacin de clave primaria de ms de un componente(Valores repetidos) Al realizar actualizacin de un compone o ms en una clave primaria, MySQL verifica que esta combinacin no se encuentre, si la encuentra no permite la insercin y envia error de duplicidad.
mysql> SELECT NOMBREM,NOMBREPT FROM PATROCINIO; +----------------+---------------------+ | NOMBREM | NOMBREPT | +----------------+---------------------+ | ESTADO ITALIA | LEONARDO DA VINCI | | ESTADO FRANCIA | MAQUIAVELLO | | ESTADO FRANCIA | MARCO MARZIALE | | ESTADO ITALIA | MARCO MARZIALE | | ESTADO FRANCIA | MIGUEL ANGELO | | ESTADO HOLANDA | REMBRANTL VAN RIJN | | ESTADO USA | SIR JOSHUA REYNOLDS | +----------------+---------------------+ 7 rows in set (0.00 sec) mysql> UPDATE PATROCINIO -> SET NOMBREM='ESTADO ITALIA',NOMBREPT='LEONARDO DA VINCI' -> WHERE NOMBREM='ESTADO USA' AND NOMBREPT='SIR JOSHUA REYNOLDS'; ERROR 1062 (23000): Duplicate entry 'ESTADO ITALIA-LEONARDO DA VINCI' for key 1

Soporte de Integridad Referencial. La verificacin de que el valor de cualquier clave ajena haga referencia a una tupla que existe en la relacin referida MySQL, lo verifica indicando que si no existe una tupla referida con la nueva tupla a insertar no permite insertar esa tupla, hasta que se ingrese en la relacin. Como ejemplo podemos dar la relacin cuadro la cual esta vaca, y la relacin Pinacoteca, obsrvese que se desea ingresar una tupla en la relacin cuadro con el atributo nombrep el cual hace referencia a nombrep de Pinacoteca, el valor a insertar es Pinacoteca Monterrey , no lo admite ya que esa tupla no se encuentra en la relacin referenciada.
mysql> SELECT * FROM CUADRO; Empty set (0.00 sec) mysql> SELECT * FROM PINACOTECA;

61

+---------------------+-----------+-----------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+-----------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+-----------------+---------+ 9 rows in set (0.01 sec)

| | | |

mysql> INSERT INTO CUADRO(CODIGOC,NOMBREC,TECNICA,NOMBREP,NOMBREPT) -> VALUES ('SDR57','PROTRAIT OF A MAN','OLEO','PINACOTECA MONTERREY', -> 'MARCO MARZIALE'); ERROR 1216 (23000): Cannot add or update a child row: a foreign key constraint fails

Eliminacin (RESTRICT, CASCADE, NULL) MySQL realiza la Eliminacin de tuplas en forma restringida, cascada y nulos, de forma correcta, obsrvese los ejemplos: Eliminacin Restringida.
mysql> SELECT * FROM CUADRO; +---------+-------------------+---------+------------+---------+--------------+ ----------------+ | CODIGOC | NOMBREC | MEDIDAS | FECHAC | TECNICA | NOMBREP | NOMBREPT | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ | SDR57 | PROTRAIT OF A MAN | 0 | 0000-00-00 | OLEO | LOUVRE MOSEUM | MARCO MARZIALE | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ 1 row in set (0.00 sec) mysql> SELECT NOMBREP FROM PINACOTECA; +---------------------+ | NOMBREP | +---------------------+ | CAPITOLINE PINACOTECA | | LA NOTTE BIANCA | | LA PINACOTECA GALLERY | | LOUVRE MOSEUM | | MUSEO DIOCESANO |

62

| PINACOTECA DI BRERA | | PINACOTECA NACIONAL | | PRADO MOSEUM | | THE PICTURE GALLERY | +---------------------+ 9 rows in set (0.01 sec) mysql> DELETE FROM PINACOTECA -> WHERE NOMBREP='LOUVRE MOSEUM'; ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

Eliminacin con puesta a nulos.


mysql> SELECT NOMBREPT,NOMBRE_MASTER FROM PINTOR; +-----------------------+--------------------+ | NOMBREPT | NOMBRE_MASTER | +-----------------------+--------------------+ | DIEGO RIVERA | NULL | | PIERO DELLA FRANCESCO | NULL | | FRIDA KAHLO | DIEGO RIVERA | | MIGUEL ANGELO | LEONARDO DA VINCI | | REMBRANTL VAN RIJN | LEONARDO DA VINCI | | SIR JOSHUA REYNOLDS | MAQUIAVELLO | | LEONARDO DA VINCI | MARCO MARZIALE | | MAQUIAVELLO | MIGUEL ANGELO | | MARCO MARZIALE | PIERO SANSEPOLCRO | | PIERO SANSEPOLCRO | REMBRANTL VAN RIJN | +-----------------------+--------------------+ 10 rows in set (0.01 sec) mysql> DELETE FROM PINTOR -> WHERE NOMBREPT='DIEGO RIVERA'; Query OK, 1 row affected (0.05 sec) mysql> SELECT NOMBREPT,NOMBRE_MASTER FROM PINTOR; +-----------------------+--------------------+ | NOMBREPT | NOMBRE_MASTER | +-----------------------+--------------------+ | FRIDA KAHLO | NULL | | PIERO DELLA FRANCESCO | NULL | | MIGUEL ANGELO | LEONARDO DA VINCI | | REMBRANTL VAN RIJN | LEONARDO DA VINCI | | SIR JOSHUA REYNOLDS | MAQUIAVELLO | | LEONARDO DA VINCI | MARCO MARZIALE | | MAQUIAVELLO | MIGUEL ANGELO | | MARCO MARZIALE | PIERO SANSEPOLCRO | | PIERO SANSEPOLCRO | REMBRANTL VAN RIJN | +-----------------------+--------------------+ 9 rows in set (0.00 sec)

Actualizacin (RESTRICT, CASCADE, NULL) La actualizacin la realiza tal y como se explic el funcionamiento de los efectos.

63

mysql> SELECT * FROM PINACOTECA; +---------------------+-----------+-----------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+-----------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | LOUVRE MOSEUM | PARIS | AV. MARSELLA 25 | 89 | | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+-----------------+---------+ 9 rows in set (0.02 sec)

| | | |

mysql> SELECT * FROM CUADRO; +---------+-------------------+---------+------------+---------+--------------+ ----------------+ | CODIGOC | NOMBREC | MEDIDAS | FECHAC | TECNICA | NOMBREP | NOMBREPT | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ | SDR57 | PROTRAIT OF A MAN | 0 | 0000-00-00 | OLEO | LOUVRE MOSEUM | MARCO MARZIALE | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ 1 row in set (0.01 sec) mysql> UPDATE PINACOTECA -> SET NOMBREP='PINACOTECA ERCI' -> WHERE NOMBREP='LOUVRE MOSEUM'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM PINACOTECA; +---------------------+-----------+-----------------+---------+ | NOMBREP | CIUDADP | DIRECCIONP | METROSP | +---------------------+-----------+-----------------+---------+ | CAPITOLINE PINACOTECA | ROMA | AV. GLADIADORES | 200 | LA NOTTE BIANCA | NAPOLES | AV. FRANCESCO | 160 | | LA PINACOTECA GALLERY | MADRID | AV ESPAA 30 | 200 | MUSEO DIOCESANO | CARTONA | AV. VIVA | 80 | | PINACOTECA DI BRERA | MILAN | VIA BRERA NO. 2 | 400 | PINACOTECA ERCI | PARIS | AV. MARSELLA 25 | 89 | PINACOTECA NACIONAL | MEXICO | AV. MEXICO | 200 | PRADO MOSEUM | MARCELLA | AV. MARCELLA 3 | 300 | | THE PICTURE GALLERY | BARCELONA | GRAN VIA 644 | 150 | +---------------------+-----------+-----------------+---------+ 9 rows in set (0.00 sec) mysql> SELECT * FROM CUADRO;

| | | | |

64

+---------+-------------------+---------+------------+---------+--------------+ ----------------+ | CODIGOC | NOMBREC | MEDIDAS | FECHAC | TECNICA | NOMBREP | NOMBREPT | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ | SDR57 | PROTRAIT OF A MAN | 0 | 0000-00-00 | OLEO | PINACOTECA ERCI | MARCO MARZIALE | +---------+-------------------+---------+------------+---------+--------------+ ----------------+ 1 row in set (0.00 sec)

RESTRICCION CHECK MySQL, permite la definicin de checks sin embargo no los ejecuta cuando se esta utilizando la Base de Datos
mysql> UPDATE PINTOR -> SET FECHA_N='2004-01-01',FECHA_F='2001-05-12' -> WHERE NOMBREPT='FRIDA KAHLO'; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT NOMBREPT,FECHA_N,FECHA_F FROM PINTOR; +-----------------------+------------+------------+ | NOMBREPT | FECHA_N | FECHA_F | +-----------------------+------------+------------+ | FRIDA KAHLO | 2004-01-01 | 2001-05-12 | | LEONARDO DA VINCI | 1450-11-03 | 1510-12-30 | | MAQUIAVELLO | 1900-06-12 | 1960-06-01 | | MARCO MARZIALE | 1450-01-01 | 1510-01-01 | | MIGUEL ANGELO | 1815-12-02 | 1880-12-20 | | PIERO DELLA FRANCESCO | 1400-01-01 | 1500-03-10 | | PIERO SANSEPOLCRO | 1800-08-09 | 1900-04-08 | | REMBRANTL VAN RIJN | 1603-01-01 | 1685-03-20 | | SIR JOSHUA REYNOLDS | 1705-08-01 | 1800-05-06 | +-----------------------+------------+------------+

La Restriccin ASSERTION, no la permite el manejador incluso desde la definicin, la Restriccin UNIQUE, la soporta perfectamente bien el manejador, para definicin de claves alternativas y se muestra en la descripcin de la relacin como UNI. Vase el siguiente ejemplo:
mysql> ALTER TABLE MECENAS ADD UNIQUE(CIUDADM); Query OK, 6 rows affected (0.21 sec) Records: 6 Duplicates: 0 Warnings: 0

65

mysql> DESCRIBE MECENAS; +------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+-------+ | NOMBREM | char(40) | | PRI | | | | PAISM | char(15) | | | | | | CIUDADM | char(20) | | UNI | | | | FECHA_FALL | date | YES | | NULL | | +------------+----------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> UPDATE MECENAS -> SET CIUDADM='PARIS' -> WHERE NOMBREM='ESTADO HOLANDA'; ERROR 1062 (23000): Duplicate entry 'PARIS' for key 2

Los valores por DEFAULT se muestran igualmente en la descripcin de la relacin, los cuales es posible modificar mediante la sentencia Alter Table, el manejador coloca automticamente este valor al generar una nueva tupla.
mysql> DESCRIBE CUADRO; +----------+----------+------+-----+------------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------+------+-----+------------+-------+ | CODIGOC | char(5) | | PRI | | | | NOMBREC | char(40) | | | | | | MEDIDAS | int(11) | | | 50 | | | FECHAC | date | | | 0000-00-00 | | | TECNICA | char(20) | | | | | | NOMBREP | char(40) | YES | MUL | NULL | | | NOMBREPT | char(40) | YES | MUL | NULL | | +----------+----------+------+-----+------------+-------+ 7 rows in set (0.00 sec)

MySQL, no soporta la definicin de dominios, ni de triggers o disparadores.

66

Captulo 5: CASO DE ESTUDIO SQL SERVER 2000 Microsoft SQL Server 2000 incluye caractersticas eficaces para admitir los entornos y las operaciones internacionales. SQL Server 2000 se ha convertido en una plataforma de aplicaciones y un producto de base de datos convincente. Este captulo proporciona informacin general sobre la forma en la que se pueden utilizar estas caractersticas en un contexto global, su soporte de integridad y una evaluacin de integridad. 3.1 Caractersticas de SQL Server 2000 SQL Server 2000 es el producto principal de Microsoft en cuanto a motores para bases de datos, es considerado tambin el motor preferido en la industria computacional para la plataforma Windows NT/Windows 2000, incluye un 68 por ciento del mercado de bases de datos. SQL Server es un sistema administrador para Bases de Datos relacionales basadas en la arquitectura Cliente / Servidor (RDBMS) que usa Transact-SQL para mandar peticiones entre un cliente y el SQL Server. TRANSACT - SQL: ste es una versin de SQL (Structured Query Languaje) usado como lenguaje de programacin para SQL Server. SQL es un conjunto de comandos que permite especificar la informacin que se desea restaurar o modificar. Con TransactSQL se puede tener acceso a la informacin, realizar bsquedas, actualizar y administrar sistemas de Bases de Datos Relacionales. SQL Server utiliza bases de datos relacionales, por tanto en SQL Server 2000 una base de datos no necesariamente esta enlazada a un solo archivo; es ms un concepto lgico basado en una coleccin de objetos relacionados. Como ya se mencion una base de datos esta compuesta por distintos tipos de objetos, los objetos ms comunes en SQL Server son: Tablas. Son los objetos que contienen los tipos de datos y los datos puros en s. Las columnas. Son las partes de la tabla que guardan los datos. Los tipos de datos. Son el tipo de almacenamiento bsico de sus datos. Procedimientos almacenados. Son algo como macros en donde el cdigo de TSQL puede escribirse y guardarse bajo un nombre. Funciones definidas por el usuario. Son cdigos de T-SQL que son muy similares a los procedimientos almacenados, pero en sus consultas de bases de datos puede llamar a las funciones para modificar una columna de datos que desee ver. Desencadenadores. Son procedimientos almacenados que se activan y sea antes o despus de agregar, modificar o eliminar datos en una base de datos. Vistas. Son bsicamente consultas guardadas en la base de datos. ndices. Pueden ayudar a organizar los datos de forma que las consultas se ejecuten con ms rapidez. 67

Claves primarias. Aunque no son objetos en si, son esenciales para las bases de datos relacionales. Hacen que se cumpla la unicidad de las filas, proporcionando una manera de identificar nicamente a cualquier elemento que se desee almacenar. Claves externas. Son una o ms columnas que hacen referencia a claves primarias o las restricciones nicas de las tablas. Restricciones. Son mecanismos basados en servidor e implementados en el sistema para hacer que se cumpla la integridad de los datos. Reglas. Se asignan a columnas de manera que los datos que se introduzcan se apeguen a los estndares que el usuario establezca.. Las reglas han sido remplazadas por funcionalmente por las restricciones CHECK en SQL Server 2000. Valores predeterminados. Pueden establecerse en campos de manera que si se introducen datos durante la operacin de insercin, se utilicen estos valores predeterminados.

SQL Server es un motor de base de datos de tipo cliente/servidor, por lo que es importante que se entienda que, una aplicacin cliente/servidor es una aplicacin que esta dividida en dos partes: una parte que se ejecuta en un servidor y otra que se ejecuta en estaciones de trabajo o clientes. El lado de servidor de la aplicacin proporciona la seguridad, tolerancia a errores, rendimiento, concurrencia, las copias de respaldo confiables y los servicios que SQL Server proporciona. El lado del cliente proporciona la interfaz de usuario y puede contener informes, consultas y formularios vacos. Algunos DBMS que actan como servidores de bases de datos en arquitectura cliente/servidor son: DB/2 de IBM Oracle Server de Oracle Corporation SQL Base Server de Gupta Technologies Microsoft SQL Server SQL Server de Sybase Inc. Interbase Client/Server de Borland Es importante tambin considerar los requisitos de hardware y software que debe cubrir SQL Server 2000: Los requerimientos de hardware lo mnimo que soportan son procesadores Pentium, se necesitan por lo menos 32 MB en RAM, sin embargo la edicin Enterprise requiere al menos de 64 MB, la cantidad de espacio en el disco duro vara de acuerdo a los componentes que se desee instalar, la instalacin mnima requiere por lo menos de 65 MB de espacio en el disco duro y una instalacin completa 180 MB de espacio en disco duro. Una vez que se cuenta con el hardware, se debe considerar los sistemas operativos que se soportan. SQL Server 2000 puede ejecutarse en un equipo Windows NT en cualquier versin, o en cualquier versin de Windows 2000.

68

En SQL Server 2000 los usuarios pueden ser de dos tipos dependiendo del modelo de seguridad elegido. Usuarios de Windows, creados en el dominio y administrados desde la herramienta usuarios y equipos del dominio, y usuarios propios de SQL Server. Servicios de SQL Server: Los servicios de SQL Server incluyen MSSQLServer, SQLServerAgent, Microsoft Distributed Transaction Coordinator (MSDTC), y Microsft Search (Vase ilustracin 16). Aunque estos servicios de SQL generalmente corren en Windows NT, tambin pueden correr como aplicaciones.

Ilustracin 16

Servicio MSSQLServer: Este servicio es el motor de la Base de Datos. Este es el componente que procesa todas las declaraciones de Transact-SQL y administra todos los archivos que definen a la Base de Datos dentro del Servidor. Servicio SQLServerAgent: Este es un servicio que trabaja conjuntamente con SQL Server para crear y administrar tareas locales o externas; letras y operadores. Servicio Microsoft Distributed Transaction Coordirator: MSDTC permite a los clientes incluir muchos tipos de datos en una transaccin. Coordina la correcta realizacin de las transacciones distribuidas para asegurar que todas las actualizaciones en todos los servidores sean permanentes; o en caso de errores, que las modificaciones sean canceladas.

.. 69

Servicio Microsoft Search: Este servicio es un motor de full-text que corre como un servicio de Windows NT. El soporte Full Text involucra la habilidad de emitir consultas hacia los datos y la creacin y mantenimiento de ndices que facilitan dichos consultas. Algunos componentes de software que se proporciona con el paquete de SQL Server 2000 son: Sql Server Enterprise Manager Snap-In: SQL Server est provisto de un cliente administrativo, que es el SQL Server Enterprise Manager, el cual es una Consola de Administracin de Microsoft (MMC) de tipo Snap-in. MMC es una interfase de usuario compartida para administracin de servidor usada por Back Office. Esta consola compartida, provee un ambiente consistente para administracin de herramientas. Herramientas Y Asistentes Para Administracin De Sql Server: SQL Server provee un nmero de herramientas administrativas y asistentes que atienden aspectos particulares de SQL Server. La siguiente tabla describe las herramientas y asistentes de SQL Server: HERRAMIENTA APLICACIN GRFICA
Configuracin Cliente de SQL Server Monitor de Funcionamiento de SQL Server SQL Server Profiler Analizador de Consultas de SQL Server Utilidad para administrar la configuracin cliente para componentes de comunicacin Archivo usado para integrar SQL Server con El Monitor de Funcionamiento de Windows NT, para informar las estadsticas ms recientes de actividad Utilidad para capturar el record continuo de la actividad del servidor Herramienta grfica de Consultas usada para analizar el plan de un query, visualizar informacin estadstica, y administrar varios consultas en diferentes ventanas al mismo tiempo.

Tabla. Herramientas y Asistentes de SQL Server 3.2 Facilidades para el Soporte de integridad en SQL Server 2000 Para exigir la integridad en SQL Server 2000 se utilizan muchos componentes, dentro de estos componentes se encuentran: integridad de dominio, referencial y de entidad. Estos tipos e integridad se encuentran definidos en el Captulo dos del presente trabajo. Los mtodos tradicionales que SQL Server 2000 utiliza para exigir integridad son: tipos de datos definidos por el usuario, valores predeterminados y las reglas, sin embargo es ms recomendable utilizar las restricciones de integridad ANSI, las cuales se especificaran ms adelante.

70

Tipo de Datos Definidos por el Usuario. Los Tipos de datos definidos por el usuario ayudan a asegurar la integridad de dominio. Generalmente en la creacin de la tabla se define en un atributo con tipo de datos proporcionados por el sistema, junto con la informacin acerca de s permiten el o no de nulos. SQL Server 2000 permite la definicin de tipos de datos definidos por el usuario, existen dos formas de declarar un tipo de datos definidos por el usuario. Valores Predeterminados Esto valores especifican un valor que va a agregarse a una columna cuando se desee insertar directamente un valor a tal columna. Los dos tipos de valores predeterminados en SQL Server 2000 son las restricciones ANSI y los objetos son individuales llamados predeterminados. Reglas Las reglas aseguran aun ms la integridad del dominio, al proporcionar una comprobacin ms refinada de valores validos. Las reglas se utilizan para asegurar que los valores: Coincidan con un patrn. Coincidan con una lista de valores Se encuentren dentro de un intervalo de valores. Integridad Declarativa y Restricciones ANSI La propiedad IDENTITY. Esta propiedad permite utilizar en las relaciones valores generados por el sistema. Es similar al tipo de datos de numeracin automtica de Access. En una tabla solo se permite una sola columna con la propiedad Identity. Por lo general, las columnas de identidad generan claves asignadas por el sistema y hacen valer la integridad de entidad.

Restricciones ANSI. Las restricciones ANSI son funcionalmente muy similares a los objetos tradicionales que se analizaron anteriormente, sin embargo no son objetos separados; son parte de la definicin de las tablas en la base de datos. Se puede exigir la integridad de dominio con restricciones predeterminadas y de comprobacin, as como con valores predeterminados y las reglas, o la integridad referencial con claves principales y externas. Tambin se puede exigir la integridad de entidad con restricciones nicas o claves principales. Restricciones predeterminadas(DEFAULT). Este tipo de restricciones son muy parecidas a los valores predeterminados de SQL Server 2000. sin embargo las restricciones predeterminadas se aplican solo a columnas, no a valores definidos por el usuario. No se puede aplicar restricciones predeterminadas en columnas que tambin sean columnas de identidad.

71

Restricciones de Comprobacin(CHECK). Estas restricciones funcionan de forma muy parecida a las reglas. Proporcionan un mecanismo para exigir la integridad de dominio para las columnas. Se puede tener tantas restricciones de comprobacin como cualquiera en una columna. Las restricciones de comprobacin pueden hacer algo que las reglas . Pueden hacer referencia a otras columnas de la misma tabla como parte de su aplicacin de condiciones. Se puede hacer referencia a las columnas de esa manera solo con restricciones a nivel de tabla. Restricciones de clave principal.(PRIMARY KEY). Estas restricciones combinan a la integridad referencial y la integridad de entidad. Cada columna utilizada para una clave principal debe definirse con el atributo NOT NULL y solo puede existir una restriccin de clave principal en una sola tabla. Las restricciones de clave ajena pueden hacer referencia a esta restriccin. Las restricciones de clave principal son una creacin implcita de un ndice nico. Restricciones nicas(UNIQUE). Estas restricciones permiten crear ndices nicos al igual que claves primarias, pero con ms flexibilidad. El uso de dichas restricciones sirve para dos propsitos: Documenta las elecciones de claves potenciales y permite que las claves externas de otras tablas hagan referencia a las restricciones nicas. Las restricciones nicas pueden crearse tambin en columnas que permitan valores nulos y se pude tener ms de una restriccin nica en una tabla. Restricciones de clave externa(FOREIGN KEY). Estas restricciones protegen la integridad referencial entre tablas.

Todas estas restricciones, se garantizan mediante sentencias SQL Server en una consola de SQL Server , sin embargo hay otra forma de asegurar la precisin de los datos, y es por medio del Administrador Corporativo de SQL Server 2000, el cual se utilizo para realizar las pruebas de integridad definidas en el Captulo 2.

72

3.3 Resultados de la Evaluacin de Integridad en SQL Server 2000. En la siguiente tabla se muestran los resultados en forma sintetizada de los resultados de la evaluacin realizada a Microsoft SQL Server 2000, la cual corresponde al Marco de evaluacin antes definido. REGLA DE INTEGRIDAD DE ENTIDADES Restriccin de Accin CUMPLE/ Observaciones y Especificaciones Integridad Referencial ACEPTA/ VERIFICA/ Se debe especificar el campo de clave primaria en la Definicin de S creacin de la relacin. Llaves primarias Insercin de Nulos S clave primaria Valores S de un Repetidos componente Insercin de Nulos S clave primaria Valores SI de ms de un Repetidos componente Se sugiere no ingresar informacin no identificable Actualizacin Nulos NO por el usuario, cadenas vacas , ni omitir remplazar el de clave atributo de clave primaria por uno nuevo. primaria de un Valores S solo Repetidos componente Actualizacin Nulos S de clave Valores S primaria de ms repetidos de un componente
REGLA DE INTEGRIDAD REFERENCIAL

Restriccin de Accin Integridad Referencial Definicin de Llaves Ajenas Soporte de Integridad Referencial Eliminacin (DELETE)

CUMPLE/ ACEPTA/ VERIFICA/ S S

Observaciones y Especificaciones
Se debe declarar claves ajenas en la declaracin de la relacin. Se debe especificar casilla forzar integridad referencial para insercin y actualizacin. Se debe dejar sin verificar ninguna casilla en la eliminacin, el manejador realizara el efecto restringido automticamente o realizar la creacin de la tabla en modo texto y colocar su efecto restringido como NO ACTION Se debe especificar en Interrelaciones la accin referencial Cascada.

Restricted

SI

Casacades Nullifies

S NO

73

Actualizacin (UPDATE)

Restricted Casacades

S S

Nullifies NO RESTRICCIONES DE RECHAZO Restriccin de Accin CUMPLE/ Integridad Referencial ACEPTA/ VERIFICA/ Restriccin SI CHECK Restriccin NO ASSERTION OTRAS RESTRICCIONES IMPORTANTES Restriccin de Accin CUMPLE/ Integridad Referencial ACEPTA/ VERIFICA/ Restriccin SI UNIQUE Definicin S DEFAULT Restriccin de S Tipo Disparador S

Se debe dejar sin verificar la casilla de actualizacin, o realizar la creacin de la tabla en modo texto y colocar su efecto restringido como NO ACTION Se debe especificar en Interrelaciones la accin referencial Cascada.

Observaciones y Especificaciones
Se debe especificar la expresin a verificar en las propiedades de la relacin correspondiente como un check constraints.

Observaciones y Especificaciones
Se debe especificar en las propiedades de la relacin un atributo como UNIQUE. Se debe especificar el valor por default que se desea en el diseo del atributo. Se debe crear un tipo definido por el usuario dentro de los objetos de la base de Datos creada, con un nombre definido por el usuario, para hacer referencia a ese tipo. Se debe ingresar a propiedades de la Base de datos y seleccionar Triggers. Se sugiere verificar sintaxis para creacin de triggers en la Ayuda SQL Server o en un manual de referencia.

3.4 Anlisis de los Resultados de evaluacin de integridad en SQL Server 2000. Definicin de Llaves Primarias. El manejador de base de Datos SQL Server 2000 permite la definicin de claves primarias, al igual que en Access, con un clic derecho en diseo de la tabla y se elige el campo de clave primaria que se desea, como ya se mencion, las pruebas se realizaron en el Administrador corporativo de SQL Server. (Vase la Ilustracin 17).

74

Ilustracin 17

Insercin de Clave Primaria de un componente (NO NULOS). SQL Server 2000 no permite la insercin de nulos en clave primaria con un componente, esto se justifica al intentar asignar a este campo de clave primaria un nulo como lo muestra la Ilustracin 18:

Ilustracin 18

Insercin de Clave Primaria de un componente (Valores Repetidos). SQL Server 2000 verifica que un valor de clave primaria no se repita en el momento de la insercin, si se desea ingresar un valor de clave primaria que ya existe, el manejador automticamente enva un mensaje de error de entrada duplicada y evita que se inserte tal tupla en la relacin. Vase Ilustracin 19:

75

Ilustracin 19

Insercin de clave primaria de ms de un componente (No nulos) La insercin de claves primarias de ms de un componente con valores nulos SQL Server las verifica enviando automticamente un mensaje de error de que tal campo no admite valores nulos y evita que esa tupla se ingrese a la relacin. (Vase Ilustracin 20)

Ilustracin 20

Insercin de clave primaria de ms de un componente (Valores repetidos) Al igual que en la insercin de la clave de un componente el manejador verifica que no se repitan los valores de clave primaria, sin embargo la diferencia de este es que la clave primaria es la combinacin de estos dos o ms atributos, as que para que sea un campo de clave primaria idntico se tiene que tener que cada atributo tiene que ser igual uno a uno(Vase la Ilustracin 21).

76

Ilustracin 21

Actualizacin de clave primaria de un componente(No nulos) La actualizacin es un caso especial, y sucede el mismo problema que con MySQL el manejador utiliza la actualizacin de una forma diferente a la insercin incluso sus reglas y manipulacin de datos son distintas. Cuando un usuario desea realizar la actualizacin de un campo de clave primaria y deja el campo en blanco, el manejador lo toma como una cadena vaca, sin embargo la palabra reservada <null> la acepta sin contra tiempos. El manejador primero pregunta si se desea cambiar propiedades de tal campo a nulos, si se acepta, se inserta ese valor. Vase Ilustracin 22

Ilustracin 22

Sin embargo cuando se intenta solo eliminar el campo de clave principal y dejarlo sin informacin, el manejador de bases de datos lo acepta y deja el espacio en blanco. (Vase Ilustracin 23)

77

Ilustracin 23

Actualizacin de clave primaria de un componente(Valores repetidos) La actualizacin de clave primaria de un componente, SQL Server la realiza de forma correcta impidiendo el ingreso de una nueva tupla identificada por un valor de clave primaria ya existente, SQL Server enva un mensaje de campo de clave primaria duplicada. Actualizacin de clave primaria de ms de un componente(No nulos) SQL Server 2000 no permite la asignacin de NULL al campo de clave primaria cuando es una actualizacin y no ingresa ningn valor distinguible por el usuario, ya que como se aplica la integridad referencial, si en un campo de clave primaria de esta relacin hace referencia a otra relacin, la tupla que contenga el nulo tiene que existir para que se cumpla la integridad referencial, esta es la razn por la que no admite valores nulos a menos que existan valores nulos en la relacin a la que se hace referencia. En el caso de que se intente realizar esta actualizacin con nulos o incluso sin informacin SQL Server enviara el siguiente mensaje(Ilustracin 24):

Ilustracin 24

78

Actualizacin de clave primaria de ms de un componente(Valores repetidos) Al realizar actualizacin de una clave primaria de ms de un componente de clave primaria, SQL Server verifica que esta combinacin no se encuentre, si la encuentra no permite la insercin y marca error de duplicidad, al igual que en la insercin. Soporte de Integridad Referencial. La verificacin de que el valor de cualquier clave ajena haga referencia a una tupla que existe en la relacin referida, lo verifica al indicar que si no existe una tupla referida con la nueva tupla a insertar no permite insertar esa tupla, hasta que se ingrese en la relacin. Un ejemplo claro de integridad referencial es el mencionado en la actualizacin de clave primaria de ms de un componente, con los valores nulos, es similar ya que si en la relacin principal no se encuentra el elemento o tupla a la cual se hace referencia, este campo no se puede agregar en la relacin que hace referencia. SQL Server enva un mensaje de error de integridad referencial(Ver Ilustracin 25)

Ilustracin 25

Eliminacin (RESTRICT, CASCADE, NULL) SQL Server realiza la eliminacin de tuplas con el efecto restringido y de cascada, la puesta a nulos no la realiza, sin embargo esta programacin se puede hacer por medio de triggers, con lo cual tambin se garantiza integridad de datos.

79

Eliminacin Restringida (Ilustracin 26).

Ilustracin 26

Eliminacin en Cascada. Se puede observar que en este caso existe una tupla en la relacin ESCUELA, con clave primaria Academia Mexicana, la cual se encuentra referenciada por la relacin PINTOR, mediante el atributo EscuelaE.(Ilustracin 27)

Ilustracin 27

Al realizar la eliminacin de esta tupla, la eliminacin se propaga en cascada, eliminando la tupla a la cual se hace referencia. (Ilustracin 28)

80

Ilustracin 28

Actualizacin (RESTRICT, CASCADE, NULL) SQL Server 2000 permite la actualizacin con dos efectos: restringido y en cascada, el restringido no se encuentra explicito en el manejador, pero el efecto que toma por default es el restringido, tambin es posible declararlo al crear la tabla con su equivalente NO ACTION. La puesta a nulos no la permite pero tal como se explico en la eliminacin, es posible realizar la puesta a nulos mediante triggers. Actualizacin en Cascada La definicin se realiza en la creacin de la tabla, en la etiqueta Relationships de la opcin Propiedades de una relacin. (Vase Ilustracin 29)

81

Ilustracin 29

En la practica la actualizacin en cascada se realiza automticamente en el momento de realizar una modificacin en una tupla referenciada. (Vase Ilustracin 30)

Ilustracin 30

82

Actualizacin Restringida(Ilustracin 31).

Ilustracin 31

RESTRICCION CHECK Una restriccin check, se encuentra implcita en la creacin de la relacin, en las propiedades, en la pestaa CHECK Constraints, aadiendo la restriccin check que se desea aplicar sobre esa relacin. (Vase Ilustracin 32).

83

Ilustracin 32

Si se desea realizar una modificacin no valida, es decir en donde la verificacin check sea FALSE, entonces SQL Server enviara un mensaje de Check y evitar que tales campos sean insertados en la base de datos (Vase Ilustracin 33).

Ilustracin 33

La Restriccin ASSERTION, No la permite el manejador, se poda pensar que las reglas realizan la funcin de una asercin sin embargo esto es falso ya que una regla al igual que una restriccin check es solo aplicable para una sola relacin y no a un numero indefinido de componentes.

84

Restriccin UNIQUE Para definicin de claves alternativas se crea un nuevo ndice de una relacin, y se selecciona la casilla UNIQUE. (Vase Ilustraciones 34 y 35)

Ilustracin 34

Ilustracin 35

85

DEFAULT El valor por DEFAUL, se incluye en la creacin de la relacin o tambin se puede aadir en el diseo de la relacin en su campo Default Value. (Vase ilustracin 36)

Ilustracin 36

SQL Server, soporta la definicin de dominios, mediante la creacin de tipos propios de usuario, a los cuales se puede hacer referencia cuando se defina un atributo de cualquier relacin, en los tipos aparecer el nombre del tipo creado por el usuario (Vase Ilustracin 37).

Ilustracin 37

86

DISPARADORES (Triggers) SQL Server permite la creacin de triggers, en la propiedad triggers. Como ejemplo presentamos un trigger que realiza el conteo del numero de tuplas modificadas e insertadas en una relacin, enviando un mensaje del numero de filas modificadas. (Vase ilustracin 38)

Ilustracin 38

Se puede observar en la siguiente ilustracin muestra el mensaje de la tupla insertada, sin embargo esto no se realiz en el Administrador Corporativo ya que se dispara el trigger y realiza el conteo pero no tiene una ventana en donde enviar el mensaje por lo que para este fin se utilizo una herramienta llamada SQL Query Analyzer (Ilustracin 39) incluido en SQL Server 2000.

Ilustracin 39

87

5.5 Evaluacin Global. A continuacin se presenta una tabla global que muestra los resultados en forma de porcentajes de la evaluacin realizada a cada DBMS de acuerdo con el Marco de Evaluacin definido en este trabajo. Manejador Access MySQL SQL Server 2000 Regla de Integridad de Entidades 100 % 77.7 % 88.8 % Regla de Integridad Referencial 75 % 100 % 75 % Otras Restricciones 33.3 % 33.3 % 83.3 %

88

Bibliografa y Referencias Electrnicas.

i ii

http://usuarios.lycos.es/cursosgbd/UD3.htm

C. J. Date, Introduccin a los sistemas de Bases de Datos. Vol. 1. Cap.11 Estructura de Datos Relacional. Addison-Wesley.
iii iv v vi vii viii ix x

Elmasri/Navathe, Sistemas de Bases de Datos, Conceptos Fundamentales. Segunda Edicin. http://www.lcc.uma.es/~galvez/ftp/bdst/Tema4.pdf http://www.info-ab.uclm.es/asignaturas/42529/2002-2003/archivos/1/4_fundamentos.pdf Fundamentos y Modelos de Bases de Datos. Adoracin de Miguel, Mario Piattini. RA-MA editorial 1997. Introduccin a las Sistemas de Bases de Datos. C.J. Date. Prentice Hall Sptima Edicin 2001. Microsoft Inc. GNU...empresa de MySQL

Bernab Loranca B. Procesador de lgebra Relacional Tesis de Licenciatura 1993. Asesor: Ma. Del

Rocio boone Rojas . Facultad Ciencias de la Computacin, BUAP. Introduccin a las Sistemas de Bases de Datos. C.J. Date. Addison-Wesley Quinta Edicin 1995. http://www3.uji.es/~mmarques/f47/apun/node1.html Notas Bases de Datos. Universidad de Castilla. Espaa http://support.microsoft.com/ Microsoft Access Help. http://www.mysql-hispano.org/ http://www.lawebdelprogramador.com/cursos/ http://www.salnet.com.ar/inv_mysql/ Aprendiendo Microsoft SQL Server, Waymire y Sawtell, Pretice Hall,2001. http://www.abcdatos.com/tutoriales/programacion/basesdedatos/sql.html http://www.elmundodelpc.com.ar/mpcweb/ayuda/manuales/manuales.htm

89

Vous aimerez peut-être aussi