Está en la página 1de 4

SI169 - Algoritmos Avanzados

Tarea Académica N° 2
Ciclo: 2010-2
Sección: Todas

La tabla, piedra angular de toda base de datos

La gran mayoría de sistemas en la actualidad manejan grandes volúmenes de información y sobre


todo la manejan a tal velocidad que la información a demanda en cuestión de segundos o
milisegundos incluso. Para poder guardar grandes volúmenes de datos, lo más común es utilizar
base datos, que no es más que un contenedor de datos con capacidad para poder realizar
consultas y transacciones de manera rápida (según la estructura y configuración que le demos).
Como se logra que las bases de datos funcionen tan rápido?. Pues, para muchas de las
operaciones de las bases de datos se utilizan algoritmos y estructuras que permiten optimizar las
consultas, inserciones, eliminaciones, entre otros.

En la presente Tarea Académica usted no se le pide implementar un motor de base de datos, pero
sí que pueda administrar una tabla de base de datos, en particular la administración de una tabla
de base de datos.

Se le pide administrar una tabla base de datos con los siguientes campos:

Campo Tipo Longitud Información adicional


Fecha Transacción Fecha 10 Formato: dd/mm/yyyy
Tipo Documento Ordenante Texto 3 CEX-Canet de extragería
PAS-Pasaporte
DNI-Documento Nacional de Identidad
Numero Documento Numérico 15 Alineado a la izquierda
Ordenante
Nombre - Ordenante Texto 20 Alineado a la izquierda
Apellido Paterno - Ordenante Texto 20 Alineado a la izquierda
Apellido Materno – Ordenante Texto 20 Alineado a la izquierda
Cuenta - Ordenante Texto 13 Alineado a la izquierda
Dirección – Ordenante Texto 40 Alineado a la izquierda
Teléfono – Ordenante Texto 20 Alineado a la izquierda
Tipo Documento Beneficiaro Texto 3 CEX-Canet de extragería
PAS-Pasaporte
DNI-Documento Nacional de Identidad
Numero Documento Numérico 15 Alineado a la izquierda
Beneficiaro
Nombre - Beneficiaro Texto 20 Alineado a la izquierda
Apellido Paterno - Beneficiaro Texto 20 Alineado a la izquierda
Apellido Materno – Beneficiaro Texto 20 Alineado a la izquierda
Cuenta - Beneficiaro Texto 13 Alineado a la izquierda
Dirección – Beneficiaro Texto 40 Alineado a la izquierda
Teléfono – Beneficiaro Texto 20 Alineado a la izquierda
Moneda Texto 3 USD – Dolares
PEN – Soles
Tipo de Transacción Numérico 1 0 Débito – 1 Crédito
Código de Operación Numérico 3 Código de 3 números.
Monto Real 11 Completado con 0 a la izquierda.
Dos decimales.
Comisiones Real 5 Completado con 0 a la izquierda
Dos decimales.
Interés Real 11 Completado con 0 a la izquierda
Dos decimales.
Tipo de Cambio Real 5 Completado con 0 a la izquierda
Tres decimales.

Para poder crear esta tabla se debe utilizar un archivo plano con un separador “|” entre las
columnas. Además de poder administrar la tabla se debe ejecutar las siguientes funciones

Select * from MiTabla

Obtiene todos los datos de la tabla.

Select [campo1, campo2, etc] from MiTabla

Se debe poder hacer consultas de los campos de la tabla. La información debe mostrarse en un
lista según la extensión del tipo de campo.

Select [campo1, campo2, etc] from MiTabla where [campo1] = [valor1]

Se debe poder hacer una búsqueda según el tipo de campo.

Select [campo1, campo2, etc] from MiTabla where [campo1] like [valor1]

Esta funcionalidad solo debe aplicar para el tipo String. Se debe validar a través de subcadenas
como '%San Borja%' dentro de algún campo. También se debe validar UPPER Y DOWNCASE, es
decir, si se toma en cuenta que en la búsqueda el texto como tal o si se ignora si esta en
mayúsculas o minúsculas (es como convertir todo el texto a mayúscula y validar con %SAN
BORJA%')

Para poder optimizar estas operaciones se le solicita que usted realice Índices. Los índices son
estructuras que permiten mejorar el tiempo de las consultas a través de “saltos”. Para esto se les
pide que implementen un esquema de árbol para poder almacenar la información de los mismos.
Deberán elegir el tipo de árbol más adecuado según el escenario y lo implementarán para guardar
los índices de todos los campos de tipo String con criterio “(ordenante)”.

Además, para realizar la verificación de que el árbol se ha creado de forma correcta, se deberá
poder exportar el árbol a un archivo txt.
La forma de exportarlo seguirá el siguiente formato:

[ORDENANTE]
[NIVEL]DATO

Por ejemplo:

DNI
[0]70006031 70006031
[1]60005012
[2]20015285 60005012 99800012
[3]19999999
[3]25555555 20015285 60022153 … …
[2]60022153
[1]99800012 19999999 25555555
[2+…
*2+…

Por último deberán poder mostrar la eficiencia de sus algoritmos tiempo / comparaciones.

CONSIDERACIONES

La aplicación debe ser realizada con lenguaje C++, C# o java, en el IDE que vean conveniente. La
realización de la tarea académica es personal o en grupos de dos personas. La evaluación será
realizada inicialmente sobre la parte VISUAL durante una EXPOSICIÓN, es decir, debe funcionar
completamente la aplicación, en caso que no funcione completamente, queda a criterio del
profesor el puntaje que corresponda según el nivel de avance. Se deben utilizar archivos de texto
tanto para la información como para los índices. El archivo con la información inicial de la tabla
será proporcionado por los profesores del curso en base a lo indicado en la descripción, con un
separador de “|” entre cada campo del registro y cada registro en una línea de texto distinta.

CALIFICACIÓN

Usted deberá implementar todas las funcionalidades expuestas anteriormente para poder obtener
la nota máxima de 20.

 Select * from MiTabla. 1 puntos


 Select [campo1,campo2,etc] from MiTabla. 1 punto
 Select [campo1,campo2,etc] from MiTabla where [campo1] = [valor1]. 2 puntos
 Select [campo1,campo2,etc] from MiTabla where [campo1] like [valor1]. 4 puntos
 Creación de índices, estructurarlo en un árbol adecuado y mantenerlos (guardar y cargar
de archivo). 4 puntos.
 Incluir los índices dentro de la consultas (Select) para la optimización de las mismas. 6
puntos.
 Mostrar la eficiciencia de las operaciones 2 puntos.
 Creatividad. Hasta 2 puntos extra.

Mucha suerte!!!

Lima 31 de Octubre del 2010