CREACIN DE UN
TRADUCTOR DE
SENTENCIAS DDL Y DML
ndice
Resumen...............................................................................................................................2
Introduccin........................................................................................................................2
Metodologa utilizada........................................................................................................3
Mdulo de entrada.........................................................................................................3
Mdulo de anlisis.........................................................................................................4
Mdulo de sntesis.........................................................................................................7
Mdulo de errores..........................................................................................................7
Mdulo de resultados...................................................................................................8
Discusin o reflexin crtica...........................................................................................8
Referencias bibliogrficas...............................................................................................8
Anexos..................................................................................................................................9
ndice de Figuras
Figura 1 .............................................................................................................4
Figura 2..4
Figura 3..6
Figura 4..7
Figura 5..8
Figura 6..8
ndice de Anexos
Anexo 1..............................................................................................................9
Anexo 2...10
ndice de Tablas
Tabla 1..............................................................................................................3
Resumen
Para la traduccin de una sentencia de tipo DDL o DML los gestores de bases de
datos pasan por distintas fases como: entrada, anlisis, sntesis, errores y
resultados; dnde, en cada fase, se analiza la consulta ingresada por el usuario
para verificar si es correcta lxica, sintctica y semnticamente, y en caso
contrario se muestra el error cometido al usuario; si la consulta es correcta pasa
por un proceso de optimizacin antes de solicitar los datos a los registros de la
base de datos para que el gestor de la base de datos realice un trabajo ms
rpido.
Palabras clave: Traductor, DDL, DML, AFD, primeros, siguientes, tokens
Introduccin
Un lenguaje de definicin de datos (DDL por sus siglas en ingls) es un lenguaje
para definir y describir los objetos de una base de datos, y lo conforman las
sentencias CREATE, ALTER, DROP, etc. El lenguaje de control de datos (DML por
sus siglas en ingls) permite el manejo y procesamiento del contenido de la base
de datos, y lo conforman las sentencias: SELECT, INSERT, DELETE, etc.
Un traductor de secuencias SQL comienza con la especificacin de reglas que
deber de seguir, el anlisis y la verificacin de que cumpla con las reglas que
siguen los tipos de sentencias DDL y DML. Posteriormente comprobar la
existencia de la optimizacin de la sentencia proporcionada y, conforme a la
generada, har la conexin al sistema manejador de base de datos y desplegar
los resultados.
En el artculo siguiente se expondr al lector la metodologa realizada para
generar un traductor de sentencias DML y DDL pasando por cada una de las fases
por las que transcurre para llegar al resultado.
Metodologa utilizada
Mdulo de entrada
El proceso comienza cuando el usuario selecciona y carga al sistema un archivo
de tipo texto, el cual tiene definidas las reglas y sus producciones por renglones, y
sigue el formato:
Valor
0
1
2
3
4
5
6
8
9
10
11
12
13
14
15
16
17
18
19
20
Significado
Cadena Vaca
select
from
where
and
or
in
insert
into
values
numeric
not
null
distinct
order
by
create
tables
constrain
primary
Terminal
j
k
q
h
,
.
Valor
21
22
23
24
29
30
Significado
foreign
key
references
char
DELIMITADOR
DELIMITADOR
3
(
)
;
+
*
/
<
>
=
|
d
31
32
38
39
40
41
42
43
44
45
46
50
60
80
DELIMITADOR
DELIMITADOR
DELIMITADOR
DELIMITADOR
OPERADOR
OPERADOR
OPERADOR
OPERADOR
OPERADOR
OPERADOR
OPERADOR
Otra produccin
IDENTIFICADO
R
NMEROS
Mdulo de anlisis
El primer anlisis que se realiza es el anlisis lxico, el cual separa por tokens
(unidades de una consulta) una sentencia ingresada por un usuario, certificado
que todos los caracteres sean vlidos. A estos tokens se les asigna un cdigo
(donde se definen: palabras reservadas que comprenden el rango de 1-20,
delimitadores que le corresponden del 29-39, los operadores que se encuentran
de 40-50, los identificadores entre 60-79, las constantes del 80-99 y todas las
reglas posteriormente del 100), y se agregan a una matriz dicho nmero, junto su
token correspondiente, el nmero de lnea en donde se encuentra dicho token y a
qu tipo corresponden (Palabras reservadas, Operadores, Delimitadores,
Identificadores o Constantes). Para este proceso se utiliz un AFD.
El siguiente anlisis es el sintctico, el cual se encarga de validar que la consulta
ingresada cumple con las reglas establecidas en el mdulo de entrada. Se
agregan las reglas a una pila y se analiza cada uno de los cdigos de los tokens
en orden, verificando que corresponden con las reglas que se estn analizando.
Este proceso se realiz con un algoritmo visto en clase el semestre pasado.
El ltimo anlisis es el semntico, en ste se verifica que los elementos de las
sentencias son correctos, utilizando las clases de Tabla, Columna y Consulta (sta
en el caso nico de sentencias de seleccin). Esto se verifica de modo que: en las
sentencias de creacin, al ir analizando los tokens y encontrarse con el nombre
de una tabla (despus de un CREATE TABLE) se crea una nueva tabla, y al
campo nombre se le asigna el token, en seguida, al llegar la parte definicin de
columnas, se va creando una nueva columna por cada identificador encontrado,
donde tambin se llenan los campos de: nombre con el identificador, tipo con el
tipo de columna y longitud con el tamao establecido para dicha columna, una vez
definida se va agregando a la lista de columnas de la tabla que se est creando, y
5
Mdulo de sntesis
Para la realizacin de la optimizacin de las consultas que estn correctas se hizo
uso de un AFD el cual recorre a todos los tokens encontrados en la consulta
capturada. Se volvi a emplear el uso de una lista de consultas, cada una con sus
listas de columnas, de tablas y de condiciones.
Cuando encontraba un SELECT, agregaba una consulta a la lista de consultas;
cuando se encontraba en el AFD una columna, se agregaba a la lista de columnas
de la consulta actual; as mismo, cuando encontraba una tabla, se agregaba a la
lista de tablas; y cuando encontraba una condicin, la agregaba a la lista de
condiciones de la consulta actual. Al encontrar un parntesis que cierra se
indicaba que terminaba una consulta anidada, por lo que se mandaba al mtodo
Natural de la clase Columna, dnde se regresaba el producto natural resultante de
la consulta anidada.
El mtodo Natural, de manera resumida, funciona as: convierte la ltima condicin
de la consulta exterior (que debe ser el in) en la condicin de igualacin de las
columnas de las dos consultas, se agregan las tablas y condiciones de la consulta
Mdulo de errores
Para el despliegue de los distintos errores se cre una clase Error.cs, la cual tiene
los atributos de un error (como su nombre, cdigo y mensaje a desplegar), y se
creaban al inicio del programa todos los tipos de errores con sus datos. Cada que
se encontraba un error se creaba una instancia de la clase con el cdigo de este, y
se desplegaba el error en color blanco en la parte inferior del programa,
adicionalmente se lanza una excepcin la cual detiene la ejecucin del programa.
Mdulo de resultados
Una vez que una sentencia es correcta y se ha verificado que exista una
optimizacin, el usuario procede a conectarse con el gestor de base de datos,
dnde ya se han capturado los datos de conexin a la base de datos, para obtener
los resultados de la consulta solicitada y estos se muestran en forma de tabla.
Referencias bibliogrficas
http://www.ub.edu.ar/catedras/ingenieria/Datos/capitulo4/cap42.htm
Anexos
Anexo 1 Reglas empleadas en el programa.
A1->AA1|I1;A1|Q1;A1|#
A->sEBfHwKW1N5
E->#|c
B->*|C
C->FD
D->,C|#
F->dG
G->#|.d|d
H->ZI
I->#|,H
Z->dJ
J->d|#
K->L|(L)
L->NM
M->RL|#
N->FO
O->=P|m(Q)|>@|<@
P->F|S
Q->A|S
R->a|r
S->Y|@
U->,T|#
Y->'T
T->dV'X|@'U
V->#|d
W1->ebW2|#
W2->@W3
W3->#|,W2
X->,Y|#
N5->#|;
I1->indv(V1)
V1->T1R1
R1->#|,V1
T1->@|'M2M1
M2->d|@
M1->'|d'
C1->tgd(N1)A1
N1->B1N2
N2->J1|,J1
B1->D1B2
B2->#|,B1
D1->dE1(@)ol
E1->h|u
J1->G1J2
J2->#|,J1
G1->xdH1
H1->pk(d)|jk(d)qd(d)
Q1->tgd(C2)
C2->D2X2
X2->#|,I2|R2
D2->dT2(@)ol
T2->h|u
R2->S2Y2
Y2->#|,R2
S2->xdH2
H2->pk(d)|jk(d)qd(d)
I2->C2|R2
10
10