You are on page 1of 11

Visual FoxPro.

Integridad Referencial: Indices y los Desencadenantes o Triggers.

En est parte nos dedicaremos a crear o generar los mecanismos necesarios, que permitan u ofrezcan seguridad en los datos e informacin que son almacenados en las tablas y/o bases de datos. Esta seguridad y confiabilidad de los datos se conoce como Integridad Referencial, la cual controla la forma como se Actualizan, se Eliminan y se Insertan datos en la Base de Datos. En pocas palabras la Integridad Referencial se utiliza o tiene como principal objetivo Evitar la duplicidad o Redundancia de Datos en la estructura; dentro de un sistema no pueden haber dos personas o dos objetos con la misma referencia, es decir, no pueden existir dos o ms libros con el mismo ISBN o cota, no pueden existir vehculos con el mismo Serial de Carrocera o Motor y no pueden existir varias personas con el mismo nmero de identidad. Esto es lo que se busca evitar con la Integridad Referencia de una Base de datos. Integridad Referncial! Y cmo logro eso?. Una Integridad Referencial abarca reglas a nivel de campos y de registros, empecemos entonces a crear las reglas que incluyen a los campos. Vamos a crear los Indices dentro de las tablas (recuerda que en nuestra Base de Datos deben existir actualmente dos tablas: REO e INGRESO).

Ahora menos entiendo, Un Indice?. Para crear los ndices en una tabla, debemos seguir los pasos para Modificar una tabla, una vez que aparece el Diseador o Generador de Tablas, seleccionamos la pestaa ndices, que muestra el siguiente cuadro:

ndice:Contiene una cuadrcula desplazable para la definicin de ndices. La cuadrcula tiene cuatro columnas. Indice: Una serie de punteros ordenados lgicamente por los valores de una clave. Los ndices ofrecen acceso rpido a datos y pueden exigir la unicidad en las filas de una tabla. Los ndices de Visual FoxPro se mantienen en un archivo de ndice. Vea tambin ndice candidato, clave principal. Opciones de la ficha

Orden: Forma en la cual se ordenarn los datos en el ndice, y que puede ser Ascendente o Descendente. Basta con un Click sobre la Flecha, para que esta cambie de orientacin Nombre: Especifica el nombre de etiqueta para el ndice. Es el nombre fsico con el cual se guardar el ndice creado. Las Bases de Datos tienen extensin DBC, las Tablas DBF y los ndices IDX. Botn para mover: Este es un botn con una flecha de doble punta que se encuentra en el extremo izquierdo de la fila. Una vez que ha introducido dos o ms filas, utilice el botn para mover una fila hacia arriba o hacia abajo en la lista. Tipo: Especifica el tipo de ndice. Primario (slo si la tabla est contenida en una base de datos), Candidato, nico o Regular o Normal (el predeterminado). Cuando hace clic

en una celda de esta columna, aparece una lista desde la cual puede seleccionar un tipo. No se requiere una entrada en este campo.

Expresin: Especfica la expresin de ndice, como un nombre de campo o combinaciones entre varios campos. Haga clic en el botn para crear o editar una expresin en el Generador de expresiones. Una expresin puede tener hasta 240 caracteres. Filtro: Especfica la expresin de filtro.Un filtro se utiliza para crear un ndice que contenga datos "Filtrados" a conveniencia del usuario, es decir puede crear un ndice por ciudad, pero filtrando que ese ndice solo contenga las ciudades cuya poblacin sea mayor de 1 milln de habitantes. Haga clic en el botn para crear o editar una expresin en el cuadro de dilogo del Generador de expresiones. Botn "Insertar":Inserta un nuevo ndice sobre el ndice seleccionado en la cuadrcula. Botn "Eliminar": Elimina el ndice seleccionado de la cuadrcula. Para crear un ndice debemos seguir los siguientes pasos: 1. Nombre: Debemos asignarle un nombre al ndice que estamos creando, aqu pueden privar muchos criterios, pero una recomendacin personal, es que se le asigne el mismo nombre que asocie el ndice con la tabla a la cual pertenece. Tambin es vlido colocarle como nombre el mismo del campo que lo genera. Una vez que se establece el nombre se activan todas las dems opciones del cuadro. El nombre acepta una longitud de hasta diez (10) Caracteres como mximo. Por los momentos vamos asignarle el mismo nombre del campo.

2. Tipo: Se refiere al tipo (Principal, Candidato, nico o Regular) de ndice que vamos a crear. Como seleccionar o asignar un tipo a cada ndice, muy fcil: Un ndice Principal (Clave Primaria o Campo Clave) se utiliza para evitar la duplicidad en los datos, es decir; que no existan en este caso dos reos con el mismo cdigo, al establecer el campo codigo_reo como principal nunca se aceptarn datos repetidos y los datos se procesan en el mismo orden de ingreso. Slo puede existir un ndice Principal dentro de una Tabla. Un ndice Normal o Regular es un tipo de ndice usado bsicamente para ordenar en forma ascendente o descendente los datos de una tabla, pero no evitan la duplicidad de los datos, entonces pueden existir mltiples ndice de este tipo dentro de una misma tabla; entonces puede crear un ndice que ordene por nombre, cdula, nacionalidad, fecha de nacimiento, y hasta por cdigo del reo. El tipo nico se

mantiene en Visual FoxPro por compatibilidad con versiones anteriores, este tipo crea un ndice que contiene una lista de los datos, sin tomar en cuanta el nmero de apariciones que estos tengan dentro de la tabla, sern reflejados una sola vez dentro del ndice, es decir, toma en cuenta nicamente la primera aparicin de un dato y omite las apariciones sucesivas, una utilidad de este tipo de ndice dentro de la tabla Reo.DBF, sera por ejemplo crear una lista de todos los lugares de nacimientos de los presos, como es lgico, gran cantidad de reos proceden de la misma ciudad, es decir, se repiten varias veces exactamente el sitio de nacimiento, si se genera un ndice nico con el campo lugar_nac, se creara una lista con todos los lugares de nacimientos de los presos, sin repetir varias veces un mismo sitio. El tipo que nos queda, el Candidato, es un "Casi Principal" y funciona de la misma manera que el tipo Principal, ya que es un potencial Candidato a ser Principal. Todos los tipos exceptuando el Principal, pueden aparecer ms de una vez dentro de una misma tabla.

3. Expresin: El campo o grupo de campos que sern utilizados para generar el ndice. Si no recordamos exactamente que nombre le colocamos al campo, podemos utilizar el Generador de Expresiones, el cual activamos con un Click sobre el recuadro gris con tres puntos, situado junto al rectngulo blanco de la Expresin:

Si decidimos utilizar el Generador de Expresiones , est aparece en pantalla, con un "Doble Click" sobre el campo correspondiente este pasa al recuadro de Expresin o si deseas puedes teclear la expresin (nombre del campo) que utilizars para generar el ndice. El generador de indica adems las diferentes funciones que puedes emplear si vas a trabajar con la combinacin de varios campos.

Podemos usar un slo campo. codigo_reo o la combinacin de varios de ellos: codigo_reo+nombre_reo (utilizando para ello el manejo y/o manipulacin de campos).

ya tenemos nuestro primer ndice dentro de la tabla Reo:DBF, crea ahora los siguientes ndices: Nombre del ndice: Tipo: Cedula_reo Nombre_reo Nacional Fec_nac Lugar_nac Instr_Prof Codig2_reo Candidato nico nico Principal Expresin: Cedula_reo Nacionalidad Lugar_nac Codigo_reo

Regular - Normal Nombre_reo Regular - Normal Fec_nac Regular - Normal Instruccion + Profesion

Repite el mismo procedimiento para la tabla Ingreso.DBF y crea los siguientes ndices: Nombre del ndice: Tipo: Codigo_reo Nro_boleta Nro_orden Fe_ingreso Expresin:

Regular - Normal Codigo_reo Regular - Normal Nro_boleta_enc nico Nro_orden Regular - Normal Fecha_ingreso

Tribunal Tri_nros Nro_oficio

nico

Tribunal

Regular - Normal tribuanl+Nro_orden_enc+nro_orden+Nro_oficio Regular - Normal Nro_oficio

No pudiste crear el ndice Codig2_reo como Principal, Verdad?, recuerda que dentro de una tabla slo puede existir un ndice principal y como ya existe un ndice Principal dentro de la tabla Reo.DBF, el ndice Reo8 no puede ser Principal, cmbialo por Regular - Normal.

En el Diseador de Bases de datos verifica si se crearon todos los ndices, para ello, en cada una de las tablas te mueves al final de la misma, ah deben aparecer todos los ndice creados anteriormente:

Nuestra Base de Datos cuenta ahora con dos tablas, que poseen informacin relacionada (en ambas aparece el campo codigo_reo, que deben ser del mismo tipo y las misma longitud). Vamos entonces a establecer un Relacin Persistente entre ambas tablas. Si quieres probar como funcionan ts ndices, adiciona nuevos registros a tus tablas (USE, APPEND) y luego activa los diferntes ndices de la siguiente manera:

Debe mostrar los registros en el mismo orden en que fueron ingresados:

Ahora prueba con los siguientes comandos, el SET ORDER TO (Numero) activa segn el nmero uno de los ndices creados, Set Order To 1, activar entonces el primer ndice creado y as sucesivamente:

Recuerdas cual fue el primer ndice creado en la tabla Reo.DBF:

Con el SET ORDER TO 2, muestra:

Existe alguna diferencia entre estos datos y los que se muestran en la ventana anterior, la respuesta es Si, fijate como aparecen los datos, ordenados por Cdula, prueba entonces con los dems nmeros. Informacin Relacionada, Relacin Persistente: Cmo?

Una de las ventajas con la que cuenta el usuario con Visual FoxPro, es la manipulacin de los datos que este permite, es tarea principal del Analista Programador crear una slida estructura de los datos, para de esta forma aprovechar al mximo todas las ventajas y posibilidades que Visual FoxPro pone a su alcance. Cuando se habla de tablas relacionadas, se dice que son tablas que contienen informacin similar, contenida en una tabla primaria (donde existe el ndice principal) asociada a una tabla secundaria que contiene, est relacin viene dada por el proceso de normalizar nuestros datos evitando de esta manera la redundancia o duplicidad de los datos dentro de la Base de Datos.

Relacin: Un vnculo entre tablas que permite acceder a los datos desde ms sitios que la tabla seleccionada actualmente. El vnculo es la condicin de combinacin. Para crear relaciones necesitar ndices en las tablas que desee relacionar. Relacin Persistente: Relaciones entre tablas que duran ms que simplemente el tiempo de ejecucin. Las tablas deben estar en una base de datos para poder tener una relacin persistente. El segmento de lnea que une (relaciona) a dos tablas entre si, es lo que se conoce como Relacin Persistente Para preparar la creacin de una relacin, busque un campo comn en las dos tablas y agregue ndices. Por ejemplo, la tabla Reo.DBF y la tabla Ingreso.DBF tienen un campo codigo_reo. Para establecer una relacin entre ellas, la tabla Reo necesita un ndice principal en el campo codigo_reo y la tabla Ingreso necesita un ndice normal en su campo codigo_reo (tarea que ya completamos anteriormente). Qu me falta entonces? La tarea ms sencilla, en el Generador de Bases de Datos, seleccionamos el ndice Principal o Primario de la Tabla Primaria, dejando el botn Izquierdo del Mouse pisado, arrastramos el cursor hasta el ndice de la Tabla Secundarias, una vez que se encuentra sobre la seccin de los ndices de la tabla secundaria, el cursor cambia de forma, convirtindose en un diminuto rectngulo, lo posicionamos sobre el ndice similar y soltamos el botn del Mouse. Inmediatamente aparece una lnea (que yo llamo "Patas de Gallina") que establece la Relacin Permanente entre ambas tablas.

La lnea que une ahora a las dos tablas representa la Relacin Persistente o Permanente entre ambas, si queremos editar la relacin debemos: 1. Seleccionar la relacin que queremos editar, basta con un simple Click sobre la lnea. Est accin cambiar inmediatamente la forma de la lnea,. que tomar un color ms fuerte y un poco ms ancha.

2. A travs del Men de Bases de Datos del Men Principal del Visual FoxPro, pulsamos la opcin Editar Relacin.

o haciendo uso del Botn Derecho del Mouse sobre la misma lena, aparece un Men emergente que entre otras opciones muestra la de Editar Relacin.

Una vez completado los dos pasos anteriores, aparece en pantalla el Cuadro de Dilogo Editar Relacin:

Donde puede observarse claramente, el nombre de las dos tablas relacionadas, el campo que hace posible dicha relacin. el tipo de relacin y un Botn sumamente importante como lo es el de la Integridad Referencial al cual nos dedicaremos en lo sucesivo. Hasta los momentos hemos manipulado los Campos y los ndices de las Tablas, nos falta entonces la Propiedades de la Tablas para completar nuestro trabajo: lograr la Integridad Referencial. Tabla: Fija la regla a nivel de fila, el texto de error de validacin, y un comentario para la tabla. Este cuadro de dilogo aparece cuando se elige Propiedades de tabla en el Generador de tablas. Es necesario que haya una base de datos abierta para que aparezca el botn "Propiedades de tabla" en el Generador de tablas. Las tablas libres no pueden tener asociados comentarios, reglas o desencadenantes.

Opciones de la ficha

El botn situado a la derecha de cada configuracin muestra el Generador de expresiones. Opciones del cuadro de dilogo Regla de validacin: Especifica una regla a nivel de fila para hacer que se cumpla la validacin de datos.regla a nivel de registro Una regla de validacin, vinculada a un campo, que se activa cuando se inserta o modifica el registro, y que suele utilizarse para verificar la entrada de datos y su exactitud. Las reglas de validacin no se aplican cuando se eliminan registros. Las reglas de validacin a nivel de registro se activan despus de las reglas a nivel de campo y antes que los desencadenantes, y funcionan durante las actualizaciones almacenadas en bfer. registro. Registro: Una unidad de almacenamiento en una tabla. Todas las tablas pueden contener un gran nmero de registros, cada uno de los cuales consta de campos. Mensaje o Texto de validacin: Especifica el mensaje de error que debe ser mostrado si una entrada no se ajusta a la regla de validacin a nivel de fila. Desencadenates o Trigger: Cdigo de evento a nivel de registro que se ejecuta despus de una insercin, una actualizacin o una eliminacin. Es posible adjuntar distintas acciones a los distintos eventos. Los desencadenantes se ejecutan en ltimo lugar, despus de las reglas, y no se ejecutan durante las actualizaciones almacenadas en bfer. Suelen utilizarse para integridad entre tablas. A travs de los desencadenantes se logra que rigen la coherencia de datos, Referencial (RI): Las reglas Integridad especficamente las relaciones entre las claves principal y externa de tablas distintas. Visual FoxPro resuelve la integridad referencial mediante reglas a nivel de campo y a nivel de registro definidas por el usuario. El Generador de integridad referencial le ayuda a definir reglas para controlar cmo ser insertan, actualizan o eliminan registros de tablas relacionadas. INSERTAR: Especifica una regla que debe desencadenarse siempre que se inserta o se agrega un registro a la tabla. ACTUALIZAR: Especifica una regla que debe desencadenarse siempre que se

actualiza un registro de la tabla. ELIMINAR: Especifica una regla que debe desencadenarse siempre que se elimina un registro de la tabla. Los tres procesos anteriores de Insercin, Eliminacin y Modificacin (con algunas excepciones) de Tablas, pueden ser en: Cascada: Actualiza todos los registros relacionados de la(s) tabla(s) secundaria(s) con el nuevo valor. No se aplica al proceso de insercin Restringir: Prohibe la actualizacin si hay registros relacionados en la(s) tabla(s) secundaria(s) Ignorar: Permite la actualizacin y deja los registros relacionados slo en la(s) tabla(s) secundaria(s). Por defecto siempre toma la regla de Ignorar.

El proceso de Actualizacin puede ser establecido en Cascada, para que de esta forma, un cambio en la Clave o Etiqueta Primaria se produzca en todas las tablas asociadas o relacionadas con esta. El proceso de Eliminacin debe ser establecido en Restringir y de esta manera no permitir eliminar registros de una tabla que tengan relacin con otros registros en tablas secundarias, un ejemplo de esto sera, no permitir eliminar un Departamento si existen trabajadores asignados a dicho departamento, o eliminar un registro de un alumnos si este est moroso con la biblioteca. El ltimo desencadenante o el proceso de Insercin debe es recomendable que este en Ignorar.

You might also like