Cap. 6 - RAT
Cap. 6 - RAT
Cap. 6 - RAT
Funcionamiento del RAT .................................................................................. 1 Componentes de un compilador...................................................................... 1 Componentes del software RAT ...................................................................... 2 Pre-analizador de asignacin ........................................................................... 3 Analizador Sintctico ....................................................................................... 5 Conexin con una base de datos ..................................................................... 6 Instalar el RAT .................................................................................................. 7 Herramientas del RAT ...................................................................................... 8 Ejemplos de sentencias .................................................................................... 9
Figura 6.1: RAT 4.0 Debajo de la traduccin al SQL, se encuentra el rbol de parser grafico, ntese que los nodos de las hojas estn siempre equilibrados y representa el crecimiento de la consulta desde las tablas originales hasta los nodos de los operadores ubicados en la parte superior. Este software puede ser utilizado para ensear lgebra relacional de forma muy especializada, pero tambin podra ser utilizado como una valiosa herramienta cuando se ensee teora de conjuntos; pues facilita realizar operaciones conjuntistas como la interseccin, unin o diferencia de conjuntos o combinaciones de ellas. Tambin es til porque puede aplicrsele productos cartesianos y as formar nuevos conjuntos a partir de los ya existentes. Finalmente el operador sigma facilita la escritura de conjuntos mediante el axioma de compresin, es decir declarando una propiedad que tengan los elementos del conjunto.
1.1
Se establecen los requerimientos de la herramienta, tomando en cuenta la tecnologa actual. La herramienta deber ser capaz de traducir el lgebra relacional a un lenguaje que sea entendido no slo por los estudiantes sino por las bases de datos, se establece por lo tanto el lenguaje SQL como el lenguaje objetivo a ser traducido. El formalismo y la simbologa de los operadores del lgebra relacional se deben garantizar, por lo que la herramienta necesariamente tendr los operadores oficiales (sigma, pi, ro, uniones, intersecciones y diferencia de conjuntos) a disposicin del usuario. El ltimo requerimiento se relaciona en la representacin grfica de las operaciones en el lgebra relacional, el sistema debe ser capaz de representar mediante un rbol de parser la construccin de las sentencias durante la traduccin. Una vez establecidos los requerimientos del sistema, se escoge el lenguaje C# para implementar la solucin informtica. Se descomponen los mdulos del sistema en cuatro grandes partes: analizador lexicogrfico, analizador sintctico, analizador semntico y el traductor. Los tres primeros componentes son los que garantizan que las operaciones e instrucciones del lgebra relacional que se introducen en el sistema estn formadas correctamente y no procesar sentencias con errores de semntica.
2 COMPONENTES DE UN COMPILADOR
En general se puede decir que todo compilador es un traductor, puesto que al compilar un software el sistema se ve obligado a realizar una traduccin a otro lenguaje (por ejemplo de Java a Ensamblador) para que la computadora lo entienda, el proceso de la compilacin inicia con un lenguaje determinado y finaliza cuando es traducido a lenguaje maquina. Hagamos la traza del proceso de compilacin para un simple ejemplo escrito en C++, todo el proceso inicia cuando se tiene un archivo fuente, en este archivo (.CPP o .H) estn escritas las instrucciones de alto nivel que se desean compilar, recordemos que normalmente son escritas en Entornos de Desarrollo Integrados (IDEs), que son en el trasfondo editores de texto que facilitan la labor de la escritura, estos pueden ser tan simples como el Block de Notas o tan complejos como editores comerciales como Visual Studio de Microsoft. Es decir, el lenguaje C++ es independiente del IDE, por lo tanto las reglas gramaticales son definidas por una gramtica formal y no por un compilador, de ah la existencia de tantos compiladores para un mismo lenguaje. Una vez se le da la orden de compilar un archivo .CPP o .H, el primer paso es ejecutar el analizador lexicogrfico, cuya funcin es trasformar el flujo de string (cadenas de texto) en tokens (objetos que alimentan al proceso de compilacin) para su posterior anlisis en la traduccin, para ello usa reconocimiento de patrones como gramticas regulares o autmatas finitos. En esta fase tambin se verifica que los caracteres pertenezcan al alfabeto de la gramtica, por ejemplo en C++ no est definido el smbolo por lo que una expresin como 4 5 generara un error lexicogrfico. Hace aos los programadores deban tener mucho cuidado con los identificadores de variables, pues el
6 lgebra Relacional y SQL compilador slo aceptaba caracteres ASCII dejando sin funcionamiento variables como nio, ao o da, pues no representaban caracteres ASCII. Sin embargo hoy en da la mayora de compiladores usa UNICODE permitiendo efectivamente programar sin problemas en muchos idiomas como el espaol. La segunda etapa, se denomina analizador sintctico, la funcin es este analizador es verificar la sintaxis es decir las reglas definidas en un leguajes, mediante algoritmos aplicados a arboles de anlisis sintcticos o para casos ms simples matrices gramaticales un ejemplo trivial, es determinar las reglas pasa saber si una expresin es un nmero, como se muestra seguidamente en el formato BNF: <numeral> ::= <exp_numerica> ::= 0|1|2|3|4|5|6|7|8|9 <exp_numerica><exp_numerica> | <numeral>
Esta regla es capaz de generar todos los nmeros naturales. Una tercera etapa llamada analizador semntico verifica la semntica de los tokens, es decir el mbito para determinar la presencia de errores. Tomemos como ejemplo el siguiente segmente de cdigo semnticamente correcto pero sintcticamente invlido. int x = hola mundo; Como puede verse, efectivamente esta asignacin es vlida semnticamente porque est formada de: <tipo><nombre> = <valor>, pero por otro lado, su mbito sintctico no permite que un int le sea asignado una variable de cadena. Las dos ltimas etapas de la compilacin son la optimizacin y generacin de cdigo, la mayora de compiladores optimizan el cdigo para realizar ejecutables ms eficaces y eficientes sin embargo no es condicin necesaria, por lo que algunos compiladores no optimizan sus sentencias pero todo compilador debe generar cdigo traducido a lenguaje maquina. La diferencia con los traductores como lenguajes HTML o JavaScript es que no realizan ninguna de estas dos etapas.
Imagen 6.3: Traduccin del RAT Seguidamente se definirn las etapas que discrepan de un proceso de compilacin explicado anteriormente, por ejemplo el analizador lexicogrfico no ser explicado.
10 lgebra Relacional y SQL Ejemplo 1. Se define el alfabeto del lgebra relacional por = {0, 1, 2, , 8, 9, _, a, b, c, , A, B, C ,, Z, <, >, , , , =, , , , -, , , , , , , } donde representa un carcter nulo. La utilidad del analizador lexicogrfico, es la deteccin temprana de errores de tipo ( )( ) no es una expresin alfabtico; por ejemplo la expresin lexicogrficamente valida, pues , en particular . Definicin 6. Se establece una gramtica usando la definicin de Noam Chomsky [3], compuesta por la siguiente cuaterna: 1. 2. Un conjunto finito de smbolos, que representa la totalidad del alfabeto de un lenguaje. Los componentes reciben el nombre de terminales o smbolos terminales. Un conjunto de variables, a estas variables se les denomina no terminales o categoras sintcticas, estos no terminales se forman por otros smbolos no terminales o no terminales. Existe un smbolo inicial, esta variable representa el inicio de la gramtica, adems debe ser un smbolo no terminal. Un conjunto finito de producciones o reglas, que representa una definicin recursiva de lenguaje. Cada regla est conformada de: a. Una variable llamada cabeza, es un identificador de la regla en particular. b. El smbolo de produccin ( ). c. Una cadena de cero o ms smbolos terminales o no terminales, a este bloque se le llama cuerpo de la produccin, en la cual cada elemento se sustituye recursivamente para formar una derivacin.
3. 4.
Estas cuatro componentes definen una tupla llamada, gramtica libre de contexto, tambin recibe el nombre de gramtica o CFG. De la forma G = (V,T,P,S) donde V son las variables no terminales, T son los smbolos terminales, P son las reglas de Produccin y la S es el smbolo inicial. Ejemplo 2. Se define la gramtica para el lgebra relacional la tupla ( ) con V = {literal, numeral, smbolos numricos, smbolos lgicos, smbolos conjuntos, variable, numero, parmetro, proyeccin, condicional, renombramiento, expresin, expresin lgica, expresin numrica}. El conjunto T o alfabeto del lenguaje se define como T = {0, 1, 2, , 8, 9, _, a, b, c, , A, B, C ,, Z, <, >, , , , =, , , , -, , , , , , , } donde representa un carcter nulo. Tenemos tambin el smbolo inicial S = expresin, definido en las reglas de produccin de P. Para el conjunto P se definen las siguiente reglas de produccin, para efectos de simplificar la notacin se usara el formato Backus-Naur form (BNF) [2], donde los smbolos de produccin ( ) y sus respectivos cuerpos se agrupan con el smbolo ::= y separamos los cuerpos de las producciones por el smbolo (|) para identificar que son de la misma regla. A continuacin se detalla el conjunto de Producciones:
<numeral> <simbolosNumericos> <simbolosLogicos> <simbolosConjuntos> <variable> <nmero> <parmetros> <proyeccin> <renombramiento> <condicional> <expresinLogica>
<expresinNumerica> <simboloLogicos> | <expresinNumerica> <expresinNumerica> ::= <variable> <simbolosNumericos> <nmero> | <nmero> <simbolosNumericos> <variable> <expresin> ::= [(]<expresin>[)] <simbolosConjuntos>[(]<expresin>[)] | <proyeccin> | <condicional> | <variable>
::= ::= ::= ::= ::= ::= ::= ::= ::= ::= ::= ::=
_|a|b|c||A|B|C||Z ,|-|0|1|2||8|9 +|-|*|/ ||<|>||||= ||-|| <literal> <variable> | <variable> <literal> <variable> | <variable> <variable> ,<parmetros> | <variable> ( <parmetros> ) ( <expresin> ) ( <literal> ) ( <expresin> )
[<proyeccin>](<expresinLogica>)(<expresin>)
Definicin 8. Una expresin es semnticamente correcta si, y solo la expresin es producida por alguna regla de produccin. La importancia del analizador semntico, es la deteccin de errores estructurales; esto le permite al software saber que la expresin que introduce el usuario est formada correctamente; pongamos un ejemplo , esta expresin es lexicogrficamente valida, pues todos los smbolos de la expresin son elementos del alfabeto; el error se encuentra en el pues se esperaba un nmero o una variable despus del primer signo de mas. Definicin 9. Se define una matriz gramatical o matriz de adyacencia, como una matriz cuadrada que permite representar una relacin binaria. Ejemplo 3. Matriz Gramatical del lgebra relacional Para efectos del verificador sintctico, se desarrolla una matriz gramatical para crear y evaluar todos los posibles escenarios. Esta matriz booleana est formada por todos los smbolos no terminales tanto horizontal como verticalmente. La matriz completa del lgebra relacional al ser tan grande no se adjuntar, sin embarg vamos a ejemplificarla con los smbolos Pi, Sigma, parntesis, literal y nmero (constante).
PI
SIGMA
LITERAL
CONSTANTE
PARENTESIS ABIERTO
PARENTESIS CERRADO
Tabla 1 Matriz gramatical (adyacencia) de ejemplo. Ntese que esta matriz tambin recibe el nombre de matriz de adyacencia, permite modelar un grafo, es decir determina si existe un camino que permita pasar de un smbolo a otro, por ejemplo Sigma | Pi parntesis abierto o despus de un literal se puede cerrar un parntesis (Literal parntesis cerrado).
Definicin 10 Un rbol consta [4] de un conjunto finito de elementos, llamados nodos y un conjunto tambin finito de lneas dirigidas o vrtices que conectan los nodos. Tambin se puede definir como: 1. 2. Una estructura de datos vaca. Una conjunto con uno o ms nodos tales que: a. Hay un nodo llamado raz b. Todos los dems son subrbols de la raz, que son arboles a la vez.
Observe que la definicin del rbol es recursiva, tambin los algoritmos de esta estructura se suelen manejar recursivamente. La verdadera importancia de los arboles binarios son su capacidad para modelar las expresiones de lgebra relacional.
Imagen 6.6: Men principal del RAT Observe que la primera vez que se ejecuta el software, va aparecer traducido al ingles; sin embargo el RAT tiene soporte oficial para cuando idiomas (ingles, espaol, italiano y alemn) basado en el nmero de pases que lo descargan. La primera aplicacin que le va salir es Translation Software est es el ncleo de todo el software, es esencialmente el subprograma que va traducir las consultas de lgebra relacional a consultas SQL, adems es el encargado de coger las sentencias SQL y realizar el llamado a las bases de datos. Para fines acadmicos y de produccin resulta conveniente saber cual consulta es ms eficiente entre varias consultas que se tengan, para ello el RAT incorpora una mtrica que permite comparar la eficiencia entre dos consultas de lgebra Relacional. Para ello puede ingresar al segundo programa llamado Query comparation. Como el RAT va ser una herramienta que usted use diariamente para sus estudios o para optimizar consultas en su trabajo, es necesario incorporar la posibilidad de guardar las consultas que usted efectu. Se incorpor entonces una especie de biblioteca de consultas, una vez guardada la sentencia es fcilmente recuperable en el futuro. Para poder observar la biblioteca (inicialmente vaca) debe ingresar a Query library. Finalmente y por ser el RAT una herramienta acadmica sin fines de lucro, se espera que sea utilizada por la mayor cantidad de universidades e instituciones a nivel mundial. Como es un proyecto sin financiamiento se provee una herramienta para poder traducir el software entero al idioma que el usuario final desee. Se les agradecera mandarnos sus traducciones para mejorar las actuales y agregar nuevas, se respeta altamente los derechos de autor por lo que si colabora con el proyecto, su nombre va estar en el sitio web de
Capitulo 6: Funcionamiento del RAT 15 descargar como colaborador. Ingrese a Language Manger para poder agregar nuevos idiomas.
c) Ingreso de consulta
b) Botones
d) Smbolos
Imagen 6.7: Elementos de la ventana de traduccin Como se puede ver, la interfaz del RAT tiene muchas opciones para facilitar el procesamiento de las consultas. Los mens del RAT son convencionales, tiene las siguientes opciones:
b. Export library: tiene la funcin de exportar la biblioteca comn del sistema. c. Import R.A: importa sentencias de lgebra relacional, en este caso slo importa una sola sentencia.
d. Export R.A: exporta slo una sentencia de lgebra relacional e. f. Import SQL: importa slo una sentencia de SQL. Export SQL: exporta slo una sentencia de SQL
Nombre de smbolo Assignment (asignacin) Pi Sigma Ro Cartesian product (producto cartesiano ) Natural product (producto natural) Unin Intersection (Interseccin) Diference (Diferencia) AND logical (Y lgico) Or logical (O lgico)
Acceso rpido Ctrl + A Ctrl + P Ctrl + S Ctrl + R Ctrl + Q Ctrl + N Ctrl + U Ctrl + I Ctrl +M Ctrl + Y Ctrl + O
{condicin} (relacin)
{nueva} (relacin) Relacion1 relacin2 Relacion1 Relacion2 Relacion1 Relacion2 Relacion1 Relacion2 Relacion1 Relacion2 Condicion1 Condicion2 Condicion1 Condicion2
Observe en la imagen 6.8 como se construye un rbol automticamente con slo ingresar la consulta en el programa interpretador. Sin embargo el RAT tambin disponen de otra vistas ms tradicionales como la representacin de tablas, en la imagen 6.9 se observa el resultado de la consulta contra una base de datos real.
Capitulo 6: Funcionamiento del RAT 19 Para poder cambiar de vista en vista, el RAT provee los submens de Change view que cambia de modo, por otro lado se puede ir explcitamente a una vista en particular mediantes las opciones de Tree parser o query result.
20 lgebra Relacional y SQL Para permitir que la mayor cantidad de bases de datos sean compatibles con el RAT, se utilizan dos conectores, uno es genrico llamado ODBC y otro es desarrollado para Oracle, en general se puede conectar a cualquier base de datos si existe un conector ODBC.
Imagen 6.10 Administrador de orgenes de datos ODBC Una vez aqu, se debe agregar una nueva conexin, para ello de click en Agregar a la derecha de la ventana, lo que nos saldr son las bases de datos que tienen conectores
Capitulo 6: Funcionamiento del RAT 21 instalados en la computadora, por ejemplo en la ventana 6.11 est instalado el conector para MySQL sin embargo es posible que cuando vean su ventana, no tengan el conector disponible, puede descargar el conector desde el mismo sitio donde descarg el RAT.
Imagen 6.11 Lista de orgenes instalados Damos click a finalizar y segn sea el conector nos solicitar determinada informacin, en general siempre es la misma informacin para todas las bases de datos, en la imagen 6.12 se completan los siguientes datos: a. Data sourcce Name: este es el nombre con el que vamos identificar la conexin, puede ser cualquier nombre.
b. Server: se establece la direccin IP de donde se encuentra el servidor, si est en la misma computadora es localhost. c. Database: es el nombre del schema de la base de datos, si usa otra base de datos, este campo es posible no aparezca.
Imagen 6.12 Lista de orgenes instalados Cuando le damos OK, nos llevara a la ventana del Administrador de orgenes de datos ODBC, donde nos debe aparecer una nueva conexin agregada con el nombre que se le haba puesto en la ventana anterior.
Valor
Oracle [vacio] System [usuario con el que se va conectar] manager [clave del usuario] XE [en el caso de la versin express]
Valor
ODBC MySQL [nombre que se ingreso en el administradore de ODBC] [vacio] [vacio] [vacio]
Cuando se confirme los datos, el sistema se conectar (no indicar nada) o en su defecto le indicar que hubo un fallo y fue imposible levantar la conexin. Si no hubo fallo en el proceso, ya puede escribir consultas y evaluarlas mediante la tecla F5, o con el botn Run a la derecha del cuadro de texto donde se ingresan las consultas. Los datos que usted ingreso sern guardados de forma automtica, de manera que la prxima vez que ingrese a la ventana slo es darle click al botn Conectar.
Sentencia en el RAT * +( ) * +( ) , - , , - , , - , -
Todos los dems operadores, tiene una traduccin directa; es decir no requiere agregarle patentis para su funcionamiento.
La otra mtrica es el tiempo que dura en ser ejecutada la consulta, est representada por , es decir el cambio del tiempo desde que se inicia hasta que termina de ejecutarse la consulta. Para realizar estas pruebas es suficiente abrir la librera y seleccionar las dos consultas a competir y dar click a Compare.
BIBLIOGRAFA CONSULTADA
[1] Aho, Alfred V. Compiladores, principios, tcnicas y herramientas, PEARSON EDUCACIN, Segunda Edicin, Mxico, 2008.
[2] Hopcroft, Jonh E. Introduction to Automata Theory, Languajes, and Computation, Assison Wesley, Segunda Edicin, USA, 2001.