Page 70 - Ingeniantes Semestral 721 Interactivo
P. 70
Revista Ingeniantes 2020 Año 7 No. 2 Vol. 1
Como se observa en la Figura 7, se le asigna un nú- se unen con otra [13]. Para esto, un ciclo en Python
mero a cada tabla de la BD ya que, esto facilita la construye los productos cartesianos requeridos, re-
búsqueda con el algoritmo DFS. Sin embargo, es im- gresando un array de relaciones válidas para ejecutar
portante mencionar que el algoritmo DFS funciona la consulta que permitirá extraer la información solici-
correctamente tanto con el diccionario de la Figura 5 tada.
como con el diccionario de la Figura 6. Siguiendo esta metodología, cualquier sistema de in-
Una vez obtenido el grafo numérico, se seleccionan formación puede utilizar cualquier BDR, aun cuando
las tablas de la consulta construida por el usuario se desconozca a priori la estructura de ésta, para de-
desde la vista del sistema web a priori y se aplica terminar las relaciones entre sus tablas y con esto
el algoritmo DFS siempre y cuando exista más de poder realizar consultas dinámicas.
una tabla, ya que el algoritmo requiere de dos nodos RESULTADOS
como mínimo para buscar y regresar un camino. Los resultados obtenidos fueron evaluados mediante
Aplicación del algoritmo DFS la implementación del enfoque y del algoritmo plan-
Para verificar si existe algún camino por el cual se teado anteriormente en un sistema web de apoyo a
pueda relacionar la información, el algoritmo DFS toma la toma de decisiones para la comercialización de
como valores de entrada los siguientes parámetros: plantas ornamentales, siguiendo la metodología mos-
1) el grafo con etiquetas numéricas equivalente a la trada anteriormente. Para su comprensión, conside-
base de datos; 2) el nodo inicial (por el cual empezará re el ejemplo en donde el usuario requiere conocer
la búsqueda) y el nodo final o de destino. Esto se lo- el nombre del cliente y el nombre del producto que
gra en Python implementando una función que recibe compró. Para esto, el usuario construye una consulta
3 parámetros importantes, un grafo, un punto inicial y en el sistema web arrastrando los parámetros nom-
uno final (véase Figura 8). El algoritmo siempre toma bre de cliente y nombre del producto a una tabla en
dos tablas del array de tablas que utiliza la consulta y la vista del sistema web. Por consiguiente, la Figura 9
les asigna un punto inicial y un punto final. No importa ilustra el grafo equivalente de la BDR.
el orden y no tienen un peso, solamente importa obte-
ner si existe relación entre esas dos tablas.
Figura 8. Algoritmo DFS para encontrar el camino entre dos pun-
tos. Fuente [12].
Como se observa en la Figura 8, se utiliza el algoritmo Figura 9. Tablas seleccionadas en la consulta.
DFS para verificar la existencia de camino entre un
punto inicial y un punto final, regresando un camino (si Como se puede observar en la Figura 9, las tablas
es que existe), el cual consiste en una serie de núme- en rojo son las tablas requeridas para obtener infor-
ros del recorrido del nodo inicial hasta el nodo final. mación y las tablas en verde son las tablas que se
Generación de productos cartesianos para la con- encuentran en el camino entre éstas. Debido a que la
sulta tabla Clientes y la tabla Productos no están relaciona-
Una vez obtenidos los caminos válidos, el algoritmo das entre sí, se debe verificar si existe algún camino
DFS selecciona la ruta más corta con lo que se deter- por el cual se pueda relacionar la información. Para
minarán las relaciones entre las tablas involucradas esto se utiliza el algoritmo DFS, el cual recibe el dic-
de la consulta final, considerando el esquema de la cionario de la Figura 7 y las tablas necesarias para la
BD obtenido con la consulta mostrada en la Figura 4. consulta.
Posteriormente, se crean los productos cartesianos El algoritmo DFS realiza un ciclo para encontrar los
correspondientes a cada tabla. En SQL un producto caminos y al final validar las relaciones; por lo cual, en
cartesiano o unión cruzada es la unión de informa-
ción de dos tablas donde las columnas de una tabla
66