Tema 5 Índices: Introducción. Tipos de Índice en Visual FoxPro. ¿Cómo usar los Índices? ¿Cómo identificar los índices de Visual FoxPro? ¿Qué características debe tener un Índice Primario (PK)? ¿Cómo crear un índice primario en Visual FoxPro el cual se determina como tipo Principal? Objetivos: Entender y aprender el concepto de Índice en Visual FoxPro así como crear los índices necesarios para la aplicación que se está desarrollando. Para cumplir dicho objetivo el catedrático dará una explicación de cómo se crean los índices y cual es el objetivo del mismo y pedir al alumno ahondar en dicha explicación mediante investigación, además se deberá acudir a los equipos de computo para crear los índices para el proyecto que estamos desarrollando, en nuestro caso es sobre el sistema escolar de la Facultad. 35 Visual FoxPro Índices Índices. Introducción: Después de crear las Tablas de trabajo del sistema se debe crear sus Índices de trabajo para cada tabla, el índice también es conocido como la llave de la tabla. Los índices de Visual FoxPro son como índices de libros, lista de números que indica páginas específicas de un libro al lector, un índice de una tabla es una lista de números de registro que indican los datos específicos para procesar y además determinan el orden de procesamiento de datos. El archivo de índice es independiente del archivo de la tabla y no cambia el orden físico de los registros de la tabla, si no que se hace lógicamente. Puede usar índices para aumentar la velocidad a la que se ordenan o buscan los registros ya sea para mostrarlos o imprimirlos. Los índices también son importantes para crear relaciones entre tablas de una base de datos. Tipos de Índice en Visual FoxPro, maneja 4 tipos: • Principal : Los índices principales aseguran que sólo se introducen valores únicos en un campo y determinan el orden en el que se procesan los registros. Puede crear solo un índice principal para cada tabla si la tabla pertenece a una base de datos esta opción no está disponibles para tablas libres. Si la tabla ya tiene un índice principal y necesita crear un índice en el cual el campo solo debe aceptar información única usted no puede agregar otro índice principal por lo cual debe agregue un índice candidato ó los que necesite. Para crear un índice principal o candidato Usando el Diseñador de Tablas. Utilizando Comando. Elija la ficha Índices y cree un índice, ALTER TABLE. seleccionando como tipo Principal. ALTER TABLE alumnos ADD PRIMARY KEY mat_alum TAG mat_alum Nota: • Solo puede haber un índice Principal por tabla, también se le conoce como Llave Primaria (PK). Candidato : Los índices candidatos también imponen valores únicos y determinan en qué orden se procesan los registros, como un índice primario. Puede tener varios índices candidatos por tabla en bases de datos y en tablas libres. Usando el Diseñador de Tablas. Utilizando Comando. Elija la ficha Índices y cree un índice, ALTER TABLE seleccionando como tipo Candidato. ALTER TABLE alumnos ADD UNIQUE mat_alum TAG mat_alum Nota: Puede haber mas de un índice tipo candidato en una tabla. Ing. Ismael Rodríguez Elizalde Página No. 36 Visual FoxPro Índices • Normal : Los índices normales determinan el orden en que se procesan los registros pero permite que se introduzcan valores duplicados en un campo. Puede agregar más de un índice normal a una tabla. Usando el Diseñador de Tablas. Utilizando Comando. Elija la ficha Índices y cree un índice, INDEX seleccionando como tipo Normal. Ejemplo: Use alumnos INDEX ON carr_alum TAG carr_alum. Nota: • Los índices normales se utilizan para ordenar y buscar registros, pero no se exige que los datos de dichos registros sean únicos. También puede usar un índice normal como lado “varios” de una relación persistente de uno a varios. Único : Por compatibilidad con versiones anteriores, también puede crear un índice único que selecciona y ordena un subconjunto de registros según la primera aparición de un valor en el campo que especifique. Si quiere seleccionar registros de esta manera, es posible que quiera crear una consulta o una vista en lugar de ello. ¿Cómo usar los Índices? Puede mejorar el rendimiento creando y usando índices para tareas periódicas como ordenar registros o soportar relaciones entre tablas. Puede llevar a cabo varias tareas en función del tipo de índice que cree. Si desea Ordenar los registros para aumentar la velocidad a la que se presentan, se consulta o se imprimen Controlar la entrada de valores duplicados en un campo y ordenar los registros. Use Un índice principal. normal, candidato o Un índice principal o candidato para una tabla de base de datos o un índice candidato para una tabla libre. ¿Cómo identificar los índices de Visual FoxPro? CDX Estructural. Tipo de índice .CDX estructural Es de uso más frecuente. Descripción Número de claves Utiliza el mismo Expresiones de nombre base que el múltiples claves, archivo de tabla; se llamadas etiquetas. abre Expresiones ante con la tabla Ejemplo: USE carrera INDEX ON cla_carr TAG cla_carr INDEX ON nom_carr TAG nom_carr Ing. Ismael Rodríguez Elizalde Límites Límite de 240 caracteres en las expresiones evaluadas. Página No. 37 Visual FoxPro Índices CDX No Estructural. Tipo de índice .CDX no estructural. Se utilizan como etiquetas de clave múltiple de uso menos frecuente. Ejemplo: Descripción Debe abrirse explícitamente; utiliza un nombre distinto del nombre base de la tabla Número de claves Expresiones de múltiples claves, llamadas etiquetas Límites Límite de 240 caracteres en las expresiones evaluadas USE carrera INDEX ON cla_carr TO TAG cla_carr OF carrera2 INDEX ON nom_carr TO TAG nom_carr OF carrera2 IDX Autónomo. Tipo de índice .IDX autónomo. Se usan como índices de clave única de uso poco frecuente o temporal, y se admiten principalmente por la compatibilidad con las versiones anteriores. Descripción Debe abrirse explícitamente; el nombre del archivo.IDX es definido por el usuario Número de claves Expresión de una sola clave Límites Límite de 100 caracteres en las expresiones evaluadas Ejemplo: USE carrera INDEX ON cla_carr TO cla_carr OF cla_carr INDEX ON nom_carr TO nom_carr OF nom_carr Regresando a nuestro ejemplo de Escolar, ya se ha creado las tablas de Alumnos y de Carreras y se tiene que determinar los índices para cada tabla: Primero hay que determinar las llaves primarias (PK) de cada tabla ya que al determinar esta establece una integridad de la tabla. ¿Qué características debe tener un Indice Primario (PK)? En el diseño de una tabla se debe seleccionar un campo el cual debe ser la llave primaria de dicha tabla, la principal características que debe tener este campo para fungir como llave primaria son: • El dato que debe aceptar debe ser UNICO, no se acepta repetición de la información. • Este dato debe servir de referencia rápida y concreta. En nuestro ejemplo: La tabla de Indice Primario (PK). Alumnos. mat_alum En esta tabla se debe determinar cual es el campo llave princiapal y como se ve la matricula del alumno cumple con el princiapl objetivo que cada alumno solo tiene una matricula de identificación y es de fácil acezo. Carreras. cla_carr En esta tabla la llave primaria debe ser la clave de la carrera ya que no debe existir más de un identificador por carrera y es de fácil acceso. Ing. Ismael Rodríguez Elizalde Página No. 38 Visual FoxPro Índices Después de determinar la llave primaria se tiene que determinar las demás llaves que sirven de relación de datos con otra tabla, a este tipo de llave se le denomina llave foránea (FK) o de enlace. En nuestro ejemplo de la facultad, utilizando las tablas que se han creados, y la principal pregunta es ¿Cuál es la relación entre la tabla de carrera y matricula?, en la tabla de carrera se encuentra el identificador de la carrera que se imparte en la institución y en la tabla de matricula hay un campo que se establece cual carrera pertenece, entonces se determina que la relación de las tablas es la carrera del alumno. Para ponerlo más claro se muestra la siguiente gráfica representativa. Como se muestra se ve claramente cuales son las llaves primarias (PK) y las foráneas (FK) para cada tabla la relación entre las dos tablas, como se ve se dice que esta relación es de “Uno A Muchas” ya que en la tabla de Carrera solo puede existir UN identificador para la carrera y en la tabla de Alumnos pueden haber MUCHOS alumnos en una carrera por eso se le da este titulo “Relación de datos Uno a Muchas”. Hay que hacer notar que Visual FoxPro maneja dos tipos de relaciones de datos una que se realiza en la Base de Datos y queda fija está relación para todo el desarrollo de la aplicación a este tipo de relación se le llama relación de datos Persistente y el otro tipo de relación que solo dura cuando se le indica por programación o por vistas a este tipo de relación se le conoce como relación de datos No Persistente. En Visual FoxPro cuando se hace una la relación de datos persistentes se realiza a través de los índices y no entre los campos el cual se utiliza en una relación No Persistente. En nuestro ejemplo crearemos una relación de datos Persistente ya que en el podemos poner reglas o validación a nivel Base de Datos para su funcionamiento como por ejemplo que pasa si por equivocación se quiere eliminar una carrera si no se tiene reglas de validación esta se eliminaría y muchos alumnos quedarían sin carrera, pero a nivel de Base datos podemos poner una regla que diga si quiere eliminar una carrera y en esta existen alumnos inscritos esta no podrá eliminarse, esto tomando un ejemplo mas adelante veremos la validación en detalle. En nuestro ejemplo crearemos los índices para las tablas. En la tabla de Alumnos se deben de crear dos índices: 1. La matrícula debe ser la llave primaria (PK). 2. Y la carrera como llave foránea (FK). Ing. Ismael Rodríguez Elizalde Página No. 39 Visual FoxPro Índices En la tabla de Carrera se deben de crear un índice: 1. La carrera como llave primaria (PK). Nota: Si por ejemplo se tiene otro campo numérico y solo se desea que este en orden cronológico en forma ascendente para usarse en un reporte no hay problema su uso en forma normal pero no lo utilice como llave primaria o llave única. A continuación se hace una explicación de: ¿Cómo crear un índice primario en Visual FoxPro el cual se determina como tipo Principal? Si no esta en el proyecto Escolar, abra dicho proyecto. Ya realizado esto de clic en la Base de datos Facultad y de clic en Modificar para estar en él Diseñador de la base de datos como se encuentra a continuación: Pasos para crear un índice primario en la tabla de Carrera. Pasos: 1. Estando en el Diseñador de la base de datos – Facultad, seleccione la tabla de carrera dando clic con el ratón. Si nota en el nombre de la tabla estaba de color gris ahora al dar clic se nota que el color ha cambiado a azul, esto significa que esta seleccionando la tabla de carrera. Ing. Ismael Rodríguez Elizalde Página No. 40 Visual FoxPro Índices Continuación Pasos: 2. De clic con el botón derecho del ratón sobre la tabla de carrera. Al dar clic con el botón derecho aparece la pantalla de menú emergente de tabla. 2. Estando en el menú emergente de la tabla de clic sobre el título de Modificar… Aparece el Diseñador de tablas – carrera.dbf 3. En el diseñador de tabla – carrera.dbf, de clic sobre el nombre del campo que se va a indexar, en nuestro ejemplo de clic en cla_carr. Debe quedar como sigue: 4. En ese campo de clic en el botón del Índice. El cual muestra las siguientes opciones: Seleccione donde dice Ascendente. El cual debe quedar : Nota: Hasta aquí ya se creo un índice, pero por defecto es Normal, así cuando desee crear un índice Normal siguiendo los pasos anteriores usted lo puede hacer pero nosotros queremos que sea Principal, entonces seguiremos con el ejemplo: Ing. Ismael Rodríguez Elizalde Página No. 41 Visual FoxPro Índices Continuación Pasos: 5. De clic en la lengüeta donde dice Indices: El cual aparece la siguinete pantalla. Como se muetra donde dice Tipo aparece como normal, aquí es donde se debe de cambiar a Princial. 6. De clic en el botón que pertenece a tipo. Y aparce la siguinte pantalla mostranodo los tipos de indices que acepta Visual FoxPro. De clic en Principal, ya que este campo es la llave primaria (PK) de está tabla. El cual debe quedar de la siguiente manera: 7. Ya haciendo una verificación de que este todo bien y como se ve si está de clic al botón de aceptar. El cual hace la siguiente pregunta: 8. En nuestro caso de clic a Sí. Ing. Ismael Rodríguez Elizalde Página No. 42 Visual FoxPro Índices Continuación Pasos: Al finalizar en la tabla de carrera debe quedar de la siguiente manera: Como se observa se crea un libro de Índices y agrega el que creamos y como es llave primaria aparece una llave representativa. Nota: En caso de que diga No, todo lo que se realizó se cancela y los cambios realizados no se efectuan. Si aparece un error indicando que se ha violado la regla de unicidad del campo, es que se intodujeron datos repetidos a la tabla lo que tiene que hacer es aceptar el error entrar a la tabla y borrar primero lógicamente el valor de campo repetido y después hacerlo físicamente y al terminar volver hacer el procedimiento de crear el índice principal. Ing. Ismael Rodríguez Elizalde Página No. 43 Visual FoxPro Índices Ejercicio para el estudiante. 9 Crear los siguientes índices. 1. Tabla: Campo a indexar: Tipo de índice: 2. Tabla: Campo a indexar: Tipo de índice: Alumnos. mat_alum. Principal. Alumnos. car_alum. Normal. Al terminar el ejercicio debe de quedar de la siguiente manera la tabla de Alumnos. Ing. Ismael Rodríguez Elizalde Página No. 44