andcastillo / fdp2017

MIT License
1 stars 4 forks source link

fdp2017

Evaluación práctica de los conceptos fundamentales de las bases de datos

Metodología:

Este es un trabajo grupal para la asignatura Fundamentos de bases de datos, 2 semestre 2017 Universidad del valle. En grupos de 2 estudiantes deben elegir una de las funciones de álgebra para implementar y uno de los métodos de Scan. Es decir que una de los métodos de Scan se implementará por 2 grupos. Luego 1 grupo de 4 estudiantes implementarán el ejecutor de consultas, es decir, integrarán las funciones implementadas en la fase anterior, para responder una consulta que se dá como un árbol de operaciones físicas. El otro grupo de 4 estudiantes, implementará el parser de las consultas en SQL al árbol lógico y luego al árbol de operaciones físicas.

Definición de los datos

Dados las 2 tablas de la base de datos A y B, cada una almacenada como un directorio con el nombre de la tabla y compuesta por varios archivos:

id-Integer b-String-hash c-Boolean x-Double
id-Integer b-String-hash c-Boolean x-Double
1 "abc" false 1.001
2 "def,1" true 0.110

Parte 1 (Dividirse en 4 grupos de 2 estudiantes)

Diseñe, documente e implemente las siguientes operaciones del álgebra relacional:

Note que todas estas funciones requieren la implementación de la función Scan, que lee una tabla desde el disco duro. La función Scan tiene al menos 3 versiones:

Cuando se hace un sort scan y la columna especificada no está indexada, entonces los datos numéricos se deben indexar usando árboles y los datos de texto con tablas Hash.

Parte 2 (En 2 grupos de 4 estudiantes)

Usando las funciones de la parte 1, se debe implementar un motor de ejecución de consultas. El motor debe tener al menos la implementación del parser, que convierte una consulta SQL en un árbol de operaciones básicas (SFW) y luego en un árbol de operaciones físicas. El lenguaje estará limitado por las operaciones que se implementarán, es decir que será una versión reducida y simplista del lenguaje de consultas SQL implementado en MySQL o PostgreSQL. La aplicación debe estar en capacidad de resolver las siguientes consulta:

    SELECT id, b FROM A WHERE c=true;
    SELECT A.id, price FROM A, B WHERE c=true AND A.id = B.A;