Índice
Índice
Se trata de una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla.
Un índice puede estar compuesto por uno o varios campos, por fórmulas o por una combinación de ellos. A cada uno de estos componentes del índice se le llama parte.

Las propiedades de un índice son:
- Identificador: Etiqueta alfanumérica que identifica de forma unívoca un índice dentro de una tabla. Este identificador será el que usemos en fórmulas y para referenciarlo en otras propiedades.
El identificador constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un campo de una tabla no puede haber duplicidad.
Para evitar pérdidas de información como resultado de cambiar el identificador de un índice se guarda el identificador antiguo del mismo. De esta forma, al ejecutar la aplicación de nuevo, se reconstruirá la tabla sin perder ningún dato.
Los identificadores ID y NAME son palabras reservadas. El identificador ID referencia el índice que es clave primaria de la tabla e identifica unívocamente cada registro. No debemos alterar este identificador si no queremos perder la funcionalidad implícita, aunque si podemos modificar sus descriptores, la propiedad Nombre.
- Nombre: Etiqueta alfanumérica que servirá como descriptor del índice.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
- Estilos: Podemos definir el estilo Privado limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
- Comentarios: Esta propiedad nos permite documentar el uso del índice.
- Tipo de índice: Esta propiedad nos permite definir de qué forma van a ser indexados los datos. Los tipos existentes son:
- Clave única: No admite más que un registro con la misma clave.
- Palabras: El registro es indexado por cada palabra encontrada en las partes que forman la clave.
- Múltiples claves: El registro es indexado desde cero claves hasta el número que el programador declare en la propiedad Número de claves.El índice deberá estar compuesto por tantos componentes como número de claves hayan sido declaradas. Si el campo o la fórmula de una clave está vacío, esa clave no será indexada.
- Acepta repetidas: La ficha es indexada sólo una vez pero, al contrario que la clave única, se admiten repeticiones. El sistema le añade 4 bytes a la clave para diferenciar las repetidas.
- Trozos de palabras: El registro es indexado por cada grupo de 3 ó más caracteres de cada una de las partes que forman la clave.
Los índices de palabras y de trozos de palabras hacen una conversión interna a Alfa40, si no hay correspondencia de un carácter entra la tabla de caracteres de origen y la de Alfa40, no lo indexará. Además, solamente existe la tabla Alfa40 para el alfabeto latino. Esto quiere decir que por este tipo de índices se indexarán caracteres latinos, pero no de otros alfabetos.
- Condición para indexar: Esta propiedad permite establecer una condición para indexar el registro. Si la condición no se cumple, el registro no será indexado por ese índice. Si pulsamos el botón
se abrirá el asistente para edición de fórmulas. En esta fórmula solamente se permite usar campos de la tabla actual, no se permite usar campos de tablas enlazadas ni tampoco llamar a funciones, dado que ambas cosas mermarían el rendimiento. - Lista negra: Esta propiedad aparecerá en el caso de que el índice sea de tipo Palabras. Permite establecer una lista de las palabras que no serán indexadas por ese índice. Para escribir la lista pulsar el botón
que aparece al editar el valor. - Número de claves: Esta propiedad aparecerá en el caso de que el índice sea de tipo Múltiples claves. En ella se indicarán el número de claves que conforman el índice.
- Número de partes: Indica el número de campos o fórmulas (partes) que componen la clave.
- Longitud de la clave: Indica la longitud total, en bytes, del índice.
Partes índice
Un índice estará compuesto por una o más partes. Para crear una parte de un índice pulsar el botón
de la barra de herramientas o abrir el menú , submenú , opción Parte índice. Sus propiedades son:
- Identificador: Etiqueta alfanumérica que identifica al componente índice. Este identificador será el que usemos para referenciarlo en otras propiedades.
- Nombre: Etiqueta alfanumérica que servirá como descriptor del componente.
- Estilos: Podemos definir los estilos Privado que limita el acceso del usuario final a cierta información sobre esa parte del índice, y Heredable, que permite que esa parte del índice sea usada cuando el proyecto sea heredado.
- Comentarios: Esta propiedad nos permite documentar el uso del componente del índice.
- Modo: Permite establecer de qué forma se indexará la parte. Los valores posibles son:
- Campo completo: La parte a indexar va a ser un campo y se indexará completo.
- Campo porción: La parte a indexar va a ser un campo pero va a indexarse solamente una porción del mismo.
- Fórmula: La parte a indexar va a ser una fórmula definible por el programador.
- Campo: Esta propiedad solamente estará disponible en el caso de que el Modo sea Campo completo o Campo porción. Solamente podremos seleccionar campos de la tabla actual que tengan persistencia en disco; es decir, no es posible ni indexar campos de tablas enlazadas ni indexar campos de tipo fórmula.
- Fórmula:: Esta propiedad solamente estará disponible en el caso de que el Modo sea Fórmula. Esta propiedad permite establecer una fórmula, cuyo resultado será indexado. Si pulsamos el botón
se abrirá el asistente para edición de fórmulas. En esta fórmula solamente se permite usar campos de la tabla actual, no se permite usar campos de tablas enlazadas ni tampoco llamar a funciones, dado que ambas cosas mermarían el rendimiento. - Longitud: Longitud, en bytes, que tendrá la parte a indexar.
Si el modo es Campo completo, este valor no podrá ser modificado.
Si el modo es Campo porción, en esta propiedad indicaremos el número de caracteres a indexar del campo. Ejemplo: Si el campo es alfabético de 35 bytes y esta valor lo establecemos a 12, esta parte indexará solamente los 12 primeros caracteres del mismo.
Si el modo es Fórmula, en esta propiedad indicaremos 0 si queremos indexar la totalidad del resultado de la fórmula; en caso contrario indicaremos el número de caracteres a indexar del campo.
- Conversión: Si el modo es Campo completo o Campo porción y el campo es de tipo alfabético (Alfa Latin-1, alfa UTF-16, alfa 256, alfa 128 o alfa 64); en esta propiedad podremos hacer una conversión de la parte a una tabla de caracteres inferior.Ejemplo: un campo de tipo alfa256 indexarlo convertido a alfa 64.
NOTA:Si en un componente realizamos una conversión tendremos que modificar también la Longitud que se indexará del mismo en función de la nueva tabla de caracteres. Por ejemplo, si convertimos una parte de Alfa128 a alfa 64, dado que éste último cada cuatro caracteres que se introduzcan se comprimen en 3 grabado en disco, la longitud a indexar deberá ser un múltiplo de 3.
Si el modo es Fórmula en esta propiedad podremos indicar al sistema de qué tipo será el dato resultante de la fórmula. Los tipos posibles son:
- Número: La parte del índice a indexar será un número.
- Fecha: La parte del índice a indexar será una fecha. En este caso la propiedad del componente Longitud automáticamente será establecida a 3 y no podrá ser modificada; pues es la longitud que tiene un dato de tipo fecha.
- Hora: La parte del índice a indexar será una hora. En este caso la propiedad del componente Longitud automáticamente será establecida a 3 y no podrá ser modificada; pues es la longitud que tiene un dato de tipo hora.
- Tiempo: La parte del índice a indexar será un dato de tipo tiempo. En este caso la propiedad del componente Longitud automáticamente será establecida a 4 y no podrá ser modificada; pues es la longitud que tiene un dato de tipo tiempo.
- Alfa 126: La parte del índice a indexar será una cadena de tipo alfa 256.
- Alfa 128: La parte del índice a indexar será una cadena de tipo alfa 128.
- Alfa 64: La parte del índice a indexar será una cadena de tipo alfa 64.
- Alfa 40: La parte del índice a indexar será una cadena de tipo alfa 40.
- Decimales: Esta propiedad solamente es visible cuando el modo es Fórmula y el valor de la Conversión es Número. Permite establecer el número de decimales que tendrá el número a indexar.
- Signo: Esta propiedad solamente es visible cuando el modo es Fórmula y el valor de la Conversión es Número. Permite establecer si se va a contemplar o no el signo (positvo o negativo) del número a indexar.
