Tesis - Dirección General de Servicios Telemáticos

Anuncio
Universidad de Colima
Facultad de Ingeniería Mecánica y Eléctrica
Bases de datos inteligentes.
TESIS
que para obtener el grado de
Maestro en Ciencias
Área Computación
Presenta:
Sergio Antonio Becerra Zepeda
Asesor:
Mc. Rodolfo Gallardo Rosales
Coquimatlán, Colima. Junio 1999
Exp.No.:
Fecha:
Acta No. :
0014
08-05-99
5
c. s%RGlO ANTONIO BECERRA ZEPEDA
Do- CALDERONNUM. 191
CIUDAD Gum JALWQ
C341)2 59 41
En cumplimiento al artículo: 13 y 14 del reglamento de titulación, a los artículos: 46 y 48 del
reglamento de estudios de Posgrado vigente y al articulo: 46 de las normas compkmentarias al reglamento de
Posgrado, correspondientes al Posgrado de la Facultad de Ingenieria Mecánica y Eléctrica. Informamos
a
usted
que ha+ sido autokado por este Consejo Técnico del Posgrado su tema de Tesis
para obtener
el grado de Maestro en Ciencias Computacionales titulado: n BASES DE DATOS INTELIGENTES “
para ser desarrollado bajo los siguientes puntos:
1
II
III
Iv
v
VI
VII
cual
C.
. -INTRODUCCION
.- SISTEMAS BASADOS EN CONOCIMIENTO
.- SISTEMAS EXPERTOS
.- ARQUITECTURA DE UNA BD1
. - PROGRAhWCION DE UNA BD1
.- ESTADO DEL ARTE
.- CONCLUSIONES
BIBLIOGIWFIA
A s i m i s m o hacemosdesu canocimiento
se
enmaxca s u
ha
Proyecto
NC. RODOLFO GALLARDO ROSALES
que de acuerdo con la linea de investigación en la
sido
autorizado
como
asesor
de
tesis
el
A partir de la fecha de aprobación tendrá como plazo un año para presentar su examen de grado, en caso
contrario tendrá usted derecho a m prórroga única de seis meses so pena de perder el registro de su proyecto.
Una vez concluidos los tramites de revisión de su documento de tesis e integrado su expediente de titulación
deberá recoger el oficio que acompaíiara a el visto bueno de su asesor de tesis, los cuales encabeza& cada uno de los
ejemplares de su tesis.
Atentamente
Posgrado
de la Facultad de Ingenieti Mecánica y Elt5lgday la Universidad de
M.C. Rodolfo Gallardo Rosales
Mayo& 1999.
H. Consejo Técnico de Posgrado
de la F.I.M.E.
Universidad de Colima.
Presente.
Por medio de este conducto, informo a ese Consejo Técnico de Posgrado que el C. Sergio
Antonio Becerra Zepeda, terminó su período de revisión de tesis para:
MAESTRIA
EN CIENCIAS COMPUTACIONALES
Bajo el título:
‘BASES DE DATOS INTELIGENTES”
cuyo contenido he el siguiente:
I. INZRODUCCION
2. SISmS BASADOS EN CONOCIMIENTO
3.. SISTEiMS EXPERTOS
4. ARQUI7XXUIU DE UNA BDI
5. PROíXAA4ACIONDE UNA BDI
6. ESTADO DEL ARTE
CONCLUSIONES
el cual cumple con los requisitos necesarios para su aprobación, por lo cual lo autorizo para
su impresión.
Atentamente,
Will it to be possible than does a machine make the same
as make the human biings when do think ?
Turing 1950
1 Abstmct
I Abstract
Descripción:
En las bases de datos inteligentes se concentra la evolución e integración
de las bases de datos relacionales - activas y las técnicas avanzadas para la búsqueda,
recuperación y procesamiento de la información en el área de los sistemas expertos y la
inteligencia artificial.
En este proyecto se pretende desarrollar un conjunto de herramientas
para la construcción de aplicaciones de Bases de Datos que operen a un nivel de
abstracción superior frente a las técnicas convencionales. Este mayor poder de
abstracción, combinado con otras herramientas permitirá la creación de ambientes
inteligentes que combinen las tecnologías de bases de datos, bases de conocimiento e
inteligencia artificial.
Nuestro principal objetivo detallar el conjunto teórico mediante el cual
pueda manipularse una base de datos relaciona1 de manera transparente, extrayendo
conocimientos a partir del análisis de estructuras simples, interrelacionando procesos
de adquisción de datos con procesos de inferencia, en suma, consolidar un punto de
partida en la representación y manipulación semántica de las aplicaciones avanzadas.
Presenta:
Me. Sergio Antonio Becerra Zepeda
Candidato al Grado de Maestro en Ciencias Computacìonales.
Validación:
Universidad de Colima
Facultad de Ingeniería Mecánica y Eléctrica
Maestría en Ciencias Computacionales.
Junio, 1999.
II. Tabla de contenidos
ll. Tabla de Contenidos.
1
II
Abstrae
Tabla de contenidos
1. Introducción
2. Sistemas basados en conocimiento
2.1 Antecedentes
4
2.2 Enfoques de los SGDB
6
23 Evolución de los SGDB
7
2.4 Clasificación de los SGBD
10
10
ll
11
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
Sistemas orientados al proceso y SGBD clásicos
SGBD semánticos
SGBD activos
SGBD deductivos
SGBD orientados al objeto
SGBD multidimensionales
12
13
14
2.5 Conocimiento y bases de datos
16
2.6 Representación del conocimiento
17
21
22
23
24
25
26
26
2.6.1
2.6.2
2.6.3
2.6.4
2.6.5
2.6.6
2.6.7
Representación mediante cálculo de predicados
Representación mediante redes semánticas
Representación mediante reglas de producción
Representación por objetos estructurados
Representación mediante procedimientos
Representación mediante árboles de decisión
Representación mediante listas de decisión
2.7 Representación lógica se un SGDB relaciona1
2.7.1 Estructura e integridad
2.7.2 Manipulación de datos
27
27
28
II. Tabla de contenidos
3. Sistemas Expertos
3.1 Antecedentes
31
3.2 Programación lógica en sistemas expertos
3.2.1 Conceptos básicos
32
3.3 Sistemas expertos y bases de datos inteligentes
36
35
4. Arquitectura base de datos inteligente
4.1 Fundamentos
38
4.2 Descripción
39
4.3 Arquitectura
4.3.1 Computación Evolutiva e IPL
4.3.2 Conocimiento con incertidumbre
4.3.2-l Tratamiento de los valores inciertos
4.3.2.2 Tratamiento de la información desconocida o
condicional
45
48
41
56
60
5. Programación de una base de datos inteligente
5.1 Consideraciones generales
66
5.2 Base de datos persistente y en intenso
5.2.1 Recordset
5.2.2 Database Object
5.2.3 SQL en Visual Basic
5.2.4 Edición de las Bases persistente y en intenso
5.2.4.1 Representación gráfica de los datos
4.3.2 Manipulación de la base en intenso
66
66
68
70
88
92
95
5.3 Archivos binarios
96
5.4 Filtrado y preproceso
5.4.1 Difusor simple
5.4.2 Difusor con múltiples condiciones
105
105
107
5.5 Manipulación de la base de datos en intenso
108
5.6 Programación lógica paralela
114
J
II. Tabla de contenidos
6. Estado del Arte
6.1 El Análisis inteligente de datos
126
6.2 Desafíos en,la explotación inteligente de datos
130
7. Conclusiones
III
Referencias Bibliográficas
115
1
Introducción
1. Introducción
Una de las principales preocupaciones de los desarrolladores de software destinado a
la administración de bases de datos, es la creciente necesidad de incorporar
herramientas que permitan acceder y manipular
eficientemente las colecciones de
datos que distinguen a las nuevas tecnologías de la información.
Los esquemas operativos orientados a soluciones administrativas generales han
multiplicado su nivel de exigencia, precisando productos que efectúen análisis sobre los
datos almacenados, para responder eficientemente a consultas no planificadas; con
capacidad para
realizar operaciones entre los datos estructurados (propios de la
mayoría de bases actuales), con distintos tipos de datos no estructurados, y fundamentalmente- con capacidad de procesar estas características en la oferta de
soluciones.
En este terreno, comienza a acuñarse el término de bases de datos inteligentes en el
que convergen los fundamentos teóricos de la Inteligencia Artificial con los sistemas
relacionales activos; adicionando a la estructura del motor relaciona1 un motor de
inferencia, que habilita conjuntos de acciones disparadas por reglas y consultas
ampliadas por inferencia.
Existe un robusto compendio teórico (modelos matemáticos), para la construcción de
sistemas que soporten un gran número de reglas complejas para la inferencia
automática de la información y el tratamiento de la incertidumbre (un soporte de reglas
declarativas para expresar las interrelaciones semánticas entre objetos de la base de
datos), entre este conjunto, destacan los algoritmos genéticos, la lógica difusa (fuzzy
Iógic) y la lógica multievaluada.
La eficiente implementación de una BDI(Base de Datos Inteligente), precisa del
desarrollo de un sistema que posea la capacidad de gestionar conocimiento complejo a
través del procesarnieto de datos simples, provenientes tanto de ficheros controlados de
2
Introducción
forma autónoma como de un SGDB(Sistema Gestor de Bases de Datos); incorporar la
capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver
clases de problemas dentro del dominio.
i
Es importante destacar que existe un limitado número SGDB comerciales orientados
exclusivamente a estos aspectos (p.ej. Datalog), de hecho, las tecnologías aplicadas en
este dominio se construyen como extensiones de los sublenguajes DML Y DDL
particulares del lenguaje anfitrión; tecnologías que recuperan segmentos de los avances
de la Inteligencia Artificial y los expresan -fundamentalmente- en la semántica de los
procesos de consulta. Por ello, existen múltiples enfoques híbridos en los que
encontramos esquemas operativos lógicos y procedurales, entre los que destacan los
denominada minería de datos (data mining) con un sólido punto de partida: la
tecnología KDD (Knowdlege Discovery in Databases) recientemente incorporada por
IBM en el desarrollo de sistemas expertos.
En este proyecto se pretende desarrollar un conjunto de herramientas para la
construcción de aplicaciones de Bases de Datos que operen a un nivel de abstracción
superior al de los manejadores de BDs actuales. Estas herramientas estarán diseñadas
para facilitar su integración con los sofisticados ambientes de desarrollo de uno de los
principales manejadores de Bases de Datos actuales: Jet@ de Microsoft.
Este mayor poder de abstracción combinado con sus posibilidades de integración con
otras herramientas permitirá la creación de ambientes inteligentes orientados a usuarios
finales que combinen las tecnologías de bases de datos, bases de conocimiento,
programación orientada a objetos, e interfaces intuitivas para usuarios finales.
En el desarrollo de nuestra investigación pormenorizamos sobre el conjunto de
indicadores involucrados en la arquitectura de bases de datos, dando cuenta de los
esquemas operativos y evolución de los SGDB, el impacto de las tecnologías aplicadas a
la inteligencia artificial sobre éste dominio en particular (representación del conocimiento) y
los modelos matemáticos que dan coherencia al conjunto. En todos los casos, se
3
Introducción
ejemplifican las operaciones y procesos considerando el enfoque relaciona1 con que opera
Jet.
Finalmente, se desarrollan prototipos con el objetivo de acreditarla validez del conjunto
teórico expuesto; dichos, operan en dos formas: mediante una interfaz entre aplicaciones
donde el ,sistema manipula una base de datos relaciona1 (base persistente), de la que se
obtienen los datos (base en intenso) que serán procesados tanto por una aplicación
periférica (motor de inferencia):
Prolog; y mediante objetos y procedimientos
desarrollados específicamente en el lenguaje nativo de la aplicación en general: Visual
Basic 6 Enterprise Edition.
Los prototipos recuperan y expresan los nudos de nuestra investigación, en su diseño
hemos considerado distintas vistas que dan transparencia a los procesos de que se ocupa
el sistema, esto es, en todo momento es posible editar la estructura de la base persistente,
los datos concentrados en la base en intenso y el repositorio de reglas que determina el
comportamiento del motor de inferencia en razón directa a los datos que procesa.
2. Sistemas basados en conocimiento
4
2. Sistemas Basados en Conocimiento.
2.1 Antecedentes
La sofisticación de la tecnología moderna de las bases de datos es el resultado de la
evolución que a lo largo de varias décadas ha tenido lugar en el procesamiento de los
datos y en la gestión de la información. La tecnología de acceso a los datos se ha
desarrollado desde los primitivos de los años cincuenta hasta los potentes e integrados
sistemas de hoy en día, arrastrados de un lado por las necesidades y las demandas de
la administración y, de otro, restringida por las limitaciones de la tecnología. Las
expectativas de la administración han crecido paralelamente a la evolución de la
tecnologías.
Los primeros sistemas de procesamiento de datos ejecutaron las tareas administrativas
para reducir el papeleo. Más recientemente, los sistemas se han expandido hacia la
producción y la gestión de la información, la que se ha convertido en un recurso vital
para las compañías. Actualmente, la función más importante de los sistemas de bases
de datos consiste en proporcionar el fundamento a los sistemas de información para la
gestión
corporativa.
Una base de datos es un conjunto de Información, en sentido amplio, el término puede
aplicarse a cualquier agregado de datos; técnicamente es una colección de datos,
agrupados con un propósito específico en una o mas entidades Ióg.icas (archivos). En
términos estrictos, “base de datos”, hace referencia sólo al lugar donde está depositada
la información (hablando tanto desde la perspectiva del hardware, como del software),
dicha información -generalmente- está soportada por un sistema para su gestión SGBD.
Las bases de, datos son accedidas generalmente por un conjunto de aplicaciones
periféricas que incluyen tecnologías y herramientas de muy diverso tipo con los que
interactúa y que sirven de interfaz entre los usuarios y la base de datos. En la
2. Sistemas basados en conocimiento
5
actualidad, el impulso impuesto por el desarrollo de los sistemas de información, ha
provocado la evolución de las bases de datos en conjuntos abstractos, denominados
almacenes de datos (datawarehouse). ~
Incorporar conocimiento en un sistema de bases de datos fue sugerido por el desarrollo
en el campo de la Inteligencia Artificial (programación de comportamientos inteligentes).
La investigación en IA incluye estudios sobre la representación de reglas lógicas que
operen sobre los datos, esto es sistemas que descansan sobre una base de
conocimientos para razonar sobre el conjunto de datos.
Históricamente, la evolución de los SGBD nos ha proporcionado métodos para analizar
datos y encontrar correlaciones y dependencias entre ellos. Sin embargo, el análisis de
datos ha cambiado recientemente y ha adquirido una mayor importancia, debido
principalmente a tres factores:
a) Incremento de la potencia de los ordenadores. Aunque la mayoría de los métodos
matemáticos fueron desarrollados durante los años 60 y 70, la potencia de cálculo de
los grandes ordenadores de aquella época (equivalente a la de los ordenadores
personales de hoy en día) restringía su aplicación a pequeños ejemplos “de juguete”,
fuera de los cuales los resultados resultaban demasiado pobres. Algo similar ha
ocurrido con la capacidad de almacenamiento de los datos y su coste asociado.
b) Incremento del ritmo de adquisición de datos. El crecimiento de la cantidad de datos
almacenados se ve favorecido no sólo por el abaratamiento de los discos y sistemas de
almacenamiento masivo, sino también por la automatización de muchos experimentos y
técnicas de recogida de datos. Se estima que la cantidad de información almacenada
en todo el mundo se duplica cada 20 meses; el número y tamaño de las bases de datos
probablemente crece más rápidamente.
c) Por último, han surgido nuevos métodos, principalmente de aprendizaje y
representación de conocimiento, desarrollados por la comunidad de inteligencia
2. Sistemas basados en conocimiento
6
artificial, estadística y física de dinámicas no lineales. Estos métodos complementan a
las tradicionales técnicas estadísticas en el sentido de que son capaces de inducir
relaciones cualitativas generales, 0 leyes.
Estos nuevos métodos matemáticos y técnicas software, para análisis inteligente de
datos y búsqueda de regularidades en los mismos, se denominan actualmente técnicas
de minería de datos o dafa miníng. A su vez, la minería de datos ha permitido el rápido
desarrollo de lo que se conoce como descubrimiento de conocimiento en bases de
datos.
En este capítulo, desarrollaremos un estudio introductorio a los SGBD, pormenorizando
en su enfoque y evolución, derivando los fundamentos teóricos en que se soportará el
desarrollo de bases de datos inteligentes.
2.2 Enfoques de los SGBD
Una clasificación primaria de los SGBD, nos permite establecer los tipos básicos según
el tipo de estructura de datos que soporta:
l
Enfoque jerárquico. Parte de una estructura de datos basada en un conjunto de
registros diferentes guardados en un único archivo y jerarquizados entre sí mediante
ligas. Su estructura de árbol, impone que un elemento padre puede tener varios
elementos hijo, pero no su inverso. Precisa de punteros físicos.
l
Enfoque de Red (Codasyl). Similar al enfoque jerárquico en tanto al uso de
registros y ligas,
pero dentro del esquema jerárquico un elemento de inferior
jerarquía puede tener varios elementos situados a un nivel superior del mismo. Las
bases de datos gestionadas bajo este enfoque implementan registros conectores
(estructuras de datos que sirven para asociar a otras dentro de un fichero). Precisa
de punteros físicos
2. Sistemas basados en cxxmcimiento
l
7
Enfoque relacional. Se caracteriza por la representación de datos en forma de
tablas, en las que los conjuntos de registros tienen un formato fijo e idéntica
estructura. El enfoque relaciona1 en bases de datos parte del modelo relaciona1 en
matemáticas y, por tanto, son susceptibles de aplicar al mimo todas las
formulaciones teóricas que éste presenta; en objetivos posteriores desarrollamos
una descripción exhaustiva de este enfoque, puesto que el prototipo BDI, de nuestro
estudio utiliza un SGBD relaciona1 (Microsoft Jet).
l
Orientado a objetos. Basada en el encapsulamiento de código y datos en unidades
denominadas objetos, que interactúan con el sistema a través de mensajes. El
agrupamiento de objetos con métodos y variables comunes se estructura en clases
jerárquicas.
l
Enfoque L6gico.
No es esencialmente distinto al enfoque relacional, pero se
sustenta en la lógica de predicados de primer orden para representar y manipular los
datos, con lo que se obtiene un modelo relaciona1 flexible con capacidades para la
deducción automática, a éste pertenecen los SGBD deductivos.
Una característica de los tres primeros modelos mencionados es que sólo aceptan
datos escalares individuales tipificados y nulos (“NULL”). Como característica general,
los esquemas han sido desarrollados con la capacidad de operar sobre datos “ideales”,
en el supuesto de que la información a procesar es exacta, correcta y bien definida.
2.3 Evolución de los SGBD
La historia de las bases de datos inicia a mediados de los años cincuenta, en el
momento en que comenzaron a introducirse los ordenadores para automatizar la
gestión de las empresas, fundamentalmente con desarrollos en COBOL, y se han
caracterizado por el uso de tecnologías orientadas a la estructuración de datos
mediante modelos jerárquicos y Codasyl (p.ej. IMS de IBM; IDMS de Cullinet) de lógica
8
2. Sistemas basados en conocimiento
procedimental, que obligan al programador a desplazarse registro a registro, hecho que
implica una escasa flexibilidad.
En 1970 se propuso el modelo relacional, basado en los trabajos del Dr. Codd,
básicamente el modelo matemático que dio fundamentos a la segunda generación de
SGBD, caracterizada por una mayor independencia físico-lógica, dado que actúan
sobre conjuntos de registros; entre ellas destacan ORACLE, DB2, INGRES, INFORMIX,
SYBASE, etc. Codd propuso un modelo simple de datos en el que todos ellos se
representarían en tablas constituidas por filas y columnas. A dichas tablas se les dio en
nombre matemático de relaciones, denominándose así el sistema como relacional.
Codd también propuso dos lenguajes para manipular los datos en las tablas: álgebra y
cálculo relacional, que soportan la manipulación de los datos sobre la base de
operadores lógicos en lugar de los punteros físicos utilizados en los modelos jerárquicos
y de red. El resultado fue la aparición de sistemas relacionales durante la última mitad
de los setenta que soportaban lenguajes como el Structured Query Language (SQL), el
Query Language (Quel) y el Query-by-Example(QBE): los trabajos de investigación que
se realizaron durante la década de los ochenta se centraron en la optimización de
consultas, lenguajes de alto nivel, teoría de la normalización, organizaciones físicas para
el almacenamiento de las relaciones, algoritmos para la gestión de memorias intermedias
(bufen), técnicas de indexación para un acceso asociativo más rápido (distintas
variaciones de los árboles), sistemas distribuidos, diccionarios de datos, gestión de
transacciones, etc. Estas investigaciones han tenido como consecuencia la elevada tasa
de transacciones de muchos de los productos actuales que permiten asegurar entornos
transaccionales en línea (OLTP) muy eficientes y seguros. También cabe recordar que
durante la primera mitad de los ochenta se estandariza el lenguaje SQL (el SQUANSI
se
aprueba en 1986), ofreciendo, al cabo de poco tiempo, prácticamente todos los productos
una interfaz SQL, aún los no relacionales (sistemas “renacidos”).
El enfoque relaciona1 permite a los programadores la manipulación de tuplas procedentes
de distintos ficheros y tablas en una misma base de datos mediante consultas
9
2. Sistemas basados en conocimiento
estructuradas, habilitando acciones múltiples sobre los registros. La aparición y
estandarización de SQL, permitió una mayor integración, multiplicó las tareas asignadas a
las bases de datos e implicó el desarrollo de sistemas de uso transparente, cuya facilidad
de manejo derivó en una excepcional productividad e impresionante impacto económico.
La tercer generación de SGBD, tiene como principal característica la optimización
relaciona1 de los sistemas en entornos multiusuario, la gestión de objetos que permite
tipos de datos complejos (texto, imagen, audio...), el encapsulamiento de la semántica
de datos que proporciona un soporte robusto para la recuperación automática de la
información y mantenimiento de las restricciones de integridad entre datos.
Es posible clasificar los distintos sistemas como gestores de información “natural”. En
la evolución de esta generación destacan dos indicadores: una arquitectura a tres
niveles con descripción recursiva de datos (ANSI, ISO) como referencia; y el modelo
relacional.
l
Nivel
Definición
l
Conceptual
Nivel estructural de la base de datos que define su esquema lógico.
Externo
Nivel estructural de la base de datos que define las vistas de los
I
usuarios.
Interno
Nivel estructural de la base de datos que define la vista física .
J
Tabla 1. Arquitectura de tres niveles.
La explosión de los sistemas de información obligó a los desarrolladores de SGBD a la
implementación de potentes gestores destinados a usuarios finales, con interfaces
intuitivas -gráficas fundamentalmente- dotadas de asistentes generadores de código:
Access
(Visual Basic, SQL), Visual Fox (SQL), En la sigiente figura, ilustramos un
resumen de la cronología expuesta:
10
2. Sistemas basados en conocimiento
AKhlYos con
acceso directo
ArChi~S
Secuenciales
T
1960
SGBD
JERARQUICOS
SGBD
RED
SGBD
RELACIONALES.
1970
T
1980
1
Publicación del modelo
relaciona1 de Codd.
1990
2000
1
SGRD
ORIENTADOS
AL OBJETO.
SGBD LOGICOS
(REL. AMPLIADO)
2.4 Clasificación de los SGBD
2.4.1 Sistemas Orientados al proceso y SGBD clásicos
Sistemas que operan sobre conjuntos de registros agrupados en “ficheros”, cuya
naturaleza reside en la recuperación y almacenamiento simple, dado que no almacenan
ningún tipo de información para el procesamiento de datos, las restricciones, procesos y
el control se distribuye en los programas que acceden a los ficheros.
Estos sistemas “clásicos” enfrentan graves problemas de redundancia al encontrarse
dispersa la semántica de los datos en los programas. Se distinguen por el acceso
secuencial a cadenas de caracteres, interpretadas por los programas.
Este tipo de sistema no es considerado como una base de datos en el sentido estricto
del término; será hasta que aparezcan los primeros ficheros u archivos en los que
pueda almacenarse la descripción de los datos (catálogo o diccionario) que
consideremos la primer clasificación de SGBD (Clásicos), aún cuando prácticamente
todas las restricciones sobre los datos se comprueban en los programas.
ll
2. Sistemas basados en conocimiento
/ ,
Progamas
I
2.4.2 SGBD semánticos
En la medida en que evolucionaron los componentes físicos de los ordenadores y se
hizo posible el uso de mayor memoria para operaciones lógicas, los SGBD incorporaron
mayor número de información sobre los datos en el propio catálogo de la base de datos,
habilitando restricciones de diferentes tipos (CHECK), aserciones e incluso dominios,
así, en un SGBD semántico la base de datos incluye información sobre restriccioneti,
información sobre datos y los datos en sí.
2.4.3 SGBD activos
En este tipo de sistemas, los desarrolladores incorporan acciones que el sistema
ejecuta sin la intervención del usuario, a través de disparadores, reglas, demonios, etc.
Tecnología basada en procedimientos que se activan de forma automática, y que han
sido previamente especificados en la fase de definición intensión- de la base de datos.
De hecho, representan patrones invocados donde las condiciones para invocar se
12
2. Sistemas basados en conocimiento
revisan en cada paso, frente a los SGBD semánticos, encontramos además, en la base
de datos información de control.
Atendiendo los conceptos de algunos autores, un SGBD activo se distingue porque si
modelo de conocimiento describe las situaciones y las reacciones correspondientes:
Evento, Condición, Acción (ECA, cuando ocurre un evento se evalúa la condición y si
ésta se satisface se ejecuta la acción). Sistemas que incorporan una ampliación al
Lenguaje de Definición de Datos (LDD), con el objetivo de definir con mayor precisión y
naturalidad el conjunto de reglas que se ejecutan, el uso de SQL es prioritario en el
desarrollo de estos sistemas.
PRoGRAM4s
1
w. -sos
2.4.4 SGBD deductivos
La programación lógica ha ido evolucionando desde mediados de Ia década pasada
hasta nuestros días ampliando sus horizontes en el desarrollo de sistemas gestores de
bases de datos, la programación lógica, en forma similar a los primeros desarrollos de
bases de datos. Centra su acción en el núcleo de los programas que acceden a los
datos, de hecho, la programación lógica se utiliza principalmente como lenguaje de
consulta, mientras que la tecnología de base de datos se emplea para asegurar un
almacenamiento eficiente y fiable. Los SGBD deductivos se puede implementar
añadiendo al SGBD facilidades para almacenar y gestionar reglas, extendiendo el
procesador de consultas del SGBD o acoplando un SGBD con un sistema Prolog.
Aunque, normalmente, en lugar de utilizar un lenguaje como Prolog (que procesa una
2. Sistemas basados en conocimiento
13
tupla a la vez) se suele emplear un lenguaje relaciona1 declarativo denominado
DATALOG, que es poco procedimental y orientado a conjuntos, lo que lo hace más
adecuado para bases de datos. Sintácticamente el DATALOG es muy parecido al Prolog,
existiendo en la actualidad diferentes versiones. Este tipo de lenguajes resulta muy útil
para hacer consultas de tipo recursivo, siendo clásica la de los ancestros de una persona
(conociendo que los padres de una persona son sus ancestros, así como los padres de
los ancestros). Sin embargo, todavía no existen productos comerciales que puedan
incluirse en esta categoría, aunque algunas de sus nociones se van incorporando en la
nueva generación de SGBD relacionales-activos”
Actu dizacìón
l
Las
Fig.
4 SGDB Deductivos
reglas, suelen almacenarse en ficheros de texto o con formato plano
independientes, con el objetivo de ser “reprogramables” y se accede a ellos generalmente- en forma binaria; el motor de inferencia se encuentran en el núcleo del
programa que accede a los datos. En sistemas más complejos se enlaza el modulo de
“respuesta” como la entrada “inf. de procesos” de una SGBD activa.
2.4.5 SGBD orientadas al objeto
Conocidos también como SGBO, aunque podríamos considerarlos como la tendencia a
extender los SGBD relacionales mediante la incorporación de la programación orientada a
14
2. Sistemas basados en conocimiento
objetos, en esta tendencia destacan: interfaces de PO0 sobre motores relacionales
(Visual Basic, VC++, J++, etc.), herramientas de conversión de esquemas relacionales a
esquemas OO y viceversa, herramientas de migración de esquemas, interoperabilidad de
J
BDR y BDO, etc.
Este tipo de sistemas comienza a incursionar en forma sólida en el mercado, debido a la
aparición de un número cada vez mayor de herramientas de conectividad
entre los
mundos relacional y orientado a objetos:
l
lnterfaces de programación orientada a objetos sobre motores relacionales,
l
Herramientas de conversión de esquemas relacionales a esquemas OO y viceversa,
l
Herramientas de migración de esquemas, bases de datos y aplicaciones relacionales a
OO y viceversa,
l
Herramientas que aseguran la interoperabilidad de bases de datos relacionales y
bases de objetos.
Algunos aspectos en los que se considera necesaria una mayor investigación, son:
combinar acceso declarativo y acceso navegacional, soportar completamente la
funcionalidad de los objetos compuestos, acceso a los metadatos, almacenamiento de los
servicios (métodos) en la base de datos, definición dinámica de clases, mecanismos para
definir restricciones y disparadores, gestión de la extensión de las clases, soporte de
vistas y lenguajes de consulta y de optimización, es conveniente particularizar que en
febrero de 1997 en reunión del grupo iSO/IEC JTCI/SC21ANG3 se presentó la solicitud
de aprobación del SQL3 (las partes Foundafion, Bindings, Persisfent Sto& Modules y
O@ect) como norma internacional con efectos a diciembre de 1998; actualmente existe
una sólida convergencia entre OQL y SQL3.
2.4.6 SGBD multidimensionales
Los sistemas de base relacional han sido diseñado específicamente para soportar el
procesamiento analítico de los datos: On Line Analytical Processing (OLAP), representan
2. Sistemas basados en conocimiento
15
los datos mediante matrices de n dimensiones d.enominadas
“hipercubos” asignando a
cada dimensión un dominio específico jerarquizado, cada casilla del hipercubo contiene
datos agregados (infor-kación
de...) que relacionan los elementos entre las distintas
dimensiones, de hecho, éstas actúan como apuntadores para identificar los valores dentro
de la matriz.
Es importante destacar que el modelo de matriz de datos que aplica la lógica
multidimensional no está asociado a una representación física de los datos, ni utiliza LDD
particulares, sus principales diferencias frente al modelo de tablas relacionadas, reside en
que todos los dominios pueden encontrase relacionados, en contraparte dentro del
esquema de tablas, las relaciones afectan sólo campos clave o campos con naturaleza
idéntica-asociativa.
Ml
M2
M3
Fig. 5 SGBD Multidimensionales
Otra significativa diferencia es que los sistemas relacionales soportan estructuras planas y
presentan serias dificultades para gestionar interrelaciones multidimensionales por
ejemplo, las limitaciones funcionales de SQL que sólo pueden efectuar SUM (sumatoria) y
AVG (Average, promedio) del mismo campo en todas las tuplas, pero no puede aplicarse
a diferentes columnas en una misma tupla.
2. Sistemas basados en conocimiento
16
2.5 Conocimiento y bases de datos
Los métodos generales desarrollados para la resolución de problemas y técnicas de
búsqueda al inicio de la era de la IA demostraron no ser suficiktes para resolver los
problemas orientados a las aplicaciones, ni fueron capaces de satisfacer los difíciles
requerimientos de la investigación. A este conjunto de métodos, procedimientos y
técnicas, se lo conoce como Inteligencia Artificial Débil. La principal conclusión que se
derivó de este trabajo inicial fue que los problemas difíciles sólo podrían ser resueltos
con la ayuda del conocimiento específico acerca del dominio del problema.
La aplicación de estas ideas dio lugar al desarrollo de los denominados Sistemas
Basados en Conocimiento (Knowledge Based Systems) y al aparecimiento de la
Ingeniería Cognoscitiva, como una rama de la IA, que estudia los sistemas basados en
el conocimiento. La definición de un sistema basado en conocimiento puede resumirse
de la siguiente manera: “Es un sistema computarizado capaz de resolver problemas en
el dominio en el cual posee conocimiento específico”.
La solución es esencialmente la misma que hubiera dado un ser humano confrontado
con idéntico problema, aunque no necesariamente el proceso seguido por ambos
puede ser igual.
El simple concepto dado, puede causar confusión ya que muchos sistemas basados en
programas convencionales podrían ser incorrectamente categorizados como sistemas
basados en conocimiento.
Esta inconsistencia puede ser aclarada, sobre la base de tres conceptos fundamentales
que distinguen a los sistemas basados en conocimiento de los programas algorítmicos
convencionales y de los programas generales basados en búsqueda:
1 .La separación que existe entre el conocimiento, y la forma cómo éste es utilizado.
2.EI uso de conocimiento específico de un determinado dominio.
2. Sistemas basados en conocimiento
17
3.La naturaleza heurística, antes que algorítmica del conocimiento utilizado.
Dicho de una manera simple, los programas convencionales utilizan algoritmos para
resolver problemas, mientras que los sistemas basados en conocimiento resuelven
problemas donde las soluciones algorítmicas no existen o son muy costosas para ser
implementadas.
Actualmente, el amplio éxito de los sistemas de bases de datos, combinado con las
necesidades de gestión de información y los desarrollos que han emanado del estudio de
la IA, han dado como resultado un interés creciente en extender los sistemas de bases de
datos a sistemas de bases de datos inteligentes, elevando su utilidad al punto en que
pueda construirse conocimiento a partir de datos simples y que éste conocimientopermita controlare interpretar la estructura en su conjunto, Wiederhold , los describe de la
siguiente manera:
l
Conocimiento estructural. Conocimiento sobre las dependencias y restricciones entre
los datos.
l
Conocimiento general procedimental. Conocimiento que sólo puede ser descrito por un
procedimiento.
l
Conocimiento específico de la aplicación. Conocimiento que está determinado por las
reglas y convenios que se aplican en un dominio de problema en particular.
En el desarrollo de una base de datos inteligente implica la representación del
conocimiento, definido más allá de su forma extensa (hechos e instancias almacenados
en la base), mediante mecanismos lógicos.
2.6 Representación del conocimiento
La representación del conocimiento es el punto neural de la programación lógica
cuando ésta se aplica al procesamiento de datos, comprende el estudio de formalismos
y estructuras en el tratamiento de objetos, hechos, eventos, relaciones, etc. Los
2. Sistemas basados en conocimiento
18
tradicionales sistemas basados en conocimiento han utilizado con gran asiduidad, para
representar el conocimiento, una extensión de la lógica de proposiciones, denominada
lógica “O+” o representación objeto-atributo-valor.
s-
Fundamentemos, ¿ Qué es el conocimiento y qué técnicas se utilizan para represetarlo
y manipularlo ?
Puede ser definido como el conjunto de hechos y principios acumulados por la
humanidad, o el acto, hecho o estado de conocer. Es la familiaridad con el lenguaje,
conceptos,
procedimientos,
reglas,
ideas,
abstracciones,
lugares,
costumbres
y
asociaciones, unida a la habilidad de utilizar estas nociones en forma efectiva para
modelar diferentes aspectos del universo que nos rodea.
Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia
requiere de la posesión y acceso al conocimiento. Conocimiento no debe ser
confundido con datos o información. El conocimiento incluye y requiere del uso de datos
e información. Además, combina relaciones, dependencias, y la noción del saber con
datos e información.
En el caso que nos ocupa, tenemos la certeza de que de los datos en bruto raramente
se obtendrán de una manera directa beneficios. Su verdadero valor radica en la
posibilidad de extraer información útil para el soporte de decisiones o la exploración y
compresión del fenómeno que es la fuente de datos. En general, nuestra habilidad para
analizar y comprender conjuntos de datos masivos decrece mucho más rápidamente
que nuestra capacidad de unir y almacenar estos datos. Por tanto, es necesario una
nuèva generación de técnicas y herramientas computacionales para soportar la
extracción de conocimiento útil para grandes volúmenes de datos.
Otros términos relacionados con el conocimiento y que son ocasionalmente empleados
son epistemología y metaconocimiento. Epistemología es el estudio de la naturaleza del
19
2. Sistemas basados en conocimiento
conocimiento,
mientras que
metaconocimiento es conocimiento acerca del
conocimiento, esto es, conocimiento acerca de lo que se conoce.
El conocimiento puede ser de tipo procedimental, declarativo o heurístico. Conocimien;
procedimental es aquel conocimiento compilado que se refiere a la forma de realizar
una cierta tarea (el saber como hacerlo). Por ejemplo, los pasos necesarios para
resolver una ecuación algebraica son expresados como conocimiento procedimental.
Por otro lado, el conocimiento declarativo es conocimiento pasivo, expresado como
sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). La
información personal en una base de datos es un típico ejemplo de conocimiento
declarativo. Tales tipos de datos son piezas explícitas de conocimiento independiente.
El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos
para resolver problemas complejos. El adjetivo heurístico significa medio para descubrir.
Está relacionado con la palabra griega heuriskein que significa descubrir, encontrar. Se
entiende por heurístico a un criterio, estrategia, método o truco utilizado para simplificar
la solución de problemas. El conocimiento heurístico usualmente se lo adquiere a través
de la experiencia.
Dado que el conocimiento es importante y primordial para el comportamiento
inteligente, su representación constituye una de las máximas prioridades de la
investigación en IA. El conocimiento puede ser representado como imágenes mentales
en nuestros pensamientos, como palabras habladas o escritas en algún lenguaje, en
forma gráfica o en imágenes, como cadenas de caracteres o colecciones de señales
eléctricas o magnéticas dentro de un computador. En nuestro estudio, consideraremos
las representaciones escritas y sus correspondientes estructuras de datos utilizadas
para su almacenamiento en un computador. La forma de representación que se escoja
dependerá del tipo de problema a ser resuelto y de los métodos de inferencia que mejor
respondan al conjunto.
2. Sistemas basados en conocimiento
20
Una representación del conocimiento puede ser un esquema o dispositivo utilizado para
capturar los elementos esenciales del dominio de un problema. Una representación
manipulable es aquella que facilita la computación. En representaciones manipulables,
la información es accesible a otras entidades que usan la representación como parte de
una computación.
Debido a la variedad de formas que el conocimiento puede asumir, los problemas
involucrados en el desarrollo de una representación del conocimiento son complejos,
interrelacionados y dependientes del objetivo. El términos generales, se debe tratar que
el conocimiento esté representado de tal forma que:
0 Capture generalizaciones.
l
Pueda ser comprendido por todas las personas que vayan a proporcionarlo y
procesarlo.
l
Pueda ser fácilmente modificado.
l
Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o
completo.
l
Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería
considerarse para buscar soluciones.
El conocimiento declarativo puede ser representado con modelos relacionales y
esquemas basados en lógica. Los modelos relacionales pueden representar el
conocimiento en forma de árboles, grafos o redes semánticas. Los esquemas de
representación lógica incluyen el uso de lógica preposicional
y lógica de predicados.
Los modelos procedimentales y sus esquemas de representación almacenan
conocimiento en la forma de cómo hacer las cosas. Pueden estar caracterizados por
gramáticas
formales,
usualmente
implantadas
por sistemas 0
procedimentales y sistemas basados en reglas (sistemas de producción).
lenguajes
21
2. Sistemas basados en conocimiento
Las representaciones declarativas son usualmente más expansivas y costosas, en el
sentido que la enumeración puede ser redundante e ineficiente. Sin embargo, la
modificación de las representaciones declarativas es usualmente muy fácil;
simplemente se agrega
0 se elimina conocimiento.
Las
representaciones’
procedimentales, en cambio, pueden ser más compactas, sacrificando flexibilidad.
Representaciones prácticas pueden incluir elementos tanto declarativos (listado de
hechos conocidos), como procedimentales (un conjunto de reglas para manipular los
hechos).
2.6.1 Representación mediante cálculo de predicados
Fundamentado en la lógica simbólica, trata esencialmente las relaciones entre
enunciados o proposiciones simples y las compuestas (mediante conectivas aplicadas a
proposiciones simples). Las conectivas utilizadas son las siguientes:
Conectiva
Denotada como
0
OR
NO
NOT
IMPLICA
IF-THEN
EQUIVALENTE
IF-ANO-ONLY-IF
El resultado de evaluar una proposición es falso o verdadero:
Simbología
v
(no exclusivo)
11
=),=
=
-
2. Sistemas basados en conocimiento
22
Un sistema que implemente la inferencia por cálculo de predicados deberá diferenciar
los siguientes elementos:
-’
l
Términos, los cuales pueden ser; constantes, variables o funciones
l
Conjuntos de predicados asociados a uno o más argumentos definidos previamente
l
Conjuntos de conectivas u operadores lógicos (v. Tabla)
l
Cuantificadores universales: existe, para todo (V (X)).
Este mecanismo de inferencia es el más viable para la implementación de sistemas de
naturaleza deductiva, sin embargo resulta -en el mejor de los casos- insuficiente en la
implementación de sistemas de naturaleza inductiva.
2.6.2 Representación mediante redes semánticas
Tipo de representación surgida de trabajo en reconocimiento de lenguaje natural y la
búsqueda de modelos para la memoria humana en que intervienen dos tipos de
entidades básicas: Nodos y Ligas asociativas, donde los nodos pueden ser de dos
tipos:
l
l
Referidos en forma directa al significado del concepto - nodo tipo (clase).
Referidos indirectamente al concepto mediante un apuntador al nodo tipo - nodo
“token” (instancia u objeto).
Los “conceptos” se definen en forma indirecta en la red semántica mediante la
referencia a otros nodos, que a su vez se refieren a otros, etc. Esto es análogo a la
definición en un diccionario, en donde se usan otras palabras (nodos) para definir una
palabra, que a su vez están definidas en función de otras palabras.
Las ligas también pueden ser de diferentes tipos indicando diferentes relaciones entre
nodos, algunas de las mas usadas son:
23
2. Sistemas basados en conocimiento
l
B es una subclase o instancia de A (es)
l
B y A están relacionados en la forma indicada por R
l
Conjunción(A&B&C...)
l
Disjunción ( AV B v C . ..)
La red semántica se puede ver dividida en planos. En cada plano se tiene la definición
de un concepto, pero estos tienen ligas a otros planos en que hay conceptos
relacionados. Es decir que un nodo tiene ligas a nodos del mismo plano que lo definen,
pero también a nodos de otros planos que están relacionados, como subclases,
superclases, analogías, etc. En cada plano hay un nodo tipo y una serie de nodos
“token”,
los conceptos representados
de esta manera se pueden definir
inmediatamente (la definición directa mediante los nodos en el mismo plano) y por
concepto completo (todos los nodos y relaciones a las que se pueda llegar en red
partiendo de dicho nodo). En general es posible usar este tipo de estructuras para
diferentes tipos de razonamiento:
l.- Búsqueda asociativa: Encontrar si están relacionados dos o mas conceptos, y su
tipo de relación mediante el seguimiento de la red hasta encontrar las interacciones.
2.- Reconocimiento: Dada una serie de características (nodos “token”) encontrar el
concepto (nodo clase) que mejor las define mediante su búsqueda y seguimiento en la
red .
3.- Descripción: Expresar un concepto en base a sus componentes y relaciones entre
ellas (procesamiento del lenguaje natural).
2.6.3 Representación del conocimiento por reglas de producción
Representación que utiliza reglas de reestructuración en el reconocimiento sintáctico del
Lenguaje Natural; tiene sus antecedentes en los trabajos de Post (1943), los algoritmos
2. Sistemas basados en conocimiento
24
de Markov y en la lingüística de Chomsky. Básicamente, una regla de producción
consta de un par ordenado de símbolos (situación-acción), la sintaxis de las reglas es
diversa y se estructura en función del proceso de selección y ejecución de éstas.
-r
En el desarrollo de un motor que utilice está representación, se precisa de un intérprete
que accese
a las reglas, manipule variables y en algunos casos clases sintácticas
(parsing), en éste, recae el proceso de inferencia denominado “control”:
l
Selección de las reglas pertinentes.
l
Validación (reglas cumplidas)
l
Ejecución de las acciones especificadas por las reglas cumplidas.
Podemos observar que funcionalmente el sistema opera en fases de reconocimiento
(selección de reglas pertinentes, validación) y acción. El proceso de validación deberá
además contar con un esquema de operación para discriminar en caso de que exista
más de una regla aplicable a una situación dada:
a) Establecer orden en los datos
b) Clasificar reglas por prioridad de ejecución
c) Ejecutar la regla más recientemente instanciada
d) Metareglas.. .
Los sistemas basados en la representación del conocimiento mediante producción de
regias son útiles en los casos donde se trabaja con gran cantidad de estados
independientes: sistemas con objetivos amplios y acciones de corto alcance, dada su
representación modular y uniforme.
2.6.4 Representación del conocimiento por objetos estructurados
Los objetos estructurados tienen diversas denominaciones, entre las que destacan:
Esquemas (Bartlett 1932), frames (Mìnsky 1975), Scripts (Schank, Abelson
1977),
2. Sistemas basados en conocimiento
25
Objefos (Goldeberg. 1977, Steels 1982, entre otros), Descriptores funcionales (Kay M.
1982) las características generales de este modelo de representación son:
a) Cada objeto tiene asociado un conjunto de atributos que lo caracterizan. -’
b) Cada atributo tiene asociado un valor, el cual a su vez puede ser otro objeto
c) Los atributos(valor) corresponden a:
1. El nombre de un procedimiento específico (ejecutable automáticamente o
mediante requisición).
2. Apuntadores a otros objetos.
3. Valores obtenidos durante ejecución.
4. Valores por defecto
5. Constantes.
Los estados de los objetos definidos por el sistema son:
Activos
Cuando se encuentra presente en la lista de hipótesis en
curso de tratamiento.
Semiactivos
Cuando es parte de una hipótesis alternativa.
Inactivos
Cuando el objeto se ha eliminado o no ha sido instanciado.
2.6.5 Representación mediante procedimientos
Este tipo de representación utiliza un lenguaje de alto nivel en el tratamiento de los
conocimientos, en forma explícita mediante un programa. El comportamiento del
programa está dirigido por instrucciones, los conocimientos que trata no se expresan en
forma declarativa, sino que se encuentran a través de todo el programa.
26
2. Sistemas basados en conocimiento
2.6.6 Representación mediante árboles de decisión
Los árboles de decisión son una forma de representación sencilla, muy usada entre los
sistemas de aprendizaje supervisado, para clasificar ejemplos en un número finito de
clases. Se basan en la partición del conjunto de ejemplos según ciertas condiciones que
se aplican a los valores de los atributos. Su potencia descriptiva viene limitada por las
condiciones o reglas con las que se divide el conjunto de entrenamiento; por ejemplo,
estas reglas pueden ser simplemente relaciones de igualdad entre un atributo y un
valor, o relaciones de comparación (“mayor que”, etc.), etc. Los sistemas basados en
árboles de decisión forman una familia llamada TDIDT (Top-Down Induction of Decision
Trees), cuyo representante más conocido es ID3 (Interactive Dichotomizer) se basa en
la reducción de la entropía media para seleccionar el atributo que genera cada partición
(cada nodo del árbol), seleccionando aquél con el que la reducción es máxima. Los
nodos del árbol están etiquetados con nombres de atributos, las ramas con los posibles
valores del atributo, y las hojas con las diferentes clases.
2.6.7 Representación mediante listas de decisión
Las listas de decisión son otra forma de representación basada en lógica de
proposiciones. Es una generalización de los árboles de decisión y de representaciones
conjuntivas (CNF) y disyuntivas (DNF). Una lista de decisión es una lista de pares de la
forma (6 , CI >, (& , CS
> ,...,
(d n ,
C n ) donde cada d i es una descripción elemental,
cada C i es una clase, y la última descripción C n es el valor verdadero.
La clase de un objeto será C j cuando d j sea la primera descripción que lo satisface.
Por tanto, se puede pensar en una lista de decisión como en una regla de la forma “si dl
entonces CI , sino si d2 . . . , sino si d n entonces C n “. Se pretende mejorar el aprendizaje
a partir de ejemplos con ruido (al evitar la dependencia de ejemplos específicos e
incorporar una poda del espacio de búsqueda). Las descripciones elementales de los
pares que forman la lista de decisión tienen la misma forma que los complejos de AQ.
2. Sistemas basados en conocimiento
27
2.7 Representación Lbgica de un SGDB relaciona1
En los siguientes párrafos ofreceremos una visión detallada del esquema relacional,
desde la óptica de la lógica de primer orden, ocupándonos de 4a estructura e integridad
de los datos así como de su manipulación.
2.7.1 Estructura e integridad.
Con atención a cómo se encuentran estructurados los datos: Un dominio es un conjunto
-normalmente finito- de valores.
El producto cartesiano de una serie de dominios &;D z;...;&, denotado por: D 7 x D 2 x...
x Di, es el conjunto de todas las tuplas (x I;X 2;...x “) tales que para cualquier i, i = 1 ;..,; n
se verifica que X j E D i. Se llama relación a cualquier subconjunto del producto
cartesiano de dos o más dominios;
Una instancia de BD es un conjunto finito de relaciones finitas. Se llama cardinalidad de
una relación al número de tuplas que lo contiene. La aridad o grado de una relación R c
D, x D 2 x . . . x D,
es n i, esto es, el número de dominios que intervienen en su
definición. Normalmente una relación es representada como una tabla de valores, en
las que las columnas llevan asociado un identificador (atributo), así los valores de un
atributo asociado a la columna i, pertenecen al dominio Di.
Una relación R de atributos AI: AZ; . . . An; define lo que se llama un esquema de relación,
denotado por
R(A,,. AZ: . . . An), de manera que una relación específica RI, con un
conjunto concreto de tuplas resulta una instancia o extensión de dicho esquema.
No todas las instancias acordes con un determinado esquema son semánticamente
válidas (coherentes con la semántica asociada de BD), por lo que existen restricciones
de integridad asociadas a cada esquema de relación. Finalmente, podemos definir la
2. Sistemas basados en conocimiento
28
estructura general como un superconjunto de esquemas de relación y de restricciones
de integridad.
2.7.2 Manipulación de datos
La manipulación de datos en el esquema relaciona1 se efectúa mediante un lenguaje
formal: Álgebra y Cálculo Relacional, de la primera obtenemos una colección de
operadores y operaciones explícitas, la segunda proporciona la semántica para definir
las relaciones resultantes.
l
Alaebra Relacional.
Los operadores básicos de AR pueden agruparse en:
Operación de asignación. Que asigna los resultados de otras operaciones relacionales
a una nueva relación con el objetivo de preservar los resultados.
Operaciones sobre conjuntos. Unión, Intersección, Diferencia y Producto Cartesiano, a
excepción de ésta última, se precisa que los operandos sean del mismo grado y que
los iésimos atributos tengan el mismo dominio.
Operaciones especiales. Selección, Proyección, reunión y División:
* Selección: Operador algebraico que produce un subconjunto “horizontal” de una
relación específica, por ejemplo, el subconjunto de las tuplas de una Relación para el
cual se cumple un predicado dado, expresado como combinación booleana de
términos.
*Proyección: Produce un subconjunto “vertical” de una relación dada, es decir, el
subconjunto obtenido al seleccionar los atributos.
29
2. Sistemas basados en conocimiento
*Reunión: La reunión de la relación A sobre el atributo X con la relación 5 sobre el
atributo Y, da como resultado todas las tuplas t, tales que f, es la concatenación de una
tupla de A con una de 5 en que se verifique una condición determinada sobre Xe Y.
-*División: Divide una relación R de grado m+n entre una relación R’ de grado n,
produciendo una de grado M.
l
Cálculo Relaciona1 (tuolas KRTI Y dominiosfCRD1)
Cálculo Relaciona/ de Tuplas. Una expresión en el CRT, tiene la forma {p/p(t)l que
representa el conjunto de todas las tuplas f que hacen verdadera la fórmula o predicado
P. Usaremos f[A] para denotar el valor que tiene la tupla f para el atributo A y f E R para
denotar que f está en la relación R. Se dice que una variable para f es libre si no se
encuentra cuantificada (universal o existencialmente).
Una fórmula del CRTse compone de átomos, de las siguientes formas:
-
k E R, donde k es una variable tupla y R una relación.
-
k[x] 8 v[y], donde k y v son variables tupla, x es un atributo sobre el que se define k y
0 operador de comparación (c, >, >=, c=,=).
-
s[x] 8 c, igual que el caso anterior, con c como constante del domino del atributo x.
Las fórmulas se construyen a partir de los átomos usando las siguientes reglas:
-
Un átomo es una fórmula.
-
Si P, es una fórmula, entonces (PI ) y (-,P,), también lo son.
- Si PI y PZ son formulas, también lo son PI A P2 , PI
-
v
P2, y P, 2 P2
Si PI (s) es una fórmula que contiene una variable de tupla libre s,
entonces 3s E R (Pr (s)) y VS E R (P I (s)) también lo son.
2. Sistemas basados en conocimiento
30
Siguiendo esta definición es posible generar una relación infinita, por ejemplo el número
de tuplas que no están en una relación {VT (tER)}, así se introduce el concepto de
dominio de una fórmula P, dom(P) es el conjunto de todos los valores representados
por P.
Cálculo relaciona/ de dominios. Esta forma del cálculo relaciona1 utiliza variables de
dominio a las que se asignan valores del dominio de un atributo (dato).
Las
expresiones tienen la forma: {CXI ,x2,. . . ,xn > 1P (x1,x2 ,..., xn ) ) d o n d e x1,x;! ,..., xn
representan las variables de dominio y P la fórmula compuesta de átomos, éstos
pueden tener las siguientes formas:
- < XI ,x~,...,x” >E R, donde R es una relación de n atributos.
- xey, con x e y operados por comparación.
- xec, equivalente al caso anterior y c es una constante del domino del atributo
de x..
31
3. Sistemas expertos
3. Sistemas expertos
3.1 Antecedentes
-’
En las últimas décadas, se han producido grandes cambios en el entorno de las
empresas y las organizaciones, como consecuencia de los avances de las nuevas
tecnologías de la producción, de la información y de las comunicaciones. En este nuevo
entorno, la toma de decisiones de una manera eficaz precisa de una forma rápida de
información suficiente, actualizada y oportuna, utilizando los ordenadores electrónicos y
los medios que proporciona la tecnología de la información. Además, gracias a las
investigaciones realizadas en la inteligencia artificial, con el desarrollo de los sistemas
basados en el conocimiento y los sistemas expertos, también se han producido grandes
avances en el tratamiento del conocimiento, factor fundamental para la toma de
decisiones.
El estudio y desarrollo de los Sistemas Expertos (SEs) comenzó a mediados de la
década del 60. Entre 1965 y 1972 fueron desarrollados varios de estos sistemas,
muchos de ellos tuvieron un alcance muy limitado, otros como MYCIN, DENDRAL y
PROSPECTOR, constituyeron la base histórica de los SEs y aún en la actualidad son
de gran interés para los investigadores que se dedican al estudio y construcción de los
mismos.
En teoría estos sistemas son capaces de razonar siguiendo pasos comparables a los
que sigue un especialista (médico, biólogo, geólogo, matemático, etc.), cuando resuelve
un problema propio de su disciplina. Por ello el creador de un SE debe comenzar por
identificar y recoger, del experto humano, los conocimientos que éste utiliza:
conocimientos teóricos, pero sobre todo los conocimientos empíricos adquiridos en la
práctica.
Los sistemas expertos son programas de ordenador que capturan el conocimiento de
un experto e imitan sus procesos de razonamiento cuando resuelven los problemas en
32
3. Sistemas expertos
un determinado dominio. Los sistemas expertos son un subconjunto especial dentro de
los sistemas basados en el conocimiento, que incorporan en la base de conocimiento
del sistema el conocimiento de un experto. Una definición formal de los sistemas
expertos, aceptada por muchos autores, es la aprobada por el Grupo Especialista en
Sistemas Expertos de la Sociedad Británica de Ordenadores, que los define de la forma
siguiente: “Un sistema experto es visto como la incorporación en un ordenador de un
componente basado en el conocimiento, que se obtiene a partir de la pericia
(conocimiento técnico) de un experto, de tal forma que el sistema pueda ofrecer
asesoramiento inteligente o tomar una decisión intelig.ente sobre una función del
proceso. Una característica adicional deseable, que muchos considerarían fundamental,
es la capacidad del sistema, si se le solicita, de justificar su propia línea de
razonamiento de un modo directamente inteligible para el interrogador...“. Los sistemas
expertos también pueden ser definidos en función de sus características funcionales. En
este sentido, Hayes-Roth considera como características más importantes de los
sistemas expertos las siguientes:
1. Pueden resolver problemas normalmente atacados por los expecos humanos;
2. Razonan heurísticamente, usando lo que los expertos consideran que son reglas
empíricas efectivas, e interactúan con los humanos de forma adecuada, incluyendo
el lenguaje natural;
3. Manipulan y razonan sobre descripciones simbólicas;
4. Pueden funcionar con datos inciertos;
5. Contemplan múltiples hipótesis;
6. Pueden explicar su proceso de razonamiento y justificar sus conclusiones.
7. Aplican técnicas de búsqueda.
8. Pueden inferir nuevos conocimientos a partir de los existentes.
3.2 Programación lógica en Sistemas expertos
La programación lógica tiene sus antecedentes más próximos en los trabaios
de prueba
automática de teoremas de los años sesenta. J. A. Robinson propone en 1965 una
33
3. Sistemas expertos
regla de inferencia a la que llama resolución (Regla que se aplica sobre cierto tipo de
fórmulas del Cálculo de Predicados de Primer Orden, llamadas cláusulas y la
demostración de teoremas bajo esta regla de inferencia se lleva a cabo por reducción al
absurdo), mediante la cualJa demostración de un teorema puede ser llevada a cabo de
manera automática, sus trabajos sirvieron de base al primer lenguaje de programación
que contempla, como parte del intérprete, los mecanismos de inferencia necesarios
para la demostración automática.
Este primer lenguaje está basado en el formalismo matemático de la Lógica de Primer
Orden y ha dado inicio a un nuevo y activo campo de investigación entre las
matemáticas y la computación que se ha denominado la Programación Lógica.
En 1971 aparece PROLOG (Programing in Logic),
desarrollado en la Universidad de
Marsella, Francia, que cuenta con un lenguaje formal mediante el cual es posible
representar fórmulas llamadas axiomas, que permiten describir fragmentos del
conocimiento y, además, consta de un conjunto de reglas de inferencia que aplicadas a
los axiomas, permiten derivar nuevo conocimiento. Una característica general de la
arquitectura de sistemas en PROLOG, es la existencia de una “base de hechos” o
“base de conocimientos” que alimentan las variables particulares de los axiomas en el
proceso de inferencia, esta base, al igual que en los SGBD procedimentales, se
encuentran en un archivo externo al núcleo del programa, la base en sí, no contiene
información sobre los datos, ésta se deriva de la posición particular de cada término
(áridad).
La programación Lógica aplicada a los SGBD, es un campo relativamente nuevo, de
hecho, la mayoría de los SGDB comerciales no utilizan motores de inferencia en su
desarrollo, en virtud de que son sistemas orientados a la obtención de “información”, no
de “conocimientos” y sus áreas de aplicación -generalmente comerciales - no precisan
de la algorítmica compleja inherente a los sistemas basados en conocimiento. Sin
embargo la penetración de las tecnologías “expertas”, en el área comercial de las
empresas, obliga un replanteamiento de esta condición.
34
3. Sistemas expertos
La programación lógica aplicada al desarrollo de SGBD, comienza a formar parte de los
nuevos desarrollos de grandes corporativos, que ven en estos sistemas la plusvalía
inherente al desplazamiento de los expertos humanos. Es un hecho que los SGBD han
evolucionado para atender las exigencias de nuevos dominios culturales, científicos,
industriales y comerciales, generando distintos tipos de SGBD (ver. Clasificación de
SGBD, Cap. ll), y no se espera que la Programación Lógica de estos sistemas desplace a
los existentes, sin embargo, representan el camino ideal para aplicaciones específicas, en
las que se precisa la inferencia para manipular eficientemente un conjunto de datos y
representar conocimientos:
l
Sistemas de diagnosis. Que siguen un proceso de búsqueda de las razones del
funcionamiento incorrecto de un sistema a partir de la información disponible en la
base de datos. Aquí se podrían tener en cuenta tanto aplicaciones de diagnóstico
médico como de averías, en el primero de los casos existen antecedentes sólidos:
FLUIDEX,
EACH,
TROPICAID, SPHINX, y MYCIN (desarrollado a mediados de
1970) es el más representativo.
l
Sistemas de pronóstico. Que deducen consecuencias posibles a partir de una
situación. Su objetivo es determinar el curso del futuro en función de información
sobre pasado y presente. Esto abarca diversos problemas, tales como predicciones
meteorológicas, predicciones demográficas, o incluso previsiones de la evolución
bursátil entre otros. Quizá la aplicación más conocida sea PROSPECTOR, un
sistema para la evaluación de emplazamientos geológicos.
l
Sistemas de planificación. Que establecen una secuencia de acciones a realizar
encaminadas a la consecución de una serie de objetivos. En esta área, destaca la
simulación donde se busca representar un estado real y evaluar distintas variables
para determinar caminos óptimos. Los planes y las decisiones en la producción se
desarrollan y llevan a cabo en un mundo de representaciones simbólicas de hechos
y conjeturas, muchas de las cuales no están informatizadas y representan la
experiencia y el conocimiento de expertos. En cada estadio de los procesos de
3. Sistemas expertos
35
planificación, decisión y control para las operaciones de producción, sea ésta
automatizada o no, las personas expertas son las que asesoran, localizan los fallos
y dirigen. Ellas son las que ayudan a interpretar la multitud de datos procedentes de
Jos departamentos de diseño, de la planta de producción y de los representantes de
los clientes, observan modelos procesables en dichos datos, prueban mentalmente,
y con ordenadores, posibles líneas de acción, recomiendan las medidas que la
gerencia debe tomar y ayudan luego a poner en marcha sistemas pensados para
conseguir planificaciones mejores, operaciones más fluidas y una competencia más
efectiva. Los Sistemas de planificación ofrecen procedimientos informatizados para
perfeccionar la toma de decisiones de la gerencia por medio de la combinación del
conocimiento que poseen los expertos acerca del tipo de acciones que tiene que
efectuar y la forma y el tiempo en que debe llevarlas a cabo con la permanencia,
lógica, memoria y velocidad de cálculo del ordenador.
El común denominador de estos sistemas radica en la forma en que utilizan las bases
de datos, manipulando la información existente para aplicarla a soluciones que van
desde sencillas inferencias hasta complejos procesos de representación mediante el
uso de la lógica.
3.2.1 Conceptos básicos
Sistema experto como su nombre lo dice es un sistema computarizado que emula el
proceso de razonamiento de un experto humano en un área o campo especifico. Los
programas convencionales utilizan datos exactos lo que es una indudable ventaja de los
computadores. Esta clase de datos se denomina conocimiento factual o preciso.
Los humanos usamos una mezcla de ese conocimiento factual y de conocimiento
heurístico (o sea la intuición lógica), que es una indisputable ventaja de los humanos.
Los sistemas expertos tratan de emular ese conocimiento heurístico, lo que los hace
superiores a los programas convencionales ya que pueden tratar con datos “inciertos”,
3. Sistemas expertos
36
o sea no precisos. Básicamente el Sistema Experto esta compuesto por los siguientes
módulos:
1. Base de conocimientos: Consiste en las reglas, procedimientos y datos intrínsecos
al área del problema. Generalmente se construye a través de consulta con uno o
varios expertos del area, para incluir el conocimiento heurístico, manuales, etc. La
base, contiene el conocimiento del sistema con respecto a un tema específico para
el que se diseña el sistema. Este conocimiento se codifica según una notación
específica que incluye reglas, predicados , redes semánticas, frames y objetos.
2. Motor de inferencia: Es el mecanismo usado para extraer el conocimiento de la base
de conocimientos, para alcanzar una solución o conclusión determinada. Combina
los hechos y las preguntas particulares, utilizando la base de conocimiento,
seleccionando los datos y pasos apropiados para presentar los resultados.
3. Interface con el usuario: Es el medio de comunicación entre el sistema experto y el
usuario.
3.3 Sistemas expertos y Bases de datos Inteligentes
Aunque el desarrollo de un sistema experto esta claramente influenciado por los
métodos de representación del conocimiento aplicados a SGBD no cuentan con todas
las capacidades de gestión de éstos. Para los efectos de nuestro estudio, la
arquitectura de los sistemas expertos, constituye el eje sobre el que se ha de construir
el modulo de gestión de base de conocimientos, esto es, la gestión de procesos
deductivos de la base de reglas que opera sobre la base de datos.
Técnicamente en una BDI converge la arquitectura de un SE y sistemas basados en
conocimiento por lo que para en su desarrollo se incluye como aspecto fundamental la
programación del conocimiento (figura 6), la cual hace uso de la representación
explícita del conocimiento a utilizar por el sistema y de su interpretación y manipulación
3. Sistemas expertos
37
lógica por medio de mecanismos de inferencia, que permitan deducir nuevo
conocimiento a partir del que ya se conoce.
PrqramacióA de qistemas expertos
Pmgramación
diI crrntimiento
Figura 6. Aspectos a considerar en la programación de SE.
La programación basada en lógica brinda las capacidades de responder a preguntas
que no se pueden atacar fácilmente con los lenguajes de manipulación de datos de la
programación procedimental. Aunque la creación de vistas es similar al uso de reglas
para definir bases de datos en intenso, éstas no son tan poderosas como las reglas
lógicas. En particular, los lenguajes relacionales no pueden expresar consultas
recursivas que son a menudo útiles para formular consultas complejas (las
interrelaciones transitivas tales como la jerarquía entre partes, las listas de ancestros y
las jerarquías de dirección por ejemplo).
38
4. Arquitectura de una BD1
4. Arquitectura de BDI
4.1 Fundamentos
2
En el presente capítulo, abordaremos en forma somera los principales indicadores
teóricos que conceptualizan
la IA (Inteligencia Artificial) vinculados con los
alcances de nuestra investigación.
Una buena definición de IA es algo elusiva y controversial, fundamentalmente
porque la inteligencia humana no está completamente entendida. Cada libro de
texto en IA propone una definición que enfatìza las diferentes perspectivas que,
cada autor cree, encierra el campo. A continuación se transcriben algunas de
ellas:
“La IA es una rama de la ciencia de computación que comprende
el estudio y creación de sistemas computatizados
que manifiestan
cierta forma de inteligencia: sistemas que aprenden nuevos
conceptos y tareas, sistemas que pueden razonar y derivar
conclusiones útiles acerca del mundo que nos rodea, sistemas
que pueden comprender un lenguaje natural o percibir y
comprender una escena visual, y sistemas que realizan otro tipo
de actividades que requieren de inteligencia humana”.
“La IA es una cíencia que trata de ia comprensión de la
inteligencia y del diseiio de máquinas inteligentes, es decir, el
estudio y la simulación de las actividades intelectuales del hombre
(manipulación,
razonamiento,
percepción,
aprendizaje,
creacidn) “.
“La IA es el estudio de las computaciones que permiten percibir,
razonar y actuar”.
“La IA es un campo de estudio que busca explicar y emular el
comportamiento
inteligente en
términos de
procesos
computacionaies”.
“La IA estudia las representaciones y procedimientos que
automáticamente resuelven problemas usualmente resueltos por
humanos”
39
4. Arquitectura de una BD1
A pesar de la diversidad de conceptos propuestos para la IA, en g.eneral todos
coinciden en que la IA trata de alcanzar inteligencia a través de la computación.
Toda computación, requiere de una representación de cierta entidad y de un
proceso para su manipulación.
Desde el punto de vista de los objetivos, la IA puede considerarse en parte como
ingeniería y en parte como ciencia:
Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como
un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de
cómo desarrollar sistemas informáticos.
Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de
inteligencia, a través de la representación del conocimiento y de la aplicación que
se da a éste en los sistemas informáticos desarrollados.
Para usar la IA se requiere una comprensión básica de la forma en que se puede
representar el conocimiento y de los métodos que pueden utilizar o manipular ese
conocimiento.
Desde el punto de vista de ingeniería, la mayor parte del trabajo requerido para
construir sistemas de IA, está basado en el desarrollo de adecuadas
representaciones
de
conocimiento
y
sus
correspondientes
estrategias
de
manipulación.
4.2 Descripción
Las aplicaciones de mayor impacto que han surgido de la Inteligencia Artificial se
concentran en los Sistemas Basados en Conocimiento. Desafortunadamente, estos
sistemas son útiles en función de la validez de su conocimiento, además de que su
construcción es un proceso complejo y costoso. A su lado, los SGBD relacionales
4. Arquitectura de una BD1
40
han evolucionado hasta consolidar una robusta plataforma altamente funcional y
económica, con un alto grado de penetración en distintos mercados: los sistemas de
bases de datos conllevan la-áutomatización de cada vez más actividades reduciendo
costos y mejorando la calidad de desempeño, por ello, importantes grupos de
investigadores han concentrado sus esfuerzos en el diseño y desarrollo de
herramientas informáticas que apoyen el descubrimiento de conocimiento y exploten
la experiencia, en dichos sistemas.
En muchas áreas del saber, el conocimiento se ha venido obteniendo por el
clásico método hipotético - deductivo de la ciencia positiva. En él es fundamental
el paso inductivo inicial: a partir de un conjunto de observaciones y de unos
conocimientos previos, la intuición del investigador le conduce a formular la
hipótesis. Esta “intuición” resulta inoperante cuando no se trata de observaciones
aisladas y casuales, sino de millones de datos almacenados en soporte
informático.
En el fondo de todas las investigaciones sobre inducción en bases de datos
subyace la idea de automatizar ese paso inductivo. Las técnicas de análisis
estadístico, desarrolladas hace tiempo, permiten obtener ciertas informaciones
útiles, pero no inducir relaciones cualitativas generales, o leyes que enuncien su
comportamiento; para esto se requieren técnicas de análisis inteligente que
todavía no han sido claramente establecidas. Por ello, se incrementa de forma
continua la diferencia existente entre la cantidad de datos disponibles y el
conocimiento extraído de los mismos. Cada vez más investigaciones dentro de la
inteligencia artificial están enfocadas a la inducción de conocimiento en bases de
datos. Consecuencia de esta creciente necesidad ha aparecido un nuevo campo
de interés: la minería de datos (data miníng), que incluye nuevos métodos
matemáticos y técnicas siftware (WY, que puede traducirse como escuadriñar,
cernir, etc.) para análisis inteligente de datos.
4. Arquitectura de una BD1
41
La minería de datos surge a partir de sistemas de aprendizaje inductivo en
ordenadores, al ser aplicados a bases de datos, y su importancia crece de tal
forma que incluso es posible que, en el futuro, los sistemas de aprendizaje se
usen de foema masiva como herramientas para analizar datos a g.ran escala.
Se denomina descubrimiento de conocimiento en bases de datos (Knowdlege
Discovery
in Database) al proceso global de búsqueda de nuevo conocimiento a
partir de los datos de una base de datos. Este proceso incluye no sólo el análisis
inteligente de los datos con técnicas de minería de datos, sino también diversos
pasos previos de regular complejidad, como el filtrado y preprocesado de los
datos, y los posteriores, como la interpretación y validación del conocimiento
extraído en que se involucran técnicas de la ingeniería del conocimiento.
En el esquema operativo de la minería de datos se distinguen -en razón directa de
su implementación sobre SGBD relacionales activos- dos arquitecturas básicas: la
primera de ellas enfocada al descubrimiento de conocimiento mediante búsquedas
exhaustivas de características “interesantes” en el total de la BDD, por ejemplo un
comportamiento irregular en un dominio particular: descenso o incremento de los
valores que habitualmente los compone; la segunda -en que sustentamos nuestra
tesis- que opera con un propósito específico atendiendo un conjunto de reglas
predefinidas y operando en un marco finito (segmentos de la BDD), para la
solución de problemas particulares o la estructuración de conocimiento en
lenguaje de alto nivel, obtenida sobre dominios finitos ( v. fig. 7).
Normalmente el término minería de datos lo usan estadísticos, analistas de datos,
y la comunidad de sistemas de gestión de información, mientras que KDD es más
utilizado en inteligencia artificial y aprendizaje en ordenadores.
32
4. Arquitechua de una BD1
Informes por áreas
funcionales.
Transacciones,
mantenimiento de
archivos, informes
l- --e--d
Informes estratégicos.
Fig. 7 KDD en un dominio finito.
En las bases de datos inteligentes [BDI] se pretende capitalizar tanto la evolución
e integración de las bases de datos relacionales activas, como las técnicas
avanzadas
para
el
almacenamiento, recuperación y procesamiento de la
información en el área de los sistemas expertos e inteligencia artificial.
Fundamentalmente, una BDI, deberá ser capaz de deducir hechos a partir de la
base de datos aplicando axiomas deductivos o reglas de inferencia a esos hechos.
La eficiente implementación de una BDI, precisa del desarrollo de un sistema que
posea la capacidad de gestionar conocimiento complejo a través del procesamiento
de datos simples, provenientes tanto de ficheros controlados de forma autónoma
como de un SGDB (v.fìg.8), incorporar la capacidad de utilizar la experiencia en un
dominio particular de aplicación para resolver clases de problemas dentro del
dominio.
43
4. Arquitectura de una BD1
Preproceso.
Datos Objetivo
D+-?!?3
D. Transformados
Conocimiento.
Inferencia.
Fig. 8 Procesamiento de datos en una BDI.
Su principal objetivo es permitir al usuario manipular el contenido de su base de
datos de manera transparente,
ofreciéndole
herramientas
para
extraer
conocimientos a partir del análisis del contenido de sus datos, interrelacionar
información proveniente de diversas fuentes usando medios diversos, usar
conocimientos y hacer inferencias para facilitar la recuperación y visualización de la
información, apoyando la toma de decisiones y ofreciendo una alternativa para
representar y manipular la semántica de las aplicaciones avanzadas.
Los principales pasos dentro del proceso interactivo e iterativo del KDD pueden
verse en la figura 8, y son los siguientes:
1. Desarrollo y entendimiento del dominio de la aplicación, el conocimiento
relevante y los objetivos del usuario final. Este paso requiere cierta dependencia
usuafio/analista, pues intervienen factores como: conocer los cuellos de botella del
dominio, saber qué partes son susceptibles de un procesado automático y cuáles
no, cuáles son los objetivos, los criterios de rendimiento exigibles, para qué se
usarán los resultados que se obtengan, compromisos entre simplicidad y precisión
del conocimiento extraído, etc.
2. Creación del conjunto de datos objetivo, seleccionando el subconjunto de
variables o ejemplos sobre los que se realizará el descubrimiento. Esto implica
4. Arquitectura de una BD1
44
consideraciones sobre la homogeneidad de los datos, su variación a lo largo del
tiempo, estrategia de muestreo, grados de libertad, etc.
3. Reprocesado de los datos: eliminación de ruido, estrategias para manejar
valores ausentes, normalización de los datos, etc.
4. Transformación y reducción de los datos. Incluye la búsqueda de características
útiles de los datos según sea el objetivo final, la reducción del número de variables
y la proyección de los datos sobre espacios de búsqueda en los que sea más fácil
encontrar una solución. Este es un paso crítico dentro del proceso global, que
requiere un buen conocimiento del problema y una buena intuición, y que, con
frecuencia, marca la diferencia entre el éxito o fracaso de la minería de datos
(paso 7).
5. Elección del tipo de sistema para minería de datos. Esto depende de si el
objetivo del proceso de KDD es la clasificación, regresión, agrupamiento de
conceptos (clustering), detección de desviaciones, etc.
6. Elección del algoritmo de minería de datos
7. Minería de datos. En este paso se realiza la búsqueda de conocimiento con una
determinada representación del mismo.
8. Interpretación del conocimiento extraído, con posibilidad de iterar de nuevo
desde el primer paso. La obtención de resultados aceptables dependerá de
factores como: definición de medidas del interés del conocimiento (de tipo
estadístico, en función de su sencillez, etc.) que permitan filtrarlo de forma
automática, existencia de técnicas de visualización para facilitar la valoración de
los resultados o búsqueda manual de conocimiento útil entre los resultados
obtenidos.
4. Aquitechm de una BD1
45
9. Consolidación del conocimiento descubierto, incorporándolo al sistema, o
simplemente documentándolo y enviándolo a la parte interesada. Este paso
incluye la revisión y resolución de posibles inconsistencias.
4.3 Arquitectura
Los SGBD Inteligentes no existen como tales, por lo que en la arquitectura de una
base de datos inteligente intervienen múltiples factores y condicionales derivadas de
las estrategias que el programador decida implementar y las necesidades del
sistema a desarrollar, sin embargo, en el grueso de los estudios enfocados al
desarrollo de un sistema inteligente de bases de datos, se distingue como objetivo
de la intetfaz: proporcionar consejo y apoyo a la toma de decisiones, ofrecer
opiniones informadas y explicación de sus razonamientos, además, deberá permitir
que el directivo u operador manipule grandes volúmenes de información entre los
que encontramos ejemplos, reglas, heurísticas, hechos e incluso modelos de
predicción con probabilidades de certeza. Los beneficios son amplios y múltiples, por
ejemplo la reducción en el tiempo de toma de decisiones, apoyo a la toma de
decisiones basada en hechos, el mejoramiento del desempeño de personal no
experto, la acelerada capacitación de personal mediante tutores, flexibilidad y apoyo
a la reorganización y la reingeniería, el mejor diagnóstico de fallas, el mejor
mantenimiento, la optimización de tiempos y movimientos, el mejor servicio, y la
retención del conocimiento y experiencia corporativa; para ello, considerando el
desarrollo de una BDI sobre un motor relacional, el sistema -regularmente- integrará:
1.
Una base de datos relacional. Base principal en la que se concentra en
diversas tablas el total de datos útiles del sistema.
2. Una base de conocimiento dinámica. Base en intenso, constituida de selección
de tuplas involucradas en un proceso de inferencia particular.
-
4. Arquitectura de una BD1
46
3. Módulos de Preproceso. Enfocados al tratamiento de los datos inciertos en la
base persistente. (Lógica fuzzy y multivaluada)
a4. Una base de reglas. Estructuran los procesos de inferencia en marcos de
operación determinados.
5. Módulos de acceso binario. Cuando intervienen procesos de selección y filtrado
para los que no se estructura un campo clave, precisamos de archivos binarios a
los que el sistema acceda en forma eficiente y rápida.
La inteligencia en una base de datos, no está necesariamente relacionada con la
estructura de la BDD, sino en la explotación que el sistema pueda hacer de éstos.
Así una BDI puede estar soportada en SGBD comerciales, siempre que cuente con
un módulo lógico o extensión lógica, desarrollada en el lenguaje anfitrión, o en un
lenguaje de programación lógica, para implementar la inteligencia del sistema. Esta
extensión se aplica fundamentalmente en el lenguaje para la manipulación (DML) de
datos (en el caso de una BDI no soportada en SGDB, su arquitectura implica la
creación de DDL y DML), esta extensión deberá crear funciones y procedimientos
particulares, de las que se espera:
l
Descubrimiento de conocimiento y búsquedas inteligentes. Integrando
técnicas de inteligencia artificial para extraer conocimiento a partir del análisis de
los datos, la mayoría de los lenguajes anfitriones incorporan estructuras de
control sobre las que se pueden implementar (Computación evolutiva e IPL).
l
Tratamiento de la Incertidumbre.
Procesamiento lógico de condicionales:
datos inexistentes, inaplicables, desconocidos, indefinidos, etc. ( Conocimiento
con incertidumbre )
Para los efectos de nuestro estudio, nos ocuparemos de la arquitectura basada en
los estudios sobre transformación de problemas ILP (Programación Lógica Inductiva)
4. Arquitectura de una BD1
a formato preposicional,
47
la mecánica de transformación se basa en la idea de
convertir conjuntos de datos del formato relaciona1 a formato preposicional, y, si es
el caso, volver a convertir el conocimiento obtenido a formato relacional.
i
La forma de pasar de formato relaciona1 a formato proposicional consiste en crear
una nueva relación, extendiendo cada tupla de la relación objetivo con un atributo
adicional para cada posible literal (combinando cada predicado de la base de
datos en intenso con cada variable del consecuente).
En este proceso, el sistema deberá seleccionar de la base persistente, tuplas
procedentes de una o diversas tablas, filtrar (en el caso de que exista
incertidumbre, mediante lógica fuzzy o multivaluada), ordenar y crear la base en
intenso, con los campos precisos para la sustituir con sus valores las variables en
el formato preposicional; el motor de inferencia operará sobre éstos (base en
intenso, o base de conocimiento) aplicándoles el conjunto de reglas pertinentes
(base de reglas), para determinar la solución a un problema determinado, creando
una nueva relación, informando resultados o - en su caso- modificando la base de
datos persistente.
r
”
(ILPA RELACIONAL]
Fig. 9 Arquitectura Relacional-ILP
4. Arquitectura de una BD1
48
La base en intenso, en el sistema propuesto, puede edificarse en -por lo menos
dos formatos físicos ( el formato preposicional, es persistente en ambos ): un
archivo plano (dbintdb) o mediante un objeto (Table) del lenguaje anfitrión. El
formato físico -en cada caso- dependerá de la base de reglas y la naturaleza del
motor de inferencia:
Formato
Archivo Plano (dbint.db)
Características
Tanto la base de regtas como el mofof de
inferencia operan en forma periférica al
sistema (Uso de Prolog).
Table
La base de reglas y las funciones de
inferencia pertenecen al lenguaje nativo
(Visuat 6asic6)
4.3.1 Computación evolutiva e IPL
La computación evolutiva es una rama de la inteligencia artificial enfocada al
desarrollo de algoritmos genéticos, esto es, modelos lógico-matemáticos, que
aproximen las operaciones máquina, al razonamiento natural.
Las aplicaciones prácticas de la llamada Inteligencia Artificial han sido foco de
controversia por muchos años.
Claramente, si comparamos los sistemas
desarrollados con las habilidades cognoscitivas humanas, podemos considerar que
el desarrollo es aún primitivo. Sin embargo, en años recientes, las técnicas de esta
rama de las ciencias de la información han abordado muchos campos prácticos y
desarrollado herramientas sofisticadas de uso cotidiano en sectores comerciales e
industriales.
La ingeniería en sus diversas instancias, trata de desarrollar modelos de los
procesos de interés (social, económico, etc.) para después, a través de herramientas
49
4. Arquitectura de una BD1
y metodologías adecuadas, poder extraer resultados útiles en diversos sentidos. El
modelado puede efectuarse apoyándose en las leyes físicas que rigen, bajo
condiciones determinadas, las interacciones entre los diversos subsistemas que
componen el proceso, e inclusive pueden obedecer a relaciones= empíricas
elaboradas como fruto de la observación y la experiencia (relaciones estadísticas,
borrosas, etc.). Las relaciones pueden poseer carácter estático cuando no interviene
el tiempo como parámetro modelador, o dinámico cuando dependen de éste. La
extracción de resultados de un modelo está asociada a la determinación de valores
paramétricos de variables conocidas como variables de estado del proceso, estos
valores obedecen al conjunto de restricciones que definen el proceso y que
configuran el espacio de soluciones viables.
En este universo, múltiples algoritmos genéticos o evolucionistas basados en la
existencia de un universo de acción (espacio finito de la base persistente), en que un
agente o entidad lógica parte de su conocimiento sobre los hechos inmediatos
(conocimiento base, existente en las relaciones persistentes) y puede, en caso de
que verifique relaciones base sobre un requerimiento particular, evolucionar
ampliando dicho conocimiento mediante un proceso de inferencia lógica
fundamentalmente heurístico. Dichos algoritmos se pueden edificar a partir de la
programación lógica
inductiva (Inductive Logic Programming
JLP), que
describiremos brevemente.
La programación lógica inductiva se define como la intersección entre el
aprendizaje inductivo y la programación lógica. Esto es así porque utiliza técnicas
de ambos campos:
- Del aprendizaje inductivo en los ordenadores hereda su objetivo: desarrollar
herramientas y técnicas para inducir hipótesis a partir de observaciones (ejemplos)
y sintetizar nuevo conocimiento a partir de la experiencia.
- De la programación lógica hereda básicamente el formalismo de representación
y su orientación a la semántica. La ILP utiliza la programación lógica como
50
4. Arquitectura de una BD1
mecanismo para representar las hipótesis y las observaciones, superando así dos
de las principaies
limitaciones de las técnicas clásicas de aprendizaje en
ordenadores: la rigidez en la representación del conocimiento (v. Cap. 1) y la
dificultad para ex&esar conocimiento de base (background knowledge).
En los sistemas de aprendizaje de orden - 0 el conjunto de entrenamiento consta
de vectores de valores, cada uno perteneciente a una clase conocida. El
conckimiento inducido permite definir clases en función del valor de los atributos,
siendo representable con expresiones de la lógica de proposiciones. En
ocasiones, se representa en forma de árbol de decisión: 103, C4.5, etc. y a veces
en forma de reglas: PRISM, C4.5 rules, etc. Por el contrario, en los sistemas de
aprendizaje de primer orden, el conjunto de entrenamiento lo forman relaciones
definidas de forma extensional,
y el conocimiento de base lo constituyen otras
relaciones, definidas infensionalmente:
El objetivo del aprendizaje es, en estos
sistemas, la construcción de un programa lógico que defina de forma intenkional
una relación objetivo (extensional) del conjunto de entrenamiento. En este tipo de
definiciones lógicas se permite la recursión y algunos cuantificadores, muy útiles
cuando se trabaja con objetos estructurados, difíciles de describir en un formato
objeto-atributo-valor.
Se puede considerar la programación lógica inductiva como la búsqueda de
cláusulas, consistentes con los ejemplos de entrenamiento, en lenguaje de primer
orden. Dentro del espacio de todas las posibles cláusulas, se puede definir una
ordenación entre ellas, dada por la relación de generalización (una cláusula es
más general que otra cuando cubre un superconjunto de las tuplas cubiertas por la
segunda). Según sea el método con el que se recorre el espacio de posibles
cláusulas, podemos distinguir varias técnicas: generalización relativa menos
general, resolución inversa, búsqueda de grafos refinados, modelos de reglas,
transformación del problema a formato preposicional, etc.
4. Arquitectura
51
de una BD1
a. Generalización relativa menos general
La generalización menos general (/ea& general generalizafion)
de Plotkin se basa
en la idea de que si dos cláusulas c 7 y c 2 son ciertas, la3generalización
más
específica común a ambas Igg[c ? ,c 2 ) será también cierta con bastante
plausibilidad. Esto permite realizar generalizaciones de forma conservadora. A las
técnicas de generalización a partir de los datos se las denomina también técnicas
de búsqueda de abajo hacia arriba (botiom-up). La generalización menos general
de dos cláusulas (que puedan generalizarse) es el resultado de aplicar la
generalización menos general a cada par de literales de ambas, tanto en el
antecedente como en el consecuente. Para cada par de literales, esta operación
se realiza comparándolos y sustituyendo por variables los atributos que no
coincidan. Por ejemplo:
c 1 = enfermo (Pedro) :hijo-de(pedro, juan),
fumador(juan)
c 2 = enfermo (alberto) :hijo-de(alberto, josé),
fumador(josé)
Igg(c 7 , c 2) = enfefmo(X)
:-
hijo_de(X, Y),
fumador(
La generalización relativa menos general (r/gg) de dos cláusulas, es la
generalización menos general de ambas, relativa a cierto conocimiento de base.
La r/gg es la técnica en que se basa el sistema GOLEM. Normalmente, el número
de literales de una rigg crece al menos de forma exponencial con el número de
ejemplos
existentes.
Por ello, GOLEM utiliza restricciones que evitan la
introducción de literales redundantes, aunque aún así el número de ellos suele ser
grande. Existen sistemas que combinan técnicas de búsqueda de abajo hacia
52
4. Arquitectura de una BD1
arriba (generalización menos general, como hace GOLEM) con técnicas de arriba
hacia abajo (especialización por introducción de nuevos literales, como FOIL).
b. Re&iución inversa
La idea básica de la resolución inversa (inverse resolufíon) consiste en invertir la
regla de resolución, de la inferencia deductiva, obteniendo así un método de
generalización.
Aplicada en lógica preposicional, la resolución establece que (silogísmo hipotético)
dadas las premisas p
v
g y9
v
r, se deduce que p v r. En lógica de predicados
de primer orden, la resolución requiere sustituciones de variables por valores de
atributos. La resolución inversa utiliza un operador de generalización basado en
invertir la sustitución.
Por ejemplo, dados los hechos:
bl = enfermo(pedro)
b2 = hijo-de(pedro, juan)
b3 = fumador(juan)
tomando bl y b2, y la sustitución inversa ql -1 = {pedroN} se obtiene:
cl = enfermo(Y) :- hijo_de(Y, juan)
tomando ahora cl y b3, y la sustitución inversa q2 -1 = Cjuan/X} se obtiene:
c2 = enfermo(Y) :- hijo_de(Y, X), fumador(X).
c. Búsqueda en grafos refinados
La principal técnica de especialización en ILP es la búsqueda de arriba a abajo
(fop-down
search) en grafos refinados (refinement
graphs). Los sistemas que
4.
53
Arquitectura de una BD1
utilizan esta técnica, comienzan con la cláusula más general, a la que aplican
especializaciones hasta que sólo cubra tuplas positivas.
i
enfermo [x 1 :-I verdadero
1
enfermo (x) :x=pedro
1
..I
enfermo [x ] :hijo-de Ix, y 1
1
enfermo [x):hijo-de [x, y )
hijo-de (y,z)
t
.I.
1~
enfermo [x) :fumador [x)
1
enfermo (x 1 :padwW,r)
1
enfermo (n):hijuWx,y 1
fumador(y)
Fig. 10 Grafos refinados.
Se denominan gratos refinados porque las operaciones de especialización
(refinado) que se realizan durante la búsqueda se pueden representar en un grafo
acíclico y dirigido (fig. 10). En este grafo, cada nodo representa una cláusula (el
nodo superior es la cláusula más general) y cada arco representa una operación
de especialización (sustitución de una variable por una constante, o incremento de
un nuevo literal en la cláusula en construcción). La búsqueda dentro de éste grafo
suele ser heurística, debido a que se produce una explosión combinatoria en el
conjunto de posibles especializaciones, que hace inabordable la búsqueda
exhaustiva.
d. Patrones de reglas.
Se denominan patrones de reglas a un tipo especial de reglas en las que los
predicados son variables. La búsqueda de reglas se realiza a partir de los
patrones de reglas existentes, proporcionados por el usuario. Para cada patrón de
regla se prueban todas las posibles combinaciones de predicados existentes y,
4. Arquitectura de una BD1
54
cada una de las reglas así obtenidas, se evalúa con los datos de entrenamiento.
Por ejemplo, con un patrón de reglas de la forma:
P(X) :- R(X,Y), Q(Y)
se podría obtener, por ejemplo, la regla
J
enfermo(X) :hijo-de(X,Y),
fumador(Y).
e. Cláusulas
Normalmente el objetivo de los sistemas de ILP es la inducción de reglas que
definan ciertos predicados. Estas reglas deberían ser lo suficientemente precisas
como para poder reemplazar a los eiemplos de la base de datos y que éstos
fueran deducidos a partir de las mismas. Pero puede considerarse un enfoque
diferente, conocido como /LP no
monótono,
que consiste en la búsqueda de
restricciones dentro de la base de datos.
Estas restricciones pueden tener la forma de una cláusula en lógica de predicados
de primer orden:
padre-de(X,Y)
v
madre-de(X,Y) :- progenitor-de(X,Y)
progenitor-de(X,Y) :- padre-de(X,Y)
falso :- padre-de(X,Y), madre-de(X,Y)
La última de ellas se interpreta como que una persona no puede ser a la vez padre
y madre de otra.
4.3.2 Conocimiento con incertidumbre
La incertidumbre está asociada, de forma inseparable, con la información. Aunque
existen diferentes formas de incertidumbre, cabe destacar la que se produce como
4.ArqtitechuadeunaBDI
consecuencia de la imprecisión y subjetividad propias de la actividad humana. En
muchas ocasiones sacrificamos parte de la información precisa disponible por otra
4
más vaga pero más robusta, lo que permite manejar de forma eficiente la
complejidad asociada al mundo real.
Muchos de los conceptos manejados habitualmente son, en sí mismos, vagos o
borrosos, es decir, sus límites no están perfectamente determinados, y no por ello
carecen de significación. La lógica borrosa y la teoría de conjuntos borrosos
ofrecen un método natural para representar esa imprecisión y subjetividad
humanas.
El tratamiento de la incertidumbre es un rasgo típico de las aplicaciones en que se
involucra la inteligencia artificial; aplicada al desarrollo de SGBD, la incertidumbre
se centra en el tratamiento de dos indicadores fundamentales:
l
Datos inciertos o difusos.
l
Datos desconocidos o condicionales.
Los primeros se caracterizan por formas verbales indeterminadas que representan
rangos heurísticos de valor (alto, muy alto, a menudo, etc.); los segundos,
denominados valores nulos. Ambos constituyen uno de los problemas teóricos
más importantes en las bases de datos con el consecuente impacto en la
construcción de aplicaciones. Motro propone clasificar la incertidumbre en diversos
tipos:
- incertidumbre propiamente dicha: cuando no es posible determinar si una
aserción es cierta o falsa; por ejemplo, no estamos seguros de que “Juan
tenga 30 años”.
- imprecisión: la información no es tan específica como debería ser: “Juan
tiene entre 30 y 40 años”, “Juan no tiene más de 40 años”.
- vaguedad: conocimiento del estilo de “Juan pertenece a la tercera edad”.
4. Arquitechxa de una BD1
56
- inconsistencia: cuando el modelo tiene dos o más aserciones que no
pueden ser ciertas, por ejemplo, “Juan
tiene entre 37 y 45 años” y “la edad
2
de Juan es 34”.
- ambigüedad: si algunos elementos del modelo no poseen una semántica
completa, dando lugar a distintas interpretaciones. Esto suele producirse
al establecer magnitudes sin especificar su unidad de medida.
Este autor señala que hasta ahora se ha intentado solucionar los casos de
incertidumbre no dejando almacenar cierta información o mediante los valores
nulos; por lo que propone incluir nuevas técnicas en los SGBD como los factores
de incertidumbre que se emplean en los Sistemas de Recuperación de la
Información o en los Sistemas Expertos, y la lógica borrosa (fuzzy). En esta misma
línea se encuentra Johnston, que propone una lógica multivaluada “reglamentada”
a la que se le añaden “áreas de la Idgica que van más allá de la Idgica
preposicional
y de predicado de primer orden”, como pueden ser: la lógica modal,
la lógica no monotónica y la lógica funcional no verdadera.
4.3.2.1 Tratamiento de los valores inciertos.
El tratamiento de los valores difusos en las BD relacionales implica la creación de
un mecanismo capaz de expresar la incertidumbre en valores numéricos, para ello
existen distintos algoritmos, la mayoría derivados de la lógica difusa (fuzzy logic),
basada en la Teoría de Conjuntos Difusos, donde un elemento no necesariamente
pertenece o no pertenece a un conjunto, sino que hay un continuo de “grados de
pertenencia”. El grado de pertenencia a un conjunto(p), y puede tomar valores
entre 0 y 1.
4. Arquitectura de una BD1
18
LOGICA
57
22
26
30
CONVENCIONAL
18
22
26
LOGICA FUZZY
30
I
Fig. 11 Lógica Fuzzy.
Podemos denotar esto como: ti(x) -+ [OJ]. A ~1 también se le conoce como el
“valor de verdad’ porque representa el grado en que una proposición es
verdadera. Mediante esta herramienta podemos asignar distintos valores
considerando las posibilidades explícitas del atributo (Universo de discurso [Sz]),
así un conjunto difuso I\ sobre un universo de discurso S& es un conjunto de
pares: I\ = {x; d(x): x E n; j-&(x) E [O,l]}, donde @4(x) se denomina grado de
pertenencia de x a x. Existen múltiples representaciones de conocimiento difuso
mediante la lógica fuzzy, para los efectos de nuestro estudio, tan sólo
describiremos aquéllas posibles asignaciones de valor operando sobre datos
concretos, así las etiquetas lingüísticas aplicadas corresponden al dominio
específico (columnas) que se trate por ejemplo:
1. Escalar simple. Por ejemplo Aptitud=buena; representado mediante la
distribución de posibilidad 1 /buena.
2 . Número simple. Por ejemplo Edad=28;
representado mediante la distribución
de posibilidad 1/28.
3. Conjunto de posibles asignaciones excluyentes de escalares. Por ejemplo
Aptitud = {buena;mala}, expresado por {l/mala;l/buena}.
4 . Conjunto de posibles asignaciones excluyentes de números. Por ejemplo
Edad={20;21}; representado mediante { 1120; 1121).
58
1. Arquitectura de una BD1
5. Distribución de posibilidad en el dominio de los escalares. Por ejemplo
Aptitud={O.6/mala;O.7/regular}.
6. Distribución de posibilidad en el dominio de los números. Por eiemplo
Edad={O.4/23;1.0/24;0.8/25).
7. Número real E [O,l] representando grados de cumplimiento. Por ejemplo
Calidad=0.9
Adicionalmente se consideran los valores desconocidos, indefinidos o nulos, sin
embargo, en nuestro estudio nos ocupamos de ellos mediante la lógica
multievaluada que se expone en forma exhaustiva en objetivos posteriores.
Evidentemente, el universo de los conjuntos difusos es amplio, nuestro estudio
sólo recupera algunas de sus formas y técnicas básicas en virtud de que en el
SGBD relacional, la implementación de un diccionario de datos en que se
clasifiquen los estados de pertenencia
restringiendo su forma verbal en una
relación simple(opciones predefinidas), constituyen un modelo difusor universal,
de esta forma, el usuario del sistema expresa un estado determinado como valor,
y el sistema, tanto en el motor relaciona1 como el de inferencia, opera con el
producto asociado.
Una vez que se asignen los valores asignados por lógica difusa a las tupias que
corresponda, su tratamiento dependerán -en cada caso- del proceso que las
requiera y serán operadas en forma convencional por el grado de pertenencia
asociado.
4. Arquitectura de una BD1
59
Vista del Usuario:
Base Persistente:
...
prktribad
A01
Aûl
AO2
A03
lectura
14897
25986
36999
59889
f
/ymi
l
Base en Intwrzc
...
objeto(‘motor xyz’,O.3,14897)
objeto(‘regulador x’,O.3,25986)
objeto[‘motor wpz’,O.6,36999)
c
t
Fig. 12. Restricción de formas verbales en relaciones simples.
En su forma inversa, el difusor ataca directamente el contenido de los campos con
una función de pertenencia (rango) y construye la base en intenso asignando
etiquetas lingüísticas determinadas: BAJA, ALTA, URGENTE.. . , Por ejemplo:
Sea R(T1,. . . ,Tn), donde:
R(TI,T~,T~) con TI (Id), Tz(prioridad), 13 (lectura).
Dada una función de pertenencia:
F(P)
Ii
(0.3)
Is
(0.8)
Tenemos:
V2){ T2
=< P(li)
[h
(Baja)] I
T2 >=P(ls)[T2
(Urgente)] 1T2 (Alta)}
4. Aquitectura
de una BD1
60
La estructura básica de un Sistema de Lógica Difusa se muestra en la figura 13. El
sistema recibe varias entradas numéricas y entrega varias salidas numéricas. El
bloque Difusor se encarga de convertir las entradas en conjuntos difusos, que son
entregados al bloque Máquina de Inferencia; este bloque, apoyado en un conjunto
de reglas de la forma IF... THEN... , produce varios conjuntos difusos para que el
bloque Concresor los tome y los convierta en etiquetas lingüísticas concretas.
Eflh&l
Entrada2
Entrada
3
.
I
DifUSOI
z:
concresor
3
Salida1
Salida 2
:
Salida .
kz
Fig. 13 Estructura básica de un sistema de lógica difusa.
Cada una de las variables de entrada y de salida tiene una representación dentro
del Sistema de Lógica Difusa en forma de Variables Lingüísticas. Finalmente
atendiendo una de las recomendaciones generales sobre el diseño de SGBD
relacionales, se utilizará la lógica fuzzy exclusivamente en aquellos dominios que
lo exijan o que representen estados intermedios de procesos en desarrollo.
4.3.2.2 Tratamiento de la información desconocida o condicional
Si bien los valores nulos (también se le denomina “valor ausente o concticiunai”)
no son un concepto exclusivo del modelo relacional, ha sido en el contexto de este
modelo donde se ha abordado su estudio de manera más sistemática y donde se
están realizando más investigaciones a fin de formalizar su tratamiento. La
necesidad de los “valores nulos” o “marcas” en bases de datos es evidente por
diversas razones:
-
Crear tuplas con ciertos atributos desconocidos.
4. Arquitechxa
de una BD1
61
- Añadir un nuevo atributo (columna) a una relación (tabla) existente; atributo que,
en el momento de añadirse, no tendría ningún valor para las tuplas de la relación.
- Atributos inaplicables a ciertas tuplas, por ejemplo, la editorial para un artículo (ya
que’suponemos que un artículo no tiene editorial)
En la atención de estas necesidades se ha definido esquemas lógicos
sensibemente distintos a la lógica habitual, denominados lógica trivaluada y lógica
tetravaluada.
a. Lógica trivaluada (L3V)
En las siguiente figura aparecen las tablas de verdad para la lógica trivaluada,
donde existen los valores C (cierto), F (falso) y Q (quizás). Además, se incluye un
nuevo operador denominado MAYE, que aplicado al valor de una expresión
“quizás”, da como resultado “cierto”.
Tabla de verdad para la lógica trivaluada.
Adicionalmente se precisa introducir otros dos operadores especiales:
a) IS-NULL, que toma el valor cierto si el operando es nulo y falso en caso contrario
b) IF-NULL,
que toma dos operandos y que devuelve el valor del primero, salvo que
sea nulo, en cuyo caso devuelve el valor del segundo.
En cuanto a las operaciones aritméticas- con vatores~ nulos, se considera nulo el
resultado de sumar, multiplicar, restar o dividir un valor nulo con cualquier otro valor.
Por lo que respecta a los operadores algebraicos, el producto cartesiano no se ve
4. Arquitechm
de una BD1
62
afectado por la presencia de valores nulos, la restricción sólo devuelve aquellas
tuplas cuya condición se evalúa a “cierto” no ‘falso” ni “quizás”, y la proyección debe
eliminar tuplas duplicadas teniendo en cuenta los nulos, por lo que dos tuplas se
considerarán duplicadas si atributo a atributo son ambos iguales y no nulos, o ambos
nulos. Finalmente es muy importante considerar si los valores asignados en las
tupias van a formar parte de operaciones de agregación con el fin de aplicar
funciones estadísticas, v.g. suma, varianza, media, etc., en cuyo caso determinar su
uso o discriminar su número.
En el lenguaje SQL las columnas admiten valores nulos a no ser que se especifique
NOT NULL, y se soporta la lógica trivakada, cuyas tablas de verdad ya hemos
representado.
En SQL para determinar si un valor es nulo se utiliza el predicado NULL: <Nombre
de columna> IS NULL
También podemos combinar este predicado con el operador NOT:
-=Valor> IS NOT NUU
Un aspecto a tener en cuenta es el comportamiento del predicado cuando opera
sobre más de una columna. En efecto: WHERE (col-x, ~013) IS NULL, será cierto si
ambos son nulos, mientras que: WHERE (col-x, COIJ) IS NOT NULL, será cierto si
ambos son no nulos; existiendo otras dos variantes: WHERE NOT(colx, colé) IS
NULL, que será falso si ambos son nulos, pero cierto si alguno es nulo o lo son los
dos, finalmente: WHERE NOT(col-x, ~012) IS NOT NULL, será cierto si alguno o
ambos son nulos, y falso sólo si ninguno es nulo.
La expresión que juega el papel del operador IF-NULL es la siguiente:
COALESCE(Val1
,Val2, Val3,...,Valn) que devuelve el valor, si no es nulo, o el valor2,
o el valor”, salvo que todos sean nulos devolviendo entonces nulo.
Si en lugar de nulos se emplean valores por defecto, el lenguaje ofrece la posibilidad
de convertir el valor por defecto a nulo mediante la expresión NULLIF.
4. Arquitectura de una BD1
Por ejemplo:
63
. . . WHERE NULLIF (año, -99) > 1980, que es equivalente a:
CASE WHEN año = -99
THEN NULL
ELSE año
END
Para comprobar si un predicado (o una combinación de éstos) es cierta, falsa o
quizás se utiliza:
p IS [NOT] TRUE
FALSE
UNKNOWN
este último (UA/IGVOl44V) corresponde al operador MA YBE. Así, por ejemplo,
podemos formular la siguiente consulta:
SELECT titulo
FROM libros
WHERE (año = 1996) IS UNKNOWN;
b. Lógica tetravaluada (L4V)
La lógica tetravaluada surge de la necesidad de diferenciar dos tipos importantes
de valores nulos: inaplicables, esto es, que no tienen sentido, de desconocidos
aplicables, es decir, que momentáneamente son desconocidos pero deberían
existir y puede que, en un determinado momento, lleguen a conocerse.
Esta diferencia, que puede parecer académica en exceso, es de hecho muy
importante para reflejar con más precisión la semántica del universo del discurso a
64
4. Arquitectura de una BD1
tratar y para responder de manera “más inteligente” a las consultas que se
realicen sobre la base de datos. En la lógica cuatrivaluada se distingue, por tanto,
entre un
valor nulo o marca que”representa
información desconocida pero
aplicable, que denominaremos a, de otro que representa información inaplicable,
que denominaremos’p.
En este caso las operaciones aritméticas quedan modificadas como sigue, siendo
++ un operador aritmético y x un valor no nulo de la base de datos:
x++cY.=a*x=a
xtJp=p++x=p
a+-+p=p*cx=~
ae=a=a
P*P=P
A continuación se muestran las tablas de verdad para la lógica cuatrivaluada,
donde por “A”(Aplicable) y por “I” (Inaplicable) se representan los valores de
verdad de la lógica cuatrivaluada, según CODD.
A
F
C
A
F
I
A
A
F
1
ACAAA
F
F
F
F
FCAFF
II
F
1
ICAR.1
1
Lógica tetravaluada según CODD
El lenguaje SQL con que opera el motor relaciona1 Jet, no soporta aún la lógica
tetravaluada, por lo que se precisa una extensión del lenguaje de manipulación de
4. Arquitectura de una BD1
65
datos, implementada en el lenguaje anfitrión, considerando los siguientes
indicadores:
1. Si el operador es AND y cualquier operando es falso el resultado es falso
2. Si el operador es OR y cualquier operando es cierto, el resultado es cierto
Si el resultado tiene definida una clase nula y uno o más operandos son nulos:
1. Si el operador es OR el resultado es el valor nulo que tiene la posición mayor,
En caso contrario, el resultado es el valor nulo que tiene la posición menor
En cualquier otro caso es resultado es el valor nulo general
Por otro lado, Gessert propone asociar a cada tabla de datos que pueda contener
valores nulos una “tabla de estados lógicos” que se corresponde fila a fila y campo
a campo a la tabla de datos y que posee las mismas claves. Mediante este
esquema, la tabla de datos no tendría valores nulos, y en la tabla de estados se
almacenarían los siguientes valores :
NA inaplicable
AF que indica que es falso
AM que indica que es desconocido pero aplicable
AT que señala que es cierto
De forma que no sea necesario complicar el lenguaje de manipulación (con IS
NULL, IS UNKNOWN, etc.) sino que simplemente basta con consultar la tabla de
estados. Tampoco se requiere modificar la estructura de datos relaciona1 ni
extender las columnas para tener en cuenta la presencia del indicador de nulos.
Es pues una representación sencilla a base de metadatos.
66
5. Programación de una BD1
5. Proaramación
de una BOI
5.1 Consideraciones generales
Como hemos citado; dada la arquitectura propuesta, el proceso de inferencia constituye
el nudo en la fase de intención del sistema, en este capítulo, abordaremos los
principales indicadores que propicien dicho inferencia, tanto si el proceso se verifica
mediante funciones del lenguaje anfitrión, como por un motor periférico. En principio,
nos ocuparemos de detallar las partes en común.
5.2 Las bases de datos persistente e intenso
La creación y manipulación de la base de datos persistente, así como la base de
datos en intenso, en el sistema propuesto, se efectúan a través de los diversos
objetos predefinidos que Visual Basic incorpora, centraremos nuestro interés en los
objetos RecordSet, Oatabase y los procedimientos para efectuar consultas a través
de SQL.
5.2.1 RecordSet
Llamaremos RecordSet (DynaSets, SnapShot, Tables y Query) a un conjunto de
registros que cumplen una determinada condición y que pueden ser tratados como un
conjunto de tuplas, tenemos diferentes tipos de RecordSet con distintas propiedades,
estos se declaran como variables en el dominio del módulo o si es el caso como
variables globales:
l
SnapShot es un RecordSet de sólo lectura.
l
DynaSet es un tipo RecordSet que se lee al abrir y escribe en la base de datos al ser
cerrado.
l
Tables es un RecordSet que contiene toda la información de la misma. El RecordSef
contiene todos los registros de la misma.
67
5. Programación de una BD1
l
QueryDef es una consulta (Query) que se encuentra predefinida en la base de
datos.
1. Métodos
*Métodos asociados al Desplazamiento
Movefirst
GO TOP. Va al primer registro.
MoveNext
SKIP. Avanza un registro.
MovePrevious
SKIP -1. Retrocede un registro.
MoveLast
GO BOTTOM. Va al último registro.
*Métodos asociados a la Búsqueda
Findfirst
Localiza el primer registro que cumple una condición.
FindNext
Localiza el siguiente registro que cumpla una condición.
FindPrevious
Localiza el registro anterior que cumpla una condición.
Findlast
Localiza el último registro que cumpla una condición.
Seek
Busca un registro (en una tabla).
*Métodos para edición.
Addnew
APPEND BLANK. Añade un registro.
Delete
DELETE.
Edit
Edita un registro para ser modificado.
Update
Actualiza la edición que hayamos hecho.
Close
Cierra el RecordSet.
Clone
Crea una copia del RecordSet.
Borra un registro.
*Métodos para obtener información del RecordSet
Listfields
Lista campos. (Regresa SnapShots)
Listlndexes
Lista índices. (Regresa SnapShots)
5. Programación de una BD1
2. Objetos Contenidos
Fiel&
j
Retorna un objeto con las definiciones de los campos.
3. Propiedades
BOF
BOf(). Estamos al inicio del RecordSet.
EOF
EOF(). Estamos al final del RecordSet.
BookMark
Marca un registro .
RecordCount
Número de registros en el SnapShot.
DafeCreafed
Fecha de creación.
LastModified
Fecha de última modificación.
LastUpdated
Fecha de última actualización.
Filfer
SET FILTER TO. Para poner expresiones de filtro.
Index
SET /ND= TO. Para saber o cambiar el índice activo en una
tabla.
sorf
Determina la expresión por el que se ordenará el RecordSet.
NoMatch
FOUND(). Regresa true si fracasa la búsqueda.
LockEdits
Determina el tipo de bloqueo a usar.
Name
Indica el nombre del RecordSet (tabla..).
Transactions
True si la base soporta transacciones.
Updatable
True si puedo modificar los datos del RecordSet.
5.2.2 Database Object
Mediante este objeto nos comunicaremos con la base de datos. Toda la jerarquía de
clases que comienza aquí, y para llamar a los métodos de los RecordSets,
siempre
tendremos que pasar por un objeto database. En la inteligencia de simplificar,
agruparemos, por su funcionalidad, todos sus métodos, propiedades y funciones
relacionadas.
69
5. Programación de una BD1
1. Métodos
* Métodos Para obtener información de la estructura
3
ListTables
Obtenemos un SnapShot con descripciones de las tablas
ListFields
Obtenemos un SnapShot con información de los campos
* Métodos para crear y borrar consultas
CreateQueryDef
Crea Querys (consultas) en la base de datos
DeleteQueryDef
Borra Querys (consultas) de la base de datos
* Métodos para interactuar con los datos
Open Table
Devuelve un objeto Table
CreateDynaset
Devuelve un objeto DynaSet
CreateSnapshot
Devuelve un objeto SnapShot
OpenQuerydef
Devuelve un objeto QueryDef
* Método para cerrar la base de datos
Close
Cierra la base de datos (elimina el objeto de memoria)
* Métodos involucrados en las transacciones
Begin Trans
Inicia la transacción
CommitTrans
Graba en el disco las modificaciones
RollBack
Vuelve a la situación anterior
* Métodos para ejecutar comandos SQL
Execute
Ejecuta un comando SQL usando VB
ExecuteSql
Ejecuta un comando SQL a través de ODBC
2. Propiedades
Collating Order
Determina cómo vamos a comparar cadenas
Connect
Determina qué tipo de bases externas abriremos (dBase...)
70
5. Programación de una BD1
Name
Nombre de la base de datos
QuetyTimeout
Tiempo de espera desde tras errores en conexiones ODBC
Trahactions
Indica si el driver acepta transacciones Updatable
3. Objetos Contenidos
TableDefs
Devuelve un objeto TableDef (definiciones de la base)
4. Funciones Relacionadas
OpenDatabase
Devuelve un objeto database
RegisterDa tabase
Para conectarse vía ODBC
RepairDatabase
Arregla bases de datos dudosas
CompactDatabase
PACK
CreateDatabase
Crea una nueva base de datos
FreeLocks
Libera los bloqueos
Begin Trans
Comienza una transacción
CommitTrans
Graba en el disco el resultado de una transacción
RollBack
Vuelve atrás en una transacción
SetDataAccessOption
Opciones para gestión de bases ACCESS
SetDefaultWorkSpace
Establece usuario y clave para bases codificadas ACCESS
52.3 SQL en Visual Basic
Visual Ba-sic es un lenguaje de programación de propósito general, con una gran
potencia en toda su estructura. Su implementación en el sistema operativo Windows y
sus herramientas visuales, han hecho de este lenguaje un líder indiscutible en lo que a
desarrollo de aplicaciones se refiere. Con la versión 3.0. se implementó la gestión de
bases de datos a muy alto nivel, pudiendo gestionar bases de datos de tipo Access,
Paradox, dBASE, FoxPro,
etc. Este paso de gigante ha hecho de Visual Basic uno de
los lenguajes favoritos por los desarrolladores de aplicaciones de bases de datos.
5. Programación de una BD1
71
Visual Basic incorpora esta extensión junto a nuestras bases de datos, obteniendo
potentes resultados. De hecho, las consultas que se realizan en Access,
están
desarrolladas o basadas en este lenguaje, por lo que su implementación en Visual
Basic no es complicada. El objetivo principalde SQL es la realización de consultas y
cálculos con los datos de una o varias tablas.
a) Escribir mandatos en SQL
1. Un mandato en SQL se expresa en una cadena de caracteres o String.
2. Dicho mandato se puede escribir en la propiedad RecordSource de un control Data,
con el fin de crear una consulta en la interfaz.
3. Los nombres de los campos especificados (y de las tablas), que contengan más de
una palabra, han de encerrarse entre corchetes ([nombre]). Como norma general, se
suelen escribir siempre entre corchetes.
4. Para especificar un determinado campo de una determinada tabla, se ha de escribir
primero el nombre de la tabla, un punto y, a continuación, el nombre del campo
(nombre-tabla.nombre-campo).
5. Al especificar una expresión de búsqueda, si ésta se refiere a una expresión de
caracteres,
éstos han de encerrarse entre comillas, normalmente simples
(‘expresión-a-buscar’).
6. Para especificar una fecha en una búsqueda, ésta debe encerrarse entre
almohadillas o pragmas (#Ifecha#).
7. Si se utiliza la propiedad RecordSource del control Data, para crear nuestras
consultas en SQL, tras introducir el mandato SQL (siempre como una expresión de
cadena) es necesario refrescar el control Data (control-data. Refresh).
b) La sentencia SELECT y la cláusula FROM
La sentencia SELECT “selecciona” los campos que conformarán la consulta, es decir,
que establece los campos que se visualizarán o compondrán la consulta. El parámetro
‘lista-campo está compuesto por uno o más nombres de campos, separados por
5. Programación de una BD1
7
comas, pudiéndose especificar también el nombre de la tabla a la cual pertenecen
seguido de un punto y del nombre del campo correspondiente. Si el nombre del campe
o de la tabla está compuesto de más de una palabra, este nombre ha de escribirse
entre corchetes ([nombre]). Si se desea seleccionar todos los campos de una tabla, se
puede utilizar el asterisco (*) para indicarlo.
Una sentencia SELECT no puede escribirse sin la cláusula FROM. Una cláusula es una
extensión de un mandato que complementa a una sentencia o instrucción, pudiendo
complementar también a otras sentencias. Es, por decirlo así, un accesorio
imprescindible en una determinada máquina, que puede también acoplarse a otras
máquinas. En este caso, la cláusula FROM permite indicar en qué tablas o en qué
consultas (queries) se encuentran los campos especificados en la sentencias SELECT.
Estas tablas o consultas se separan por medio de comas (,), y, si sus nombres están
compuestos por más de una palabra, éstos se escriben entre corchetes ([nombre]). He
aquí algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:
SELECT nombre, apellidos FROM clientes;
Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’.
SELECT clientes.nombre,
producto FROM clientes, productos;
Selecciona el campo ‘nombre’ de la tabla ‘clientes’, y el campo ‘producto’ de la tabla
productos.
SELECT pedidos. * FROM pedidos;
Selecciona todos los campos de la tabla ‘pedidos’.
SELECT * FROM pedidos;
Selecciona todos los campos de la tabla ‘pedidos’.
SELECT nombre, apellidos, telefono
FROM clientes;
Selecciona los campos ‘nombre’, ‘apellidos’ y ‘telefono’ de la tabla ‘clientes’.
SELECT [codigo postal] FROM [tabla morosos];
Selecciona el campo ‘codigo postal’ de la tabla ‘tabla morosos’.
5. ProgramaciOn de una BD1
73
c) Claúsula WHERE
La claúsula WHERE es opcional,y permite seleccionar qué registros aparecerán en la
consulta (si no se especifica aparecerán todos los registros). Para indicar este conjunto
de registros se hace uso de criterios o condiciones, que no es más que una
comparación del contenido de un campo con un determinado valor (este valor puede
ser constante (valor predeterminado), el contenido de un campo, una variable, un
control, etc.). He aquí algunos ejemplos que ilustran el uso de esta cláusula:
SELECT * FROM clientes WHERE nombre=‘ALFREDO;
Selecciona todos los campos de la tabla ‘clientes’, pero los registros de todos aquellos
clientes que se llamen ‘ALFREDO’.
SELECT * FROM abonados WHERE estado =‘NAYARIT’ OR estado=‘JALISCO’ OR
estado =‘COLIMA’
;
Selecciona todos los campos de la tabla ‘abonados’, pero los registros de todos los
abonados de los estados de NAYARIT, JALISCO, COLIMA
SELECT nombre, apellidos FROM abonados WHERE edad>=18;
Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla abonados, escogiendo a
aquellos abonados que sean mayor de edad (a partir de 18 años).
SELECT * FROM abonados WHERE edad>=18 AND edad<=45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM diario WHERE fecha=#7/1/97#;
Selecciona los apuntes de ‘diario’ realizados el 1 de Julio de 1.997 (la fecha ha de
indicarse en inglés (mes/día/año)).
SELECT * FROM diario WHERE fecha<=#l2/31/96#;
Selecciona los apuntes de ‘diario’ realizados antes del 1 de Enero de 1.997.
SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND #7/31/97#;
Selecciona los apuntes de ‘diario’ realizados en Julio de 1.997.
SELECT * FROM clientes WHERE nombre LIKE ‘AL*;
74
5. Programación de una BD1
Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’.
SELECT * FROM clientes WHERE apellidos LIKE ‘*EZt
Selecciona los clientes cuyos apellidos terminen con los caracteres ‘ET.
SELECT * FROM clientes WHERE apellidos LIKE ‘*ZAMO*‘
d
Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los caracteres
‘ZAMO’.
SELECT
* FROM clientes
‘NAYARIT’, ‘MEXICO’,
WHERE estado IN (‘JALISCO’,
‘COLIMA’,
‘PUEBLA 3;
Selecciona todos los clientes de los estados JALISCO, COLIMA, NAYARIT, MEXICO,
PUEBLA.
d) Cláusula ORDER BY
La cláusula ORDER BY suele escribirse al final de un mandato en SQL. Dicha cláusula
establece un criterio de ordenación de los datos de la consulta, por los campos que se
especifican en dicha cláusula. La potencia de ordenación de dicha cláusula radica en la
especificación de los campos por los que se ordena, ya que el programador puede
indicar cuál será el primer criterio de ordenación, el segundo, etc., así como el tipo de
ordenación por ese criterio: ascendiente o descendiente.
(, . J ORDER B Y campo 1 [ASC/DESC][,
campo2 [ASUDESC]. . ./
La palabra reservada ASC es opcional e indica que el orden del campo será de tipo
ascendiente (O-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se
indica que el orden del campo es descendiente (9-O Z-A). Si no se especifica ninguna
de estas palabras reservadas, la cláusula ORDER BY toma, por defecto, el tipo
ascendiente [ASC].
He aquí algunos ejemplos:
SELECT nombre, apellidos, telefono FRO M clientes ORDER B Y apellidos, nombre;
75
5. Programación de una BD1
Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’.
SELECT * FROM pedidos ORDER BY fecha DESC;
Relación de ‘pedidos’ ordenados desde el más antiguo hasta el más moderno.
SELECT * FROM abon’ados ORDER BY apellidos, nombre, fecha-nacimiento DESC;
Relación de ‘abonados’ por ‘apellidos’ y ‘nombre’ ascendientemente, y por
‘fecha-nacimiento’ en orden descendiente (del más viejo al más joven).
e) Programación SQL desde el control data
Gracias al control ‘Data’ (.vbx) podremos utilizar fácilmente la potencia de SQL. Lo
primero que hay que tener en cuenta es que la consulta realizada en SQL posea los
mismos campos que la interfaz diseñada, y que los controles encargados de mostrar o
modificar la base de datos, estén perfectamente vinculados al control Data. Por
ejemplo: realizamos una ficha de ‘clientes’, por lo que diseñamos una interfaz con
diversas Text Box vinculadas a un control Data que contendrá los datos. Estas Text Box
se vinculan gracias a las propiedades ‘DataSource’
La propiedad ‘DataSource’
y ‘DataField’.
corresponde a la fuente de los datos, en este caso, el
nombre del control ‘Data’. En la propiedad ‘DataField’
se especifica el nombre del
campo a tratar por cada Text Box (‘nombre’, ‘direccion’,
‘nif, ‘telefono’, etc.). Por otro
lado, en la propiedad ‘DatabaseName’
del control ‘Data’, se ha de especificar la ruta
completa de la base de datos (base.mdb), y la propiedad ‘RecordSource’ se reservará
para indicar, en una cadena o String, el mandato en SQL correspondiente cuando sea
necesario. Así se podría crear una variable de tipo String en un módulo, e insertar el
mandato en SQL correspondiente antes de llamar a la ficha. Al llamar a la ficha, la Form
correspondiente tendrá un evento Load, donde se insertará un código similar al
siguiente:
control-data.RecordSource = variable-SQL
control-data. Refresh
5. Programación de una BD1
76
Obviamente, dependiendo del caso, la programación se hará diferente. Pero la norma
común es crear una interfaz en concreto, con unos campos concretos y, cuando sea
necesario, establecer como valor de la propiedad ‘RecordSource’ el mandato en SQL, y
refrescar el control Data correspondiente. De esta manera, el coñirol Data contendrá el
resultado de la consulta.
f) Eliminación dinámica de registros
El lenguaje SQL nos permite eliminar registros que cumplan las condiciones o criterios
indicadas a través de la sentencia DELETE, cuya sintaxis es la siguiente:
DELETE FROM tablas WHERE criterios
Donde el parámetro ‘tablas’ indica el nombre de las tablas de las cuales se desea
eliminar los registros, y, el parámetro ‘criterios’, representa las comparaciones 0 criterios
que deben cumplir los registros a eliminar, respetando a aquellos registros que no los
cumplan. Si - por ejemplo - quisiéramos eliminar todos los pedidos realizados por el
cliente cuyo código sea 4 en el día de hoy, utilizaríamos la siguiente sentencia:
DELETE
FROM pedidos WHERE [codígo cliente]=4 AND fecha=Now();
g) Aritmética con SQL
* Sumas 0 totales
Para sumar las cantidades numéricas contenidas en un determinado campo, hemos de
utilizar la función SUM, cuya sintaxis es la siguiente:
SUM(expresíón)
Donde ‘expresión’ puede representar un campo o una operación con algún campo.
77
5. Programación de una BD1
La función SUM retorna el resultado de la suma de la expresión indicada en todos los
registros que son afectados por la consulta. Veamos algunos ejemplos:
SELE& SUM(unidades)
FRO M pedidos;
Retorna el total de u,nidades pedidas (la suma de todos los valores almacenados en el
campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo campo
en el RecordSet.
SELECT SUM(ingresos-gastos) AS saldo FROM diario;
Retorna el saldo final de una tabla llamada ‘diario’. Este resultado se toma como un
nuevo campo en el RecordSet y se le llama ‘saldo’.
SELECT SlJM(unidades)
AS tota/ FROM pedidos WHERE fecha=Now();
Retorna el total de unidades pedidas hoy. Este resultado se toma como un nuevo
campo en el RecordSet y se le llama ‘total’.
* Promedios o medias aritméticas
Para averiguar el promedio de unas cantidades utilizaremos la función AVG, cuya
sintaxis es la siguiente: AVG(expresión)
La función AVG retorna el promedio o media aritmética de la expresión especificada, en
todos los registros afectados por la consulta. Esto es lo mismo que realizar una suma
(SUM) y, después, dividir el resultado entre el número de registros implicados. He aquí
algunos ejemplos:
SELECT A VG(unidades)
FRO M PEDIDOS;
Retorna el promedio de unidades pedidas (la media de todos los valores almacenados
en el campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo
campo en el RecordSet.
SELECTA VG(ingresos-gastos)
AS saldo-medio FROM diario;
78
5. Programación de una BD1
Retorna el saldo medio de una tabla llamada ‘diario’. Este resultado se toma como un
nuevo campo en el RecordSet y se le llama ‘saldo-medio’.
SELECTA VG(unidades)
AS media FROM pedidos WHERE
fecha=Now();
Retorna el promedio de unidades pedidas hoy. Este resultado se toma como un nuevo
campo en el RecordSet y se le llama
'media'.
* Valores mínimos y máximos
También es posible conocer el valor mínimo o máximo de un campo, mediante las
funciones MIN y MAX, cuyas sintaxis son las siguientes:
MIN(expresión)
MAX(expresión)
He aquí algunos ejemplos:
SELECT MIN(unidades)
AS minimo FROM pedidos;
Retorna el pedido más pequeño y lo refleja en el campo ‘minimo’.
SELECT MAX(unidades)
AS maximo FROM pedidos WHERE fecha=Now();
Retorna el pedido más grande de hoy y lo refleja en el campo ‘maximo’.
SELECT MAX(gastos)
AS maximo FROM diario;
Retorna el gasto más costoso reflejado en el diario contable, y lo representa en el
campo ‘maximo’.
* Conteo de registros
Para conocer cuántos registros hay utilizaremos la función COUNT, cuya sintaxis es la
siguiente: COUNT(expresión).
79
5. Programación de una BD1
La función COUNT retorna el número de registros indicados en la expresión. He aquí
algunos ejemplos:’
SELECT COUNT(*)
AS num_pedidos
FROM pedidos WHERE fecha=Now();
Retorna el número de pedidos realizados hoy. Este resultado se toma como un nuevo
campo en el RecordSet y se le llama ‘num-pedidos’.
SELECT COUNT(*)
AS casados FROM clientes WHERE casado=True;
Retorna el número de clientes casados. Este resultado se toma como un nuevo campo
y se le llama ‘casados’.
SELECT COUNT(*) AS num-pagos FROM diario WHERE gastos=25594;
Retorna el número de pagos por un importe equivalente a 25594. Este resultado se
toma como un nuevo campo en el RecordSet, y se le llama ‘num-pagos’.
SELECT SUM(unidades) AS total, AVG(unidades) AS media, COUNT(*) AS registros,
MAX(unidades) AS maximo, MIN(unidades) AS minimo FROM pedidos WHERE fecha
BETWEEN #III /97# AND #%/30/97#;
Retorna el total, la media, el máximo y el mínimo de unidades pedidas, y el número de
pedidos realizados, durante el primer semestre de 1997
h) Omisión de registros duplicados
En una consulta podría ser útil omitir registros que estén duplicados. Por ejemplo, en
nuestros pedidos hay duplicación, puesto que un cliente realiza varios pedidos en el
mismo día. Quizá necesitemos una historia para conocer los días y los clientes que
realizaron algún pedido, pero no necesitaremos toda la lista, si no que nos diga,
únicamente, mediante una línea, qué cliente realizó algún pedido y en qué día. Para
ello, utilizaremos el predicado DISTINCT, cuya sintaxis es la siguiente:
SELECT DISTINCT lista-campos . . .
80
5. Programación de una BD1
El predicado DISTINCT omite aquellos registros duplicados en los campos
especificados. En el problema expuesto, utilizaremos la siguiente sentencia:
;SELECT DISTINCT [codigo cliente],fecha
FROM pedidos;
Si deseamos que la consulta sea más completa y nos visualice también el nombre y los
apellidos correspondientes del cliente en cuestión (estos datos están en la tabla
‘clientes’ y no en ‘pedidos’), escribiríamos este mandato:
SELECT DISTINCT pedidos.fecha, pedidos.[codigo
clientes. apellidos FRO M pedidos,
cliente], clientes.nombre,
clientes WHERE clientes.[codigo
cliente] =
pedidos. [codigo cliente];
i) Reemplazar datos
Es posible reemplazar el valor de un campo, para el total de la tabla al que pertenezca
mediante UPDATE, su sintaxis es la siguiente:
UPDATE lista-tablas SET campo=nuevo-valor [,campo=nuevo-valor] [WHERE...]
Donde lista-tablas representa el nombre de las tablas donde se realizarán las
sustituciones o reemplazos. El parámetro campo indica el campo que se va a modificar,
y el parámetro nuevo-valor respresenta una expresión (constante, valor directo, un
cálculo, etc.) cuyo resultado o valor será el nuevo valor del campo.
La sentencia UPDATE es muy versátil y potente, por lo que podemos realizar
.reemplazos
condicionantes, ya que permite la cláusula WHERE. De ello se deduce que
- por ejemplo -, si se desea bajar un 10% el importe del seguro a aquellos asegurados
que cumplan más de dos años de carnet de conducir, y que tengan más de 22 años de
edad, tendríamos que escribir la siguiente sentencia:
UPDATE asegurados SET importe=impotte/l. 1 WHERE edad>22 AND YEAR(Now)YEAR(expedicion)>2;
81
5. Programación de una BD1
Adicionalmente es posible utilizar varias tablas y sustituir el valor de un campo de una
de las tablas con el valor del campo de otra tabla, o bien reemplazar el valor de unos
campos de alguna tabla si el valor de los campos de otras tablas cumple una serie de
Arequisitos.
j) Grupos de registros
Si se precisa mostrar un resumen de los datos que tenemos, especificando el total - por
ejemplo -, de los ingresos y de los gastos de cada día, en lugar de visualizar todos los
ingresos y gastos realizados al detalle. Para llevar a cabo esta tarea hemos de tener en
cuenta, en primer lugar, bajo qué campo se van a agrupar los datos (en lo expuesto,
sería el campo fecha), y, a continuación, realizar la consulta mediante la cláusula
GROUP SY, cuya sintaxis es la siguiente:
SELECT . . . FROM . . . [WHERE . ../ GROUP BY lista-campos
Básicamente, la cláusula GROUP BY agrupa o combina registros con idéntico valor en
IoS campos especificados, en un único registro. Imaginemos que queremos hacer un
resumen de nuestros pedidos, y queremos saber cuántos pedidos y unidades han
realizado cada uno de nuestros clientes. Para ello, se escribiría una sentencia como
ésta:
SELECT codigo-cliente,
SUM(unidades)
count(codigo-cliente)
AS num-pedidos,
AS cantidad FROM pedidos GROUP BY codigo-cliente;
Para saber cuántos pedidos se realizaron cada día:
SELECT fecha, count(fecha)
AS numgedidos
FROM pedidos GROUP BY fecha;
Para conocer cuántas unidades se pidieron cada día, tipearíamos esta sentencia:
SELECT fecha, SUM(unidades)
AS cantidad FROM pedidos GROUP BY fecha;
82
5. Programación de una BD1
En la siguiente sentencia se muestra para cada cliente aquellos días en que se realizó
un pedido, resumiéndose el número de pedidos realizados así como el total de
unidades pedidas:
SELECT fecha, codigo-cliente,
SUM(unidades)
codigo-cliente
COUNT(codigo-cliente)
AS num-pedidos,
-
AS cantidad FROM pedidos GROUP BY fecha,
HAVING fechac#1/6/97#;
Como se puede apreciar, se ha especificado una condición a través de la cláusula
HAVING, que indica los criterios o condiciones a cumplir por los registros a visualizar en
un agrupamiento. En esta ocasión, la condición era de aquellos pedidos realizados
antes del seis de enero de 1997.
Para conocer una estadística de pedidos diaria, utilizaremos la siguiente sentencia:
SELECT fecha, COUNT(fecha)
MIN(unidades)
AS pedidos, SUM(unidades)
AS subtotal,
AS minimo, Mm(unidades) AS maximo, A VG(unidades)
AS promedio FROM pedidos GROUP BY fecha;
k) Combinación de datos
Las consultas realizadas hasta ahora requerían de una dosis de habilidad para
conseguir crear un conjunto de datos que tuviese información combinada de dos tablas.
Pero, podemos combinar datos de una manera mucho más sencilla y eficaz: mediante
las operaciones JOIN, las cuales permiten combinar datos de dos tablas. La operación
JOIN más común es INNER JOIN, cuya sintaxis es:
tabla 1 INNER JOIN tabla2 ON tabla 1 .campo~común=tabla2.campo~común
Donde tabla1 y tabla2 representan el nombre de las tablas a combinar. Ambas tablas
han de tener un campo común o igual para poder realizar correctamente la combinación
de los datos. Por ejemplo:
5. Programación de una BD1
SELECT * FROM pedidos INNER JOIN clientes ON pedidos.codigo-cliente =
clientes. codigo-cliente;
El resultado será un conjunto ie registros con los datos de las dos tablas. Este conjunto
poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la
tabla clientes. En cada registro aparecerán los datos relacionados, es decir, que en un
pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el
pedido.
La operación INNER JOIN combina los datos de las dos tablas siempre que haya
valores coincidentes en los campos comunes o enlazados.
Existen también otras dos formas de combinar: LEFT JOIN y RIGHT JOIN. Ambas
tienen la misma sintaxis que INNER JOIN, pero estas operaciones incluyen todos los
registros de una tabla y aquellos registros de la otra en que los campos comunes sean
iguales.
En la operación LEFT JOIN, incluye todos los registros de la primera tabla (parámetro
tabla?)
y aquellos registros de la segunda tabla (parámetro tabla2) en que los campos
comunes sean iguales. En la operación RIGHT JOIN ocurre lo contrario: incluye todos
los registros de la segunda tabla y aquellos registros de la primera tabla en que los
campos comunes sean iguales.
Aunque la diferencia entre las tres operaciones parezca inexistente, en realidad sí
existe. La operación INNER JOIN realiza una combinación con todos aquellos registros
de las dos tablas en que el campo común de ambas tenga el mismo valor, mientras que
las operaciones LEFT JOIN y RIGHT JOIN realizan la combinación de todos los
registros de la tabla que combinan (ya sea la primera para LEFT JOIN o la segunda
para RIGHT JOIN), aunque en la otra tabla, en el campo común no haya coincidencia.
84
5. Programación de una BD1
La prueba se ve rápidamente si se introduce un código de cliente en el campo
campo-cliente de la tabla pedidos que no exista:
SELECT * FROM pedidos INNER JOIN clientes ON ped&s.codigo~cliente =
clientes. codigo-cliente;
El registro que contiene el pedido del cliente que no existe no aparece, puesto que no
hay coincidencia. Si utilizamos:
SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo-cliente
=
clientesxodigo-cliente;
Observaremos que aparecen todos los registros de la tabla pedidos, incluido aquel
donde indicamos que el pedido fue solicitado por el cliente inexistente, pero en los
campos relacionados (campos de la tabla clientes) no habrá ningún dato relacionado o
combinado. Si utilizamos:
SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo-cliente
=
clientes. codigo-cliente;
Obtendremos el mismo resultado que con la operación INNER JOIN, puesto que se
visualizan todos aquellos registros que existen en clientes y aquellos que coincidan con
el campo clave en la tabla pedidos. Como el código inexistente no existe en la tabla
clientes, este registro no aparece.
Mediante las herramientas citadas, es posible recuperar los datos objetivo que serán
transformados al formato IPL, dichos datos, generalmente serán el producto de varias
consultas cuyos productos se redireccionan hacia un archivo a partir del que se
edificará la base de datos en intenso, sobre la que opera el proceso de inferencia.
Consideremos
el
siguiente
ejemplo:
85
5. Programación de una BD1
Sean R’(T1 ,..., Tn), y R2(T1 ,..., T,), donde:
i
R’ (TI,Tz,T~ Ts,T4) con TI (CVE), Tz(MAXl), T3 (MAX2) T4(MAX3),
R* (LLT3 h,L) con
TI
T5 (MAX4).
(CVE), T2(Ll), T3 (l-2) T4(L3), TS (L4).
Considerando un esquema de BD persistente en que se precisa:
Tabla:
Motor.
CVE String ’ 5
Indice
primario.
MAXI - MAX4 Double
Tabla:
Lecturas.
CVE String ’ 5
Indice
primario.
Ll - L4 Double
Relacionadas por el campo CVE.
Y una base en intenso compuesta por el total de registros edificada con base a la
siguiente estructura:
motor(cve,ml ,m2,m3,m4).
lectura(cve,II ,12,13,14).
Tenemos:
a) Creación de la base persistente:
’ Listado 1 Creación de la base persistente:
’ Código: Visual Basic
’ Contenida en el CD anexo
5. Programación de una BD1
Prívate Function makedbo
’ { Creación de la BD
Const Db-Path As String = “‘PATHIgeneal.mdb”
Dim NewDb As Database
Dim Ws As Workspace
Set Ws = DBEngine. Workspaces(0)
Dim DbOpciones As Long
DbOpciones = db Versíon70 + db Encrypt
Set NewDb = Ws. CreateDatabase(DbPath, dbLangGeneral,
y Definición de tablas
Dim NewTb As TableDef
Set NewTb = NewDb. CreateTableDef(“motor”)
r Definición de los campos de la tabla
ReDim Campo(1 To 5) As Field
Set Campo(l) = NewTb. CreateField(“CVE”, dbText, 5)
Set Campa(2) = NewTb. CreateField(“MAX1 “, dblong)
Set Campa(3) = NewTb. CreateField(“MAX2”, dblong)
Set Campo(#) = NewTb. CreateField(“MAX3”, dbLong)
Set Campo(S) = NewTb. CreateField(“MAX#“, dbLong)
Dim i As Byte
Fori= 1 To5
NewTb. Fields. Append Campo(i)
Next i
‘{Definición de índíce de la tabla
Dim Idxíd-ct As Index
Dim Campoíd As Fíeld
Set Idxíd-ct = îvewTb. Createindex(‘% Vp)
Idxid-ct. Primaty = True
Set Campoid = Idxíd-ct. CreateFíeld(“C VE”)
Idxid-ct. Fields. Append Campoid
NewTb. Indexes. Append Idxíd-ct
NewDb. TableDefs. Append NewTb
’ { Utilizando SQL
Dim SQLCreate As Stríng
SQLCreate = “CREATE TABLE LECTURAS (CVE TEXT (5), ”
SQLCreate = SQLCreate + “Ll LONG, L2 LONG, u
DbOpciones)
87
5. Programación de una BD1
SQLCreafe
= SQLCreate + “f-3 LONG, L4 LONG )”
NewDb. Execute (SQLCreate)
4
‘{ Creación de índice
SQLCreate = “CREATE INDEX Fol ON LECTURAS (CVE) WITff PRIMARY”
NewDb. Execute (SQLCreate)
y Definición de las relaciones entre tablas empleando el objeto relación
Dim NewRel As Relation
Dim CampoRel As Field
Set NewRel = NewDb.
NewRel. Table = “motor’
NewRel. ForeignTable =
Set CampoRel= NewRel.
Campo Re/. ForeignName
CreateRelation(“motor-lecturas”)
“lecturas”
CreateField(“CVE’3
= “C VE”
YAgregar el campo a la relación y la relación a la DB
Ne wRel. Fields. Append Campo Re/
NewDb. Relations.Append NewRel
YSe cierra la base de datos y se liberan los recursos
NewDb. Close
End Function
b) Creación de la base en intenso:
’ Listado 2 Creación de la base en intenso (Considerando un archivo plano)
’ Código Visual Basic.
’ Contenida en el CD anexo.
Private Function makebdio
Dim dbDatos As Database
Dim tb, bt As Recordset
Dim tipe, btipe As String
free = FreeFiie
Open “‘Path+file” For Output As ##ree
Set db = OpenDatabase(“‘Path+file’3
y Path + file se sustituyen por los parámetros reales presentes
7 En el sistema
5. Programación de una BD1
88
Set tb = db. OpenRecordset(“motor’~
Set bt = db. OpenRecordset(“lecturas’~
tipe = “Objeto”
btipe = “Lecturas”
IAhile Not tb. EOF
A$ = tb!CVE
B$ = tb!MAXl
C$ = tb!MAX2
D$ = tb!Mm3
e$ = tb!MAX4
Ab$ = Cbr(44) + C$ + Chr(44) + D$ + Chr(44) + e$
f$ = tipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46)
tistl.Addltem f$
Print #free, f.$
tb. MoveNext
Wend
tb. Close
While Not bt. EOF
A$ = bt!CVE
B$ = bt!L1
C$ = bt’L2
D$ = bt!L3
e$ = bt!L4
AbS = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$
f$ = btipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46)
Print ##tiree, f$
bt. MoveNext
Wend
bt. Close
db. Close
Close #free
End Function
52.4 Edición de las Bases Persistentes y en Intenso.
En el desarrollo de los distintos prototipos, hemos incluido un vista global de las bases de
datos que recuperan tanto la estructura como el contenido de dicha, con el objetivo de
consolidar una aplicación totalmente transparente, el siguiente listado constituye su base
de operación ( En fragmentos de código, se hace referencia a los objetos contenidos en
el prototipo de ejemplo anexo al presente documento):
89
5. Programación de una BD1
a) Edición de la base persistente.
‘Listado 3, Explorar la base persistente
‘Código: Visual Basic.
4
O p t i o n Explicit
Dim
Dim
Dim
Dim
Dim
Dim
WorkDb As Database
td As TableDef
DataBaselsOpen As Boolean
CurrentTable As Recordset
TablelsOpen As Boolean
source As String
Private Sub Form-Loado
Dim td As TableDef
Set WorkDb = DBEngine. Workspaces(0). OpenDatabase(“path+file”)
Da ta Basels Open = True
For Each td In WorkDb. TableDefs
If td.Attributes = 0 Then
IstOfTables. Addltem td. Name
End If
Next td
End Sub
Prívate Sub Form-Unload(CANCEL As lnteger)
If DataBaselsOpen Then WorkDb. Close
End Sub
Private Sub LstOfFields-Clicko
On Resume Next
Dim td As TableDef
Dim Fld As Field
Dim Thisltem As Integer
Set td = WorkDb. TableDefs(lstOfTables)
If IstOfFields <> “” Then
Set Fld = td. Fields(lstOfFields)
Select Case Fld. Type
Case dbByte: IblType. Caption = “Byte”
Case dblnteger: IblType. Caption = “Integer”
Case dbiong: IblType. Caption = “Long”
Case db Text: IblType. Caption = “Text”
Case dbsingle: IblType. Caption = “Single”
Case db Boolean: IblType. Caption = “Boolean”
Case dbDoub/e: IblType. Caption = “Double”
5. Programación de una BD1
Case dbcurrency: IbiType. Caption = “Currency”
Case dbDate: IbiType. Caption = “Date”
Case db Time: IbiType. Caption = “Time”
Case dbL0ngBinat-y: IbiType. Caption = ‘Binary”
Case dbBinary: IbiType. Caption = ‘Binaty”
Case dbMemo: IbiType. Caption = “Memo”
Case Eise: IbiType. Caption = Fid. Type
End Select
IbiSize. Caption = Fid. Size
IbiSample = “Ejemplo del Campo: ” & Fid. Name
IstSample. Ciear
if Val(txtNumberoSampies)
> 0 Then
CurrentTabie. MoveFirst
Do Until CurrentTabie. EOF Or Thisitem >= Vai(txtNumberoSampies)
if err = 0 Then
if Not isNuii(CurrentTabie(Fid. Name)) Then
IstSamp/e.Addltem CurrentTable(Fid. Name)
if err <> 0 Then
Select Case err
Case 3 167: istSampie.Additem “<Deieted>”
Case Eise: istSampie.Addltem “<En=” & Trim$(Str$(err)) & ‘5”
End Seiect
End if
Eise
istSample.Addltem
“~Nuli~”
End if
Eise
Seiect Case err
Case 3167: istSample.Additem “<Deieted>”
Case Eise: istSampie.Additem “<En-=” & Trim$(Str$(err)) & “>”
End Seiect
End If
CurrentTabie. MoveNext
Thisitem = Thisitem + 1
Loop
End If
End if
End Sub
Private Sub IstOflndexes-Click()
Dim Fid As Fjeld
Dim idx As index
Set idx = td. Indexes(istOflndexes)
IstOfindexFieids. Ciear
For Each Fid In idx. Fieids
IstOfindexFieids. Addltem Fid. Name
Next Fid
90
5. Programación de una BD1
LstOfFields-Click
End Sub
Privafe Sub /stOflables-C/ickO
-’
Dim Fld As Field
Dim Idx As Index
If TablelsOpen Then CurrentTable. Close
Set CurrentTable = WorkDb. OpenRecordset(fstOfTabies)
TablelsOpen = True
IstOfFields. Clear
Set td = WorkDb. TableDefs(lstOfTables)
For Each Fld In td. Fields
IstOfFields. Addltem Fld. Name
Next Fld
IblType. Caption = MM
IblSize. Caption = “”
IstOflndexes. Clear
For Each Idx In td.Indexes
IstOflndexes. Addltem Idx. Name
Next Idx
IstSample. Clear
End Sub
Privafe Sub fxfDafaBaseName-KeyPress(KeyAscii As lnfeger)
If KeyAscii = 13 Then cmdOpen_ Click
End Sub
b) Edición de la base en intenso
‘Listado 4, Editar la base en intenso
‘Código:
Visual
Basic.
Privafe Funcfion EdifBd@
Dim count As Integer
Dim free, ncar As Integer
free = FreeFile
Open ‘%:VinalVnfol. txt” For Input As ##free
ncar = LOF(free)
Bditxt. Text = Input(ncar, free)
Close free
End Funcfion
91
5. Programación de una BD1
92
5.2.4.1 Representación gráfica de los datos
La representación gráfica de los datos contenidos en la base en intenso, constituyen una
forma sencilla de visualizar los resultados de los distintos procesos de &lección y filtrado,
previos al proceso de inferencia.
‘Listado 5, Representación gráfica en árbol
‘Código:
Visual
Basic.
Op tion Explicit
Dim cont-mostrados As Long
Dim mjleft As Long
Dim mi-top As Long
Dim avance-leff As Long
Dím avance-top As Long
Dim media-caja As Long
Dim minimo_punto As Long
Dim cancelar-arbol As Boolean
Private Sub Aceptar-ClickO
Unload Me
End Sub
Private Sub Btn-ArboleClickO
Dim i As Long
Dim X As Long
Dim cocl-arb() As String
Dim desc-arb() As String
Dim cod-padre-arb() As Stting
Btn-Arbol. Visible = False
Aceptar. Visible = False
selectFile0bligatoty CTE-C-PRG-ARBOL, “*,db”, CTE-TIPO-ARCHIVO-TEXTO,
“Abrir Fichero de arbol”, “&AbriJ’
If Not cancelar-operacion-fichero-gti Then
On Error Resume Next s-a&-leer-arbol-GAIH
cod-ah{), desc-arb(),
cod-padre-arb()
cont-mostrados = 0
mi-top = avance-top
Screen. MousePointer = CTE-ARENA
cancelar-arboi = True
While cancelar-arbol
cancelar-arbol = False
For i = 1 To UBound(cod-arb)
5. Programación de una BD1
If cod-padre-arb(i) = “” Then
mjleff = avance-lefi f-expandir-nodo_GAIH i, cod-arb(), desc-arb(),
cod-padre-arb()
Do Events
EncJ lf
If cancelar-arbol Then
Me. Cls
Do Even@
For X = 1 To cont-mostrados
Unload Etiqueta(X)
Next X
Exit For
End If
Next i
Wend
Screen. MousePointer = CTE-DEFECTO
End If
End Sub
Private Sub Form-Load(‘)
Me. KeyPreview
= True
frm-uO-arbo.AutoRedraw = False
frm-uO-arbo. WindowState = CTE-MAX!MlZED
frm-uO-arbo. Drawwidfh = 4
avance-left = 1200 / 7 5
avance-top = 300 / 15
media-caja = 120 / 15
mirimo-punto = 4
End Sub
Function f-expandir-nodo-GAlH(nodo As Long, cod-arb() As String, desc-arb0
As String, cod_padre-arb0 As Stríng) As Boolean
Dim viejo-/etI As Long
Dim numero-hijos As Long
s-mostrar-etigueta_GAIH nodo, desc-arb() viejo-lei = mi-Iel? numero-hijos =
f-mostrar-hijos-GAIH(nodo, cod-arb(), desc-arb(), cod_padre-arb())
mi-/et? = vieio_iel?
If numero-hijos > 0 Then
f-expandir-nodo-GAIH = True
Else
f-expandir-nodo-GAIH = False
End If
End Function
Private Sub s-mostrar-etiqueta-GAIH(nodo As Long, desc-arb0 As String)
cont-mostrados = cont-mostrados + 1
Load Etiqueta(cont-mostrados)
Etiqueta(cont-mostrados).leff = mi_lef? + desviacion-ejes-X
Etiqueta(cont-mostrados). top = mi-top + desviacion-ejes- Y
93
5. Programación de una BD1
94
Etiqueta(cont-mostrados). Visible = True Etiqueta(confmostrados). Caption =
descTarb(nodo)
End Sub
Function f-mostrar-hijos-GAlH(nodo As Long, cod-arbo As String, desc-arbo As
String, cod_padre-arbo As String) As Long
-e
Dim i As Long
Dim primer-hijo As Boolean
Dim cont-hijos As Long
Dim pta-x As Long
Dim ptoy As Long
Dim ha-habido-hijos As Boolean
primer-hijo = True
cont-hijos = 0
for i = 1 To UBound(cod-arb)
lf cod-padre-arb(i) = cod-arb(nodo) Then
If primer-hijo Then
cont-hijos = 1
mi-íet? = mjlei? + avance-left
Me. Line (mjleff - avance-let? + 20, mi-top + media-caja)-(mi-/et?, mitop +
media-caja), 0
Else
Me. Line (miTleR - avance-lei / 4, mi-top + media-caja)-(mi-le& mi-top +
media-caja), 0
ptoJ = mi-top + media-caja - minimo-punto
pta-x = mjleft - avance-left / 4
While Point(pto-x, ptoq/) <> 0
PSet (pta-x, pto_yl, 0
ptoq/ = pto_y - minimo_punto
If ptoJ < 0 Then
avance-left = avance-Iel? * 2
cancelar-atbol = True
Exit Function
End If
Wend
PSet (pta-x, ptoq/), 0
cont-hijos = cont-hijos + 1
End If
ha-habido-hijos = f-expandir-nodo-GAIH(i, cod-arb(), descTarb(),
cod_padre-arb())
If Not ha-habido-hijos Then
mi-top = mi-top + avance-top
End If
primer-hijo = False
End If
Next i
f-mostrar-hijos_GAiH = co&hijos
End Function
5. Programación de una BD1
PNvate Sub s-aut-leer-arbol-GAIH(cod-arb(J
As String, desc-arb0 As String,
cod_padre-arbo As String)
On Error GoTo abrir-error
Dim linea As String
Dim indice As Long
principio:
Screen.MousePointer = CTE-ARENA
Open nombre-fichero-ge For Input As #CTETNF_63TARB
ReDim cod-arb(1 To 1) As Stnng
ReDim desc-arb(1 To 1) As String
ReDim cod_padre-arb(1 To 1) As String
indice = 0
While Not EOF(CTETNFT63-ARB)
linea = readLine@noreComment(CTE-NF-63-ARB)
If Len(linea) > 0 Then
indice = indice + 1
ReDim Preserve cod-arb(1 To indice) As String
ReDim Preserve desc-arb(1 To indice) As String
ReDim Preserve cod_padreTarb(l To indice) As String
cod-arb(indice) = noQuotes(extFie/d(finea, 1, CTE-SEP,
CTE-QUOTEDTFIELDS,
CTETNOTZTSEP-AS-ONE))
desc-arb(indice) = noQuotes(extField(linea, 2, CTE-SEP,
CTE-QUOTED-FIELDS, CTE-NO-2-SEP-AS-ONE))
cod_padre-arb(indice) = noQuotes(extField(linea, 3, CTE-SEP;
CTE-QUOTED-FIELDS, CTETNO-ZTSEP-AS-ONE))
End If
Wend
Close #CTE_NF_63_ARB
DoEvents
Screen. MousePointer = CTETDEFECTO
Exit Sub
abrir_error:
s-error-ger CTE-ERROR-GRAVE,
Close #CTE-NF-63-ARB
DoEvents
Screen. MousePointer = CTETDEFECTO
If Not automatice-gcf Then
selectFite0bligatot-y
CTE-CTPRG-ARBOL, ““. txt”, CTETTIPO~ARCHIVO~TEXTO,
“Abrir Fichero de árbol”, “&Abrir”
CTE~SELECCIONAR~F/CHERO~OBL/GATORIO~OP~FICH
If cancelar-operacionTfero_gfí
Then Exit Sub
End If
Go To principio
End Sub
95
96
5. Programación de una BD1
5.3 Archivos binarios
En el--desarrollo de una base de datos inteligente, es común el uso de datos no
persistentes, tratados como archivos binarios que se crean y destruyen según sea preciso
en el desarrollo de la aplicación, generalmente concentran datos en estado intermedio
útiles para procesos particulares de inferencia pero no necesarios de forma persistente.
Aún cuando la mayoría del Hardware actual está provisto de RAM suficiente para tratar
grandes’ grupos de datos mediante arreglos, éstos generan pérdida de eficiencia en un
contexto general, por ello, la mejor opción es el uso de archivos binarios .temporales,
grabados en disco a cuyos datos se accede cuando es necesario, consideremos el
siguiente ejemplo, con las características básicas(buscar, eliminar, editar, agregar):
Sean R(Tl,...,T”), donde:
R' (LLT3,T&)
con:
TI (CVE), T2(MUESTRA), T3 (FECHA) T4(VALOR),
T5 (CONTADOR).
Obtenida por los módulos ( En fragmentos de código, se hace referencia a
objetos[lista-muestra, frmBinary] contenidos en el prototipo de ejemplo anexo al
presente documento):
‘Listado 6 Datos binarios
‘Código: Visual Basic.
Binary DB1 . bas
Public DatabasePath As String
Public BackupDatabasePath
As String
Public IndexPath As String
Public ditty As Boolean
Public cualq-camb As Boolean
Public Const DOT = “n”
Public Const Marca-en = “@Marca-en@”
Private Const DATABASE-RECORD-LIMIT = 65000
5. Programación de una BD1
Pnvate Const COLUMNTWIDTH = 20
Private Const DATABASE-NAME = ‘Bintmp. tmp”
Ptivate Const INDU(-NAME = “Bintmp.idx”
Private Const BACKUPTDATABASETNAME
= “Bintmp.mbO”
Private Const BACKUPTINDEXTNAME
= “Bintmp.idO”
Private Const START-BYTETPART = 1
-Private Const LENTBYTETPART = 2
Private Const FROMTPART = 3
Pnvate Const SUBJECTTPART = 4
Private Const DATE-PART = 5
Private Const TO-PART = 6
Private Const INDE.XTPART = 7
Public Sub AddRecordO
On Error Resume Next
cualq-camb = True
frmRec.txtDate = Now
recnext& = CLng( Val(Readlndex(“RecNext’~))
frmRec.txtlndex = recnext& & “”
frmRec.Show ?
BinatyMgmt. AddRecordFinish
Unload frmRec
On Error GoTo 0
On Error Resume Next
End Sub
Prívate Sub AddRecordFínish()
On Error Resume Next
Dim message As String
message = Trim(frmRec. txtMessage)
Open DatabasePath For Binar-y As #7
byte-next = Readlndex(“ByteNext”)
rec-next = Readlndex(“RecNext’7
Put #ti, byte-next, message
Close #l
L
len-bytes = Len(message)
v$ = byte-next & DOT & len-bytes & DOT ¿? Trim(frmRec.txtFrom) & DOT &
Ttim(frmRec.txtSubject) & DOT & Tnm(frmRec. txtDate) & DOT & Trim(frmRec. txtTo) &
DOT & “HECHO”
Wntelndex “R” & rec-next, v$
byte-next = byte-next + len-bytes
Wrtelndex “ByteNext”, byte-next
rec-next = rec-next + 7
Wntelndex “RecNext”, rec-next
ReadAllRecords
On Error GoTo 0
On Error Resume Next
97
5. Programación de una BD1
End Sub
Public Sub EdíiRecordO
On Error Resume Next
If frmBinary./ista~muestra.
Listlndex = 0 Then Exit Sub
v$ = frmBinary. lista-muestra. List(frm8inarylista~muestra.
Listlndex)
myindex = ParseTab(v$, 5): v$ = “”
frmRec. txtlndex =. myindex
v$ = Readlndex(“R” & myindex)
Sta-byte& = CLng(Val(Parse(v$, START-BYTE-PART)))
len-bytes& = CLng(Val(Parse(v$, LEN-BYTE-PART)))
Dim filebuffer As Stríng
filebuffer = String(len-bytes&, 0)
Open DatabasePath for Binary As #f
~l@##, Sta-byte&, filebuffer
frmRec.txtDate = Parse(v$, DATE-PART)
frmRec.txtTo = Parse(v$, TO-PART)
frmRec.txtFrom = Parse(v$, FROM-PART)
frmRec.txtSubject = Parse(v$, SUBJECT-PART)
frm Rec. txtMessage = Mid$(fSlebuffer, 1, len-bytes&)
frmRec. Sho w 1
If dkty = True Then
BinatyMgmt. EditRecordFinish
dírty = False
End If
Unload frmRec
On Error GoTo 0
On Error Resume Next
End Sub
Private Sub EditRecordFinishO
On Error Resume Next
cualq-camb = True
Dim message As String
message = Ttim(frmRec. txthllessage)
‘{Marca-en el registro actual
myindex = Trim(frmRec. txtlndex)
readin$ = Readlndex(“R” ¿? CLng(Val(myindex)))
readin$ = Left(readin$, Len(readin$) - 2)
readin$ = readín$ & “@Marca-en@”
Writelndex “R” & CLng( Val(myindex)), readin$
YEscribir un nuevo registro en la base
98
5. Programación de una BD1
byte-next = Readlndex(“5yteNext“)
rec-next = Readlndex(“RecNext’7
Put #7, byte-next, message
Close #?
2
YEn final ( index)
len-bytes = Len(pessage)
v$ = byfe_next & DOT & len-bytes & DOT & Trim(frmRec. txtfrom) & DOT &
Ttim(frmRec.txtSubject)
& DOT & Tt-im(frmRec. txtDate) & DOT & Trim(frmRec. txtTo) &
DOT & “HECHO“
Writelndex ‘R” & rec-next, v$
byte-next = byte-next + len-bytes
Writelndex “Byte Next’: byte-next
rec-next = rec-next + 4
Wi-itelndex “RecNext”, rec-next
End Sub
Public Sub DeleteRecordO
On Error Resume Next
cualq-camb = True
‘{Marca-en registro actual
lf frmBinaty.lista~muestra.
Listlndex = 0 Then Exit Sub
v$ = frm5inat-y. lista-muestra. List(frmBinaty. lista-muestra. Listlndex)
myindex = ParseTab(v$, 5): v$ = “”
readin$ = Readlndex(“R” ¿? CLng(Val(myindex)))
readin$ = Lefi(readin$, Len(readin$) - 2)
readin$ = readin$ & “@Marca-en@”
Writelndex ‘IR” & CLng(Val(myindex)), readin$
End Sub
Public Sub ReadAIIRecordsO
On Error Resume Next
frm5inai-y. lista-muestra. Clear
BuildHeaderList
v$ = “dummytext”
Do
k& = k& + 1
v$ = Readlndex(“R” & k&)
lfv$= “” Then Exit Do
If Right$(v$, Len(Marca-en)) <> Marca-en Then
frmBinary.llista-muestra.
Addltem _
Pad(Parse(v$, FROM-PART)) ¿? vbTab &-
99
5. Progmyción de una BD1
Pad(Parse(v$, SUBJECTJ4RT)) & VbTab & _
Pad(Parse(v$, DATE-PART)) & vbTab & _
Pad(Parse(v$, TO-PART)) & vbTab & _
k&
End If
Loop Until v$ = “”
On Error GoTo 0
On Error Resume Next
End Sub
Public Sub OpenDafabaseO
On Error Resume Next
DatabasePath = App. Path
If Right$(DatabasePath, 1) <> 7” Then DatabasePath = DatabasePath + ‘1”
DatabasePath = DatabasePath + DA TABASE-NAME
IndexPath = App. Path
If Right$(lndexPath, 1) C> ‘7” Then IndexPath = IndexPath + ‘7”
IndexPath = IndexPath + INDEX-NAME
If Not FileExists(DatabasePath) Then
‘{crear archivo
Open DatabasePath For Output As #I
Close #l
Open IndexPath For Output As #l
Print #l, “flndex]”
Print #l, “RecNext = 1”
Ptint #7, “ByteNext = 1”
Close #7
End If
On Error GoTo 0
On Error Resume Next
End Sub
Privafe Function FileExists(ByVal f$) As Boolean
On Error Resume Next
SetAttr f$, vbNormal
If Err Then
FileExisfs = False
Else
FileExists = True
End If
On Error GoTo 0
On Error Resume Next
End Funcfíon
100
101
5. Programación de una BD1
Private Function Pad(8yVal incoming As String) As String
On Error Resume Next
Select Case Len(incoming)
Case Is < COLUMN-WIDTH
incoming = incoming & Space(COLUMNT WIDTH - Len(incoming))
Case Is > COLUMNTWIDTH
incoming = Left$(incoming,
COLUMNTWIDTH)
End Select
Pad = incoming
On Error GoTo 0
On Error Resume Next
End Function
Private Sub BuildHeaderListo
On Error Resume Next
Dim cofheaders(5) As String
colheaders( 1) = “C VE”
colheaders(2) = “MUESTRA”
colheaders(3) = “FECHA”
colheaders(4) = “VALOR”
colheaders(5) = “CONTADOR”
Fork%=ITo5
header-row = header-row & Pad(colheaders(k%))
Next k%
frmBinary.listaTmuestra. Addltem header-ro w
On Error GoTo 0
On Error Resume Next
& ” ” & vb Tab
End Sub
Public Sub CompactDatabase()
On Error Resume Next
readin = 1
readout = 2
BackupDatabasePath = App. Path
If Right$(BackupDatabasePath,
1) <z= ‘1” Then
*
BackupDatabasePath = BackupDatabasePath & ‘7”
BackupDatabasePath = BackupDatabasePath + BACKUPTDATABASE-NAME
Kill
BackupDatabasePath
FileCopy
DatabasePath, BackupDatabasePath
Kill DatabasePath
Dim filebuffer As String
byte_next& = 1
Open BackupDatabasePath For Binary As #readin
Open DatabasePath For Binary As #readout
For k& = 1 To DATABASETRECORDTLIMIT
v$ = Readlndex(‘R” & k&)
lfv$= “” Then Exit For
5. Programación de una BD1
102
if Right$(v$, Len(MarcaTen)) <B Marca-en Then
start_byte& = CLng(Vai(Parse(v$, START-BYTE-PART)))
len-bytes& = CLng(Vai(Parse(v$, LEN-BYTE-PART)))
ti/ebuffer = String(ienTbytes&, 0)
Get ##readin, statf-byte&, fiiebuffer
outgoing$ = Mid$(tiiebuffer, 1, len-bytes&)
Put #readout, byte_next&, outgoing$
v$ = byte-next& & DOT & Parse(v$, LEN-BYTE-PART) & DOT & Parse(v$,
FROM-PART) & DOT & Parse(v$, SUBJECT-PART) & DOT & Parse(v$, DATE-PART)
& DOT & Parse(v$, TOTPART) & DOT & “HECHO”
Wnteindex “R” & k&, v$
byte_next& = byte-next& + len-bytes&
Eise
Wtitelndex “R” & k&, “@Marca-en@”
EndIf
Next
if byteTnext& = 0 Then byte-next& = 1
Writeindex “ByteNext”, byte-next&
Wnteindex “RecNext“, k&
Ciose #readout
Ciose #readin
Kiii BackupDatabasePath
On Error GoTo 0
On Error Resume Next
End Sub
BinaryDB2. bas
Private Const sizer = 255 * 5
Prívate Declare Function GetPrivateProfiieStnng
Lib “kernei32” Alias
“GetPrivateProfiteStringA”
(ByVai IpAppiicationName As String, t3yVai IpKeyName As
Any, ByVai IpDefauit As String, By Val IpReturnedString As String, ByVai nSize As Long,
ByVai IpFileName As Stting) As Long
Private Declare Function WritePrivateProfiieStnng
Lib “kernei32” Alias
“WntePrivateProt7leStringA”
(ByVai IpAppiicationName As String, ByVal IpKeyName As
Any, ByVai IpStnng As Any, ByVai IpFiieName As String) As Long
Public Function Readlndex(ByVal IstrKey As String) As String
On
Dim
Dim
Dim
Dim
Error Resume Next
IfixedstrRetVaiue As String * sizer
IstrRetVaiue As String
IintJunk As integer
IstrSection As String
IstrSection = “‘Index”
IfixedstrRet Value = String(sizer, ” ‘7
103
5. Programación de una BD1
IintJunk = GetPrivateProfileStríng(lstrSection,
IstrKey, ” “, IfixedstrRet Value, sizer,
IndexPath)
IsfrRet Value = Trim(/fixedstrRetValue)
IstrRetValue = Leff(lstrRetValue, Len(lstrRetValue) - 1)
Readlndex = IstrRet Value
On Error Go70 0
On Error Resume N-t
End Function
Public Sub Writelndex(ByVal IstrKey As String, ByVal IstrValue As String)
On Error Resume Next
Dim IstrSection As String
Dim IintJunk As Integer
IstrSection = “Index”
IstrValue = Ttim(lstrValue)
/intJunk = WritePrivafeProfi/eString(/strSecfion,
IstrKey, IstrValue, IndexPath)
On Error Go70 0
On Error Resume Next
End Sub
BinaryOB3. bas
Publíc Declare Function SendMessage Lib “user32” Alias “SendMessageA ”
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, IParam As
Long) As Long
Public Sub IniciaBinaryO
On Error Resume Next
BinaryMgmt. OpenDatabase
frmBinary. Show
On Error Go70 0
On Error Resume Next
End Sub
BinaryDB4. bas
Publk Function Parse(ByVal T$, v%) As String
On Error Resume Next
Const LIMITE = ‘W’
7$ = LIMI7E + Trim(T$) + LIMITE
5. Programación de una BD1
XI% = Len
Place% = 0
For Counterl% = 1 10 XI%
CurrentChar$ = Mid$(T.$, Counterl%, 1)
If CurrentChar$ = LIMITE Then Place% = Place% + 1
If Place% = v% Therr
xStart% = Counterl% + 1
Exit For
E n d
I f
Next
For CounterZ% = xStart% To XI%
CurrentChar$ = Mid$(T$, Counter2%, 1)
If CurrentChar$ = LIMITE Then Place% = Place% + 1
If Place% = v% + 1 Then
xStop% = CountetZ% - xStart%
Exit For
End If
Next
lf xStop% = 0 Then
Parse = Trim(Mid$(T$, xStatt%))
If InStr(Parse, LIMITE) Then Parse = “”
Else
Parse = Trim(Mid$(T$, xStart%, xStop%))
If InStr(Parse, LIMITE) Then Parse = “”
End If
On Error GoTo 0
On Error Resume Next
End Function
Public Function ParseTab(5yVal T$, v%) As String
On Error Resume Next
Const LIMITE = vbTab
T$ = LIMITE + Trim(T$) + LIMITE
XI% = Len
Place% = 0
For Counter?% = 7 To XI%
CurrentChar$ = Mid$(T$, Counterl%, 1)
If CurrentChar$ = LIMITE Then Place% = Place% + 1
If Place% = v% Then
xStart% = Counterl% + 1
Exit For
End If
Next
For CounteQ% = xStart% To XI%
CurrentChar.$ = Mid$(T$, Counter2%, 1)
If CurrentChar$ = LIMITE Then Place% = Place% + 1
If Place% = v% + 1 Then
104
\
105
5. Programación de una BD1
xStop% = Counter2% - xStart%
Exit For
End If
Next
If xStop% = 0 Then
ParseTab = Ttim(Mid$(T$, xStati%))
If InStr(ParseTab, LIMITE) Then ParseTab = “”
Else
ParseTab = Triin(Mid$(T$, xStart%, xStop%))
If InStr(ParseTab, LIMITE) Then ParseTab = “”
End If
On Error GoTo 0
On Error Resume Next
End Function
5.4 Filtrado y preproceso
En los ejemplos anteriores, se han utilizado métodos simples, que no precisan de filtrado o
preproceso en la construcción de la base de datos en intenso; en los siguientes
fragmentos de código se concentran algunos ejemplos en los que interviene el tratamiento
de la incertidumbre para la
clasificación y selección de los datos objetivo, sólo
presentamos los fragmentos centrales.
Ejemplos documentados de su uso pueden consultarse en el CD anexo:
l
Fuzzy DBExpert.
l
Fuzzy DbRelation.
5.4.1 Difusor simple
‘Listado 7 Difusor simple
‘Código:
Visual
Basic.
Private Sub fuzzyo
Dim dbDatos As Database
5. Programación de una BD1
Dim R As Recordset
free = FreeFile
Set dblìatos = OpenDatabase(‘path+file3
Set R = DB. OpenRecordset(“lectura~”
Open “‘PA TliIbase.int” For Output As #free
R. MoveFirst
While Not R.EOF
a$ = R!id
b$ = R!prioridad
c$ = R!lectura
Call difusor(a$, b$, c$)
R. MoveNext
Wend
R. Close
db Datos. Close
Close #free
End Sub
Prívate Function difusor(T1 As String, Ti? As Double, T3 As Double)
Dim free as integer
Dim pertenece, et As String
Dim li, Is as Double
et = “objeto{”
li = 0.3
ls = 0.8
If T2 c= li Then
pertenece = ‘Bajo”
End If
If T2 >= Is Then
pertenece = “Urgente”
Else
pertenece = ‘Alto”
End If
a$ = Tl
b$ = pertenece
c$ = T3
f$ = et + T1 + “, ” +pertenece+“, “+T3+‘3. ”
Print #Hee, f$
End Function
106
5. Programación de una BD1
107
54.2 Difusor con múltiples condiciones
El siguiente listado, es el eje operativo del ejemplo Fuzzy DBExpert. su implementación
bajo la plataforma de Visual Basic se detalla en los módulos asociados al proyecto. El
proceso mediante el cual se comunican los objetos en las llamadas a funciones y los
valores que regresan están definidos en las clases asociadas al proyecto.
‘Listado 8 Difusor con múltiples condiciones
‘Código: Visual Basic
vmplementar métodos para calcular el grado de pertenencia
yde un valor determinado a los conjuntos borrosos de las reglas.
Publíc Function medioConservador(num As Double) As Double
if(num <= 20) Then
return 0;
else if(num > 20 && num c 40) Then
return (nunV20. - 1.);
else if(num == 40) Then
return 1;
else if(num > 40 && num < 60) Then
return ((-num)/20. +3.);
Else
return 0;
End If
End Function
Public Function medioModerado( num As Double)As Double
if(num c= 20) Then
return 0;
else if(num > 20 && num < 40) Then
return (numD0. - 1.);
else if(num == 40) Then
return 1;
else if(num > 40 &¿? num < 60) Then
return ((-num)LZO. +3.);
Else
return 0;
End lf
End Function
108
5. Programación de una BD1
P ublic Function pocoArriesgado(num
As Double) As Double
if(num < 10) Then
return ((-0.1) *num+ 1.);
Else
return
0;
i
End If
End Function
Public Function medialnversion( num, As Double) As Double
if(num <= 25) Then
return 0;
else if(num > 25 &¿? num < 50) Then
return (numLZ.- 1.);
eke if(num == 50) Then
return 1;
else if(num > 50 && num < 75) Then
return ((-num)/25. +3.);
Eke
return 0;
End If
End Function
5.5 Manipulación de la base de datos en intenso
Dependiendo del proceso de inferencia utilizado (Funciones del lenguaje anfitrión o un
motor de inferencia periférico), la manipulación de la bases en intenso sera:
a)La base de datos en intenso esta constituida por un archivo temporal plano.
Dicha base, se crea y destruye según sea preciso en las operaciones genkales del
sistema, las operaciones sobre ésta las efectúa un archivo binario (file.xpl) compilado en
Prolog. La temporalidad de este archivo obedece a que el motor debe procesar bases de
conocimiento distintas en el marco de procesos de inferencia determinados.
Las bases en intenso se manipulan conforme a un conjunto determinado de reglas y
funciones que constituyen el núcleo del motor de inferencia, en dichas se deberán
concentrar la totalidad de los procesos de inferencia posibles para el total de bases
109
5. Programación de una BD1
temporales involucradas.
En las siguientes líneas definiremos las principales funciones
con que opera el motor de inferencia de Prolog sobre la base, para atender los
requerimientos del sistema, evidentemente el estudio exhaustivo del lenguaje Prolog
rebasa el propósito de dsta tesis, por lo que nos ocuparemos exclusivamente de los temas
directamente relacionados con nuestro estudio:
1. Representación del conocimiento en la base en intenso: Redes semánticas.
2. Métodos de resolución: Top Dow, Bottom Up.
3. Técnicas de búsqueda: Depth First, Breadth First.
4. Modelos heurísticos: Hipotético, Deductivo.
1. Representación del conocimiento en la base en intenso: Redes semánticas.
Quizás lo más simple de los sistemas de representación proporcional es la presunción de
que los conceptos están debidamente representados como un conjunto de atributos y
rasgos semánticos. Esta forma de representación es una aplicación muy natural del
lenguaje de la teoría de conjuntos para el problema de como caracterizar la naturaleza de
los conceptos. En este punto de vista han existido variaciones en el estudio de la memoria
semántica y también sobre presunciones relacionadas con la descripción de la
representación del conocimiento. De acuerdo con estos puntos de vista, los conceptos
están representados por un aumentado conjunto de rasgos. De esta forma los conceptos
pueden permanecer en un conjunto de relaciones familiares. Dos conceptos pueden estar:
l
Desligados (no tener atributos en común);
l
Sobrepuestos (tener algunos pero no todos los atributos en común);
l
Anidados (todos los atributos de un concepto están incluidos en el otro);
l
Ser idénticos (estar especificados en forma exacta por el mismo conjunto de rasgos).
Los rasgos pueden tener pesos asociados y relacionados con ellos que representan una
prominencia variada y características importantes para los conceptos en cuestión. Como
5. Programación de una BD1
110
una especie de revisión de todas las aplicaciones de estas ideas expuestas aquí, elegimos
para describir “la comparación del rasgo” el modelo propuesto por Smith .
2. Formas o Atributos Semánticos
La representación semántica es considerada la más natural, acreditan la relación de los
atributos con los elementos por medio de estamentos naturales. Veamos un ejemplo que
describe lo más completo posible este tipo de representación:
Un animal come alimento, respira aire, tiene masa y está formado por miembros; ahora
una persona es del tipo animal, el cual “hereda” todas las características antes descritas
del animal. Así también tenemos la posibilidad de detallar más sus cualidades como que
tiene en sus partes piernas y brazos.
La representación semántica denomina a los símbolos como “nodos” o nudos de una
malla de conceptos jerarquizados y bien establecidos con sus relaciones. La red descrita
en la figura siguiente determinada con lazos constituidos en (a,R,b), el cual “al’ y “b” son
los nodos que permanecen enlazados a través de la relación “R” , las flechas muestran el
sentido de la relación, sin poseer un carácter recíproco.
5. Programación de una BD1
! 1.
aire
masa
puede
tipo
formado
ph!nas
1
miembros
con-le
i
alimentos
/
es del tipo
es del tipo
del
1
esia
formado por
*volar
I
IPEA
un
representante
de
por
esta
formado por
1
piernas
’
alas
1
brazos
Persona X
/
color
representante
de
1
amarillo
Ave X
Fig. 14 Representación semántica
Para implementar la semántica expresada en la figura anterior, basta con definir la
estructura que genera la base donde se describen los hechos. Las siguientes cláusulas
proporcionan esta información:
r(‘ANIMAL”,respira,aire).
r(“ANIMAL”,tiene, masa).
r(“ANIMAL”,esta~formado_por,miembros).
r(“ANIMAL”,come,alimento).
r(“PAJARO”,es-deltipo,“ANIMAL”).
r(“PAJARO”,puede,volar).
5. Programación de una BD1
112
r(“PAJARO”,esta-formado_por,plumas).
r(“PAJARO”,esta-formado-por,alas).
r(“CANARIO”,es~del~tipo,“PAJARO”). -*
r(“CANARIO”,color,amarillo).
r(“Ave X “,un-representante-de,“CANARlO”).
r(“PERSONA”,es~del~tipo,“ANIMAL”).
r(“PERSONA”,esta-formadopor,piernas).
r(“PERSONA”,esta-formado_por,brazos).
r(“Persona X”,un-representante-de,“PERSONA”).
Podemos observar que la cláusula r( Elemento-l ,Lazo, Elemento-2) relaciona por medio
de “Lazo” el “elemento-l” con el “elemento-2”, sólo falta un sistema que haga uso de ella,
y exprese el conocimiento que la red determina por medio de la acción. Por ejemplo una
expresión clausal que sea capaz de proporcionar en una lista las características que
hereda un elemento de la clase.
La noción básica de esto es que el conocimiento puede ser representado por un tipo de
estructura gráfica directa y nivelada en la cual el elemento estructural básico es un
conjunto de nodos interrelacionados mediante relaciones. Los nodos representan
conceptos en la memoria. Una relación es una asociación entre los conjuntos de los
nodos. Las relaciones son directas y niveladas. Desde este punto de vista el “significado”
de un concepto (representado por un nodo) está dado por el patrón de relaciones entre el
cual éste participa. Las redes semánticas se caracterizan por el tratamiento de konceptos,
representados por nodos, y relaciones entre ellos, representadas por arcos que ligan a los
nodos entre sí. Básicamente los nodos pueden ser de dos tipos:
l
Individuales, representan descripciones o afirmaciones referentes a una instancia
individual de un objeto.
l
Genéricos, representan referentes de una clase o categoría de objetos.
5. Programación de una BD1
113
Los conceptos están previamente ordenados en una taxonomía, y existen los arcos
especiales “es un” y “es un tipo de”. El primero liga un nodo individual con uno genérico y
expresa que un individuo es de cierta clase, y el segundo liga dos nodos genéricos entre
sí y expresa que un concepto o tipo es un subtipo de otro.
Es importante destacar que a
diferencia del formalismo de la lógica, para las redes semánticas no hay métodos formales
y generales de deducción. El significado asignado a una red lo establecen solamente los
procedimientos que manipulan la red.
3. Métodos de resolución: Top Down, Bottom Up.
Los sistemas de resolución de problemas en IA, están basados en la formulación de la
solución del problema como una búsqueda. Se comienza en un estado inicial y la meta es
llegar a un estado final u objetivo, el proceso de evaluación de las alternativas para llegar
desde el estado inicial al objetivo se designa como búsqueda y el conjunto de pasos
posibles para llegar desde un estado inicial al objetivo, es llamado el espacio de
búsqueda. Los métodos de resolución se derivan del método de resolución de Robinson y
vienen a disminuir su complejidad en la búsqueda, son métodos de inferencia que orientan
las búsquedas y las técnicas de éstas. Representan las distintas formas de explorar la
información representada por un sistema inteligente.
* Método TOP DOWN
En el método Top Down se comienza tomando la cláusula objetivo o conclusión y se
razona de tal forma de ir a través de las aserciones e implicaciones, derivando nuevos
objetivos a partir de los objetivos anteriores hasta que todos los objetivos derivados, son
resueltos por las aserciones originales.
El encadenamiento hacia atrás “Top Down”, tiene la particularidad de ir generando con las
cláusulas que va tomando, una estructura de árbol. Una refutación es un camino en el
espacio de búsqueda, en este caso una rama del árbol, que comienza con el objetivo y
termina con la cláusula vacía.
5 Programación de una BD1
114
b) Método BOTTOM UP
El encadenamiento hacia adelante “Bottom Up”, se comienza con las cláusulas que son
aserciones o hipótesis. Para ello se usan las aserciones e implicaciones que permitan
derivar nuevas aserciones, se termina cuando eventualmente la cláusula original o
hipótesis es resultado de las aserciones derivadas.
Una refutación en este método comienza con las aserciones de las cláusulas originales,
se utilizan las aserciones para obtener nuevas aserciones a partir de las ya generadas, se
termina cuando se deriva una que explícitamente contradiga el objetivo. Este método de
resolución genera una estructura más compleja que la generada por “Top Down”, por lo
cual la búsqueda es más difícil.
5.4 Programación Lógica Paralela (Motor Relacional- Motor de Inferencia)
Como podemos apreciar en los ejemplos citados con anterioridad, la base en intenso es,
generalmente, una estructura simple, donde se evalúa a sus miembros en función de su
peso o áridad; resulta evidente que el repositorio de reglas constituye el eje fundamental
del proceso de inferencia. Este repositorio, para los efectos de nuestro estudio, se
concentra en funciones ad hoc desarrolladas en el lenguaje anfitrión (Visual Basic) y en
archivos binarios (.xpl) compilados por y para el motor de inferencia huésped Amzi4
Prolog.
En el primero de los casos se utilizan bloques de sentencias IF THEN ELSE inscritos en
ciclos predefinidos (p.ej. fuzzy) y los datos en intenso provienen de objetos Recordset,
propios del programa de aplicación. En el segundo, el motor de inferencia consulta un
repositorio de reglas predefinido y opera sobre archivos temporales (Base de datos en
intenso).
5 Programación de una BD1
ll5
J
Administración
de Bases de
-
-
-
-
Programa
-
1
I
I
L-
--m--J
\
/
Fig. 15. Diagrama General de la Arquitectura Propuesta.
En las siguientes líneas nos ocuparemos ponderantemente de este caso; es
conveniente destacar que los “arcos” o relaciones descritas con anterioridad, serán
sustituidos por expresiones capaces de derivar relaciones semánticas complejas
(herencia de elementos de clase), no definidas explícitamente en la base en intenso por
ejemplo, dada una estructura de base simple (toda persona tiene un nombre y un sexo):
persona(nombre,sexo).
donde:
persona( Carlos, M),
persona(Sofía,F),
Aplicando la expresión:
hombre:- persona(x,M).
mujer:-(persona(x,F).
5 Programación de una BD1
116
Tenemos:
I
Hombre
,
tiene
tiene
i
nombre
4
1
Mujer
SEXO
t
un
representante
de
un
representante
de
Por atributo M
Por atributo F
Carlos
De esta forma, en el repositorio de reglas (logic.xpl) podemos concentrar múltiples
relaciones semánticas complejas, para atacar el conjunto de necesidades del sistema,
así como integrar restricciones de integridad a la base en intenso.
El motor de inferencia opera sobre una base de datos en intenso en función de un
repositorio de reglas dado; todas las acciones del motor responden a eventos
predefínidos que se disparan desde la aplicación, en este proceso - como se ha descrito
anteriormente - interviene una secuencia ordenada de pasos, desde la selección de los
datos objetivo hasta los productos del proceso de inferencia.
Así, el flujo y
procesamiento de datos está regulado por el programa de aplicación, éste genera la
base en intenso, inicializa el motor de inferencia y a través de él consulta la base citada.
117
5 Programación de una BD1
Todas los ejemplos en que interviene el motor de Proiog tienen la misma base, así que
sólo nos ocuparemos de describir el proceso de ‘búsqueda funcional’ tomando como
referencia uno de los ejemplos clásicos de la Programación Lógica, ocupándonos de sus
aspectos
principales;
a) La Base Persistente.
Compuesta por la tabla: Familia, donde
Campo
Tipo
Nombre
String
Sexo
String
Padre
String
Madre
String
Pareja 1Soltero
String
Tamaño
b) La base en intenso.
Compuesta por la estructura:
person(nombre,genero,padre,madre,pareja).
c) El objetivo de la inferencia.
“Descubrir relaciones genealógicas entre los miembros de la base en intenso (Madre,
Padre, Tíos, Tías, Abuelos, Abuelas, Primos, Primas, etc.).”
SRogramación de una BD1
118
d) El repositorio de reglas.
El repositorio de reglas está escrito en Lenguaje Amzi4! Prolog, compilado en el
archivo binario “arbol.xpl”, el siguiente es el listado de su código:
% Listado 9 arbol.pro
% Código: Prolog
% Objetivo del proceso de inferencia:
re/ations([padres,
esposa, esposo, ancestros, desendientes, hermanos, hermana,
hermano, tio, tia, madre, padre, hijos, hijo, hija, sobrinos, sobrina, primos, abuelas,
abuelos, nieto, nieta, nietos]).
relation(R, X, Y) :relations(Rs),
member(R, Rs),
Q =.. [WC Y],
cali( Q)
% Repositorio de reglas en sí
padres(P, C) :- (madre(P, C) ; padre(P, C)).
hijos(C, P) :- padres(P, C).
hijo(C, P) :- padres(P, C), male(
hija(C, P) :- padres(P, C), female(C).
esposa( W, P) :- spouse(W, P), female(w).
esposo@, P) :- spouse(H, P), male(
ancestros(A, P) :- padres(A, P).
ancestros(A, P) :- padres(X, P), ancestros(A,X).
de.sendientes(D, P) :- padres(P,D).
desendientes(D, P) :- padres(P,X), desendientes(D,X).
hermanos@ 1, S2) :- full_hermanos(S 1, S2).
hermanos(S1, S2) :- halLhermanos(S 1, S2).
fulLhermanos(S
madre(M, S2),
madre(M, S l),
SI \= s2,
padre(F, S l),
1, S2) :-
5 Programación de una BD1
padre(F, S2).
halLhermanos(S 1, S2) :madre(M, S2),
madre(M, S 1),
Sl \= s2,
padre(F 1, S l),
padre(F2, S2),
Fl \= F2.
half_hermanos(S 1, S2) :padre(F, S2),
padre(F, S l),
Sl \= s2,
madre(M 1, S l),
madre(M2, S2),
MI \= M2.
hermana(S, P) :hermanos@, P),
fema/e(S).
hermano(B, P) :hermahos(B, P),
male(
tio(u,x)
:-
padres(P,X),
hermanofU, P).
tia(A,X) :padres(P,X),
hermana(A, P).
sobrinos(N,X) :hermanos(S,X),
padres(S, N),
male(
sobrina(N,X) :hermanos(S,X),
padres(S, N),
female(N).
primos(X, Y) :padres(P, Y),
hermanos(S, P),
119
SProgramación
de una BD1
padres(S,X).
abuelas;GM,X) :padres(P,X),
madre(GA4, P).
abuelos(GF,X) :padres(P,X),
padre(GF, P).
nieto(GS,X) :nietos(GS,X),
male(
nieta(GD,X) :nietos(GD,X),
femaje(
nietos(GC,X) :padres(X, C),
padres(C, GC).
person()o :persono(,-,-,J.
male :person(X,male,
, , ).
female(Y) :person(Y,female ,-,,, _).
madre(M, C) :person(L nlr,-,J.
padre(F, C) :personal,-, EJ
spouse(S, P) :person(PJ-i-I-I S),
S \= single.
member(X, MJ).
member(X, l-1 Y]) :- member(X, Y).
120
121
5 Programación de una BD1
e) Inicializar repositorio de reglas y consultar la base en intenso
‘Listado 10 Inicializar el repositorio de reglas
‘Código: Visual Basic
Private Sub consu/@
Dim rc As Infeger, tf As lnteger
Dim Term As Long
Dim xplname As String
xplname = Path + ‘7ARBOLXPL”
InitLS (xplname)
LoadLS (xplname)
tf = CallStrLS(Term, “set-mode(string-esc,
If tf <> True Then
MsgBox “Error”
End If
abre familia
off)‘y
End Sub
Private Sub DisplayRelationsO
Dim Person As String, Relationship As String
Dim StrVal As String
Dim rc As Infeger, tf As Integer
Dim Term As Long
RelatedPersonsList. Clear
If Persontist. Listlndex c 0 Or RelationshipList. Listlndex < 0 Then
Exit Sub
End If
‘@e selecciona un miembro de la lista
Per-son = Person List. List(PersonList. Listlndex)
y Se selecciona la relación a buscar
Relationship = RelationshipLisf.List(RelationshipList. Listlndex)
’ { Se pasan los parámetros de consulta a Prolog
tf = CallStrLS(Term, Relationship + “(X, “’ + Person + “3’3
While (tfj
Call GetArgLS(Term, 1, bSTR, StrVal)
RelatedPersonstist.
Addltem StrVal
tf = RedoLS()
Wend
End Sub
5 Programaci6n
de una BD1
Private Sub abrefamilia
Dim rc As Integer, tf As Integer
Dim Term As Long
CurrqtFamily = “‘PATH+‘lbase.int”
tf = CallStrLS(Term, “consu#(“’ f CurrentFamily + “3’3
If (ff <> True) Then
MsgBox “Error”, 0, “”
CurrentFamiiy = “”
End If
íf = Persons()
tf = Reiations()
End Sub
Private Sub PersonList-ClickO
Call DisplayRelations
End Sub
Private Function Personso As lnteger
Dim rc As Integer, tf As Integer
Dim Term As Long
Dim StrVal As String
Persontist. Clear
tf = CallStrLS(Term, “person(X) ‘3
If (ff c> True) Then
Persons = 0
Exit Function
End If
While (tf = True)
Ca// GetArgLS(Term, 7, bSTR, StrVd)
Persontist. Addltem Str Val
tf = RedoLS()
Wend
Persons = ?
End Function
Private Function Relationso As lnteger
Dim rc As Integer, tf As Integer
Dim Term As Long, TList As Long
Dim StrVal As String
Relationshiptist. Clear
tf = CallStrLS(Term, “relations(X)“)
lf (if <> True) Then
Relations = 0
Return
End If
Call GetArgLS(Term, 1, bTERM, TList)
122
123
5Programación de una BD1
Do
TC = PopListLS(TList, bSTR, StrVal)
If (rc = 0) Then
Re/ationshipList.Add/tem StrVal
End If
Loop While (rc = 0)
Relations = 1
End Function
Private Sub RelationshipList-ClickO
Call DisplayRelations
End Su&
’ {Funciones de la librería utilizadas
Public Sub JnitLS(ByVal INIFile As String)
Dim re As Long
If IsEmpty(MaxStrLen)
MaxStrLen = 255
End If
Then
If IsEmpty(ErrorMethod) Then
ErrorMethod = 0
End If
rc = Islnit(EnginelD, INIFile + Chr$(O))
If (rc <> 0) Then
Call ErrorHandler(“lslnit”, rc)
End If
End Sub
Public Sub LoadLS(ByVal
Dim re As Long
XPLFile As String)
rc = IsLoad(EnginelD, XPLFile + Chr$(O))
If (rc ::> 0) Then
Call ErrorUandler(“lsLoad”, rc)
End If
End Sub
Public Function CallStrLS(TermPtr
Dim tf As Long
tf = IsCallStr(EnginelD,
As Long, ByVal StrPtr As String) As Boolean
Termptr, StrPtr + Chr$(O))
124
5Rogramación de una BD1
-’
Select Case tf
Case 0
CallStrLS = False
Case 1
CallStrLS = True
Case Else
Call ErrorHandler(“lsCalIStr”,
End Select
tf)
End Function
Public Sub GetArgLS(ByVal Term As Long, ByVal ArgNum As Long, ByVal BType
As lnteger, Ptr As Varia@
Dim rc As Long, tstr As String
Dim tlong As Long, ffloat As Single, tint As Integer, tdouble As Double
Dim s As String
Select Case 5Type
Case bSTR, bATOM
tstr = Space$(MaxStrLen)
rc = IsGetArg(EnginelD, Term, ArgNum, BType, 5yVal tstr)
Ptr = StripStr(tstr)
Case bLONG, bADDR, bTERM
re = IsGetArg(EnginelD, Term, ArgNum, 5Type, tlong)
Ftr = tlong
Case blNT, bSHORT
rc = IsGetArg(EnginelD, Term, ArgNum, BType, tint)
Ptr = tint
Case bFLOAT
rc = IsGetArg(EnginelD, Term, ArgNum, BType, ti7oat)
Ptr = ti7oat
Case bDOU5LE
rc = IsGetArg(EnginelD, Term, ArgNum, BType, tdouble)
Rtr = tdouble
End Select
If (rc <> 0) Then
Call ErrorHandler(‘lsGetArg
End If
L
“, rc)
End Sub
Public Function PopListLS(TermPtr As Long, ByVal BType As lnteger, Ptr As
Varia@ As Long
Dim rc As Long, tstr As String, tstr2 As String
Dim tlong As Long, fi7oat As Single, tint As lnteger, tdouble As Double
125
5 Programación de una BD1
Select Case BType
Case bSTR, bATOM
tstr = Space$(MaxStrLen)
rc = IsPopList(EnginelD,
TermPtr, BType, ByVal tstr)
Ptr = StripStr(tstr)
i
Case bLONG, bADDR, bTERM
rc = IsPopList(EnginelD,
TermPtr, BType, tlong)
Ptr = tlong
Case blNT, bSHORT
rc = IsPopList(EnginelD,
TermPtr, BType, tint)
Ptr = tint
Case bFLOAT
rc = IsPopList(EnginelD,
TermPtr, BType, fffoat)
Ptr = tUoat
Case bDOUBLE
rc = IsPopList(EnginelD,
TermPtr, BType, tdouble)
Ptr = tdouble
End Select
Select Case rc
Case 0
PopListLS = rc
Case -1
PopListLS = rc
Case Else
Call ErrorHandler(“lsPopList”,
End Select
rc)
End Function
Hemos seleccionado éste ejemplo por su sencillez y amplia documentación entre los
distintos grupos de programación lógica consultados, de hecho, constituye la base de
explicación a usuarios de Amzi4, sobre su operación conjunta con Visual Bask; éste y
todos los ejemplos concentrados en el prototipo (listados, base persistente, repositorio de
reglas, base en intenso), pueden ser editados en las vistas de ‘Edición’ en los prototipos
desarrollados.
Adicionalmente, se anexa un ejemplo de la presente tecnología, aplicado al diagnóstico.
126
6. Estado del Arte.
6. Estado del Arte
6.1 Análisis inteligente de Datos
Resulta difícil clasificar las herramientas (que superan ampliamente el centenar)
que pueden servir para la explotación inteligente de los almacenes de datos, pero
en una primera aproximación podríamos distinguir las siguientes categorías:
Interfaces de consulta “ad hoc” existentes en el entorno de bases de datos
(QMF, QBE,etc.) y lenguaje SQL.
Hojas de cálculo, que empiezan a soportar también varias dimensiones en el
tratamiento de datos.
Generadores de informes.
Herramientas de visualización de datos.
Entornos de soporte a la toma de decisiones (EIS/DSS).
Paquetes de análisis estadístico (SAS, SPSS, . ..).
Herramientas OLAP.
Aplicaciones de “minería” de datos sofisticadas, basadas en técnicas de
Inteligencia Artificial.
Las técnicas estadísticas, como el análisis de probabilidad, inferencia, análisis de
regresión y correlación, análisis de series temporales, etc. están conociendo un
resurgimiento con los entornos de almacenes de datos, y los paquetes que +,las
soportan empiezan a difundirse cada vez más, ofreciendo intetfaces con la
mayoría de las plataformas para almacenes de datos.
Las herramientas OLAP (siglas que pueden englobar todas las anteriores
categorías), se pueden definir como un tipo de tecnología software que permite a
los analistas, gestores y ejecutivos obtener una visión de los datos por medio de
un acceso rápido, consistente e interactivo a una amplia variedad de posibles
127
6. Estado del Arte.
vistas de la información que ha sido transformada a partir de datos en bruto para
reflejar la dimensionalidad real de la empresa tal y como la entiende el usuario.
i
Estas herramientas se caracterizan, por tanto, por:
- Acceder a una gran cantidad de datos (varios años de ventas).
- Analizar las interrelaciones entre diferentes elementos de negocio.
- Involucrar datos agregados.
- Comparar datos agregados en periodos
de tiempo jerárquicos (días, meses,
años, etc.).
- Presentar datos en diferentes perspectivas
- Implicar cálculos complejos entre los elementos de datos.
- Responder rápidamente a las consultas de los usuarios
Suele ser muy habitual con estas herramientas realizar el cálculo de las siguientes
métricas:
- Ratios multidimensionales.
- Comparaciones.
- Perfiles estadísticos y clasificaciones.
Este tipo de herramientas permite a los analistas del negocio verificar hipótesis,
que el propio usuario va haciendo y validando con los datos que le devuelven sus
consultas, pudiendo navegar por las distintas dimensiones de los datos.
Sin embargo, existe otro tipo de técnicas, más potentes, que permiten descubrir
información valiosa sin depender del usuario, son las que se engloban dentro de la
categoría de minería de datos (data mining) propiamente dicha, en nuestro
estudio, sólo hemos pormenorizado en los algoritmos de modelado basados en
IPL, sin embargo, existe una fuerte tendencia, en el seno de los grupos de IA, por
la utilización de modelados abstractos: Objetos y clases entre otros.
128
6. Estado del Arte.
Algunas de las tareas que se llevan a cabo con las herramientas de minería de
datos son las siguientes:
i
- Clasificación. Categorizar objetos, es decir, examinar sus características y
asignarlos a un conjunto predefinido de clases, por ejemplo, clasificar personas
que van a pedir un préstamo según el riesgo que presentan.
- Estimación. Mientras que la clasificación obtiene una salida discreta, la
estimación consiste en obtener un valor continuo, por ejemplo, ingresos de una
familia. En la práctica se utílíza para llevar a cabo clasificaciones.
- Predicción. Los datos se clasifican de acuerdo a un comportamiento futuro.
- Agrupamiento por afinidad.
- Agrupamiento ( clustering). Segmentar una base heterogénea en varios grupos (
clusters) homogéneos, sin que existan clases predefínidas.
- Descripción. Explicación de lo que sucede en la base de datos.
Estas tareas se pueden llevar a cabo mediante la aplicación de distintas técnicas.
que resumimos a continuación:
- Análisis de la cesta de la compra, permite identificar grupos de elementos que
ocurren juntos en una transacción.
- Razonamiento basado en memoria, utiliza instancias conocidas como modelo
para hacer predicciones acerca de otras instancias desconocidas. Se utiliza una
función de distancia para encontrar los elementos más cercanos a otros y una
función de combinación que combina los valores de los elementos más cercanos
para hacer una predicción.
- Detección de agrupamiento, construye modelos que encuentran registros de
datos similares (mediante técnicas geométricas, estadísticas, etc.).
- Análisis de enlace, sigue las interrelaciones entre los registros con el fin de
desarrollar modelos basados en patrones en las interrelaciones (aplicando teoría
de grafos).
129
6. Estado del Arte.
- Árboles de decisión y reglas de inducción, dividen los registros del conjunto de
entrenamiento en subconjuntos disjuntos cada uno de los cuales se describe por
medio de una regla sobre uno o varios campos.
- Redes neuronales artificiales, son capaces de aprender de un conjunto inicial,
generalizando patrones para clasificación o predicción. Es la técnica más común.
- Algoritmos genéticos, aplican los mecanismos de la selección natural y la
genética para encontrar un conjunto óptimo de parámetros que describe una
función predictiva.
Aunque, como hemos señalado, la aplicación más conocida de las herramientas
de explotación de datos se da en el marketing (ya que permiten llevar a cabo un
marketing selectivo y de precisión: promociones, ofertas individuales, etc.); existe
un conjunto muy amplio de aplicaciones:
- Agricultura: identificación de plagas, clasificación de enfermedades,. . .
- Banca: concesión de créditos, predicción de quiebras, predicción de valores
bursátiles, detección de fraudes, segmentación de clientes (para ofrecer tarjetas
de créditos según el tipo de cliente), .
- Ciencias espaciales, en concreto, astronomía, donde sirven para el análisis de
los datos procedentes de telescopios o de sondas.
-
Distribución:
análisis de la cesta (qué elementos tienden a comprar
conjuntamente los clientes), patrones basados en tiempo para tomar decisiones
respecto a los almacenes, modelos predictivos, . . .
L
- Energía eléctrica: programas de distribución, análisis de incidentes,. . .
- Ingeniería: diagnóstico de fallos, CAD,. . .
- Medicina; biomedicina, efectos de drogas, costes de los hospitales, análisis
genéticos, identificación de tratamientos eficaces,. . .
- Seguros: detección de fraudes, reclamaciones no válidas, diseño de productos,
análisis de riesgos,. . .
- Ventas: identificación de subgrupos específicos, patrones de compra, análisis de
productos, predicción de ventas,, .
6. Estado del Arte.
130
Como podemos observar prácticamente todos los sectores empresariales pueden
beneficiarse de estas técnicas.
6.2 Desafíos en la explotación inteligente de datos
La tecnología de explotación de datos ha avanzado mucho en los últimos años,
pero todavía se enfrenta a numerosos retos por resolver, que son objeto de
discusión en numerosas conferencias y publicaciones especializadas, donde
destacan los siguientes:
- Mecanismos de explicación limitados, ya que las herramientas no siempre son
capaces de explicar al usuario cómo han llegado a los datos.
- Formatos de entrada de datos limitados, por ejemplo, no ofrecen posibilidad de
manipular gráficos, textos, fórmulas matemáticas, etc.
- Técnicas de validación limitadas, incapacidad de realizar validaciones cruzadas.
- Gran consumo de recursos.
- Soporte limitado a ciertas plataformas, formatos, tamaños, etc.
- Manejo de diferentes tipos de datos; se deberían construir sistemas capaces de
explotar los datos no sólo en bases de datos relacionales, sino también espaciales
(geográficas), multimedia, etc.
- Eficiencia y escalabilidad de los algoritmos de minería de datos, los tiempos de
ejecución de estos algoritmos debe ser predecible y aceptable en bases de datos
muy grandes.
- Utilidad, certeza y expresividad de los resultados de la minería de datos, Las
imperfecciones deberían ser expresadas mediante medidas de la incertidumbre en
forma de reglas de aproximación.
- Expresión de varios tipos de peticiones y resultados de minería de datos,
presentando los resultados de diferentes formas y bajo diferentes perspectivas,
mediante la utilización de lenguajes de alto nivel, interfaces gráficas, etc.
- Minería interactiva del conocimiento a vanos niveles de abstracción, para que el
usuario pueda refinar de forma iterativa su petición.
6. Estado del Arte.
131
- Minería de información de diversas fuentes.
- Protección de la seguridad y privacidad de los datos.
- Conjuntos de datos masivos y soporte de alta dimensionalidad así como de
bases de datos de millones de registros (varios Gbytes).
- Inteligibilidad de los patrones, que desde un punto de vista matemático son
correctos pero que a veces el usuario no llega a comprender.
132
7. Conclusiones
7. Conclusiones
1. La confluencia de tecnologías, y en especial de tecnologías de información, ha
abierto nuevas avenidas para el desarrollo de sistemas cuyas capacidades
conjugan la funcionalidad de tecnologías individuales en un todo cohesivo,
sinérgico, destinado al mejoramiento del desempeño del sistema dentro del
contexto en el cuál se opera.
2. Un Sistema Inteligente para la administración de bases de datos relacionales
combina las funcionalidades y facilidades típicamente encontradas en los
sistemas para el soporte de decisiones con técnicas propias de la Inteligencia
Artificial y los Sistemas Expertos para la creación de sistemas complejos que
permitan la toma de decisiones en una forma más acertada, informada e
inteligente.
3. En varios dominios el uso de estructuras lógicas dinámicas aplicadas a la
manipulación e interpretación del contenido de una base de datos tiene múltiples
ventajas, la principal de ellas se centra en la búsqueda de soluciones en un
J
dominio*particular donde el uso de SQL resulta insuficiente. Garantiza que las
conclusiones que se derivan de las premisas iniciales son correctas, en función
de las reglas de manipulación sintáctica que hayan sido definidas. Pueden ser ;
utilizadas para analizar el conocimiento y para aplicar el razonamiento deductivo
sobre dícho conocimiento. Es flexible, ya que permite representar, en forma
sencilla, los hechos sin importar para qué son utilizados. Es modular, nuevos
hachos pueden ser agregados a la base de conocimiento en forma
independiente, sin afectar los tipos de deducción que se pueden hacer.
4.
h
La representación del contenido de las tablas del esquema relaciona1 mediante
estructuras simples y el uso de la lógica de primer aplicados desde el motor de
inferencia permiten una recursividad controlada en procesos de búsqueda
complejos. Representación que permite consultas con parámetros sobre
relaciones no explícitas en la definición del esquema relacional.
7.
133
Conclusiones
5. El trabajo paralelo entre un motor relaciona1 y un motor de inferencia habilita al
sistema de la capacidad de representar el contenido de la base de datos en
forma simbólica, esto es, se valen de la manipulación de símbolos para la
resolución de problemas. Estos símbolos representan conocimiento acerca de
objetos existentes en el mundo real, conceptos, estrategias y heurísticas que el
sistema tiene en su poder y que emplea para la resolución del problema. La
combinación y disposición de estos símbolos representan relaciones con
significado las cuales son interpretadas durante procesos particulares de
naturaleza no algorítmica.
6 . La implementación de estrategias basadas en el uso de técnicas de inteligencia
artificial pueden llevar el proceso de soporte a la toma de decisiones a un nivel
mas avanzado del que incorpora el esquema relacional, ya que se dota a estos
de la capacidad de usar conocimiento para resolver problemas en la presencia de
información incompleta o no estructurada y sugerir decisiones alternativas, a
problemas que no pueden ser resueltos por medios algorítmicos convencionales
y que requerían la ayuda de otras personas para resolución. Esta funcionalidad
permite Mcrementar la productividad y la eficiencia de aquellos individuos que
usan el sistema pero que no poseen la experiencia ni el conocimiento para
enfrentar la solución a problemas en un dominio específico. Adicionalmente ,,
pueden ayudar a transformar información en conocimientos al proveer
mecanismos automáticos para el análisis, organización y síntesis de información
en un cuerpo coherente.
7.
El tratamiento de la incertidumbre mediante estrategias de lógica difusa y lógica
multivaluada permiten una representación global de los dato% con una semántica
sensiblemente mayor a las representaciones convencionales, permitiendo tratar
como miembros de un subconjunto determinado grupos de registros con valores
atómicos
distintos.
Referencias
bibliográficas
Referencias bibliográficas
a) Textos
CODD, C.F. “The Relational Model for Database Manaaement: Version 2”.
Ed. Addison-wesley, Massachussets, USA, 1990.
CORONELL, Gray. “Visual Basic 5”.
Ed. McGraw-Hill. Madrid. 1997
DATE, J. “An Introduction to Database Svstems”
Ed. Addison-Wesley, Massachusetts, USA, 1986.
FERNANDEZ, F. “Fundamentos de Informática: Lágica,
Lencluaies”
Ed. Anaya, Salamanca, 1995.
Autómatas, Alzloritmos v
HANSEN, W. Gary. “Diseño v Administración de Bases de Datos”
Ed. Prentice Hall. México, 1997
KOLMAN, Bernard. “Estructuras de Matemáticas discretas para la computación”
Ed. Prentice Hall. México, 1986.
KORTH, Hgmy. “Fundamentos de bases de datos”
Ed. McGraw-Hill. Madrid, 1993
Microsoft. “Access 7.0 User Guide ”
Microsoft. 1998
Microsoft. ‘Visual Basic 5, Enterprise Edition”
Book’s on line. 1998
Microsoft. ‘Visual Basic 5, User Guide”
Microsoft. 1998
MIRA, J. “Aspectos básicos de la Inteliaencia Artificial”
Ed. Sanz y Torres, Madrid, 1995.
PIATLINI, M. “Concepción v diseña de bases de datos”
DeI modelo E/R al modelo relacional.
-Ed. RBMA Addsison-Wesley tiEmane*. 1993
F%OBIhlSON,. Philtip. ‘m Tiirkm Proloq”
Ed. McGraw-Hill. México. 1987
Referencias
135
bibliográficas
SHILDT, Herbert. “Pronramación
Avanzada en Turbo Prolog”
Ed. McGraw-Hill, México, 1988
SHAFIELD, Rebeca. “Winproloa 3.6 user auide”
LPA Software, 1998.
THIERAÜF. “Investioación
de operaciones”
Ed. Limusa, México, 1997.
WlNTER, Rick. “Microsoft Access 97, Soluciones Instantáneas”
Ed. Prentice Hall, México, 1997.
b) Artículos
BURGOS, Jorge. “Intercambio dinámico de datos con Visual Basic”
Grupo Eidos. Algoritmo. Año 5, 1997.
HOPKINS, Johns. ” Knowledge-Based Query Formulation for Integrated Information
Systems”
Techincal Digest. Volumen 18, No. 2, 1997, pp. 261-270
KHOSAFIAN. “lntelligent Database Engines”
Database Programmìng & Design. 1990, pp. 56-65
KRIVDA, Cheryl. “Dinamita para extraer datos”
Byte. Año 9, No. 93, 1995, pp. 24-32
Mateos, Julio. “Aplicaciones profesionales en Visual Basic”
Grupo Eidos. Algoritmo. Año 5, 1997.
PIATTINI, M. “El futuro de las bases de datos (I-V)”
Grupo Eídos. Algoritmo. Año 5, 1997.
SOM, Guillermo. “Objetos en Visual Basic”
Grupo Eidos. Algorítmo. Año 5,1997.
TRlANA, Harvey. ‘Yisuat Basic Experto”
Grupo Eidos. Algoritmo. Año 6, 1998.
WONG, H. “lntelligent Databases”
IA Expert. Volumen 5, No. 3. pp. 3847
’
Referencias
136
bibliográkas
ZIARKO, Wojciech. “Data-based acquisition and incrementa1 modification of
classification rules”
Computational Intelligence, Volumen ll, No. 2, 1995, pp. 37-42.
ZOZAYA, C. “Arquitecturas de Sistemas Expertos”,
Soluciones Avanzadas, año 2, No. 13, 1994, pp.41 -47.
c) Uniform Resource Locator
CHAN, Francis. ‘Analysis of Decision Support for Dìstributed Systems”
http://www-cad.eecs. berkeley.edu/-fchan/caddis/ds_systems. html
GOMEZ, Antonio J. “Inducción de conocimiento en bases de datos”
http://www.gsì.dit.upm.es/tesis/anto.html
GRAY, James N. “Database Systems: A Textbook Case of Research Paying Off”
http://www.cs.washington.edu/homes/lazo~k~cr~database.html
HAN, J. “LogicBase: A Deductive Database System Prototype”
ftp://ftp.fas.sfu.ca//pub/cs/han/doodlcikm94.p~
HAN, J. “Constraint-Based Query Evaluation in Deductive Databases”
ftp://ftp.fas.~~u.ca//pub/cs/han/dood/cor-tstr94.p~
HAN, J. “Data Mining “,
ftp://ftp.fas.sfu.caIpub/csIhan/kdd/ency99.p~
HAN, J. “Data Mining Techniques”,
ftp://ftp.fas.sfu.ca!pub/cs/han/kdd/sigmod96-tuto-des.ps
Logic Programmíng Assocíates. “FAQ WinProlog”
http://www.Ipa.co.uk
MOXON, Bruce. “Defining Data Mining”
http:/Ewww.dbmsmag.com/9608d53.
html
Tecnológico de Monterrey. “Tutorial de Prolog”
http:/Iw3.mor.itesm.mti~esucar/lA/prolog.htmI
OLSEN. ” What is Intelligent Databases ?”
http://wvw.ougf.fi/nouc/Handouts/Olsenlsld008.
htm
PANG, A. “Exploratory Mining and Pruning Optimizations of Constrained Associations
Rules”,
Referencias
bibliográficas
The Data Mining Research Group. “lntroduction to DBMiner and Data Mining and
Warehousing Concepts”
ftp://ftp.fas.sfu.ca/pub/cs/han/slides/boeingintro.ppt
Universidad de Guadalajara. “Tutorial de Prolog”
http://proton.ucting.udg.mx/proton/tutorial/prolog/Prolog.htm
Universidad de Guadalajara. “Tutorial de Prolog”
http://~.cultura.udg.mxltutoriales/prolog/prolog.htmI
137
Descargar