BLOG

¿Cómo funciona la subindexación? (1ª parte)

Por jarboleya el | 8 Comments

En Wikipedia podemos encontrar la siguiente definición de índice:

El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas.

¿Qué es la subindexación?

Utilizando esta definición podemos definir la subindexación como una mejora sobre la indexación que facilita el acceso a un subconjunto definido de registros de un índice que límita los que se obtienen en una búsqueda o localización.

Ejemplo

Para mostrar el concepto de subindexación utilizaremos un ejemplo práctico. Usaremos una tabla de personas con la siguiente estructura:

  • El campo ID es el código autonumérico que será único para cada persona.
  • El campo NAME se utilizará para almacenar el nombre de la persona.
  • El campo EMP es un campo puntero a la tabla maestra “EMP – Empresas”. Este campo almacenará el código de empresa al que pertenece la persona.

A continuación se muestra un ejemplo de los datos que podría contener esta tabla:

El índice EMP_ID de la tabla de personas tiene las siguientes partes:

La resolución de partes

Es índice organiza las personas por el código de empresa y dentro de cada empresa por código de la persona. Si utilizamos este índice en un componentes de búsqueda o con el comando de instrucción Cargar lista podremos acceder en función de las partes del índice que resolvamos a:

  • 1. Todos los registros de la tabla (Si no resolvemos ninguna de las partes o campos).
  • 2. Los registros de una empresa (Si resolvemos la primera parte o campo del índice).
  • 3. Al registro de una persona concreta (Si resolvemos todas las partes o campos del índice).

Por lo tanto la resolución parcial de las partes de un índice nos permite trabajar con un subconjunto de registros. De los tres casos anteriores sólo el 2º permite subindexación ya que el primero realmente devuelve todos los registros del índice y el tercero devuelve un registro concreto.

Esto que para uso del programador resulta cómodo y sencillo, en ocasiones es necesario hacerlo a nivel de interfaz para que el usuario puede seleccionar registros bajo unas determinadas condiciones. Por ejemplo, si la aplicación es multiempresa, es habitual que sólo queramos permitirle seleccionar registros de la empresa en curso. Para resolver esta necesidad de forma sencilla a nivel de la interfaz de usuario utilizamos, en Velneo, el concepto de subindexación.

¿Qué tipos de índices admiten subindexación?

  • Los índices de tipo clave única, acepta repetidas y múltiples claves admiten subindexación.
  • Los índices por palabras o por trozos de palabras no admiten subindexación.

¿Cuántas partes o campos debe contener un índice para permitir la subindexación?

Dos o más partes (campos incluidos en el índice). La subindexación siempre requiere que se realice la resolución de una o varias partes del índice y también requiere que quede al menos una sin resolver.

Para entenderlo debemos pensar que entre los campos del índice a subindexar existe una barrera entre las partes que se resuelven a las que denominaremos partes izquierdas (porque siempre estarán a la izquierda de la barrera) y la parte derecha que siempre estará formada por el primer campo sin resolver.

En las imagenes anteriores vemos un ejemplo que nos muestra como la barrera puede estar situada en un campo diferente en función de las partes que resolvamos. En la primera imagen resolvemos sólo la empresa por lo que el usuario podría buscar por código de delegación. En la segunda resolvemos la empresa y la delegación lo que permite al usuario buscar registros por el código de la persona.

En la práctica

La subindexación es muy útil para facilitar al usuario la localización de registros durante la grabación. En la imagen siguiente vemos un formulario que pone en práctica nuestro ejemplo.


En este formulario el usuario debe seleccionar una persona. Si ya está seleccionada la empresa, sólo debería permitir al usuario seleccionar una persona de esa empresa y si no estuviese seleccionada ninguna empresa debería permitir seleccionar cualquier persona. La programación de este caso la veremos en la segunda parte de ¿Cómo funciona la subindexación?

Como vemos en el formulario la persona se puede seleccionar grabando su código (primer control de edición) o su nombre (segundo control de edición). Para poder subindexar por ambos datos debemos utilizar dos índices. El índice EMP_ID que vimos anteriormente permitiría seleccionar la persona por el código. Un segundo índice EMP_NOM con las siguientes partes permitiría seleccionar la persona por el nombre:

Continuará…

Aquí finaliza el primer artículo sobre la subindexación. En el siguiente veremos lo sencillo que resulta una vez creados estos índices programar el formulario para que el usuario puede seleccionar rápidamente una persona, haciendo uso de la subindexación.

Velneo es el entorno ágil para el desarrollo
de aplicaciones empresariales

PRUEBA VELNEO

8 Responses to "¿Cómo funciona la subindexación? (1ª parte)"
  1. [N1] sonovision.telecable dice:

    Está muy bien la teoría, pero vamos a aplicarla a una situación real, tengo un formulario, en el que es preciso, localizar, País, filtrar Provincias/Estados por país para poder seleccionar/ y filtrar Población/Ciudad por provincia/estado para su selección, ¿cuántas pulsaciones tiene que realizar un usuario que vive en España, provincia Madrid, población Móstoles?, la subindexación es estupenda, pero también sería estupendo poder aplicarla a todos los controles de un formulario.

  2. Ziva dice:

    Tambien para Combobox y listbox. Aparte y relacionado, en el objeto EDICION falta una “señal de conexion” denominado algo como “No Encontrado Tabla – disparar/lanzar localizador” , osea estando en un campo que pida un codigo (DNI) digitar el nombre (ejem “morales”) al no encontrar lo buscado dispare un localizador, ESTO PARA AHORRAR PULSACIONES

  3. [N1] zivajaiva.gmail dice:

    perdon… quise decir “No Encontrado en tabla actual – disparar lanzar localizador”

  4. [N1] El Larense dice:

    Magnifico el articulo de subindexacion pues la verdad no tenia ni idea de como se aplicaba
    esperando que pronto este la segunda parte

    gracias

  5. [N2] info.naturalsoft dice:

    Muy util, esperando a la segunda parte para poder ponerlo en practica.

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies