P. 1
Bases de Datos Inteligentes

Bases de Datos Inteligentes

|Views: 2.328|Likes:
Publicado porJaime Peres

More info:

Published by: Jaime Peres on May 27, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/14/2013

pdf

text

original

Sections

  • 2.1 Antecedentes
  • 2.2 Enfoques de los SGBD
  • 2.3 Evolución de los SGBD
  • 2.4 Clasificación de los SGBD
  • 2.4.1 Sistemas Orientados al proceso y SGBD clásicos
  • 2.4.2 SGBD semánticos
  • 2.4.3 SGBD activos
  • 2.4.4 SGBD deductivos
  • 2.4.5 SGBD orientadas al objeto
  • 2.4.6 SGBD multidimensionales
  • 2.5 Conocimiento y bases de datos
  • 2.6 Representación del conocimiento
  • 2.6.1 Representación mediante cálculo de predicados
  • 2.6.2 Representación mediante redes semánticas
  • 2.6.5 Representación mediante procedimientos
  • 2.6.6 Representación mediante árboles de decisión
  • 2.6.7 Representación mediante listas de decisión
  • 2.7 Representación Lógica de un SGDB relaciona1
  • 2.7.1 Estructura e integridad
  • 2.7.2 Manipulación de datos
  • 3.1 Antecedentes
  • 3.2 Programación lógica en Sistemas expertos
  • 3.2.1 Conceptos básicos
  • 3.3 Sistemas expertos y Bases de datos Inteligentes
  • 4.1 Fundamentos
  • 4.2 Descripción
  • 4.3 Arquitectura
  • 4.3.1 Computación evolutiva e IPL
  • 4.3.2.1 Tratamiento de los valores inciertos
  • 5.1 Consideraciones generales
  • 5.2.1 RecordSet
  • 5.2.2 Database Object
  • 52.3 SQL en Visual Basic
  • 52.4 Edición de las Bases Persistentes y en Intenso
  • 5.2.4.1 Representación gráfica de los datos
  • 5.3 Archivos binarios
  • 5.4 Filtrado y preproceso
  • 5.4.1 Difusor simple
  • 54.2 Difusor con múltiples condiciones
  • 5.5 Manipulación de la base de datos en intenso

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.:__0014___ Fecha:__08-05-99_ Acta No. :___5____ C. SERGIO ANTONIO BECERRA ZEPEDA________ Domicilia: CALDERON NÚM. 191________________ Localidad. CIUDAD GUZMÁN, JALISCO___________ Teléfono (341) 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 complementarias al reglamento de Posgrado, correspondientes al Posgrado de la Facultad de Ingeniería Mecánica y Eléctrica. Informamos a usted que ha sido autorizado por este Consejo Técnico del Posgrado su tema de Tesis para obtener el grado de Maestro en Ciencias Computacionales titulado: " BASES DE DATOS INTELIGENTES "__________________________________________ __________________________________________________________________ para ser desarrollado bajo los siguientes puntos: I II III IV V VI VII INTRODUCCIÓN SISTEMAS BASADOS EN CONOCIMIENTO SISTEMAS EXPERTOS .-ARQUITECTURA DE UNA BDI PROGRAMACIÓN DE UNA BDI ESTADO DEL ARTE CONCLUSIONES BIBLIOGRAFÍA

Asimismo hacemos de su conocimiento que de acuerdo con la línea de investigación en la cual se enmarca s u proyecto ha sido autorizado como asesor de tesis el C. MC. RODOLFO GALLARDO ROSALES_____________________ 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 una 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ñará a el visto bueno de su asesor de tesis, los cuales encabeza cada uno de los ejemplares de su tesis.

M.C. Rodolfo Gallardo Rosales

Mayo 8, 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: MAESTRÍA EN CIENCIAS COMPUTACIONALES

Bajo el título: “BASES DE DATOS INTELIGENTES”

cuyo contenido he el siguiente: 1. INTRODUCCIÓN 2. SISTEMAS BASADOS EN CONOCIMIENTO 3. SISTEMAS EXPERTOS 4. ARQUITECTURA DE UNA BDI 5. PROGRAMACIÓN DE 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 brings when do think ? Turing 1950 .

Este mayor poder de abstracción. consolidar un punto de partida en la representación y manipulación semántica de las aplicaciones avanzadas.I Abstract 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. 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. Junio. Validación: Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Maestría en Ciencias Computacionales. Presenta: Me. 1999. Sergio Antonio Becerra Zepeda Candidato al Grado de Maestro en Ciencias Computacionales. 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. en suma. combinado con otras herramientas permitirá la creación de ambientes inteligentes que combinen las tecnologías dé bases de datos. interrelacionando procesos de adquisición de datos con procesos de inferencia. extrayendo conocimientos a partir del análisis de estructuras simples. recuperación y procesamiento de la información en el área de los sistemas expertos y la inteligencia artificial.

2 Manipulación de datos 4 6 7 10 10 11 11 12 13 14 16 17 21 22 23 24 25 26 26 27 27 28 .6.4 SGBD deductivos 2.5 Conocimiento y bases de datos 2.5 SGBD orientados al objeto 2. Introducción 2.3 SGBD activos 2.6 Representación mediante árboles de decisión 2.3 Representación mediante reglas de producción 2.4 Representación por objetos estructurados 2. Sistemas basados en conocimiento 2.7.7 Representación lógica se un SGDB relaciona1 2.5 Representación mediante procedimientos 2.6.6.4.4.2 Enfoques de los SGDB 2.2 SGBD semánticos 2.6 SGBD multidimensionales 2.1 Representación mediante cálculo de predicados 2. Tabla de Contenidos.1 Sistemas orientados al proceso y SGBD clásicos 2.6.4.II.3 Evolución de los SGDB 2.4.6 Representación del conocimiento 2.4. Tabla de Contrenidos II.2 Representación mediante redes semánticas 2. I Abstrac II Tabla de contenidos 1.6.1 Antecedentes 2.1 Estructura e integridad 2.7 Representación mediante listas de decisión 2.6.4 Clasificación de los SGBD 2.7.4.6.

2.1 Representación gráfica de los datos 4.3 Archivos binarios 5.1 Fundamentos 4.1 Antecedentes 3.2.2 Manipulación de la base en intenso 5.2.1 Consideraciones generales 5.2 Difusor con múltiples condiciones 5.1 Difusor simple 5.2.2.4. Arquitectura base de datos inteligente 4.3.5 Manipulación de la base de datos en intenso 5.3.2.3. Programación de una base de datos inteligente 5.3 Arquitectura 4.2 Base de datos persistente y en intenso 5.1 Tratamiento de los valores inciertos 4. Sistemas Expertos 3.2 Database Object 5.4.2 Conocimiento con incertidumbre 4.II.3.2.1 Computación Evolutiva e IPL 4.4 Filtrado y preproceso 5.1 Recordset 5.4.3 SQL en Visual Basic 5.6 Programación lógica paralela 66 66 66 68 70 88 92 95 96 105 105 107 108 114 38 39 45 48 49 56 60 31 32 35 36 .2 Descripción 4.2 Tratamiento de la información desconocida o condicional 5. Tabla de Contenidos 3.4 Edición de las Bases persistente y en intenso 5.3 Sistemas expertos y bases de datos inteligentes 4.2.2 Programación lógica en sistemas expertos 3.3.1 Conceptos básicos 3.

2 Desafíos en la explotación inteligente de datos 7.II. Conclusiones 126 130 III Referencias Bibliográficas 115 .1 El Análisis inteligente de datos 6. Tabla de Contenidos 6. Estado del Arte 6.

Introducción Una de las principales preocupaciones de los desarrolladores de software destinado a la administración de bases de datos. En este terreno. con distintos tipos de datos no estructurados. 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.fundamentalmente.1 Introducción 1 1. entre este conjunto. adicionando a la estructura del motor relaciona1 un motor de inferencia. y . para responder eficientemente a consultas no planificadas.con capacidad de procesar estas características en la oferta de soluciones. que habilita conjuntos de acciones disparadas por reglas y consultas ampliadas por inferencia. 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). La eficiente implementación de una BDI(Base de Datos Inteligente). precisando productos que efectúen análisis sobre los datos almacenados. precisa del desarrollo de un sistema que posea la capacidad de gestionar conocimiento . destacan los algoritmos genéticos. con capacidad para realizar operaciones entre los datos estructurados (propios de la mayoría de bases actuales). 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. Existe un robusto compendio teórico (modelos matemáticos). la lógica difusa (fuzzy Iógic) y la lógica multievaluada.

ej.1 Introducción 2 complejo a través del procesamiento de datos simples. 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. 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.en la semántica de los procesos de consulta. 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. las tecnologías aplicadas en este dominio se construyen como extensiones de los sublenguajes DML Y DDL particulares del lenguaje anfitrión. Datalog). provenientes tanto de ficheros controlados de forma autónoma como de un SGDB(Sistema Gestor de Bases de Datos). programación orientada a objetos. de hecho. tecnologías que recuperan segmentos de los avances de la Inteligencia Artificial y los expresan fundamentalmente. Es importante destacar que existe un limitado número SGDB comerciales orientados exclusivamente a estos aspectos (p. e interfaces intuitivas para usuarios finales. Por ello. En el desarrollo de nuestra investigación pormenorizamos sobre el conjunto de . bases de conocimiento. incorporar la capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver clases de problemas dentro del dominio. 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. existen múltiples enfoques híbridos en los que encontramos esquemas operativos lógicos y procedurales.

.1 Introducción 3 indicadores involucrados en la arquitectura de bases de datos. 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. 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. dando cuenta de los esquemas operativos y evolución de los SGDB. Finalmente. y mediante objetos y procedimientos desarrollados específicamente en el lenguaje nativo de la aplicación en general: Visual Basic 6 Enterprise Edition. esto es. en su diseño hemos considerado distintas vistas que dan transparencia a los procesos de que se ocupa el sistema. se ejemplifican las operaciones y procesos considerando el enfoque relaciona1 con que opera Jet. 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 q ue procesa. operan en dos formas: mediante una interfaz entre aplicaciones donde el sistema manipula una base de datos relaciona1 (base persistente). dichos. Los prototipos recuperan y expresan los nudos de nuestra investigación. se desarrollan prototipos con el objetivo de acreditarla validez del conjunto teórico expuesto. en todo momento es posible editar la estructura de la base persistente.

está soportada por un sistema para su gestión SGBD. en sentido amplio. restringida por las limitaciones de la tecnología. de otro. Actualmente. En términos estrictos. arrastrados de un lado por las necesidades y las demandas de la administración y. dicha información -generalmente. En la actualidad. 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. hace referencia sólo al lugar donde está depositada la información (hablando tanto desde la perspectiva del hardware.2. Sistemas basados en conocimiento 4 2. “base de datos”. Sistemas Basados en Conocimiento. 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. el impulso impuesto por el desarrollo de los sistemas de información. la que se ha convertido en un recurso vital para las compañías. técnicamente es una colección de datos. los sistemas se han expandido hacia la producción y la gestión de la información. Los primeros sistemas de procesamiento de datos ejecutaron las tareas administrativas para reducir el papeleo. Las expectativas de la administración han crecido paralelamente a la evolución de las tecnologías. 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. Más recientemente. el término puede aplicarse a cualquier agregado de datos. 2. ha . como del software). agrupados con un propósito específico en una o mas entidades lógicas (archivos).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.

han surgido nuevos métodos. el número y tamaño de las bases de datos probablemente crece más rápidamente. debido principalmente a tres factores: a) Incremento de la potencia de los ordenadores. 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. Aunque la mayoría de los métodos matemáticos fueron desarrollados durante los años 60 y 70.2. 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). esto es sistemas que descansan sobre una base de conocimientos para razonar sobre el conjunto de datos. desarrollados por la comunidad de inteligencia artificial. principalmente de aprendizaje y representación de conocimiento. sino también por la automatización de muchos experimentos y técnicas de recogida de datos. denominados almacenes de datos (datawarehouse). Sistemas basados en conocimiento 5 provocado la evolución de las bases de datos en conjuntos abstractos. c) Por último. Históricamente. la evolución de los SGBD nos ha proporcionado métodos para analizar datos y encontrar correlaciones y dependencias entre ellos. estadística y física de dinámicas no lineales. La investigación en IA incluye estudios sobre la representación de reglas lógicas que operen sobre los datos. el análisis de datos ha cambiado recientemente y ha adquirido una mayor importancia. Algo similar ha ocurrido con la capacidad de almacenamiento de los datos y su coste asociado. fuera de los cuales los resultados resultaban demasiado pobres. b) Incremento del ritmo de adquisición de datos. Sin embargo. Estos métodos complementan a . Se estima que la cantidad de información almacenada en todo el mundo se duplica cada 20 meses. 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”.

pero no su inverso. nos permite establecer los tipos básicos según el tipo de estructura de datos que soporta: • Enfoque jerárquico. Precisa de punteros físicos • Enfoque relacional. Similar al enfoque jerárquico en tanto al uso de registros y ligas. la minería de datos ha permitido el rápido desarrollo de lo que se conoce como descubrimiento de conocimiento en bases de datos. derivando los fundamentos teóricos en que se soportará el desarrollo de bases de datos inteligentes. Se caracteriza por la representación de datos en forma de . Sistemas basados en conocimiento 6 las tradicionales técnicas estadísticas en el sentido de que son capaces de inducir relaciones cualitativas generales. pormenorizando en su enfoque y evolución. Su estructura de árbol. 2.2 Enfoques de los SGBD Una clasificación primaria de los SGBD. o leyes.2. para análisis inteligente de datos y búsqueda de regularidades en los mismos. En este capítulo. Parte de una estructura de datos basada en un conjunto de registros diferentes guardados en un único archivo y jerarquizados entre sí mediante ligas. Precisa de punteros físicos. pero dentro del esquema jerárquico un elemento de inferior jerarquía puede tener varios elementos situados a un nivel superior del mismo. impone que un elemento padre puede tener varios elementos hijo. desarrollaremos un estudio introductorio a los SGBD. • Enfoque de Red (Codasyl). Estos nuevos métodos matemáticos y técnicas software. Las bases de datos gestionadas bajo este enfoque implementan registros conectores (estructuras de datos que sirven para asociar a otras dentro de un fichero). A su vez. se denominan actualmente técnicas de minería de datos o data mining.

Como característica general. • Orientado a objetos. Una característica de los tres primeros modelos mencionados es que sólo aceptan datos escalares individuales tipificados y nulos ("NULL").3 Evolución de los SGBD La historia de las bases de datos inicia a mediados de los años cincuenta. los esquemas han sido desarrollados con la capacidad de operar sobre datos “ideales”. en el momento en que comenzaron a introducirse los ordenadores para automatizar la gestión de las empresas. No es esencialmente distinto al enfoque relacional. con lo que se obtiene un modelo relaciona1 flexible con capacidades para la deducción automática. pero se sustenta en la lógica de predicados de primer orden para representar y manipular los datos. en las que los conjuntos de registros tienen un formato fijo e idéntica estructura. y se han caracterizado por el uso de tecnologías orientadas a la estructuración de datos mediante modelos jerárquicos y Codasyl (p. hecho que implica una escasa flexibilidad. puesto que el prototipo BDI. correcta y bien definida. de nuestro estudio utiliza un SGBD relaciona1 (Microsoft Jet). son susceptibles de aplicar al minio todas las formulaciones teóricas que éste presenta. en objetivos posteriores desarrollamos una descripción exhaustiva de este enfoque. por tanto. Basada en el encapsulamiento de código y datos en unidades denominadas objetos.2. fundamentalmente con desarrollos en COBOL. El enfoque relaciona1 en bases de datos parte del modelo relaciona1 en matemáticas y. El agrupamiento de objetos con métodos y variables comunes se estructura en clases jerárquicas. a éste pertenecen los SGBD deductivos. • Enfoque Lógico. Sistemas basados en conocimiento 7 tablas. que obligan al programador a desplazarse registro a registro. IMS de IBM. . en el supuesto de que la información a procesar es exacta. IDMS de Cullinet) de lógica procedimental. 2.ej. que interactúan con el sistema a través de mensajes.

denominándose así el sistema como relacional. algoritmos para la gestión de memorias intermedias (buffers). Codd propuso un modelo simple de datos en el que todos ellos se representarían en tablas constituidas por filas y columnas. INGRES. 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. Codd también propuso dos lenguajes para manipular los datos en las tablas: álgebra y cálculo relacional. ofreciendo. 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. INFORMIX. Codd. lenguajes de alto nivel. entre ellas destacan ORACLE. diccionarios de datos. 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. teoría de la normalización. etc. La aparición . al cabo de poco tiempo. prácticamente todos los productos una interfaz SQL. organizaciones físicas para el almacenamiento de las relaciones. 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). técnicas de indexación para un acceso asociativo más rápido (distintas variaciones de los árboles). SYBASE. basado en los trabajos del Dr. gestión de transacciones. aún los no relacionales (sistemas “renacidos”).2. 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. sistemas distribuidos. DB2. habilitando acciones múltiples sobre los registros. También cabe recordar que durante la primera mitad de los ochenta se estandariza el lenguaje SQL (el SQUANSI se aprueba en 1986). A dichas tablas se les dio en nombre matemático de relaciones. dado que actúan sobre conjuntos de registros. 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 estructuradas. etc. Sistemas basados en conocimiento 8 En 1970 se propuso el modelo relacional.

SQL). y el modelo relacional. con interfaces intuitivas -gráficas fundamentalmente. permitió una mayor integración. Nivel Externo Interno Definición Nivel estructural de la base de datos que define las vistas de los usuarios.. 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. audio. Visual Fox (SQL). Conceptual Nivel estructural de la base de datos que define su esquema lógico. En la evolución de esta generación destacan dos indicadores: una arquitectura a tres niveles con descripción recursiva de datos (ANSI. Es posible clasificar los distintos sistemas como gestores de información “natural”. ilustramos un resumen de la cronología expuesta: . 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. multiplicó las tareas asignadas a las bases de datos e implicó el desarrollo de sistemas de uso transparente. Tabla 1. Arquitectura de tres niveles. la gestión de objetos que permite tipos de datos complejos (texto. Nivel estructural de la base de datos que define la vista física. En la siguiente figura..2. imagen.dotadas de asistentes generadores de código: Access (Visual Basic. ISO) como referencia. Sistemas basados en conocimiento 9 y estandarización de SQL. La tercer generación de SGBD. cuya facilidad de manejo derivó en una excepcional productividad e impresionante impacto económico.). tiene como principal característica la optimización relaciona1 de los sistemas en entornos multiusuario.

cuya naturaleza reside en la recuperación y almacenamiento simple. aún cuando prácticamente todas las restricciones sobre los datos se comprueban en los programas. Este tipo de sistema no es considerado como una base de datos en el sentido estricto del término.2. Sistemas basados en conocimiento 10 Archivos con acceso directo Archivos Secuenciales 1960 SGBD JERARQUICOS 1970 SGBD RED Publicación del modelo Relaciona1 de Codd SGBD RELACIONALES.4.1 Sistemas Orientados al proceso y SGBD clásicos Sistemas que operan sobre conjuntos de registros agrupados en “ficheros”. las restricciones. 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). interpretadas por los programas. . 1980 2000 SGBD ORIENTADOS AL OBJETO SGBD LÓGICOS (REL AMPLIADOS) 2. Estos sistemas “clásicos” enfrentan graves problemas de redundancia al encontrarse dispersa la semántica de los datos en los programas.4 Clasificación de los SGBD 2. procesos y el control se distribuye en los programas que acceden a los ficheros. Se distinguen por el acceso secuencial a cadenas de caracteres. dado que no almacenan ningún tipo de información para el procesamiento de datos.

etc.4. reglas.4. 2. y que han sido previamente especificados en la fase de definición -intensión. los desarrolladores incorporan acciones que el sistema ejecuta sin la intervención del usuario. información sobre datos y los datos en sí.3 SGBD activos En este tipo de sistemas. los SGBD incorporaron mayor número de información sobre los datos en el propio catálogo de la base de datos.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. habilitando restricciones de diferentes tipos (CHECK). a través de disparadores. en un SGBD semántico la base de datos incluye información sobre restricciones. Sistemas basados en conocimiento 11 2.de la base de datos.2. demonios. aserciones e incluso dominios. así. . Tecnología basada en procedimientos que se activan de forma automática.

representan patrones invocados donde las condiciones para invocar se revisan en cada paso. Centra su acción en el núcleo de los programas que acceden a los datos. con el objetivo de definir con mayor precisión y naturalidad el conjunto de reglas que se ejecutan. frente a los SGBD semánticos. mientras que la tecnología de base de datos se emplea para asegurar un almacenamiento eficiente y fiable. en la base de datos información de control. encontramos además. de hecho. Atendiendo los conceptos de algunos autores. Sistemas basados en conocimiento 12 De hecho. Condición. 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). la programación lógica. Acción (ECA. la programación lógica se utiliza principalmente como lenguaje de consulta. en forma similar a los primeros desarrollos de bases de datos.4 SGBD deductivos La programación lógica ha ido evolucionando desde mediados de la década pasada hasta nuestros días ampliando sus horizontes en el desarrollo de sistemas gestores de bases de datos. un SGBD activo se distingue porque su modelo de conocimiento describe las situaciones y las reacciones correspondientes: Evento. 2. extendiendo el procesador de consultas del SGBD o acoplando un SGBD con un sistema Prolog.4. Los SGBD deductivos se puede implementar añadiendo al SGBD facilidades para almacenar y gestionar reglas.2. el uso de SQL es prioritario en el desarrollo de estos sistemas.

el motor de inferencia se encuentran en el núcleo del programa que accede a los datos.4. Sin embargo. En sistemas más complejos se enlaza el modulo de “respuesta” como la entrada “inf. existiendo en la actualidad diferentes versiones.5 SGBD orientadas al objeto Conocidos también como SGBO. normalmente. Sintácticamente el DATALOG es muy parecido al Prolog. con el objetivo de ser “reprogramables” y se accede a ellos generalmente. lo que lo hace más adecuado para bases de datos. 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” Las reglas. Sistemas basados en conocimiento 13 Aunque. suelen almacenarse en ficheros de texto o con formato plano independientes. aunque podríamos considerarlos como la tendencia a . de procesos” de una SGBD activa.en forma binaria. que es poco procedimental y orientado a conjuntos. así como los padres de los ancestros). siendo clásica la de los ancestros de una persona (conociendo que los padres de una persona son sus ancestros. 2. en lugar de utilizar un lenguaje como Prolog (que procesa una tupla a la vez) se suele emplear un lenguaje relaciona1 declarativo denominado DATALOG. Este tipo de lenguajes resulta muy útil para hacer consultas de tipo recursivo.2.

Bindings.). son: combinar acceso declarativo y acceso navegacional. gestión de la extensión de las clases. soportar completamente la funcionalidad de los objetos compuestos. es conveniente particularizar que en febrero de 1997 en reunión del grupo ISO/IEC JTC1/SC21M/G3 se presentó la solicitud de aprobación del SQL3 (las partes Foundafion. herramientas de migración de esquemas. acceso a los metadatos. Herramientas que aseguran la interoperabilidad de bases de datos relacionales y bases de objetos. Herramientas de migración de esquemas.6 SGBD multidimensionales . herramientas de conversión de esquemas relacionales a esquemas OO y viceversa. soporte de vistas y lenguajes de consulta y de optimización. interoperabilidad de BDR y BDO. Algunos aspectos en los que se considera necesaria una mayor investigación. actualmente existe una sólida convergencia entre OQL y SQL3. Persistent Stored Modules y Object) como norma internacional con efectos a diciembre de 1998.4. definición dinámica de clases. bases de datos y aplicaciones relacionales a OO y viceversa. 2. J++. almacenamiento de los servicios (métodos) en la base de datos. VC++. en esta tendencia destacan: interfaces de PO0 sobre motores relacionales (Visual Basic. Sistemas basados en conocimiento 14 extender los SGBD relacionales mediante la incorporación de la programación orientada a objetos. etc. etc. mecanismos para definir restricciones y disparadores.2. debido a la aparición de un número cada vez mayor de herramientas de conectividad entre los mundos relacional y orientado a objetos: • • • • lnterfaces de programación orientada a objetos sobre motores relacionales. Este tipo de sistemas comienza a incursionar en forma sólida en el mercado. Herramientas de conversión de esquemas relacionales a esquemas OO y viceversa.

éstas actúan como apuntadores para identificar los valores dentro de la matriz. promedio) del mismo campo en todas las tuplas. reside en que todos los dominios pueden encontrase relacionados.. Otra significativa diferencia es que los sistemas relacionales soportan estructuras planas y presentan serias dificultades para gestionar interrelaciones multidimensionales por ejemplo. Sistemas basados en conocimiento 15 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).) que relacionan los elementos entre las distintas dimensiones. .2. 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. las limitaciones funcionales de SQL que sólo pueden efectuar SUM (sumatoria) y AVG (Average.. ni utiliza LDD particulares. cada casilla del hipercubo contiene datos agregados (información de. las relaciones afectan sólo campos clave o campos con naturaleza idéntica-asociativa. de hecho. representan los datos mediante matrices de n dimensiones denominadas “hipercubos” asignando a cada dimensión un dominio específico jerarquizado. pero no puede aplicarse a diferentes columnas en una misma tupla. sus principales diferencias frente al modelo de tablas relacionadas. en contraparte dentro del esquema de tablas.

puede causar confusión ya que muchos sistemas basados en programas convencionales podrían ser incorrectamente categorizados como sistemas basados en conocimiento. A este conjunto de métodos. 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. que estudia los sistemas basados en el conocimiento. . ni fueron capaces de satisfacer los difíciles requerimientos de la investigación.La separación que existe entre el conocimiento. 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. Esta inconsistencia puede ser aclarada. 2.2. El uso de conocimiento específico de un determinado dominio. como una rama de la IA.5 Conocimiento y bases de datos Los métodos generales desarrollados para la resolución de problemas y técnicas de s búsqueda al inicio de la era de la IA demostraron no ser suficientes para resolver los problemas orientados a las aplicaciones. 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 . Sistemas basados en conocimiento 16 2. El simple concepto dado. aunque no necesariamente el proceso seguido por ambos puede ser igual. se lo conoce como Inteligencia Artificial Débil. y la forma cómo éste es utilizado. 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”. procedimientos y técnicas. La solución es esencialmente la misma que hubiera dado un ser humano confrontado con idéntico problema.

Actualmente. mientras que los sistemas basados en conocimiento resuelven problemas donde las soluciones algorítmicas no existen o son muy costosas para ser implementadas. mediante mecanismos lógicos. 2. Conocimiento que sólo puede ser descrito por un procedimiento. Wiederhold . combinado con las necesidades de gestión de información y los desarrollos que han emanado del estudio de la IA.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. el amplio éxito de los sistemas de bases de datos. eventos. 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. elevando su utilidad al punto en que pueda construirse conocimiento a partir de datos simples y que éste — conocimiento— permita controlare interpretar la estructura en su conjunto. Dicho de una manera simple. La naturaleza heurística. etc. Sistemas basados en conocimiento 17 3. antes que algorítmica del conocimiento utilizado. definido más allá de su forma extensa (hechos e instancias almacenados en la base). Los . comprende el estudio de formalismos y estructuras en el tratamiento de objetos. Conocimiento general procedimental. los programas convencionales utilizan algoritmos para resolver problemas.2. han dado como resultado un interés creciente en extender los sistemas de bases de datos a sistemas de bases de datos inteligentes. los describe de la siguiente manera: • • • Conocimiento estructural. relaciones. Conocimiento sobre las dependencias y restricciones entre los datos. hechos. Conocimiento específico de la aplicación.

La inteligencia requiere de la posesión y acceso al conocimiento. Los conceptos de conocimiento e inteligencia están íntimamente ligados. combina relaciones. procedimientos. Otros términos relacionados con el conocimiento y que son ocasionalmente empleados son epistemología y metaconocimiento. Por tanto. dependencias. 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. conceptos. Es la familiaridad con el lenguaje. Sistemas basados en conocimiento 18 tradicionales sistemas basados en conocimiento han utilizado con gran asiduidad. tenemos la certeza de que de los datos en bruto raramente se obtendrán de una manera directa beneficios. Además. mientras que metaconocimiento es conocimiento acerca del . Epistemología es el estudio de la naturaleza del conocimiento. es necesario una nueva generación de técnicas y herramientas computacionales para soportar la extracción de conocimiento útil para grandes volúmenes de datos. hecho o estado de conocer. lugares. Conocimiento no debe ser confundido con datos o información. una extensión de la lógica de proposiciones. El conocimiento incluye y requiere del uso de datos e información. En general. unida a la habilidad de utilizar estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea. reglas.2. abstracciones. costumbres y asociaciones. o el acto. denominada lógica "0+" o representación objeto-atributo-valor. y la noción del saber con datos e información. En el caso que nos ocupa. ¿ 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. Fundamentemos. para representar el conocimiento. ideas. 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.

en forma gráfica o en imágenes. Se entiende por heurístico a un criterio. Conocimiento procedimental es aquel conocimiento compilado que se refiere a la forma de realizar una cierta tarea (el saber como hacerlo).2. consideraremos las representaciones escritas y sus correspondientes estructuras de datos utilizadas para su almacenamiento en un computador. su representación constituye una de las máximas prioridades de la investigación en IA. conocimiento acerca de lo que se conoce. esto es. expresado como sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). 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. Dado que el conocimiento es importante y primordial para el comportamiento inteligente. Tales tipos de datos son piezas explícitas de conocimiento independiente. los pasos necesarios para resolver una ecuación algebraica son expresados como conocimiento procedimental. estrategia. La información personal en una base de datos es un típico ejemplo de conocimiento declarativo. Está relacionado con la palabra griega heuriskein que significa descubrir. El conocimiento heurístico usualmente se lo adquiere a través de la experiencia. El conocimiento puede ser de tipo procedimental. como cadenas de caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. El adjetivo heurístico significa medio para descubrir. El conocimiento puede ser representado como imágenes mentales en nuestros pensamientos. Por ejemplo. El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos para resolver problemas complejos. el conocimiento declarativo es conocimiento pasivo. método o truco utilizado para simplificar la solución de problemas. En nuestro estudio. declarativo o heurístico. encontrar. Por otro lado. Sistemas basados en conocimiento 19 conocimiento. como palabras habladas o escritas en algún lenguaje. .

Pueda ser fácilmente modificado. Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo. Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería considerarse para buscar soluciones. los problemas involucrados en el desarrollo de una representación del conocimiento son complejos. la información es accesible a otras entidades que usan la representación como parte de una computación. usualmente implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de producción). . interrelacionados y dependientes del objetivo. se debe tratar que el conocimiento esté representado de tal forma que: • • • • • Capture generalizaciones. 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. En representaciones manipulables. El conocimiento declarativo puede ser representado con modelos relacionales y esquemas basados en lógica. 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. En términos generales. Debido a la variedad de formas que el conocimiento puede asumir.2. Una representación manipulable es aquella que facilita la computación. Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o completo. 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 proposicional y lógica de predicados.

6. sacrificando flexibilidad.& v (no exclusivo) ¬ ⊃⇒ ≡ El resultado de evaluar una proposición es falso o verdadero: P T T F F Q T F T F P^Q T F F F PvQ T T T F ~P F F T T P⊃Q ⊃ T F T T P≡Q T F F T .1 Representación mediante cálculo de predicados Fundamentado en la lógica simbólica.2. en el sentido que la enumeración puede ser redundante e ineficiente. Las conectivas utilizadas son las siguientes: Conectiva Y O NO IMPLICA EQUIVALENTE Denotada como AND OR NOT IF-THEN IF-ANO-ONLY-IF Simbología ^. pueden ser más compactas. Representaciones prácticas pueden incluir elementos tanto declarativos (listado de hechos conocidos). Sin embargo. agrega elimina conocimiento. en cambio. como procedimentales (un conjunto de reglas para manipular los hechos). la modificación simplemente de se las representaciones o se declarativas es usualmente Las muy fácil. trata esencialmente las relaciones entre enunciados o proposiciones simples y las compuestas (mediante conectivas aplicadas a proposiciones simples). Sistemas basados en conocimiento 21 Las representaciones declarativas son usualmente más expansivas y costosas. 2. representaciones’ procedimentales.

2. Sistemas basados en conocimiento 22 Un sistema que implemente la inferencia por cálculo de predicados deberá diferenciar los siguientes elementos: • • • • Términos. los cuales pueden ser. en donde se usan otras palabras (nodos) para definir una palabra.6. Los “conceptos” se definen en forma indirecta en la red semántica mediante la referencia a otros nodos. para todo (∀ (X)). algunas de las más usadas son: . Tabla) Cuantificadores universales: existe. sin embargo resulta -en el mejor de los casos.nodo “token” (instancia u objeto). previamente Este mecanismo de inferencia es el más viable para la implementación de sistemas de naturaleza deductiva. etc. Las ligas también pueden ser de diferentes tipos indicando diferentes relaciones entre nodos.insuficiente en la implementación de sistemas de naturaleza inductiva.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. que a su vez se refieren a otros. Referidos indirectamente al concepto mediante un apuntador al nodo tipo . constantes. Esto es análogo a la definición en un diccionario.nodo tipo (clase). 2. variables o funciones Conjuntos de predicados asociados a uno o más argumentos definidos Conjuntos de conectivas u operadores lógicos (v. que a su vez están definidas en función de otras palabras. donde los nodos pueden ser de dos tipos: • • Referidos en forma directa al significado del concepto .

Sistemas basados en conocimiento 23 • • • • B es una subclase o instancia de A (es) B y A están relacionados en la forma indicada por R Conjunción (A & B & C . pero estos tienen ligas a otros planos en que hay conceptos relacionados. tiene sus antecedentes en los trabajos de Post (1943).. y su tipo de relación mediante el seguimiento de la red hasta encontrar las interacciones..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. ... En general es posible usar este tipo de estructuras para diferentes tipos de razonamiento: 1.) La red semántica se puede ver dividida en planos. En cada plano hay un nodo tipo y una serie de nodos “token”.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.Descripción: Expresar un concepto en base a sus componentes y relaciones entre ellas (procesamiento del lenguaje natural).. 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). pero también a nodos de otros planos que están relacionados.6. como subclases. En cada plano se tiene la definición de un concepto. ) Disjunción ( Av B v C .. superclases. Es decir que un nodo tiene ligas a nodos del mismo plano que lo definen. etc. los algoritmos .Búsqueda asociativa: Encontrar si están relacionados dos o más conceptos. 2. 3.2. analogías. 2.

en éste.. dada su representación modular y uniforme. Frames (Minsky 1975).4 Representación del conocimiento por objetos estructurados Los objetos estructurados tienen diversas denominaciones.. una regla de producción consta de un par ordenado de símbolos (situación-acción).6. Sistemas basados en conocimiento 24 de Markov y en la lingüística de Chomsky. Scripts (Schank. 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. se precisa de un intérprete que accese a las reglas. Abelson 1977). Básicamente.2. validación) y acción. Validación (reglas cumplidas) Ejecución de las acciones especificadas por las reglas cumplidas. 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. En el desarrollo de un motor que utilice está representación. . Podemos observar que funcionalmente el sistema opera en fases de reconocimiento (selección de reglas pertinentes. manipule variables y en algunos casos clases sintácticas (parsing). 2. la sintaxis de las reglas es diversa y se estructura en función del proceso de selección y ejecución de éstas. recae el proceso de inferencia denominado "control": • • • Selección de las reglas pertinentes. entre las que destacan: Esquemas (Bartlett 1932).

2. Valores obtenidos durante ejecución. Sistemas basados en conocimiento 25 Objetos (Goldeberg.6.5 Representación mediante procedimientos Este tipo de representación utiliza un lenguaje de alto nivel en el tratamiento de los conocimientos. Descriptores funcionales (Kay M. 2. las características generales de este modelo de representación son: a) Cada objeto tiene asociado un conjunto de atributos que lo caracterizan. Apuntadores a otros objetos. . Constantes. El nombre de un procedimiento específico (ejecutable automáticamente o mediante requisición). Valores por defecto 5. el cual a su vez puede ser otro objeto c) Los atributos(valor) corresponden a: 1. Steels 1982. Cuando el objeto se ha eliminado o no ha sido instanciado. b) Cada atributo tiene asociado un valor. Cuando es parte de una hipótesis alternativa. Los estados de los objetos definidos por el sistema son: Activos Semiactivos Inactivos Cuando se encuentra presente en la lista de hipótesis en curso de tratamiento. 1977. los conocimientos que trata no se expresan en forma declarativa. en forma explícita mediante un programa.2. 1982). sino que se encuentran a través de todo el programa. 3. entre otros). El comportamiento del programa está dirigido por instrucciones. 4.

Los sistemas basados en árboles de decisión forman una familia llamada TDIDT (Top-Down Induction of Decisión Trees). Se basan en la partición del conjunto de ejemplos según ciertas condiciones que se aplican a los valores de los atributos. Las descripciones elementales de los pares que forman la lista de decisión tienen la misma forma que los complejos de AQ.2.6 Representación mediante árboles de decisión Los árboles de decisión son una forma de representación sencilla.. (d n .. Su potencia descriptiva viene limitada por las condiciones o reglas con las que se divide el conjunto de entrenamiento.. sino si d n entonces C n ". muy usada entre los sistemas de aprendizaje supervisado. 2. sino si d2 . Una lista de decisión es una lista de pares de la forma (d1.. o relaciones de comparación (“mayor que”. seleccionando aquél con el que la reducción es máxima. La clase de un objeto será C j cuando d j sea la primera descripción que lo satisface.. y la última descripción C n es el valor verdadero. cada C i es una clase. C2 ). se puede pensar en una lista de decisión como en una regla de la forma “si di entonces C1 . Por tanto. C n ) donde cada d i es una descripción elemental. 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). por ejemplo. Sistemas basados en conocimiento 26 2..).6. etc.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. etc. Es una generalización de los árboles de decisión y de representaciones conjuntivas (CNF) y disyuntivas (DNF).6. Los nodos del árbol están etiquetados con nombres de atributos.. para clasificar ejemplos en un número finito de clases. 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 ramas con los posibles valores del atributo. (d2. y las hojas con las diferentes clases. . estas reglas pueden ser simplemente relaciones de igualdad entre un atributo y un valor. C1 ).

denotado por: D1xD2x.. An. .D2. i = 1 . x D n es n i. Una instancia de BD es un conjunto finito de relaciones finitas. así los valores de un atributo asociado a la columna i.. A2. ocupándonos de 4a estructura e integridad de los datos así como de su manipulación.Dn. .7. x Di. A2. pertenecen al dominio Di. Sistemas basados en conocimiento 27 2.x 2. .. Finalmente.7 Representación Lógica de un SGDB relaciona1 En los siguientes párrafos ofreceremos una visión detallada del esquema relacional..1 Estructura e integridad. con un conjunto concreto de tuplas resulta una instancia o extensión de dicho esquema.. desde la óptica de la lógica de primer orden. en las que las columnas llevan asociado un identificador (atributo). . denotado por R(A1. podemos definir la . esto es. An.x n.de valores. Se llama cardinalidad de una relación al número de tuplas que lo contiene.. Con atención a cómo se encuentran estructurados los datos: Un dominio es un conjunto -normalmente finito.2. Se llama relación a cualquier subconjunto del producto cartesiano de dos o más dominios. de manera que una relación específica R1. es el conjunto de todas las tuplas (x 1. Normalmente una relación es representada como una tabla de valores. 2. La aridad o grado de una relación R ⊂ D1 x D2 x .. El producto cartesiano de una serie de dominios D1.. .. se verifica que X i n ∈ D i. por lo que existen restricciones de integridad asociadas a cada esquema de relación.. ..). define lo que se llama un esquema de relación. .) tales que para cualquier i. No todas las instancias acordes con un determinado esquema son semánticamente válidas (coherentes con la semántica asociada de BD). . . Una relación R de atributos A1.. el número de dominios que intervienen en su definición..

2. Selección. Unión. Operaciones especiales. el subconjunto obtenido al seleccionar los atributos. por ejemplo. Operaciones sobre conjuntos. el subconjunto de las tuplas de una Relación para el cual se cumple un predicado dado. a excepción de ésta última. expresado como combinación booleana de términos. Sistemas basados en conocimiento 28 estructura general como un superconjunto de esquemas de relación y de restricciones de integridad. Proyección. es decir. de la primera obtenemos una colección de operadores y operaciones explícitas. la segunda proporciona la semántica para definir las relaciones resultantes. • Algebra Relacional. *Proyección: Produce un subconjunto “vertical” de una relación dada.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. se precisa que los operandos sean del mismo grado y que los iésimos atributos tengan el mismo dominio. Diferencia y Producto Cartesiano. Que asigna los resultados de otras operaciones relacionales a una nueva relación con el objetivo de preservar los resultados.2. . Intersección. Los operadores básicos de AR pueden agruparse en: Operación de asignación. reunión y División: * Selección: Operador algebraico que produce un subconjunto “horizontal” de una relación específica.7.

>. es una fórmula. Se dice que una variable para t es libre si no se encuentra cuantificada (universal o existencialmente).k ∈ R.Si P1 (s) es una fórmula que contiene una variable de tupla libre s. <=. ⇒ P2 . • Cálculo Relaciona1 (tupías [CRT] y dominios[CRD]) Cálculo Relacional de Tupías. tiene la forma {P/P(t)} que representa el conjunto de todas las tuplas t que hacen verdadera la fórmula o predicado P. donde k es una variable tupla y R una relación.2. da como resultado todas las tuplas t. tales que t. donde k y v son variables tupla. Una fórmula del CRT se compone de átomos. .=). .Si P1 y P2 son formulas. también lo son. con c como constante del domino del atributo x. x es un atributo sobre el que se define k y θ operador de comparación (<. Sistemas basados en conocimiento 29 *Reunión: La reunión de la relación A sobre el atributo X con la relación 5 sobre el atributo Y. . igual que el caso anterior. 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. también lo son P1 ∧ P2 . . . y P1. entonces (P1 ) y (¬P1). Las fórmulas se construyen a partir de los átomos usando las siguientes reglas: . de las siguientes formas: . produciendo una de grado m. Una expresión en el CRT.k[x] θ v[y]. entonces ∃s ∈ R (P1 (s)) y ∀s ∈ R (PI (s)) también lo son. P1 v P2.Un átomo es una fórmula.Si P. >=. Usaremos t[A] para denotar el valor que tiene la tupla t para el atributo A y t ∈ R para denotar que t está en la relación R.s[x] θ c.

. ) } donde x1. éstos pueden tener las siguientes formas: . Cálculo relacional de dominios. con x e y operados por comparación. Sistemas basados en conocimiento 30 Siguiendo esta definición es posible generar una relación infinita.x2.xn >∈ R.…xn.. ..x2 . así se introduce el concepto de dominio de una fórmula P. Esta forma del cálculo relaciona1 utiliza variables de dominio a las que se asignan valores del dominio de un atributo (dato).. > | P (x1..xθy.. dom(P) es el conjunto de todos los valores representados por P.2.. xn representan las variables de dominio y P la fórmula compuesta de átomos.x2 . .X2.. por ejemplo el número de tuplas que no están en una relación {t/¬ (t∈R)}...... Las expresiones tienen la forma: {<x1 .< x1 . donde R es una relación de n atributos. equivalente al caso anterior y c es una constante del domino del atributo de x.xθc. xn. .

pero sobre todo los conocimientos empíricos adquiridos en la práctica. también se han producido grandes avances en el tratamiento del conocimiento. muchos de ellos tuvieron un alcance muy limitado. Sistemas expertos 3. El estudio y desarrollo de los Sistemas Expertos (SEs) comenzó a mediados de la década del 60. geólogo. Sistemas expertos 31 3. Entre 1965 y 1972 fueron desarrollados varios de estos sistemas. de la información y de las comunicaciones. como consecuencia de los avances de las nuevas tecnologías de la producción. actualizada y oportuna.3. DENDRAL y PROSPECTOR.). otros como MYCIN. la toma de decisiones de una manera eficaz precisa de una forma rápida de información suficiente. En teoría estos sistemas son capaces de razonar siguiendo pasos comparables a los que sigue un especialista (médico. se han producido grandes cambios en el entorno de las empresas y las organizaciones. matemático. con el desarrollo de los sistemas basados en el conocimiento y los sistemas expertos. Por ello el creador de un SE debe comenzar por identificar y recoger. En este nuevo entorno. biólogo. cuando resuelve un problema propio de su disciplina. los conocimientos que éste utiliza: conocimientos teóricos. 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. utilizando los ordenadores electrónicos y los medios que proporciona la tecnología de la información. 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 . factor fundamental para la toma de decisiones. etc. del experto humano. gracias a las investigaciones realizadas en la inteligencia artificial.1 Antecedentes En las últimas décadas. Además.

usando lo que los expertos consideran que son reglas empíricas efectivas. A. Los sistemas expertos también pueden ser definidos en función de sus características funcionales. Pueden inferir nuevos conocimientos a partir de los existentes.“. Contemplan múltiples hipótesis. Los sistemas expertos son un subconjunto especial dentro de los sistemas basados en el conocimiento. 2. 3.. Sistemas expertos 32 un determinado dominio. Aplican técnicas de búsqueda. Robinson propone en 1965 una . que muchos considerarían fundamental. si se le solicita. e interactúan con los humanos de forma adecuada. es la aprobada por el Grupo Especialista en Sistemas Expertos de la Sociedad Británica de Ordenadores. En este sentido. Pueden explicar su proceso de razonamiento y justificar sus conclusiones. 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.. de tal forma que el sistema pueda ofrecer asesoramiento inteligente o tomar una decisión inteligente sobre una función del proceso. Razonan heurísticamente. 8. 7. Manipulan y razonan sobre descripciones simbólicas. Una característica adicional deseable. Hayes-Roth considera como características más importantes de los sistemas expertos las siguientes: 1. Una definición formal de los sistemas expertos.2 Programación lógica en Sistemas expertos La programación lógica tiene sus antecedentes más próximos en los trabajos de prueba automática de teoremas de los años sesenta. Pueden resolver problemas normalmente atacados por los expertos humanos. que se obtiene a partir de la pericia (conocimiento técnico) de un experto. aceptada por muchos autores. J. 6. 4. 3. 5. incluyendo el lenguaje natural. Pueden funcionar con datos inciertos. es la capacidad del sistema.3. de justificar su propia línea de razonamiento de un modo directamente inteligible para el interrogador. que incorporan en la base de conocimiento del sistema el conocimiento de un experto.

3. Sistemas expertos

33

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 cual la 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.

3. Sistemas expertos

34

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:

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.

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.

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

3. Sistemas expertos

35

experiencia y el conocimiento de expertos. En cada estadio de los procesos de 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 los 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”,

la gestión de procesos deductivos de la base de reglas que opera sobre la base de datos. redes semánticas. la arquitectura de los sistemas expertos. Motor de inferencia: Es el mecanismo usado para extraer el conocimiento de la base de conocimientos. Sistemas expertos 36 o sea no precisos. Interface con el usuario: Es el medio de comunicación entre el sistema experto y el usuario. 3. Generalmente se construye a través de consulta con uno o varios expertos del área. Base de conocimientos: Consiste en las reglas. esto es. para incluir el conocimiento heurístico. 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. La base. para alcanzar una solución o conclusión determinada. utilizando la base de conocimiento. constituye el eje sobre el que se ha de construir el modulo de gestión de base de conocimientos. la cual hace uso de la representación . manuales. Básicamente el Sistema Experto esta compuesto por los siguientes módulos: 1.3. procedimientos y datos intrínsecos al área del problema. etc. 3. seleccionando los datos y pasos apropiados para presentar los resultados. Para los efectos de nuestro estudio. predicados. Combina los hechos y las preguntas particulares. 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). frames y objetos. 2.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.

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. Figura 6. En particular. Aunque la creación de vistas es similar al uso de reglas para definir bases de datos en intenso. que permitan deducir nuevo conocimiento a partir del que ya se conoce. . Aspectos a considerar en la programación de SE. 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. Sistemas expertos 37 explícita del conocimiento a utilizar por el sistema y de su interpretación y manipulación lógica por medio de mecanismos de inferencia.3. las listas de ancestros y las jerarquías de dirección por ejemplo). éstas no son tan poderosas como las reglas lógicas.

cada autor cree. Cada libro de texto en IA propone una definición que enfatiza las diferentes perspectivas que.1 Fundamentos En el presente capítulo. creación)”. encierra el campo. aprendizaje. y sistemas que realizan otro tipo de actividades que requieren de inteligencia humana”.4. razonar y actuar”. fundamentalmente porque la inteligencia humana no está completamente entendida. razonamiento. “La IA es una ciencia que trata de la comprensión de la inteligencia y del diseño de máquinas inteligentes. Arquitectura de BDI 4. 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 computarizados 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. Arquitectura de una BDI 38 4. 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. es decir. sistemas que pueden comprender un lenguaje natural o percibir y comprender una escena visual. percepción. “La IA es un campo de estudio que busca explicar y emular el comportamiento inteligente en términos de procesos computacionales”. “La IA es el estudio de las computaciones que permiten percibir. el estudio y la simulación de las actividades intelectuales del hombre (manipulación. “La IA estudia las representaciones y procedimientos que automáticamente resuelven problemas usualmente resueltos por humanos” .

actuando como un conjunto de ideas acerca de cómo representar y utilizar el conocimiento.2 Descripción Las aplicaciones de mayor impacto que han surgido de la Inteligencia Artificial se concentran en los Sistemas Basados en Conocimiento. el objetivo de la IA es resolver problemas reales. además de que su construcción es un proceso complejo y costoso. Toda computación. 4. estos sistemas son útiles en función de la validez de su conocimiento. el objetivo de la IA es buscar la explicación de diversas clases de inteligencia. la IA puede considerarse en parte como ingeniería y en parte como ciencia: Como ingeniería. 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 los objetivos. A su lado.4. Desde el punto de vista de ingeniería. 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. y de cómo desarrollar sistemas informáticos. requiere de una representación de cierta entidad y de un proceso para su manipulación. Arquitectura de una BDI 39 A pesar de la diversidad de conceptos propuestos para la IA. en general todos coinciden en que la IA trata de alcanzar inteligencia a través de la computación. Desafortunadamente. está basado en el desarrollo de adecuadas representaciones de conocimiento y sus correspondientes estrategias de manipulación. la mayor parte del trabajo requerido para construir sistemas de IA. los SGBD relacionales . Como ciencia.

permiten obtener ciertas informaciones útiles. o leyes que enuncien su comportamiento. con un alto grado de penetración en distintos mercados: los sistemas de bases de datos conllevan la automatización de cada vez más actividades reduciendo costos y mejorando la calidad de desempeño. el conocimiento se ha venido obteniendo por el clásico método hipotético deductivo de la ciencia positiva. que puede traducirse como escuadriñar. Por ello.) para análisis inteligente de datos. desarrolladas hace tiempo. para esto se requieren técnicas de análisis inteligente que todavía no han sido claramente establecidas. se incrementa de forma continua la diferencia existente entre la cantidad de datos disponibles y el conocimiento extraído de los mismos. Consecuencia de esta creciente necesidad ha aparecido un nuevo campo de interés: la minería de datos (data mining). sino de millones de datos almacenados en soporte informático. . 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. que incluye nuevos métodos matemáticos y técnicas siftware ("sift". Esta “intuición” resulta inoperante cuando no se trata de observaciones aisladas y casuales. en dichos sistemas. pero no inducir relaciones cualitativas generales. cernir.4. Las técnicas de análisis estadístico. Cada vez más investigaciones dentro de la inteligencia artificial están enfocadas a la inducción de conocimiento en bases de datos. etc. por ello. En muchas áreas del saber. 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. Arquitectura de una BDI 40 han evolucionado hasta consolidar una robusta plataforma altamente funcional y económica. En el fondo de todas las investigaciones sobre inducción en bases de datos subyace la idea de automatizar ese paso inductivo.

analistas de datos. 7). 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. y los posteriores. Arquitectura de una BDI 41 La minería de datos surge a partir de sistemas de aprendizaje inductivo en ordenadores. la segunda -en que sustentamos nuestra tesis. como el filtrado y preprocesado de los datos. obtenida sobre dominios finitos ( v. Normalmente el término minería de datos lo usan estadísticos.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. sino también diversos pasos previos de regular complejidad. los sistemas de aprendizaje se usen de forma masiva como herramientas para analizar datos a gran escala. mientras que KDD es más utilizado en inteligencia artificial y aprendizaje en ordenadores. .4. como la interpretación y validación del conocimiento extraído en que se involucran técnicas de la ingeniería del conocimiento. fig. y su importancia crece de tal forma que incluso es posible que.que opera con un propósito específico atendiendo un conjunto de reglas predefinidas y operando en un marco finito (segmentos de la BDD). en el futuro. por ejemplo un comportamiento irregular en un dominio particular: descenso o incremento de los valores que habitualmente los compone. al ser aplicados a bases de datos. y la comunidad de sistemas de gestión de información. para la solución de problemas particulares o la estructuración de conocimiento en lenguaje de alto nivel. Este proceso incluye no sólo el análisis inteligente de los datos con técnicas de minería de datos. En el esquema operativo de la minería de datos se distinguen -en razón directa de su implementación sobre SGBD relacionales activos.

precisa del desarrollo de un sistema que posea la capacidad de gestionar conocimiento complejo a través del procesamiento de datos simples. . como las técnicas avanzadas para el almacenamiento. La eficiente implementación de 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.8). En las bases de datos inteligentes [BDI] se pretende capitalizar tanto la evolución e integración de las bases de datos relacionales activas.fig. 7 KDD en un dominio finito. Fundamentalmente. Arquitectura de una BDI 42 Fig. incorporar la capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver clases de problemas dentro del dominio.4. provenientes tanto de ficheros controlados de forma autónoma como de un SGDB (v. una BDI. recuperación y procesamiento de la información en el área de los sistemas expertos e inteligencia artificial.

el conocimiento relevante y los objetivos del usuario final.4. ofreciéndole herramientas para extraer conocimientos a partir del análisis del contenido de sus datos. usar conocimientos y hacer inferencias para facilitar la recuperación y visualización de la información. 2. interrelacionar información proveniente de diversas fuentes usando medios diversos. Arquitectura de una BDI 43 Fig. Su principal objetivo es permitir al usuario manipular el contenido de su base de datos de manera transparente. los criterios de rendimiento exigibles. etc. Desarrollo y entendimiento del dominio de la aplicación. saber qué partes son susceptibles de un procesado automático y cuáles no. compromisos entre simplicidad y precisión del conocimiento extraído. para qué se usarán los resultados que se obtengan. Este paso requiere cierta dependencia usuario/analista. pues intervienen factores como: conocer los cuellos de botella del dominio. cuáles son los objetivos. Los principales pasos dentro del proceso interactivo e iterativo del KDD pueden verse en la figura 8. apoyando la toma de decisiones y ofreciendo una alternativa para representar y manipular la semántica de las aplicaciones avanzadas. 8 Procesamiento de datos en una BDI. Creación del conjunto de datos objetivo. y son los siguientes: 1. seleccionando el subconjunto de variables o ejemplos sobre los que se realizará el descubrimiento. Esto implica consideraciones .

6.4. marca la diferencia entre el éxito o fracaso de la minería de datos (paso 7). etc. Minería de datos. etc. Interpretación del conocimiento extraído. grados de libertad. Arquitectura de una BDI 44 sobre la homogeneidad de los datos. Elección del algoritmo de minería de datos 7. Este es un paso crítico dentro del proceso global. etc. en función de su sencillez. su variación a lo largo del tiempo. etc. regresión. Elección del tipo de sistema para minería de datos. con frecuencia. estrategias para manejar valores ausentes. que requiere un buen conocimiento del problema y una buena intuición. agrupamiento de conceptos (clustering). 4. Incluye la búsqueda de características útiles de los datos según sea el objetivo final. 5. Preprocesado de los datos: eliminación de ruido. normalización de los datos. con posibilidad de iterar de nuevo desde el primer paso.) que permitan filtrarlo de forma automática. Esto depende de si el objetivo del proceso de KDD es la clasificación. Transformación y reducción de los datos. 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. En este paso se realiza la búsqueda de conocimiento con una determinada representación del mismo. 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. 3. estrategia de muestreo. y que. 8. La obtención de resultados aceptables dependerá de factores como: definición de medidas del interés del conocimiento (de tipo estadístico. . detección de desviaciones.

Base en intenso. considerando el desarrollo de una BDI sobre un motor relacional. ofrecer opiniones informadas y explicación de sus razonamientos. por ejemplo la reducción en el tiempo de toma de decisiones. incorporándolo al sistema.4. Arquitectura de una BDI 45 9. flexibilidad y apoyo a la reorganización y la reingeniería. sin embargo. y la retención del conocimiento y experiencia corporativa. el sistema -regularmente. 2. Base principal en la que se concentra en diversas tablas el total de datos útiles del sistema. heurísticas. el mejoramiento del desempeño de personal no experto. el mejor servicio. Consolidación del conocimiento descubierto.integrará: 1. se distingue como objetivo de la intetfaz: proporcionar consejo y apoyo a la toma de decisiones. la acelerada capacitación de personal mediante tutores. Una base de datos relacional. Una base de conocimiento dinámica. . deberá permitir que el directivo u operador manipule grandes volúmenes de información entre los que encontramos ejemplos. o simplemente documentándolo y enviándolo a la parte interesada. constituida de selección de tuplas involucradas en un proceso de inferencia particular. 4. reglas. el mejor diagnóstico de fallas. para ello. Los beneficios son amplios y múltiples. en el grueso de los estudios enfocados al desarrollo de un sistema inteligente de bases de datos. hechos e incluso modelos de predicción con probabilidades de certeza. el mejor mantenimiento. además. 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. apoyo a la toma de decisiones basada en hechos.3 Arquitectura Los SGBD Inteligentes no existen como tales. la optimización de tiempos y movimientos. Este paso incluye la revisión y resolución de posibles inconsistencias.

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. de las que se espera: • Descubrimiento de conocimiento y búsquedas inteligentes. desarrollada en el lenguaje anfitrión. Integrando técnicas de inteligencia artificial para extraer conocimiento a partir del análisis de los datos. inaplicables. 5. no está necesariamente relacionada con la estructura de la BDD. nos ocuparemos de la arquitectura basada en los . Estructuran los procesos de inferencia en marcos de operación determinados. Así una BDI puede estar soportada en SGBD comerciales. La inteligencia en una base de datos. Módulos de Preproceso. Arquitectura de una BDI 46 3. desconocidos. (Lógica fuzzy y multivaluada) 4. la mayoría de los lenguajes anfitriones incorporan estructuras de control sobre las que se pueden implementar (Computación evolutiva e IPL).4. Una base de reglas. siempre que cuente con un módulo lógico o extensión lógica. esta extensión deberá crear funciones y procedimientos particulares. etc. • Tratamiento de la Incertidumbre. (Conocimiento con incertidumbre) Para los efectos de nuestro estudio. sino en la explotación que el sistema pueda hacer de éstos. Procesamiento lógico de condicionales: datos inexistentes. precisamos de archivos binarios a los que el sistema acceda en forma eficiente y rápida. o en un lenguaje de programación lógica. para implementar la inteligencia del sistema. Módulos de acceso binario. Enfocados al tratamiento de los datos inciertos en la base persistente. indefinidos. Cuando intervienen procesos de selección y filtrado para los que no se estructura un campo clave. su arquitectura implica la creación de DDL y DML).

o base de conocimiento) aplicándoles el conjunto de reglas pertinentes (base de reglas). informando resultados o . filtrar (en el caso de que exista incertidumbre. La forma de pasar de formato relaciona1 a formato proposicional consiste en crear una nueva relación. con los campos precisos para la sustituir con sus valores las variables en el formato proposicional.4. En este proceso. si es el caso. tuplas procedentes de una o diversas tablas. el motor de inferencia operará sobre éstos (base en intenso. volver a convertir el conocimiento obtenido a formato relacional. el sistema deberá seleccionar de la base persistente. para determinar la solución a un problema determinado. y. 9 Arquitectura Relacional-ILP . ordenar y crear la base en intenso.modificando la base de datos persistente. Arquitectura de una BDI 47 estudios sobre transformación de problemas ILP (Programación Lógica Inductiva) a formato proposicional. la mecánica de transformación se basa en la idea de convertir conjuntos de datos del formato relacional a formato proposicional.en su caso. creando una nueva relación. Fig. mediante lógica fuzzy o multivaluada). 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 años recientes. las técnicas de esta rama de las ciencias de la información han abordado muchos campos prácticos y desarrollados herramientas sofisticadas de uso cotidiano en sectores comerciales e industriales.3. Table La base de reglas y las funciones de inferencia pertenecen al lenguaje nativo (Visual Basic 6) 4. Las aplicaciones prácticas de la llamada Inteligencia Artificial han sido foco de controversia por muchos años.db) Características Tanto la base de reglas como el motor de inferencia operan en forma periférica al sistema (Uso de Prolog). trata de desarrollar modelos de los procesos de interés (social.4. podemos considerar que el desarrollo es aún primitivo. modelos lógico-matemáticos. Claramente. La ingeniería en sus diversas instancias. etc. a través de herramientas .1 Computación evolutiva e IPL La computación evolutiva es una rama de la inteligencia artificial enfocada al desarrollo de algoritmos genéticos. El formato físico -en cada caso. puede edificarse en -por lo menos dos formatos físicos (el formato proposicional. esto es. económico. es persistente en ambos): un archivo plano (dbintdb) o mediante un objeto (Table) del lenguaje anfitrión. Arquitectura de una BDI 48 La base en intenso. si comparamos los sistemas desarrollados con las habilidades cognoscitivas humanas.) para después. Sin embargo.dependerá de la base de reglas y la naturaleza del motor de inferencia: Formato Archivo Plano (dbint. en el sistema propuesto. al razonamiento natural. que aproximen las operaciones máquina.

4. o dinámico cuando dependen de éste. múltiples algoritmos genéticos o evolucionistas basados en la existencia de un universo de acción (espacio finito de la base persistente). evolucionar ampliando dicho conocimiento mediante un proceso de inferencia lógica fundamentalmente heurístico. borrosas. El modelado puede efectuarse apoyándose en las leyes físicas que rigen. La programación lógica inductiva se define como la intersección entre el aprendizaje inductivo y la programación lógica. las interacciones entre los diversos subsistemas que componen el proceso. En este universo. • De la programación lógica hereda básicamente el formalismo de representación y su . 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. e inclusive pueden obedecer a relaciones= empíricas elaboradas como fruto de la observación y la experiencia (relaciones estadísticas. Arquitectura de una BDI 49 y metodologías adecuadas. en que un agente o entidad lógica parte de su conocimiento sobre los hechos inmediatos (conocimiento base. Dichos algoritmos se pueden edificar a partir de la programación lógica inductiva (Inductive Logic Programming ILP).). 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. Las relaciones pueden poseer carácter estático cuando no interviene el tiempo como parámetro modelador. existente en las relaciones persistentes) y puede. poder extraer resultados útiles en diversos sentidos. bajo condiciones determinadas. etc. en caso de que verifique relaciones base sobre un requerimiento particular. que describiremos brevemente.

El conckimiento inducido permite definir clases en función del valor de los atributos. Por el contrario. consistentes con los ejemplos de entrenamiento. Cap. Dentro del espacio de todas las posibles cláusulas. En los sistemas de aprendizaje de orden . C4. se representa en forma de árbol de decisión: ID3. superando así dos de las principales limitaciones de las técnicas clásicas de aprendizaje en ordenadores: la rigidez en la representación del conocimiento (v. transformación del problema a formato proposicional. podemos distinguir varias técnicas: generalización relativa menos general. 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). etc.5. etc. resolución inversa. etc. En ocasiones. el conjunto de entrenamiento lo forman relaciones definidas de forma extensional. cada uno perteneciente a una clase conocida. Se puede considerar la programación lógica inductiva como la búsqueda de cláusulas. muy útiles cuando se trabaja con objetos estructurados. modelos de reglas. se puede definir una ordenación entre ellas. siendo representable con expresiones de la lógica de proposiciones. Según sea el método con el que se recorre el espacio de posibles cláusulas. 1) y la dificultad para expresar conocimiento de base (background knowledge). C4.5 rules. y el conocimiento de base lo constituyen otras relaciones. búsqueda de grafos refinados. en los sistemas de aprendizaje de primer orden. difíciles de describir en un formato objeto-atributo-valor. La ILP utiliza la programación lógica como mecanismo para representar las hipótesis y las observaciones. en estos sistemas. .4. en lenguaje de primer orden. En este tipo de definiciones lógicas se permite la recursión y algunos cuantificadores. Arquitectura de una BDI 50 orientación a la semántica. y a veces en forma de reglas: PRISM. la construcción de un programa lógico que defina de forma intensional una relación objetivo (extensional) del conjunto de entrenamiento. definidas intensionalmente: El objetivo del aprendizaje es.0 el conjunto de entrenamiento consta de vectores de valores.

tanto en el antecedente como en el consecuente. Por ello. Y). fumador(josé) Igg(c 1 . c 2) = enfermo(X) :hijo-de(X.4. GOLEM utiliza restricciones que evitan la introducción de literales redundantes. relativa a cierto conocimiento de base. como hace GOLEM) . el número de literales de una rigg crece al menos de forma exponencial con el número de ejemplos existentes. La rigg es la técnica en que se basa el sistema GOLEM. Esto permite realizar generalizaciones de forma conservadora. La generalización relativa menos general (rigg) de dos cláusulas. josé). es la generalización menos general de ambas. Por ejemplo: c 1 = enfermo (pedro) :hijo-de(pedro. Generalización relativa menos general La generalización menos general (least general generalization) de Plotkin se basa en la idea de que si dos cláusulas c 1 y c 2 son ciertas. fumador(Y). juan). la generalización más específica común a ambas Igg(c 1 c 2) será también cierta con bastante plausibilidad. esta operación se realiza comparándolos y sustituyendo por variables los atributos que no coincidan. fumador(juan) c 2 = enfermo (alberto) :hijo-de(alberto. Arquitectura de una BDI 51 a. Normalmente. aunque aún así el número de ellos suele ser grande. Existen sistemas que combinan técnicas de búsqueda de abajo hacia arriba (generalización menos general. 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 (bottom-up). Para cada par de literales. 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.

hijo-de(Y. c.4. X).hijo-de(Y. La resolución inversa utiliza un operador de generalización basado en invertir la sustitución. En lógica de predicados de primer orden. la resolución establece que (silogísmo hipotético) dadas las premisas p v q y 9 v r. y la sustitución inversa q2 -1 = {Juan/X} se obtiene: c2 = enfermo(Y) :. la resolución requiere sustituciones de variables por valores de atributos. juan) tomando ahora cl y b3. dados los hechos: b1 = enfermo(pedro) b2 = hijo-de(pedro. juan) b3 = fumador(juan) tomando b1 y b2. b. Búsqueda en grafos refinados La principal técnica de especialización en ILP es la búsqueda de arriba a abajo (topdown search) en grafos refinados (refinement graphs). fumador(X). Resolución inversa La idea básica de la resolución inversa (inverse resolution) consiste en invertir la regla de resolución. y la sustitución inversa ql -1 = {pedro/Y} se obtiene: cl = enfermo(Y) :. Arquitectura de una BDI 52 con técnicas de arriba hacia abajo (especialización por introducción de nuevos literales. Aplicada en lógica proposicional. Por ejemplo. de la inferencia deductiva. como FOIL). obteniendo así un método de generalización. Los sistemas que utilizan esta . se deduce que p v r.

10 Grafos refinados. En este grafo. d. cada una de las reglas así . comienzan con la cláusula más general. debido a que se produce una explosión combinatoria en el conjunto de posibles especializaciones. que hace inabordable la búsqueda exhaustiva. Para cada patrón de regla se prueban todas las posibles combinaciones de predicados existentes y. a la que aplican especializaciones hasta que sólo cubra tuplas positivas. o incremento de un nuevo literal en la cláusula en construcción). Fig. 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. La búsqueda de reglas se realiza a partir de los patrones de reglas existentes. Se denominan grafos 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. Patrones de reglas. Arquitectura de una BDI 53 técnica. 10). La búsqueda dentro de éste grafo suele ser heurística. Se denominan patrones de reglas a un tipo especial de reglas en las que los predicados son variables.4. proporcionados por el usuario.

Y). fumador(Y). conocido como ILP no monótono.Y).Y) :. se evalúa con los datos de entrenamiento. Estas reglas deberían ser lo suficientemente precisas como para poder reemplazar a los ejemplos de la base de datos y que éstos fueran deducidos a partir de las mismas. Cláusulas Normalmente el objetivo de los sistemas de ILP es la inducción de reglas que definan ciertos predicados. de forma inseparable.Y) La última de ellas se interpreta como que una persona no puede ser a la vez padre y madre de otra. Por ejemplo.Y) progenitor-de(X. cabe destacar la que se produce como . que consiste en la búsqueda de restricciones dentro de la base de datos. la regla enfermo(X) hijo-de(X. con un patrón de reglas de la forma: P(X) :.Y) v madre-de(X.Y) :. Q(Y) se podría obtener. Arquitectura de una BDI 54 obtenidas.padre-de(X.2 Conocimiento con incertidumbre La incertidumbre está asociada. con la información. madre-de(X.Y). e. Aunque existen diferentes formas de incertidumbre.3. Pero puede considerarse un enfoque diferente. Estas restricciones pueden tener la forma de una cláusula en lógica de predicados de primer orden: padre-de(X.R(X.padre-de(X.progenitor-de(X. 4.Y) falso :. por ejemplo.4.

Los primeros se caracterizan por formas verbales indeterminadas que representan rangos heurísticos de valor (alto. aplicada al desarrollo de SGBD. los segundos. “Juan no tiene más de 40 años”. lo que permite manejar de forma eficiente la complejidad asociada al mundo real.).4. en sí mismos. vagos o borrosos. Motro propone clasificar la incertidumbre en diversos tipos: - incertidumbre propiamente dicha: cuando no es posible determinar si una aserción es cierta o falsa. - imprecisión: la información no es tan específica como debería ser: “Juan tiene entre 30 y 40 años”. etc. es decir. por ejemplo. Arquitectura de una BDI 55 consecuencia de la imprecisión y subjetividad propias de la actividad humana. no estamos seguros de que “Juan tenga 30 años”. denominados valores nulos. vaguedad: conocimiento del estilo de “Juan pertenece a la tercera edad”. La lógica borrosa y la teoría de conjuntos borrosos ofrecen un método natural para representar esa imprecisión y subjetividad humanas. y no por ello carecen de significación. . sus límites no están perfectamente determinados. la incertidumbre se centra en el tratamiento de dos indicadores fundamentales: • • Datos inciertos o difusos. a menudo. 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. Muchos de los conceptos manejados habitualmente son. Datos desconocidos o condicionales. muy alto. En muchas ocasiones sacrificamos parte de la información precisa disponible por otra más vaga pero más robusta. El tratamiento de la incertidumbre es un rasgo típico de las aplicaciones en que se involucra la inteligencia artificial.

En esta misma línea se encuentra Johnston. la mayoría derivados de la lógica difusa (fuzzy logic). la lógica no monotónica y la lógica funcional no verdadera. 4. 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. “Juan tiene entre 37 y 45 años” y “la edad de Juan es 34”. 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. 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. - ambigüedad: si algunos elementos del modelo no poseen una semántica completa. sino que hay un continuo de “grados de pertenencia”.1 Tratamiento de los valores inciertos. y la lógica borrosa (fuzzy). y puede tomar valores entre 0 y 1. Esto suele producirse al establecer magnitudes sin especificar su unidad de medida. que propone una lógica multivaluada “reglamentada” a la que se le añaden “áreas de la lógica que van más allá de la lógica proposicional y de predicado de primer orden”. como pueden ser: la lógica modal. basada en la Teoría de Conjuntos Difusos. .3.2.4. para ello existen distintos algoritmos. dando lugar a distintas interpretaciones. donde un elemento no necesariamente pertenece o no pertenece a un conjunto. El grado de pertenencia a un conjunto(p). Arquitectura de una BDI 56 - inconsistencia: cuando el modelo tiene dos o más aserciones que no pueden ser ciertas. por ejemplo.

Por ejemplo Edad={20. Conjunto de posibles asignaciones excluyentes de números. _ donde µA(x) se denomina grado de pertenencia de x a Λ. Escalar simple. 4. 2. es un conjunto de ares: Λ = {x. Número simple.A(x) → [0. Mediante esta herramienta podemos asignar distintos valores considerando las posibilidades _ explícitas del atributo (Universo de discurso [Ω]). 1/21}. Por ejemplo Aptitud=buena. Por ejemplo Aptitud = {buena. µA(x) ∈ [O. para los efectos de nuestro estudio. representado mediante la distribución de posibilidad 1 /buena. 1 /buena}.1].1]}. mala}. tan sólo describiremos aquéllas posibles asignaciones de valor operando sobre datos concretos. expresado por {1 /mala.21 }. µA(x): x ∈ Ω. A µ también se le conoce como el “valor de verdad” porque representa el grado en que una proposición es verdadera. representado mediante la distribución de posibilidad 1128. Por ejemplo Edad=28. 3. así las etiquetas lingüísticas aplicadas corresponden al dominio específico (columnas) que se trate por ejemplo: 1. Arquitectura de una BDI 57 Fig. . Conjunto de posibles asignaciones excluyentes de escalares. 11 Lógica Fuzzy. Podemos denotar esto como: µ. así un conjunto difuso Λ sobre un _ universo de discurso Ω. representado mediante { 1/20. Existen múltiples representaciones de conocimiento difuso mediante la lógica fuzzy.4.

sin embargo. constituyen un modelo difusor universal. tanto en el motor relaciona1 como el de inferencia.0124. nuestro estudio sólo recupera algunas de sus formas y técnicas básicas en virtud de que en el SGBD relacional.1.9 Adicionalmente se consideran los valores desconocidos. Distribución de posibilidad en el dominio de los escalares. 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). en nuestro estudio nos ocupamos de ellos mediante la lógica multievaluada que se expone en forma exhaustiva en objetivos posteriores. Arquitectura de una BDI 58 5.0. 8/25}. indefinidos o nulos.del proceso que las requiera y serán operadas en forma convencional por el grado de pertenencia asociado.1] representando grados de cumplimiento. Por ejemplo Edad={0. el universo de los conjuntos difusos es amplio.6/mala.4. Una vez que se asignen los valores asignados por lógica difusa a las tupias que corresponda. el usuario del sistema expresa un estado determinado como valor. opera con el producto asociado. Número real ∈ [0. 0. Evidentemente.4/23. su tratamiento dependeran -en cada caso. 6. y el sistema. Distribución de posibilidad en el dominio de los números. 7/regular}. Por ejemplo Calidad=0. . de esta forma. 7. Por ejemplo Aptitud={0.

.4. Por ejemplo: Sea R(T1.8) Tenemos: ∀(T2){ T2 =< P(H) [T2 (Baja)] | T2>=P(Is)[T2 (Urgente)] | T2 (Alta)} .3) Is (0. T3 (lectura). Dada una función de pertenencia: F(P) Ii (0. donde: R(T1. ALTA. 12..T3) con T1 (Id). Tn).T2. Restricción de formas verbales en relaciones simples. En su forma inversa... URGENTE.. T2(prioridad). 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.. Arquitectura de una BDI 59 Fig..

El bloque Difusor se encarga de convertir las entradas en conjuntos difusos. Arquitectura de una BDI 60 La estructura básica de un Sistema de Lógica Difusa se muestra en la figura 13. Fig. THEN.. produce varios conjuntos difusos para que el bloque Concresor los tome y los convierta en etiquetas lingüísticas concretas. 13 Estructura básica de un sistema de lógica difusa.. 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. que son entregados al bloque Máquina de Inferencia. 4. este bloque.2.3. . 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.2 Tratamiento de la información desconocida o condicional Si bien los valores nulos (también se le denomina “valor ausente o condicional”) no son un concepto exclusivo del modelo relacional.4... La necesidad de los “valores nulos” o “marcas” en bases de datos es evidente por diversas razones: Crear tuplas con ciertos atributos desconocidos. El sistema recibe varias entradas numéricas y entrega varias salidas numéricas. apoyado en un conjunto de reglas de la forma IF. se utilizará la lógica fuzzy exclusivamente en aquellos dominios que lo exijan o que representen estados intermedios de procesos en desarrollo. . Finalmente atendiendo una de las recomendaciones generales sobre el diseño de SGBD relacionales.

AND C Q F C C Q F Q Q Q F F F F F OR C Q F C C C C Q C Q Q F C Q F NOT C Q F C Q C MAYBE C Q F C C F Tabla de verdad para la lógica trivaluada. denominados lógica trivaluada y lógica tetravaluada. restar o dividir un valor nulo con cualquier otro valor. que aplicado al valor de una expresión “quizás”. en cuyo caso devuelve el valor del segundo. En cuanto a las operaciones aritméticas. da como resultado “cierto”. multiplicar.con valores. . atributo que. - Atributos inaplicables a ciertas tuplas. Adicionalmente se precisa introducir otros dos operadores especiales: a) IS NULL.nulos. en el momento de añadirse. Además. se incluye un nuevo operador denominado MAYE. 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. donde existen los valores C (cierto). a. Lógica trivaluada (L3V) En las siguiente figura aparecen las tablas de verdad para la lógica trivaluada.4. Arquitectura de una BDI 61 - Añadir un nuevo atributo (columna) a una relación (tabla) existente. no tendría ningún valor para las tuplas de la relación. por ejemplo. 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. se considera nulo el resultado de sumar. F (falso) y Q (quizás). salvo que sea nulo.

cuyas tablas de verdad ya hemos representado. en cuyo caso determinar su uso o discriminar su número. La expresión que juega el papel del operador IF NULL es la siguiente: COALESCE(VaI1. existiendo otras dos variantes: WHERE NOT(col x. v.. que será falso si ambos son nulos. y se soporta la lógica trivaluada. Arquitectura de una BDI 62 Por lo que respecta a los operadores algebraicos.g. el producto cartesiano no se ve afectado por la presencia de valores nulos. y falso sólo si ninguno es nulo. será cierto si ambos son no nulos. y la proyección debe eliminar tuplas duplicadas teniendo en cuenta los nulos.. la restricción sólo devuelve aquellas tuplas cuya condición se evalúa a “cierto” no ‘falso” ni “quizás”. o el valorn. finalmente: WHERE NOT(col x. pero cierto si alguno es nulo o lo son los dos. col_y) IS NOT NULL. o el valor2.. si no es nulo. coly) IS NOT NULL. será cierto si ambos son nulos. será cierto si alguno o ambos son nulos. . col-Y) IS NULL. varianza. mientras que: WHERE (col-x. por lo que dos tuplas se considerarán duplicadas si atributo a atributo son ambos iguales y no nulos.Va12. Valn) que devuelve el valor1.4. suma. etc. En efecto: WHERE (col-x. salvo que todos sean nulos devolviendo entonces nulo. media.. Finalmente es muy importante considerar si los valores asignados en las tuplas van a formar parte de operaciones de agregación con el fin de aplicar funciones estadísticas. col_y) IS NULL. o ambos nulos. En el lenguaje SQL las columnas admiten valores nulos a no ser que se especifique NOT NULL. Va13. 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 NULL Un aspecto a tener en cuenta es el comportamiento del predicado cuando opera sobre más de una columna..

podemos formular la siguiente consulta: SELECT titulo FROM libros WHERE (año = 1996) IS UNKNOWN. Arquitectura de una BDI 63 Si en lugar de nulos se emplean valores por defecto. esto es.4. que momentáneamente son desconocidos pero deberían existir y puede que. b. Lógica tetravaluada (L4V) La lógica tetravaluada surge de la necesidad de diferenciar dos tipos importantes de valores nulos: inaplicables. Por ejemplo: . WHERE NULLIF (año. el lenguaje ofrece la posibilidad de convertir el valor por defecto a nulo mediante la expresión NULLIF. falsa o quizás se utiliza: p IS [NOT] TRAE FALSE UNKNOWN este último (UNKNOWN) corresponde al operador MA YBE Así. por ejemplo. 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. . -99) > 1980. es decir. que no tienen sentido. . . de desconocidos aplicables.

según CODD. Arquitectura de una BDI 64 en un determinado momento. En la lógica cuatrivaluada se distingue. de otro que representa información inaplicable. por tanto. AND C A F I C C A F I A A A F I F F F F F I I I F I OR C A F I C C C C C A C A A A F C A F F I C A F I NOT C A F I F A C I Lógica tetravaluada según CODD El lenguaje SQL con que opera el motor relaciona1 Jet. que denominaremos β. que denominaremos α. Esta diferencia. no soporta aún la lógica .4. 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↔α=α↔x=α x↔β=β↔x=β α↔β=β↔α=β α↔α=α β↔β=β 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. lleguen a conocerse. 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 tratar y para responder de manera “más inteligente” a las consultas que se realicen sobre la base de datos. entre un valor nulo o marca que representa información desconocida pero aplicable.

implementada en el lenguaje anfitrión.4. IS UNKNOWN. etc. Si el operador es OR y cualquier operando es cierto. la tabla de datos no tendría valores nulos. Tampoco se requiere modificar la estructura de datos relaciona1 ni extender las columnas para tener en cuenta la presencia del indicador de nulos. por lo que se precisa una extensión del lenguaje de manipulación de datos. . el resultado es cierto Si el resultado tiene definida una clase nula y uno o más operandos son nulos: 1. Es pues una representación sencilla a base de metadatos. considerando los siguientes indicadores: 1. Arquitectura de una BDI 65 tetravaluada.) sino que simplemente basta con consultar la tabla de estados. 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. 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. Mediante este esquema. En caso contrario. Si el operador es OR el resultado es el valor nulo que tiene la posición mayor. Si el operador es AND y cualquier operando es falso el resultado es falso 2. 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.

Tables y Query) a un conjunto de registros que cumplen una determinada condición y que pueden ser tratados como un conjunto de tuplas. abordaremos los principales indicadores que propicien dicho inferencia. Oatabase y los procedimientos para efectuar consultas a través de SQL. Programación de una BDI 66 5. nos ocuparemos de detallar las partes en común. Programación de una BDI 5.5. tanto si el proceso se verifica mediante funciones del lenguaje anfitrión. dada la arquitectura propuesta. el proceso de inferencia constituye el nudo en la fase de intención del sistema. 5. El RecordSet contiene todos los registros de la misma. en el sistema propuesto. centraremos nuestro interés en los objetos RecordSet. así como la base de datos en intenso. DynaSet es un tipo RecordSet que se lee al abrir y escribe en la base de datos al ser cerrado.1 RecordSet Llamaremos RecordSet (DynaSets. en este capítulo. se efectúan a través de los diversos objetos predefinidos que Visual Basic incorpora. En principio. SnapShot.2 Las bases de datos persistente e intenso La creación y manipulación de la base de datos persistente.2. estos se declaran como variables en el dominio del módulo o si es el caso como variables globales: • • SnapShot es un RecordSet de sólo lectura. como por un motor periférico. • Tables es un RecordSet que contiene toda la información de la misma. 5.1 Consideraciones generales Como hemos citado. tenemos diferentes tipos de RecordSet con distintas propiedades. .

Métodos *Métodos asociados al Desplazamiento MoveFirst MoveNext MovePrevious MoveLast GO TOP. Retrocede un registro. Avanza un registro. Va al último registro. Edita un registro para ser modificado. 1.5. Borra un registro. Localiza el siguiente registro que cumpla una condición. Addnew Delete Edit Update Close Clone APPEND BLANK. Crea una copia del RecordSet. Programación de una BDI 67 • QueryDef es una consulta (Query) que se encuentra predefinida en la base de datos. Busca un registro (en una tabla). GO BOTTOM. (Regresa SnapShots) Lista índices. Actualiza la edición que hayamos hecho. (Regresa SnapShots) . Va al primer registro. *Métodos para edición. *Métodos asociados a la Búsqueda FindFirst FindNext FindPrevious FindLast Seek Localiza el primer registro que cumple una condición. DELETE. SKIP. Cierra el RecordSet. Localiza el registro anterior que cumpla una condición. Localiza el último registro que cumpla una condición. *Métodos para obtener información del RecordSet ListFields Listindexes Lista campos. Añade un registro. SKIP -1.

Determina el tipo de bloqueo a usar. FOUND(). Sort NoMatch LockEdits Name Transactions Updatable Determina la expresión por el que se ordenará el RecordSet. .). Fecha de creación. Fecha de última modificación. 3. Estamos al final del RecordSet. agruparemos. Para saber o cambiar el índice activo en una tabla. True si puedo modificar los datos del RecordSet.5. Para poner expresiones de filtro. Programación de una BDI 68 2. 5.2. propiedades y funciones relacionadas. Número de registros en el SnapShot. por su funcionalidad. Toda la jerarquía de clases que comienza aquí. Marca un registro . True si la base soporta transacciones. FOF(). todos sus métodos. Propiedades BOF EOF BookMark RecordCount DateCreated LastModified LastUpdated Filter Index BOF(). Fecha de última actualización. Estamos al inicio del RecordSet. siempre tendremos que pasar por un objeto database. SET FILTER TO. SET INDEX TO. Objetos Contenidos Fields Retorna un objeto con las definiciones de los campos.2 Database Object Mediante este objeto nos comunicaremos con la base de datos. En la inteligencia de simplificar. y para llamar a los métodos de los RecordSets. Indica el nombre del RecordSet (tabla. Regresa true si fracasa la búsqueda..

Propiedades Collating Order Determina cómo vamos a comparar cadenas .5. Métodos * Métodos Para obtener información de la estructura ListTables ListFields Obtenemos un SnapShot con descripciones de las tablas Obtenemos un SnapShot con información de los campos * Métodos para crear y borrar consultas CreateQueryDef DeleteQueryDef Crea Querys (consultas) en la base de datos Borra Querys (consultas) de la base de datos * Métodos para interactuar con los datos Open Table CreateDynaset CreateSnapshot OpenQuerydef Devuelve un objeto Table Devuelve un objeto DynaSet Devuelve un objeto SnapShot 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 CommitTrans RollBack Inicia la transacción Graba en el disco las modificaciones Vuelve a la situación anterior * Métodos para ejecutar comandos SQL Execute ExecuteSgl Ejecuta un comando SQL usando VB Ejecuta un comando SQL a través de ODBC 2. Programación de una BDI 69 1.

5. Programación de una BDI 70 Connect Name QueryTimeout Trañsactions Determina qué tipo de bases externas abriremos (dBase. Objetos Contenidos TableDefs Devuelve un objeto TableDef (definiciones de la base) 4.0.3 SQL en Visual Basic Visual Ba-sic es un lenguaje de programación de propósito general.. Este paso de gigante ha hecho de Visual Basic uno de .. Funciones Relacionadas OpenDatabase RegisterDatabase RepaírDatabase CompactDatabase CreateDatabase FreeLocks Begin Trans CommítTrans RollBack Devuelve un objeto database Para conectarse vía ODBC Arregla bases de datos dudosas PACK Crea una nueva base de datos Libera los bloqueos Comienza una transacción Graba en el disco el resultado de una transacción 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. etc. han hecho de este lenguaje un líder indiscutible en lo que a desarrollo de aplicaciones se refiere. FoxPro. con una gran potencia en toda su estructura. Con la versión 3. se implementó la gestión de bases de datos a muy alto nivel. pudiendo gestionar bases de datos de tipo Access. Su implementación en el sistema operativo Windows y sus herramientas visuales. dBASE. Paradox.) Nombre de la base de datos Tiempo de espera desde tras errores en conexiones ODBC Indica si el driver acepta transacciones Updatable 3.

b) La sentencia SELECT y la cláusula FROM La sentencia SELECT “selecciona” los campos que conformarán la consulta. 7. se ha de escribir primero el nombre de la tabla. tras introducir el mandato SQL (siempre como una expresión de cadena) es necesario refrescar el control Data (control-data.5. El objetivo principalde SQL es la realización de consultas y cálculos con los datos de una o varias tablas. Los nombres de los campos especificados (y de las tablas). 4. Dicho mandato se puede escribir en la propiedad RecordSource de un control Data. éstos han de encerrarse entre comillas. es decir. 5. De hecho. a) Escribir mandatos en SQL 1. si ésta se refiere a una expresión de caracteres. se suelen escribir siempre entre corchetes. un punto y. las consultas que se realizan en Access.nombre_campo). Un mandato en SQL se expresa en una cadena de caracteres o String. están desarrolladas o basadas en este lenguaje. ésta debe encerrarse entre almohadillas o pragmas (#fecha#). que establece los campos que se visualizarán o compondrán la consulta. para crear nuestras consultas en SQL. Refresh). Para especificar un determinado campo de una determinada tabla. 2. con el fin de crear una consulta en la interfaz. Si se utiliza la propiedad RecordSource del control Data. que contengan más de una palabra. por lo que su implementación en Visual Basic no es complicada. Al especificar una expresión de búsqueda. Como norma general. El parámetro . normalmente simples (‘expresión-a-buscar’). 6. han de encerrarse entre corchetes ([nombre]). Visual Basic incorpora esta extensión junto a nuestras bases de datos. el nombre del campo (nombre_tabla. a continuación. 3. Programación de una BDI 71 los lenguajes favoritos por los desarrolladores de aplicaciones de bases de datos. obteniendo potentes resultados. Para especificar una fecha en una búsqueda.

Selecciona los campos ‘nombre’. Programación de una BDI 72 ‘lista-campo está compuesto por uno o más nombres de campos. Una cláusula es una extensión de un mandato que complementa a una sentencia o instrucción. que puede también acoplarse a otras máquinas. SELECT pedidos. pudiendo complementar también a otras sentencias. Selecciona el campo 'codigo postal’ de la tabla ‘tabla morosos’. Si se desea seleccionar todos los campos de una tabla. nombre.. productos. y.). Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’. Selecciona todos los campos de la tabla ‘pedidos’. este nombre ha de escribirse entre corchetes ([nombre]). En este caso.. un accesorio imprescindible en una determinada máquina. separados por comas. si sus nombres están compuestos por más de una palabra. . SELECT * FROM pedidos. y el campo ‘producto’ de la tabla productos. por decirlo así. SELECT nombre. ‘apellidos’ y ‘telefono’ de la tabla ‘clientes’. * FROM pedidos.. SELECT clientes. sE puede utilizar el asterisco (*) para indicarlo. la cláusula FROM permite indicar en qué tablas o en qué consultas (queries) se encuentran los campos especificados en la sentencias SELECT.: SELECT nombre. Es. telefono FROM clientes. Selecciona el campo ‘nombre’ de la tabla ‘clientes’. éstos se escriben entre corchetes ([nombre]). Si el nombre del campe o de la tabla está compuesto de más de una palabra. producto FROM clientes. apellidos FROM clientes. Selecciona todos los campos de la tabla ‘pedidos’.. Estas tablas o consultas se separan por medio de comas (. SELECT [codigo postal] FROM [tabla morosos]. pudiéndose especificar también el nombre de la tabla a la cual pertenecen seguido de un punto y del nombre del campo correspondiente. Una sentencia SELECT no puede escribirse sin la cláusula FROM.FROM.5. He aquí algunos ejemplos de mandatos SQL en la estructura SELECT. apellidos.

SELECT * FROM diario WHEREfeCha<=#12/31/96#.997. escogiendo a aquellos abonados que sean mayor de edad (a partir de 18 años). el contenido de un campo. 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). Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años. . Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla abonados. Para indicar este conjunto de registros se hace uso de criterios o condiciones. SELECT * FROM abonados WHERE estado ='NAYARIT' OR estado='JALISCO' OR estado ='COLIMA'. SELECT * FROM diario WHERE fecha 471119 7#. y permite seleccionar qué registros aparecerán en la consulta (si no se especifica aparecerán todos los registros). pero los registros de todos los abonados de los estados de NAYARIT. He aquí algunos ejemplos que ilustran el uso de esta cláusula: SELECT * FROM clientes WHEREnombre='ALFREDO. SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45.). un control. Selecciona los apuntes de ‘diario’ realizados antes del 1 de Enero de 1. apellidos FROM abonados WHEREedad>=18. una variable. Selecciona todos los campos de la tabla ‘abonados’. Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.5. etc. Selecciona los apuntes de ‘diario’ realizados en Julio de 1. JALISCO. SELECT * FROM abonados WHERE edad>=18 AND edad<=45. Selecciona todos los campos de la tabla ‘clientes’. Selecciona los apuntes de ‘diario’ realizados el 1 de Julio de 1.997. SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND#7/31/97#.997 (la fecha ha de indicarse en inglés (mes/día/año)). pero los registros de todos aquellos clientes que se llamen ‘ALFREDO’. COLIMA SELECT nombre. Programación de una BDI 73 c) Claúsula WHERE La claúsula WHERE es opcional.

Programación de una BDI 74 SELECT * FROM clientes WHERE nombre LIKE'AL*. ‘COLIMA’.5. NAYARIT. por defecto.. así como el tipo de ordenación por ese criterio: ascendiente o descendiente. He aquí algunos ejemplos: . campo2 [ASC/DESC]. mientras que. en cualquier posición. ‘NAYARIT’. d) Cláusula ORDER BY La cláusula ORDER BY suele escribirse al final de un mandato en SQL. si se especifica la palabra reservada DESC. SELECT * FROM clientes WHERE apellidos LIKE '*EZ. Selecciona los clientes cuyos apellidos terminen con los caracteres 'E?. MEXICO. el tipo ascendiente [ASC]. etc. los caracteres ‘ZAMO’.. se indica que el orden del campo es descendiente (9-O Z-A)... Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’. ‘PUEBLA '). ya que el programador puede indicar cuál será el primer criterio de ordenación. SELECT * FROM clientes WHERE estado IN (‘JALISCO’. (. 'MEXICO'. SELECT * FROM clientes WHERE apellidos LIKE '*ZAMO*' Selecciona los clientes cuyos apellidos contengan. 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. PUEBLA. Selecciona todos los clientes de los estados JALISCO.] La palabra reservada ASC es opcional e indica que el orden del campo será de tipo ascendiente (O-9 A-Z).. Si no se especifica ninguna de estas palabras reservadas. la cláusula ORDER BY toma. el segundo. COLIMA.) ORDER B Y campo 9 [ASC/DESC][.

'direccion'. nombre. ‘telefono’.). donde se insertará un código similar al siguiente: control-data. Así se podría crear una variable de tipo String en un módulo. Programación de una BDI 75 SELECT nombre.vbx) podremos utilizar fácilmente la potencia de SQL. nombre.5. y por ‘fechanacimiento’ en orden descendiente (del más viejo al más joven). el nombre del control ‘Data’. SELECT * FROM pedidos ORDER BY fecha DESC. y que los controles encargados de mostrar o modificar la base de datos. y la propiedad 'RecordSource' se reservará para indicar. fecha-nacimiento DESC. Al llamar a la ficha. En la propiedad 'DataField' se especifica el nombre del campo a tratar por cada Text Box (‘nombre’. por lo que diseñamos una interfaz con diversas Text Box vinculadas a un control Data que contendrá los datos. en una cadena o String. apellidos. e) Programación SQL desde el control data Gracias al control ‘Data’ (. ‘nif.mdb). en la propiedad 'DatabaseName' del control ‘Data’. la Form correspondiente tendrá un evento Load. Relación de ‘pedidos’ ordenados desde el más antiguo hasta el más moderno. tele fono FRO M clientes ORDER B Y apellidos. se ha de especificar la ruta completa de la base de datos (base. estén perfectamente vinculados al control Data. Estas Text Box se vinculan gracias a las propiedades 'DataSource' y 'DataField'. el mandato en SQL correspondiente cuando sea necesario. en este caso. SELECT * FROM abonados ORDER BY apellidos. Lo primero que hay que tener en cuenta es que la consulta realizada en SQL posea los mismos campos que la interfaz diseñada. Por otro lado. La propiedad 'DataSource' corresponde a la fuente de los datos. Relación de ‘abonados’ por ‘apellidos’ y ‘nombre’ ascendientemente. Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’. e insertar el mandato en SQL correspondiente antes de llamar a la ficha. Refresh . etc. Por ejemplo: realizamos una ficha de ‘clientes’.RecordSource = variable-SQL control-data.

quisiéramos eliminar todos los pedidos realizados por el cliente cuyo código sea 4 en el día de hoy. la programación se hará diferente. el coñtrol Data contendrá el resultado de la consulta. dependiendo del caso. . 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. representa las comparaciones o criterios que deben cumplir los registros a eliminar. De esta manera. el parámetro ‘criterios’. cuya sintaxis es la siguiente: SUM(expresión) Donde ‘expresión’ puede representar un campo o una operación con algún campo. g) Aritmética con SQL * Sumas o totales Para sumar las cantidades numéricas contenidas en un determinado campo. Si . Pero la norma común es crear una interfaz en concreto. 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. establecer como valor de la propiedad 'RecordSource' el mandato en SQL. cuando sea necesario. utilizaríamos la siguiente sentencia: DELETE FROM pedidos WHERE [codígo cliente]=4 AND fecha=Now(). con unos campos concretos y. y refrescar el control Data correspondiente. respetando a aquellos registros que no los cumplan. hemos de utilizar la función SUM.5.por ejemplo . Programación de una BDI 76 Obviamente. y.

Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘saldo’. Este resultado se toma como un nuevo campo en el RecordSet. Retorna el total de unidades pedidas hoy. en todos los registros afectados por la consulta. Retorna el saldo final de una tabla llamada ‘diario’. Este resultado se toma como un nuevo campo en el RecordSet. Retorna el total de unidades pedidas (la suma de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). .5. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘total’. Esto es lo mismo que realizar una suma (SUM) y. después. SELECT SUM(unidades) AS tota/ FROM pedidos WHEREfecha =Now(). cuya sintaxis es la siguiente: AVG(expresión) La función AVG retorna el promedio o media aritmética de la expresión especificada. He aquí algunos ejemplos: SELECT AVG(unidades) FROM PEDIDOS. SELECTA VG(ingresos-gastos) AS saldo-medio FROM diario. Programación de una BDI 77 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: SELECT SUM(unidades) FROM pedidos. SELECT SUM(ingresos-gastos) AS saldo FROM diario. Retorna el promedio de unidades pedidas (la media de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). dividir el resultado entre el número de registros implicados. * Promedios o medias aritméticas Para averiguar el promedio de unas cantidades utilizaremos la función AVG.

SELECTA VG(unidades) AS media FROM pedidos WHERE fecha=Now(). Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘saldo-medio’. mediante las funciones MIN y MAX. cuya sintaxis es la siguiente: COUNT(expresión). cuyas sintaxis son las siguientes: MIN(expresión) MAX(expresión) He aquí algunos ejemplos: SELECT MIN(unidades) AS minimo FROM pedidos.5. Retorna el gasto más costoso reflejado en el diario contable. * Conteo de registros Para conocer cuántos registros hay utilizaremos la función COUNT. Retorna el pedido más grande de hoy y lo refleja en el campo ‘maximo’. * Valores mínimos y máximos También es posible conocer el valor mínimo o máximo de un campo. SELECT MAX(gastos) AS maximo FROM diario. Retorna el pedido más pequeño y lo refleja en el campo ‘minimo’. Retorna el promedio de unidades pedidas hoy. y lo representa en el campo ‘maximo’. SELECT MAX(unidades) AS maximo FROM pedidos WHERE fecha=Now(). . Programación de una BDI 78 Retorna el saldo medio de una tabla llamada ‘diario’. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'media'.

utilizaremos el predicado DISTINCT. . únicamente.5. SELECT COUNT(*) AS num pagos FROM diario WHERE gastos=25594. MAX(unidades) AS maximo. Por ejemplo. Para ello. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'num_pedidos'. COUNT(*) AS registros. 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. y el número de pedidos realizados. MIN(unidades) AS minimo FROM pedidos WHERE fecha BETWEEN #111197# AND #6130/97#. puesto que un cliente realiza varios pedidos en el mismo día. el máximo y el mínimo de unidades pedidas. la media. Retorna el número de clientes casados. Retorna el número de pedidos realizados hoy. AVG(unidades) AS media. SELECT COUNT(*) AS casados FROM clientes WHERE casado=True. . Programación de una BDI 79 La función COUNT retorna el número de registros indicados en la expresión. qué cliente realizó algún pedido y en qué día. Este resultado se toma como un nuevo campo y se le llama ‘casados’. mediante una línea. cuya sintaxis es la siguiente: SELECT DISTINCT lista-campos . . 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. Este resultado se toma como un nuevo campo en el RecordSet. Retorna el total. en nuestros pedidos hay duplicación. y se le llama ‘num-pagos’. Retorna el número de pagos por un importe equivalente a 25594. SELECT SUM(unidades) AS total. He aquí algunos ejemplos: SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now().

. El parámetro campo indica el campo que se va a modificar. pedidos. 1 WHERE edad>22 AND YEAR(Now)YEAR(expedicion)>2.[codigo cliente] = pedidos. . La sentencia UPDATE es muy versátil y potente. 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. apellidos FRO M pedidos.campo=nuevo valor] [WHERE. [codigo cliente]. fecha FROM pedidos. clientes WHERE clientes. y el parámetro nuevo-valor respresenta una expresión (constante. i) Reemplazar datos Es posible reemplazar el valor de un campo. etc. para el total de la tabla al que pertenezca mediante UPDATE. En el problema expuesto.5. nombre. 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. clientes. De ello se deduce que .[codigo cliente]. por lo que podemos realizar reemplazos condicionantes.] Donde lista-tablas representa el nombre de las tablas donde se realizarán las sustituciones o reemplazos. utilizaremos la siguiente sentencia: SELECT DISTINCT [codigo cliente]. Programación de una BDI 80 El predicado DISTINCT omite aquellos registros duplicados en los campos especificados.fecha. un cálculo. su sintaxis es la siguiente: UPDATE lista-tablas SET campo=nuevo valor (. valor directo. y que tengan más de 22 años de edad. tendríamos que escribir la siguiente sentencia: UPDATE asegurados SET importe=importe/1. ya que permite la cláusula WHERE.. clientes.por ejemplo -.) cuyo resultado o valor será el nuevo valor del campo.

o bien reemplazar el valor de unos campos de alguna tabla si el valor de los campos de otras tablas cumple una serie de requisitos. a continuación. . . la cláusula GROUP BY agrupa o combina registros con idéntico valor en los campos especificados. realizar la consulta mediante la cláusula GROUP BY. sería el campo fecha). count(fecha) AS num pedidos FROM pedidos GROUP BY fecha. .por ejemplo -. .5. Programación de una BDI 81 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. [WHERE . tipearíamos esta sentencia: SELECT fecha. count(codígo cliente) AS num pedidos. en primer lugar. se escribiría una sentencia como ésta: SELECT codigó cliente. Para saber cuántos pedidos se realizaron cada día: SELECT fecha. j) Grupos de registros Si se precisa mostrar un resumen de los datos que tenemos. y. . cuya sintaxis es la siguiente: SELECT . en lugar de visualizar todos los ingresos y gastos realizados al detalle. bajo qué campo se van a agrupar los datos (en lo expuesto. SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha. Imaginemos que queremos hacer un resumen de nuestros pedidos. en un único registro. de los ingresos y de los gastos de cada día. . FROM . . Para conocer cuántas unidades se pidieron cada día. Para ello. SUM(unidades) AS cantidad FROM pedidos GROUP BY codigó cliente.] GROUP BY lista-campos Básicamente. especificando el total . Para llevar a cabo esta tarea hemos de tener en cuenta. y queremos saber cuántos pedidos y unidades han realizado cada uno de nuestros clientes.

campó común Donde tabia1 y tabla2 representan el nombre de las tablas a combinar. SUM(unidades) AS subtotal. se ha especificado una condición a través de la cláusula HAVING. cuya sintaxis es: tabla 1 INNER JOIN tabla2 ON tabla J . codigó cliente HAVING fecha<#116197#. COUNT(codigo cliente) AS num pedidos. 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. Como se puede apreciar. En esta ocasión. COUNT(fecha) AS pedidos. que indica los criterios o condiciones a cumplir por los registros a visualizar en un agrupamiento.5. La operación JOIN más común es INNER JOIN. codigó cliente. podemos combinar datos de una manera mucho más sencilla y eficaz: mediante las operaciones JOIN. Pero. MIN(unidades) AS mínimo. A VG(unidades) AS promedio FROM pedidos GROUP BY fecha. Programación de una BDI 82 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. Para conocer una estadística de pedidos diaria.campó común=tabla2. MAX(unidades) AS maximo. utilizaremos la siguiente sentencia: SELECT fecha. las cuales permiten combinar datos de dos tablas. SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha. Por ejemplo: . la condición era de aquellos pedidos realizados antes del seis de enero de 1997. Ambas tablas han de tener un campo común o igual para poder realizar correctamente la combinación de los datos.

El resultado será un conjunto de registros con los datos de las dos tablas. incluye todos los registros de la primera tabla (parámetro tabla1) y aquellos registros de la segunda tabla (parámetro tabla2) en que los campos comunes sean iguales. en el campo común no haya coincidencia. es decir. Aunque la diferencia entre las tres operaciones parezca inexistente. En cada registro aparecerán los datos relacionados. aunque en la otra tabla. Ambas tienen la misma sintaxis que INNER JOIN. 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. Este conjunto poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la tabla clientes. En la operación LEFT JOIN. Existen también otras dos formas de combinar: LEFT JOIN y RIGHT JOIN. en realidad sí existe. Programación de una BDI 83 SELECT * FROM pedidos INNER JOIN clientes ON pedidos. que en un pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el pedido.codigo cliente = clientes.5. La operación INNER JOIN combina los datos de las dos tablas siempre que haya valores coincidentes en los campos comunes o enlazados. 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 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. . codigo cliente. 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).

puesto que no hay coincidencia. puesto que se visualizan todos aquellos registros que existen en clientes y aquellos que coincidan con el campo clave en la tabla pedidos. sobre la que opera el proceso de inferencia. incluido aquel donde indicamos que el pedido fue solicitado por el cliente inexistente. Obtendremos el mismo resultado que con la operación INNER JOIN. codigo_clíente = clientes. Programación de una BDI 84 La prueba se ve rápidamente si se introduce un código de cliente en el campo campocliente de la tabla pedidos que no exista: SELECT * FROM pedidos INNER JOIN clientes ON pedidos. Consideremos el siguiente ejemplo: . Si utilizamos: SELECT * FROM pedidos LEFT JOIN clientes ON pedidos. es posible recuperar los datos objetivo que serán transformados al formato IPL. Si utilizamos: SELECT * FROM pedidos LEFT JOIN clientes ON pedidos. codigó cliente = clientes. Mediante las herramientas citadas. Observaremos que aparecen todos los registros de la tabla pedidos. codigó cliente = clientes. codigo cliente. 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. dichos datos. codigó cliente. Como el código inexistente no existe en la tabla clientes. este registro no aparece. codigó cliente. pero en los campos relacionados (campos de la tabla clientes) no habrá ningún dato relacionado o combinado. El registro que contiene el pedido del cliente que no existe no aparece.5.

T3 T5.T4) con T1 (CVE). CVE String ' 5 MAX1 . Indice primario. T5(MAX4).L4 Double Relacionadas por el campo CVE. Indice primario.MAX4 Double Tabla: Lecturas .12. T3(l-2) T4(L3). m 1.14).).T2. R2 (T1.5. Iectura(cve. T2(MAX1). T.…. T5(L4).T3 T5.T4) con T1 (CVE).. 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 . Programación de una BDI 85 Sean R1(T1. m2. Y una base en intenso compuesta por el total de registros edificada con base a la siguiente estructura: motor(cve. y R2 (T1... CVE String ' 5 L1 . m4). m3. Tn). T2(L1).T2. donde: R1 (T1.13.11. T3(MAX2) T4(MAX3). Considerando un esquema de BD persistente en que se precisa: Tabla: Motor ..

5) Set Campo(2) = NewTb. Append Campoid NewTb. DbOpciones) '{ Definición de tablas Dim NewTb As TableDef Set NewTb = NewDb. Create TableDef("motor'') '{ Definición de los campos de la tabla ReDim Campo(1 To 5) As Field Set Campo(l) = NewTb. Append NewTb ‘{ Utilizando SQL Dim SQLCreate As String SQLCreate = "CREATE TABLE LECTURAS (CVE TEXT (5). " . CreateField("CVE”) Idxid_ct. Primary = True Set Campoid = Idxid_ct. Fields. CreateField("MAX3”.mdb" Dim NewDb As Database Dim Ws As Workspace Set Ws = DBEngine. TableDefs. Workspaces(0) Dim DbOpciones As Long DbOpciones = db Version70 + db Encrypt Set NewDb = Ws. dbLong) Set Campo(3) = NewTb. Programación de una BDI 86 Private Function makedb() '{ Creación de la BD Const DbPath As String = "'PATH\geneal. Append Campo(i) Next í '{ Definición de índice de la tabla Dim Idxid_ct As Index Dim Campoid As Field Set Idxid_ct = NewTb. Createlndex("CVE”) Idxid_ct.5. CreateField("MAX2”. CreateField("MAXI". CreateDatabase(DbPath. Append Idxid_ct NewDb. dbLangGeneral. CreateField("CVE”. Indexes. dbLong) Set Campo(#) = NewTb. dbLong) Set Campo (5) = NewTb. Fields. dbLong) Dim i As Byte For i = I To 5 NewTb. dbText. CreateField("MAX4'.

btipe As String free = FreeFile Open "'Path+file" For Output As #free Set db = OpenDatabase("'Path+file') '{ Path + file se sustituyen por los parámetros reales presentes '{ En el sistema . ForeignName = "CVE" '{ Agregar el campo a la relación y la relación a la DB NewRel. 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. L2 LONG. bt As Recordset Dim tipe. 'Contenida en el CD anexo.5. Append Campo Rel NewDb. Programación de una BDI 87 SQLCreate = SQLCreate + "L l LONG. Relations. Private Function makebdi() Dim dbDatos As Database Dim tb. CreateRelation("motor-lecturas”) NewRel. Table = "motor” NewRel. Foreign Table = "lecturas" Set CampoRel = NewRel.Append NewRel '{ Se cierra la base de datos y se liberan los recursos NewDb. L4 LONG )" NewDb. CreateField("CVE”) Campo Rel. Execute (SQLCreate) '{ Definición de las relaciones entre tablas empleando el objeto relación Dim NewRel As Relation Dim CampoRel As Field Set NewRel = NewDb. Execute (SQLCreate) '{ Creación de índice SQLCreate = "CREATE INDEX Fol ON LECTURAS (C VE) WITH PRIMARY" NewDb. Fields.” SQLCreate = SQLCreate + "L3 LONG.

MoveNext Wend bt. Programación de una BDI 88 Set tb = db. EOF A$ = tb!CVE B$ = tb!MAXl C$ = tb!MAX2 D$ = tb/MAX3 e$ = tb!MAX4 Ab$ = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$ f$ = tipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46) Listl. f$ bt.4 Edición de las Bases Persistentes y en Intenso. EOF A$ = bt!CVE B$ = bt!L1 C$ = bt!L2 D$ = bt!L3 e$ = bt!L4 Ab$ = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$ f$ = btipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46) Print #free. Close db. En el desarrollo de los distintos prototipos. el siguiente listado constituye su base de operación ( En fragmentos de código.Addltem f$ Print #free. OpenRecordset("lecturas”) tipe = “Objeto” btipe = “Lecturas” While Not tb. se hace referencia a los objetos contenidos en el prototipo de ejemplo anexo al presente documento): . hemos incluido un vista global de las bases de datos que recuperan tanto la estructura como el contenido de dicha. f$ tb. Close Close #free End Function 52. MoveNext Wend tb. OpenRecordset("motor") Set bt = db.5. Close While Not bt. con el objetivo de consolidar una aplicación totalmente transparente.

Close End Sub Private Sub LstOfFields_Click() On Resume Next Dim td As TableDef Dim Fid As Field Dim This/tem As Integer Set td = WorkDb. TableDefs(IstOfTables) If IstOfFields <> "" Then Set Fid = td. Name End If Next td End Sub Private Sub Form Unload(CANCEL As Integer) If DataBaselsOpen Then WorkDb. TableDefs If td. Type Case dbByte: IbIType. Explorar la base persistente 'Código: Visual Basic. Workspaces(O). Caption = "Byte" Case dblnteger: IbIType. Caption = "Integer" Case dbLong: IbIType. Caption = "Text" Case dbSingle: IbIType. Programación de una BDI 89 a) Edición de la base persistente.Attributes = 0 Then IstOfTables. Caption = "Boolean" Case dbDouble: /b/Type. Caption = "Double" . Fields(IstOfFields) Select Case Fld. Caption = "Long" Case db Text: IbIType. 'Listado 3. OpenDatabase("path+file") Da to Basels Open = True For Each td In WorkDb.5. Addltem td. Option Explicit Dim WorkDb As Database Dim td As Tabl eDef Dim Database/sOpen As Boolean Dim CurrentTable As Recordset Dim TablelsOpen As Boolean Dim source As String Private Sub Form Load() Dim td As TableDef Set WorkDb = DBEngine. Caption = "Single" Case db Boolean: IbIType.

Additem CurrentTable(FId. Ciear if Val(txtNumberoSamples) > 0 Then CurrentTabie. Name)) Then IstSample. Caption = “Memo” Case Eise: IbiType. Name Next Fid .: IbiType. Fieids IstOfindexFields. Indexes(IstOflndexes) IstOf/ndexFields.Addltem "<Err=" & Trim$(Str$(err)) & ">" End Seiect End if Eise IstSample. Caption = "Binary" Case dbBinary.Additem "<Err-" & Trim$(Str$(err)) & ">" End Seiect End If CurrentTabie. Caption = "Binary" Case dbMemo: IbiType. Caption = “Date” Case db Time: IbiType. MoveNext Thisitem = Thisitem + 1 Loop End If End if End Sub Private Sub IstOfindexes_Click() Dim Fid As Field Dim idx As index Set idx = td.Add/tem "<Null>" End if Eise Seiect Case err Case 3167: IstSampie. Caption = Fid.Additem "<Deleted>" Case Eise: IstSample.Add/tem "<Deleted>" Case Eise: istSampie.5. Ciear For Each Fid In idx. Addltem Fid. Caption = “Time” Case dbLongBinary: IbiType. Name IstSample. Caption = Fid. Caption = "Currency" Case dbDate: IbiType. MoveFirst Do Until CurrentTabie. Type End Select lb/Size. Size IbtSample = “Ejemplo del Campo: " & Fid. EOF Or Thisitem >= Vai(txtNumberoSampies) if err = 0 Then if Not isNuii(CurrentTabie(Fid. Name) if err <> 0 Then Select Case err Case 3 167: istSampie. Programación de una BDI 90 Case dbCurrency: IbiType.

Name Next Fld IblType. Close Set Current Table = WorkDb. Clear For Each Idx In td. Fields IstOfFields. Editar la base en intenso ‘Código: Visual Basic. ncar As Integer free = FreeFile Open "c:lfinaNnfo1. Addltem Fld. Clear Set td = WorkDb. Caption “” lblSize. txt” For Input As #free scar = LOF(free) Bditxt. Clear End Sub Private Sub brtDataBaseName KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdOpen Click End Sub b) Edición de la base en intenso ‘Listado 4. TableDefs(lstOfTables) For Each Fld In td.lndexes IstOflndexes. free) Close free End Funcfion . Caption = "" IstOfindexes. Text = Input(ncar. Addltem Idx.5. Name Next Idx lstSampie. Programación de una BDI 91 LstOfFields Click End Sub Private Sub IstOfTables_Click() Dim Fld As Field Dim Idx As Index If TablelsOpen Then CurrentTable. OpenRecordset(lstOfTables) TablelsOpen = True lstOfFíelds. Private Funcfion EditBdi() Dim count As Integer Dim free.

desc_arb().2. previos al proceso de inferencia. 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. Representación gráfica en árbol ‘Código: Visual Basic.db”.4. “Abrir Fichero de arboI" "&Abrir" If Not cancelar_operation_fichero_gf Then On Error Resume Next s_aut_leer_arbol_GAIH cod_arb(). ‘Listado 5. Option Explicit Dim cont_mostrados As Long Dim mi_left As Long Dim mi_top As Long Dim avance_left As Long Dim avance_top As Long Dim media_caja As Long Dim mínimo_ punto As Long Dim cancelar_arbol As Boolean Private Sub Aceptar Click() Unload Me End Sub Private Sub Btn_Arbol_ClickQ Dim i As Long Dim X As Long Dim cod arbo As String Dim desc arbo As String Dim cod padre arb() As Stting Btn_Arbol.1 Representación gráfica de los datos La representación gráfica de los datos contenidos en la base en intenso. Programación de una BDI 92 5. Visible = False Aceptar. Visible = False selectFileObligatory CTE_C_PRG_ARBOL. “*. constituyen una forma sencilla de visualizar los resultados de los distintos procesos de selección y filtrado. CTE_TIPO_ARCHIVO_TEXTO.

AutoRedraw = False frm_uO_arbo. cod_padre_arb() mi_ left = viejo_left 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. Cls Do Events For X = 1 To cont-mostrados Unload Etiqueta(X) Next X Exit For End If Next i Wend Screen. desc_arb(). DrawWdth = 4 avance_left = 1200 / 15 avance-top = 300 / 15 media-caja = 120 / 15 minimo punto = 4 End Sub Function f_expandir_nodo_GAIH(nodo As Long. desc_arb(). WindowState = CTE_MAXIMIZED frm uO_arbo. desc_arb() viejo_left = mi_left numero-hijos = f_mostrar_hijos_GAIH(nodo. Programación de una BDI 93 If cod padre arb(i) = "" Then mi_ left = avance_left f_expandir_nodo_GAIH i. cod_arb(). cod _padre_arb() As String) As Boolean Dim viejo_left As Long Dim numero-hijos As Long s_mostrar_etiqueta_GAIH nodo.left = mi_left + desviacion_ejes_X Etiqueta(cont_mostrados). cod_arb().top = mi_top + desviacion_ejes_Y . desc_arb() As String. cod_padre_arb() Do Events End If If cancelar-arbol Then Me. cod_arb() As String.5. MousePointer = CTE_DEFECTO End If End Sub Private Sub Form_Load() Me. KeyPreview = True frm_uO_arbo. desc_arb() As String) cont-mostrados = cont-mostrados + 1 Load Etiqueta(cont_mostrados) Etiqueta(cont_mostrados).

cod_arb(). mi-top + media-caja). desc_arb(). cod_arb() As String. mi-top + media_caja)-(mi_left. 0 Pto_y = pto_y . pto_y) <> 0 PSet (ptc_x. Line (mi_left – avance_left / 4. mi-top + media-caja)-(mi-let?. 0 pto_y = mi-top + media-caja – minimo_punto pto_x = mi_left – avance_left / 4 While Point(pto_x. desc_arb() As String. Line (mi_left – avance_left + 20. Visible = True Etiqueta(cont_mostrados). Caption = desc_arb(nodo) End Sub Function f_mostrar_hijos_GAIH(nodo As Long. 0 Else Me. pto_y).5. cod_padre_arb() As String) As Long Dim i As Long Dim primer-hijo As Boolean Dim cont-hijos As Long Dim pto_x As Long Dim pto_y 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_left = mi_left + avance-left Me. 0 cont-hijos = cont-hijos + 1 End If ha-habido-hijos = f_expandir_nodo_GAIH(i. mi_top media-caja). Programación de una BDI 94 Etiqueta(cont_mostrados). pto_y).minimo_punto If pto_y < 0 Then avance-left = avance_left * 2 cancelar_arbol = True Exit Function End If Wend PSet (pto_x. 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 = cant_hijos End Function .

1. cod_ padre_arb() As String) On Error GoTo abrir-error Dim linea As String Dim indice As Long principio: Screen. CTE_QUOTED_FIELDS. “Abrir Fichero de árbol”.5. "&Abrir" CTE_SELECCIONAR _FICHERO_OBLIGATORIO_OP_FICH If cancelar_operacion_fichero_gfi Then Exit Sub End If Go To principio End Sub . Programación de una BDI 95 Private Sub s_aut_leer_arbol_GAIH(cod_arb() As String. CTE_QUOTED_FIELDS. MousePointer = CTETDEFECTO If Not automatice_gcf Then selectFiteObligatoty CTE_C_TPRG_ARBOL. Close #CTE_NF_63_ARB DoEvents Screen. CTE_SEP. CTE_NO_2_SEP_AS_ONE)) desc_arb(indice) = noQuotes(extField(linea. CTE_NO_2_SEP_AS_ONE)) cod_padre_arb(indice) = noQuotes(extField(linea. CTE_NO_2_SEP_AS_ONE)) End If Wend Close #CTE_NF_63_ARB DoEvents Screen. MousePointer = CTETDEFECTO Exit Sub abrir_error: s_error_ger CTE_ERROR_GRAVE. 2. “*. MousePointer = CTE_ ARENA Open nombre_fichero_gfi For Input As #CTE_NF_63_ARB 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(CTE_NF_63_ARB) linea = readLinelgnoreComment(CTE_NF_63_ARB) If Len(linea) > 0 Then indice = indice + 1 ReDim Preserve cod_arb(1 To indice) As String ReDim Preserve des_arb(1 To indice) As String ReDim Preserve cod _padre_arb(1 To indice) As String cod_arb(indice) = noQuotes(extField(linea. CTE_SEP. CTE_QUOTED_FIELDS.txt”. 3. CTET_TIPO_ARCHIVO_TEXTO. desc_arb() As String. CTE_SEP.

. eliminar.3 Archivos binarios En el desarrollo de una base de datos inteligente. la mejor opción es el uso de archivos binarios temporales. agregar): Sean R(T1. BinaryDB1. generalmente concentran datos en estado intermedio útiles para procesos particulares de inferencia pero no necesarios de forma persistente. editar. donde: R1 (T1.. grabados en disco a cuyos datos se accede cuando es necesario. frmBinary] contenidos en el prototipo de ejemplo anexo al presente documento): ‘Listado 6 Datos binarios ‘Código: Visual Basic. tratados como archivos binarios que se crean y destruyen según sea preciso en el desarrollo de la aplicación. consideremos el siguiente ejemplo.T3. por ello. se hace referencia a objetos[¡ ista_muestra. T5(CONTADOR). con las características básicas(buscar. éstos generan pérdida de eficiencia en un contexto general. T3(FECHA) T4(VALOR).T5) con: T1 (CVE). Obtenida por los módulos ( En fragmentos de código. Tn).T2.. Programación de una BDI 96 5.T4. es común el uso de datos no persistentes. Aún cuando la mayoría del Hardware actual está provisto de RAM suficiente para tratar grandes' grupos de datos mediante arreglos..5. T2(MUESTRA). 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 = "¤" Public Const Marca-en = "@Marca-en@" Private Const DATABASE_RECORD_LIMIT = 65000 .

Programación de una BDI 97 Private Const COLUMN_WIDTH = 20 Private Const DATABASE_NAME = "Bintmp.tmp” Private Const INDEX_NAME = "Bintmp.id0" Private Const START_BYTE_PART = 1 Private Const LEN_BYTE_PART = 2 Private Const FROM_PART = 3 Pnvate Const SUBJECT_PART = 4 Private Const DATE_PART = 5 Private Const TO_PART = 6 Private Const INDEX_PART = 7 Public Sub AddRecord() On Error Resume Next cualq_camb = True frmRec.Show 1 BinaryMgmt. AddRecordFinish Unload frmRec On Error Go To 0 On Error Resume Next End Sub Private Sub AddRecordFinish() On Error Resume Next Dim message As String message = Trim(frmRec. byte-next. rec-next ReadAIlRecords On Error GoTo 0 On Error Resume Next .txtFrom) & DOT & Ttim(frmRec. txtTo) & DOT & “HECHO” Wntelndex “R” & rec-next.5.mb0" Private Const BACKUP_INDEX_NAME = "Bintmp. txtMessage) Open DatabasePath For Binary As #1 byte-next = Readlndex("ByteNext”) rec-next = Readlndex("RecNext") Put #1. txtDate) & DOT & Trim(frmRec. message Close # 1 len-bytes = Len(message) v$ = byte-next & DOT & len-bytes & DOT & Trim(frmRec.txtDate = Now recnext& = CLng( Val(Read/ndex("RecNext"))) frmRec. v$ byte-next = byte-next + len-bytes Write/ndex "ByteNext" byte-next rec-next = rec-next + 1 Wntelndex "RecNext".idx" Private Const BACKUP_DATABASE_NAME = "Bintmp.txtSubject) & DOT & Trim (frmRec. txtl ndex = recnext& & "" frmRec.

Listlndex) myindex = ParseTab(v$. EditRecordFinish dirty = False End If Unload frmRec On Error Go To 0 On Error Resume Next End Sub Private Sub EditRecordFinish() On Error Resume Next cualq_camb = True Dim message As String message = Trim(frmRec.lista_muestra. txtMessage) ‘{Marca-en el registro actual myindex = Trim (frmRec.txtMessage = Mid$(filebuffer. LEN-BYTE-PART))) As = filebuffer As String filebuffer = String(len bytes&. Listindex = 0 Then Exit Sub v$ = frmBinary. SUBJECT_PART) frm Rec. Len (readin$) .txtSubject = Parse(v$. readin$ '{ Escribir un nuevo registro en la base .lista_muestra. Sho w 1 If dirty = True Then BinaryMgmt. lista-muestra.2) readin$ = readin$ & “@Marca-en@” Writelndex "R" & CLng( Val(myindex)). 5): v $ = “” frmRec. filebuffer frmRec.txtTo = Parse(v$. List(frmBinary. txtlndex myindex = myindex v $ = Readlndex("R" & myindex) start byte& = CLng(Val(Parse(v$. len-bytes&) frmRec. txtlndex) readin$ = Readlndex("R" & CLng(Val(myindex))) readin$ = Left(readin$.5. FROM_PART) frmRec. START_BYTE_PART))) len-bytes& = CLng(Val(Parse(v$. 1. 0) Open DatabasePath For Binary As #1 Close # 1.txtDate = Parse(v$. Programación de una BDI 98 End Sub Public Sub EditRecord() On Error Resume Next If frmBinary. start byte&. DATE_PART) frmRec. TO_PART) frmRec_txtFrom = Parse(v$.

txtDate) & DOT & Trim(frmRec. Clear BuildHeaderList v$ = "dummytext" Do K& = k& + 1 v$ = Readlndex("R" & k&) If v$ = "" Then Exit Do If Right$(v$. 5): v$ = "" readin$ = Readlndex("R" & CLng(Val(myindex))) readin$ = Left(readin$. lista-muestra.2) readin$ = readin$ & “@Marca-en@” Writelndex "R" & CLng(Val(myindex)). message Close #1 '{ En final ( index) len-bytes = Len(message) v$ = byte next & DOT & len-bytes & DOT & Trim(frmRec. txtFrom) & DOT & Trim(frmRec. Programación de una BDI 99 byte-next = Readlndex("ByteNext") rec-next = Readlndex("RecNext") Put #1. Len(readin$) . byte-next. readin$ End Sub Public Sub ReadAllRecords() On Error Resume Next frmBinary. lista-muestra. Listlndex = 0 Then Exit Sub v$ = frmBinary. List(frmBinary. rec-next End Sub Public Sub DeleteRecord() On Error Resume Next cualq_camb = True ‘{ Marca-en registro actual lf frmBinary. v$ byte-next = byte-next + len-bytes Writelndex “Byte Next" byte-next rec-next = rec-next + 1 Writelndex "RecNext". FROM_PART)) & vbTab & _ .5. txtTo) & DOT & “HECHO“ Writelndex "R" & rec-next.txtSubject) & DOT & Trim(frmRec. Listlndex) myindex = ParseTab(v$. Addltem _ Pad(Parse(v$. Len(Marca en)) <> Marca-en Then frmBinaryiista muestra. lista-muestra.Iista_muestra.

Path If Right$(IndexPath.5. DATE-PART)) & vbTab & _ Pad(Parse(v$. Path If Right$(DatabasePath. "[Index]" Print #1. vbNormal If Err Then FileExists = False Else FileExists = True End If On Error Go To 0 On Error Resume Next End Function . TO PART)) & vbTab & _ k& End If Loop Until v$ = “” On Error Go To 0 On Error Resume Next End Sub Public Sub OpenDatabase() On Error Resume Next DatabasePath = App. Programación de una BDI 100 Pad(Parse(v$. SUBJECT PART)) & vbTab & _ Pad(Parse(v$. "RecNext = 1 " Ptint #1. "ByteNext = 1" Close #1 End If On Error GoTo 0 On Error Resume Next End Sub Private Function FileExists(ByVal f$) As Boolean On Error Resume Next SetAttr f$. 1) <>”\" Then DatabasePath = DatabasePath + ”\" DatabasePath = DatabasePath + DA TABASE_NAME IndexPath = App. 1) <>”\" Then IndexPath = IndexPath +”\" IndexPath = IndexPath + INDEX_NAME If Not FileExists(DatabasePath) Then ‘{ crear archivo Open DatabasePath For Output As #1 Close #1 Open IndexPath For Output As # 1 Print #1.

Addltem header_row On Error GoTo 0 On Error Resume Next End Sub Public Sub CompactDatabase() On Error Resume Next readin = 1 readout = 2 BackupDatabasePath = App. Path If Right$(BackupDatabasePath.Len (incoming)) Case Is > COLUMNTWIDTH incoming = Left$(íncoming.5. COLUMNTWIDTH) End Select Pad = incoming On Error Go To 0 On Error Resume Next End Function Private Sub BuildHeaderList() On Error Resume Next Dim cofheaders(5) As String colheaders(1) = "CVE” colheaders(2) = “MUESTRA” colheaders(3) = “FECHA” colheaders(4) = “VALOR” colheaders(5) = “CONTADOR” Fork% = 1 To 5 header-row = header-row & Pad(colheaders(k%)) & " " & vb Tab Next k% frmBinary.lista_muestra. BackupDatabasePath Kill DatabasePath Dim filebuffer As String byte next& = I Open BackupDatabasePath For Binary As #readin Open DatabasePath For Binary As #readout For k& = 1 To DATABASE RECORD_LIMIT v$ = Readindex("R" & k&) If v$ = "" Then Exit For . 1) <>”\” Then BackupDatabasePath = BackupDatabasePath & 1" BackupDatabasePath = BackupDatabasePath + BACKUP_DATABASE_NAME Kill BackupDatabasePath FileCopy DatabasePath. Programación de una BDI 101 Private Function Pad(ByVaI incoming As String) As String On Error Resume Next Select Case Len(incoming) Case Is < COLUMN_ WIDTH incoming = incoming & Space(COLUMN_WIDTH .

5. Programación de una BDI

102

if Right$(v$, Len(Marca_en)) <> Marca-en Then start_byte& = CLng(Vai(Parse(v$, START_BYTE_PART))) len_bytes& = CLng(Val(Parse(v$, LEN-BYTE-PART))) filebuffer = String(len bytes&, 0) Get #readin, start byte&, filebuffer outgoing$ = Mid$(filebuffer,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$, TO_PART) & DOT “HECHO” Wnteindex "R" & k&, v$ byte next& = byte-next& + len-bytes& Eise WriteIndex “R” &k&, “@Marca-en@” End If Next if byte_next& = 0 Then byte-next& = 1 Writeindex "ByteNext", byte-next& Writeindex "RecNext" k& Close #readout Close #readin Kiii BackupDatabasePath On Error Go To 0 On Error Resume Next End Sub BinaryDB2.bas Private Const sizer = 255 * 5 Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVai IpApplicationName As String, ByVal IpKeyName As Any, ByVai IpDefault As String, By Val IpReturnedString As String, ByVai nSize As Long, ByVai IpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVai IpApplicationName As String, ByVal IpKeyName As Any, ByVai IpString As Any, ByVai IpFileName As String) As Long Public Function Readlndex(ByVal IstrKey As String) As String On Error Resume Next Dim lfixedstrRetValue As String * sizer Dim IstrRetValue As String Dim lint Junk As integer Dim IstrSection As String IstrSection = "Index" IfixedstrRet Value = String(sizer, "')

5. Programación de una BDI

103

lintJunk = GetPrivateProfileStríng(IstrSection, IstrKey, " " lfixedstrRet Value, sizer, IndexPath) IstrRet Value = Trim(IfixedstrRetValue) IstrRetValue = Left(IstrRetValue, Len(IstrRetValue) - 1) Readlndex = lstrRet Value On Error Go To 0 On Error Resume Next End Function Public Sub Writelndex(ByVal IstrKey As String, ByVal IstrValue As String) On Error Resume Next Dim IstrSection As String Dim lintJunk As Integer IstrSection = “Index” IstrValue = Trim(IstrValue) IintJunk = WritePrivateProfleString(IstrSection, IstrKey, IstrValue, IndexPath) On Error Go To 0 On Error Resume Next End Sub BinaryDB3.bas Public 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 IniciaBinary() On Error Resume Next BinaryMgmt. OpenDatabase frmBinary. Show On Error Go To 0 On Error Resume Next End Sub BinaryDB4. bas Public Function Parse(ByVal T$, v%) As String On Error Resume Next Const LIMITE = "¤" T$ = LIMITE + Trim(T$) + LIMITE

5. Programación de una BDI

104

x1% = Len(T$) Place % = 0 For Counterl % = 1 To xI% CurrentChar$ = Mid$(T$, Counter1 %, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% Then xStart% = Counterl % + 1 Exit For End If Next For Counter2% = xStart% To xl% CurrentChar$ = Mid$(T$, Counter2%, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% + 1 Then xStop% = Counter2% - xStart% Exit For End If Next If xStop % = 0 Then Parse = Trim(Mid$(T$, xStart%)) 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 Parse Tab(ByVal T$, v%) As String On Error Resume Next Const LIMITE = vbTab T$ = LIMITE + Trim(Ts) + LIMITE xI% = Len(T$) Place % = 0 For Counter1% = 1 To xI% CurrentChar$ = Mid$(T$, Counter1 %, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% Then xStart% = Counterl % + 1 Exit For End If Next For Counter2 % = xStart % To xl% CurrentChar$ = Mid$(T$, Counter2%, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% + 1 Then

xStop%)) If InStr(ParseTab. se han utilizado métodos simples.1 Difusor simple `Listado 7 Difusor simple `Código: Visual Basic.4. 5.4 Filtrado y preproceso En los ejemplos anteriores. xStart%. Ejemplos documentados de su uso pueden consultarse en el CD anexo: • • Fuzzy DBExpert. 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.xStart% Exit For End If Next if xStop % = 0 Then ParseTab = Trim(Mid$(T$. LIMITE) Then Parse Tab "" End If On Error GoTo 0 On Error Resume Next End Function 5. Fuzzy DbRelation. xStart%)) if InStr(ParseTab. que no precisan de filtrado o preproceso en la construcción de la base de datos en intenso.5. Programación de una BDI 105 xStop% = Counter2% . sólo presentamos los fragmentos centrales. Private Sub fuzzy() Dim dbDatos As Database . LIMITE) Then Parse Tab = "" Else Parse Tab = Trim(Mid$(T$.

Close db Datos. c$) R. et As String Dim li. MoveFirst While Not R. Mo veNext Wend R.int" For Output As #free R. T3 As Double) Dim free as integer Dim pertenece. b$. OpenRecordset("Iectura”) Open “‘PA TH’\lbase. Programación de una BDI 106 Dim R As Recordset free = FreeFile Set dbDatos = OpenDatabase('path+file') Set R = DB.3 Is = 0. " +pertenece+".8 If T2 <= 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 + T i + ". Is as Double et = "objeto(" li = 0. " Print #free. Close Close #free End Sub Prívate Function difusor(T1 As String. T2 As Double.5.EOF a$ = R!id b$ = R!prioridad c$ = Rllectura Call difusor(a$. "+T3+"). f$ End Function .

5. End If End Function .1. Programación de una BDI 107 54. .). else if(num > 40 && num < 60) Then return ((-num)120. else íf(num == 40) Then return 1.). . es el eje operativo del ejemplo Fuzzy DBExpert. Public Function medioConservador(num As Double) As Double if(num <= 20) Then return 0. else if(num > 20 && num < 40) Then return (num/20. End If End Function Public Function medioModerado( num As Double)As Double if(num <= 20) Then return 0. ‘Listado 8 Difusor con múltiples condiciones ‘Código: Visual Basic '{ Implementar métodos para calcular el grado de pertenencia '{ de un valor determinado a los conjuntos borrosos de las reglas. +3. +3.). else if(num > 20 && num < 40) Then return (num/20.2 Difusor con múltiples condiciones El siguiente listado.). Else return 0.1. 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. else if(num == 40) Then return 1. Else return 0. else if(num > 40 && num < 60) Then return ((-num)120.

se crea y destruye según sea preciso en las operaciones generales del sistema. else if(num == 50) Then return 1. en dichas se deberán concentrar la totalidad de los procesos de inferencia posibles para el total de bases . else if(num > 50 && num < 75) Then return ((-num)i25. Dicha base. End If End Function Public Function medialnversion( num. la manipulación de la bases en intenso será: a)La base de datos en intenso esta constituida por un archivo temporal plano. +3. As Double) As Double if(num <= 25) Then return 0.1) *num+ 1.5.1.xpl) compilado en Prolog. las operaciones sobre ésta las efectúa un archivo binario (file.). Else return 0.). else if(num > 25 && num < 50) Then return (num/25. Else return 0. End If End Function 5. Programación de una BDI 108 Public Function pocoArriesgado(num As Double) As Double if(num < 10) Then return ((-0. 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.)..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).

• Sobrepuestos (tener algunos pero no todos los atributos en común). Métodos de resolución: Top Down. 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. • Anidados (todos los atributos de un concepto están incluidos en el otro). evidentemente el estudio exhaustivo del lenguaje Prolog rebasa el propósito de ésta tesis. • Ser idénticos (estar especificados en forma exacta por el mismo conjunto de rasgos). De acuerdo con estos puntos de vista. Bottom Up. 1. 4. 3. por lo que nos ocuparemos exclusivamente de los temas directamente relacionados con nuestro estudio: 1. 2. Programación de una BDI 109 temporales involucradas. para atender los requerimientos del sistema. Breadth First. En las siguientes líneas definiremos las principales funciones con que opera el motor de inferencia de Prolog sobre la base. De esta forma los conceptos pueden permanecer en un conjunto de relaciones familiares. 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. Dos conceptos pueden estar: • Desligados (no tener atributos en común). Los rasgos pueden tener pesos asociados y relacionados con ellos que representan . los conceptos están representados por un aumentado conjunto de rasgos. Técnicas de búsqueda: Depth First. Representación del conocimiento en la base en intenso: Redes semánticas. 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. Representación del conocimiento en la base en intenso: Redes semánticas.5. Deductivo. Modelos heurísticos: Hipotético.

el cual "a" y "b" son los nodos que permanecen enlazados a través de la relación "R" .5.R. Formas o Atributos Semánticos La representación semántica es considerada la más natural. elegimos para describir "la comparación del rasgo" el modelo propuesto por Smith . La red descrita en la figura siguiente determinada con lazos constituidos en (a. 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. Como una especie de revisión de todas las aplicaciones de estas ideas expuestas aquí. respira aire. el cual "hereda" todas las características antes descritas del animal. las flechas muestran el sentido de la relación. 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. . ahora una persona es del tipo animal. Programación de una BDI 110 una prominencia variada y características importantes para los conceptos en cuestión.b). tiene masa y está formado por miembros. 2. sin poseer un carácter recíproco.

respira. come. r("PAJARO". aire). "ANIMAL"). 14 Representación semántica Para implementar la semántica expresada en la figura anterior.es_del_tipo. miembros). r("ANIMAL". basta con definir la estructura que genera la base donde se describen los hechos. volar). Las siguientes cláusulas proporcionan esta información: r("ANIMAL".esta_formado_por. masa). r("PAJARO". . r("ANIMAL". alimento). Programación de una BDI 111 Fig. puede. r("ANIMAL".5.tiene.

. esta_formado_por. Los nodos representan conceptos en la memoria. r("PERSONA". Las relaciones son directas y niveladas. representadas por arcos que ligan a los nodos entre sí. amarillo). y relaciones entre ellos. alas). Programación de una BDI 112 r("PAJARO". representan descripciones o afirmaciones referentes a una instancia individual de un objeto. representan referentes de una clase o categoría de objetos. es_del_tipo.5. sólo falta un sistema que haga uso de ella. Elemento-2) relaciona por medio de "Lazo" el "elemento-I" con el "elemento _2". Una relación es una asociación entre los conjuntos de los nodos. r("CANARIO". r("Persona X"."PERSONA"). plumas). y exprese el conocimiento que la red determina por medio de la acción. esta_formado_por. 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."CANARIO")."ANIMAL").brazos). piernas).un_representante_de. r("PERSONA". r("PAJARO". • Genéricos. r("Ave X". 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. Podemos observar que la cláusula r( Elemento-I Lazo.esta_formado_Por. r("CANARIO".esta_formado_por. color. Básicamente los nodos pueden ser de dos tipos: • Individuales. representados por nodos. Las redes semánticas se caracterizan por el tratamiento de conceptos. Por ejemplo una expresión clausal que sea capaz de proporcionar en una lista las características que hereda un elemento de la clase. es_del_tipo. un_representante_de. "PAJARO"). r("PERSONA".

y existen los arcos especiales “es un” y “es un tipo de”. Es importante destacar que a diferencia del formalismo de la lógica. Los sistemas de resolución de problemas en IA. * 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. El significado asignado a una red lo establecen solamente los procedimientos que manipulan la red. una estructura de árbol. 3. Programación de una BDI 113 Los conceptos están previamente ordenados en una taxonomía. Métodos de resolución: Top Down. El encadenamiento hacia atrás “Top Down”. en este caso una rama del árbol. tiene la particularidad de ir generando con las cláusulas que va tomando. Se comienza en un estado inicial y la meta es llegar a un estado final u objetivo. y el segundo liga dos nodos genéricos entre sí y expresa que un concepto o tipo es un subtipo de otro. están basados en la formulación de la solución del problema como una búsqueda. son resueltos por las aserciones originales. son métodos de inferencia que orientan las búsquedas y las técnicas de éstas. El primero liga un nodo individual con uno genérico y expresa que un individuo es de cierta clase. 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. 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.5. derivando nuevos objetivos a partir de los objetivos anteriores hasta que todos los objetivos derivados. Representan las distintas formas de explorar la información representada por un sistema inteligente. para las redes semánticas no hay métodos formales y generales de deducción. Una refutación es un camino en el espacio de búsqueda. Bottom Up. es llamado el espacio de búsqueda. que comienza con el objetivo .

donde se evalúa a sus miembros en función de su peso o áridad. una estructura simple. se comienza con las cláusulas que son aserciones o hipótesis. En el segundo. para los efectos de nuestro estudio.ej. el motor de inferencia consulta un repositorio de reglas predefinido y opera sobre archivos temporales (Base de datos en intenso). Programación de una BDI 114 y termina con la cláusula vacía. 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. 5. . se termina cuando eventualmente la cláusula original o hipótesis es resultado de las aserciones derivadas. b) Método BOTTOM UP El encadenamiento hacia adelante “Bottom Up”. fuzzy) y los datos en intenso provienen de objetos Recordset. por lo cual la búsqueda es más difícil. propios del programa de aplicación.Motor de Inferencia) Como podemos apreciar en los ejemplos citados con anterioridad. la base en intenso es. generalmente. Para ello se usan las aserciones e implicaciones que permitan derivar nuevas aserciones. resulta evidente que el repositorio de reglas constituye el eje fundamental del proceso de inferencia. Este método de resolución genera una estructura más compleja que la generada por “Top Down". Una refutación en este método comienza con las aserciones de las cláusulas originales. En el primero de los casos se utilizan bloques de sentencias IF THEN ELSE inscritos en ciclos predefinidos (p. Este repositorio. 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.4 Programación Lógica Paralela (Motor Relacional.5.

mujer:-(persona(x.M). . sexo). Programación de una BDI 115 Fig. no definidas explícitamente en la base en intenso por ejemplo. es conveniente destacar que los “arcos” o relaciones descritas con anterioridad.5. M). Diagrama General de la Arquitectura Propuesta. serán sustituidos por expresiones capaces de derivar relaciones semánticas complejas (herencia de elementos de clase). dada una estructura de base simple (toda persona tiene un nombre y un sexo): persona(nombre.F). En las siguientes líneas nos ocuparemos ponderantemente de este caso. Aplicando la expresión: hombre:-(persona(x. persona(Sofía. donde: persona( Carlos.F). 15.

Así. inicializa el motor de inferencia y a través de él consulta la base citada. desde la selección de los datos objetivo hasta los productos del proceso de inferencia. todas las acciones del motor responden a eventos predefinidos que se disparan desde la aplicación.interviene una secuencia ordenada de pasos. El motor de inferencia opera sobre una base de datos en intenso en función de un repositorio de reglas dado. Programación de una BDI 116 Tenemos: De esta forma. en este proceso .como se ha descrito anteriormente . éste genera la base en intenso. . para atacar el conjunto de necesidades del sistema. así como integrar restricciones de integridad a la base en intenso.xpl) podemos concentrar múltiples relaciones semánticas complejas. el flujo y procesamiento de datos está regulado por el programa de aplicación. en el repositorio de reglas (logic.5.

Tíos.madre. etc. 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. Compuesta por la tabla: Familia. Primas. donde Campo Nombre Sexo Padre Madre Pareja | Soltero String String String String String Tipo 50 9 50 50 50 Tamaño b) La base en intenso. Compuesta por la estructura: person(nombre.genero." . Abuelas.5.).padre. "Descubrir relaciones genealógicas entre los miembros de la base en intenso (Madre. Abuelos.pareja). Primos. Tías. ocupándonos de sus aspectos principales. a) La Base Persistente. Padre. c) El objetivo de la inferencia. Programación de una BDI 117 Todas los ejemplos en que interviene el motor de Proiog tienen la misma base.

padres(A. S 1 \= s2. C). C). padre(P. esposa. S2) :. desendiente(D. hija(C. hijos(C. esposo. desendientes(D.padres(P. nieto. full_hermanos(S 1. P) :. relation(R. C). el siguiente es el listado de su código: %Listado 9 arbol. S2) :. P). P) :. hermano. ancestros(A. S 1). tía. desendientes. male(C).X). nietos]). sobrinos.X). C) :. P) :. nieta. hermanos. abuelos. Programación de una BDI 118 d) El repositorio de reglas. P). esposa(W. madre. hijos.D). primos.padres(P. tio. female(C). ancestros(A. P) :. P).5. Q [R. P) :. abuelas. compilado en el archivo binario "arbol. padre(F. Y) :relations(Rs). female(W). hermana. ancestros(A. C) . X.padres(P. El repositorio de reglas está escrito en Lenguaje Amzi4! Prolog.xpl". S 1). Rs). Y].spouse(H. ancestros.half hermanos(S 1. S2).padres(P. P). S2). P) :.padres(P. padre. call(Q) % Repositorio de reglas en sí padres(P. hijo.(madre (P. desendientes(D. madre(M. S2) :madre(M. sobrina. member(R. C)). P) :. P) :. hija. P) :. male(H). . X.pro %Código: Prolog % Objetivo del proceso de inferencia: relations([padres. hijos (C).spouse(W. S2( hermanos(S1.full_hermanos(S1. esposo(H.X) hermanos@ 1.padres(X.

5. Programación de una BDI

119

padre(F, S2). half_hermanos(S 1, S2) ;madre(M, S2), madre(M, S1), S1 \= s2, padre(F 1, S1), padre(F2, S2), F 1 \= F2. half hermanos(S1, S2) :padre(F, S2), padre(F, SI), S1\= s2, madre(M 1, S1), madre(M2, S2), MI \= M2. hermana(S, P) :hermanos@a, P), female(S), hermano(8, P) :hermanos(B, P), male(B). tio(U,X) :padres(P,X), hermano(U, P). tia(A,X) :padres(P,X), hermana(A, P). sobrinos(N,X):hermanos(S,X), padres(S, N), male(N). sobrina(N,X) :hermanos(S,X), padres(S, N), female(N). primos(X, Y) :padres(P, Y), hermanos(S, P),

5. Programación de una BDI

120

padres(S,X). abuelas(GM,X) :padres(P,X), madre(GM, P). abuelos(GF,X):padres(P,X), padre(GF, P). nieto(GS,X) :nietos(GS,X), male(GS). nieta(GD,X):nietos(GD,X), female(GD). nietos(GC,X) :padres(X, C), padres (C, GC). person(X) :person(X, _,_,_,_) male(X) :person(X, male,_,_,_). female(Y) :person(Y, female,_,_,_). madre(M, C) :person(C,_, M,_,_). padre(F, C) :person(C,_,_, F,_). spouse(S, P) :person(P,_,_,_, S), S \= single. member(X, [X\_]) member(X, [_\ Y]) :- member(X, Y).

5. Programación de una BDI

121

e) Inicializar repositorio de reglas y consultar la base en intenso ‘Listado 10 Inicializar el repositorio de reglas ‘Código: Visual Basic Private Sub consult() Dim rc As Integer, tf As lnteger Dim Term As Long Dim xplname As String xplname = Path + “\ARBOL.XPL” InitLS (xplname) LoadLS (xplname) tf = CalIStrLS(Term, "set_mode(string_esc, off)”) If tf <> True Then MsgBox “Error” End If abre familia End Sub Private Sub DisplayRelations() 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 PersonList. Listlndex < 0 Or RelationshipList. Listlndex < 0 Then Exit Sub End if '{ Se selecciona un miembro de la lista Per-son = Person List. Líst(PersonList. Listlndex) '{ Se selecciona la relación a buscar Relationship = RelationshipList.List(RelationshipList. Listlndex) ' { Se pasan los parámetros de consulta a Prolog tf = CaJIStrLS(Term, Relationship + "(X, "' + Person + “’)”) While (tf) Call GetArgLS(Term,1, bSTR, StrVal) RelatedPersonsList. Addltem StrVal tf = RedoLS() Wend End Sub

7. Clear tf = CallStrLS(Term. Programación de una BDI 122 Private Sub abrefamilia() Dim rc As Integer. 1. 0.int" tf = CaliStrLS(Term. TList As Long Dim StrVal As String RelationshipList. tf As Integer Dim Term As Long CurrentFamily = "'PATH+’\base. "relations(X)”) If (i <> True) Then Relations = 0 Return End If Call GetArgLS(Term. tf As Integer Dim Term As Long Dim StrVal As String PersonList. Addltem Str Val tf = RedoLS() Wend Persons = 1 End Function Private Function Relations() As Integer Dim rc As Integer.5. tf As Integer Dim Term As Long. bTERM. bSTR. "person(X) “) if (tf <> True) Then Persons = 0 Exit Function End If While (tf = True) Call GetArgLS(Term. TList) . "" CurrentFamily = “” End If tf = Persons() if = Relations() End Sub Private Sub PersonList Click() Call DisplayRelations End Sub Private Function Persons() As Integer Dim rc As Integer. "consult('" + CurrentFamily + “’)”) If (if <> True) Then MsgBox "Error". Clear tf = CallStrLS(Term. StrVal) Persontist.

Addltem StrVal End If Loop While (rc = 0) Relations = 1 End Function Private Sub RelationshipList Click() Call DisplayRelations End Sub ‘{ Funciones de la librería utilizadas Public Sub InitLS(ByVal INIFile As String) Dim rc As Long If IsEmpty(MaxStrLen) Then MaxStrLen = 255 End If If IsEmpty(ErrorMethod) Then ErrorMethod = 0 End If rc = Isinit(EnginelD.5. XPLFiIe + Chr$(O)) If (rc <> 0) Then Call ErrorHandler("IsLoad". StrPtr + Chr$(O)) . bSTR. rc) End If End Sub Public Sub LoadLS(ByVal XPLFiIe As String) Dim rc As Long rc = IsLoad(EnginelD. TermPtr. ByVa! StrPtr As String) As Bolean Dim (f As Long tf = IsCaIIStr(EnginelD. INIFile + Chr$(O)) If (rc <> 0) Then Call ErrorHandler("Islnit". Programación de una BDI 123 Do rc = PopListLS(TList. StrVal) If (rc = 0) Then RelationshipList. rc) End If End Sub Public Function Ca1IStrLS(TermPtr As Long.

ArgNum. tint As lnteger. Programación de una BDI 124 Select Case tf Case 0 CaII StrL S = False Case I CalIStrLS = Trae Case Else Call ErrorHandler("IsCalIStr". ArgNum. tdouble As Double . bTERM rc = IsGetArg(EnginelD. BType. tint As Integer. bA TOM tstr = Space$(MaxStrLen) rc = IsGetArg(EnginelD. ArgNum. ArgNum. ByVal BType As lnteger. ffloat As Single. ByVal BType As lnteger. Term. ByVal tstr) Ptr = StripStr(tstr) Case bLONG. tlong) Ptr = tlong Case b/NT. tfloat As Single. tfloat) Ptr = tfloat Case bDOUBLE rc = IsGetArg(EnginelD. tstr As String. bADDR. tdouble) Ptr = tdouble End Select If (rc <> 0) Then Call ErrorHandler(`IsGetArg rc) End If End Sub Public Function PopUstLS(TermPtr As Long. Term. bSHORT rc = IsGetArg(EnginelD. ArgNum. Term.5. Term. Term. BType. BType. tstr2 As String Dim tlong As Long. tint) Ptr = tint Case bFLOAT rc = IsGetArg(EnginelD. tf) End Select End Function Public Sub GetArgLS(ByVal Term As Long. Ptr As Variant) As Long Dim rc As Long. tdouble As Double Dim s As String Select Case BType Case bSTR. ByVal ArgNum As Long. tstr As String Dim tlong As Long. BType. BType. Ptr As Variant) Dim rc As Long.

bATOM tstr = Space$(MaxStrLen) rc = IsPopList(EnginelD. B Type. de hecho. . tint) Ptr = tint Case bFLOAT rc = IsPopList(EngineiD. aplicado al diagnóstico. pueden ser editados en las vistas de `Edición' en los prototipos desarrollados. BType. TermPtr. Programación de una BDI 125 Select Case BType Case bSTR. tdouble) Ptr = tdouble End Select Select Case rc Case 0 PopListLS = rc Case -1 PopListLS = rc Case Else Call ErrorHandler("IsPopList" rc) End Select End Function Hemos seleccionado éste ejemplo por su sencillez y amplia documentación entre los distintos grupos de programación lógica consultados. sobre su operación conjunta con Visual Basic. base persistente. se anexa un ejemplo de la presente tecnología. TermPtr. BType. TermPtr. constituye la base de explicación a usuarios de Amzi4. bADDR. éste y todos los ejemplos concentrados en el prototipo (listados. float) Ptr = tfloat Case bDOUBLE rc = IsPopList(EnginelD. BType. base en intenso). TermPtr. tlong) Ptr = tlong Case bINT. ByVal tstr) Ptr = StripStr(tstr) Case bLONG.5. bSHORT rc = IsPopList(EnginelD. bTERM rc = IsPopList(EnginelD. Adicionalmente. BType. TermPtr. repositorio de reglas.

Aplicaciones de “minería” de datos sofisticadas.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... Las herramientas OLAP (siglas que pueden englobar todas las anteriores categorías). consistente e interactivo a una amplia variedad de posibles vistas de la información que ha sido transformada a partir de datos en bruto para reflejar la dimensionalidad real de .6. .) y lenguaje SQL. están conociendo un resurgimiento con los entornos de almacenes de datos. QBE. que empiezan a soportar también varias dimensiones en el tratamiento de datos.). Estado del Arte 6. Herramientas de visualización de datos. Generadores de informes. análisis de series temporales. 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. análisis de regresión y correlación.etc. Entornos de soporte a la toma de decisiones (EIS/DSS). se pueden definir como un tipo de tecnología software que permite a los analistas. inferencia. Estado del Arte 126 6. • • • • • • • • Hojas de cálculo. SPSS. y los paquetes que las soportan empiezan a difundirse cada vez más. como el análisis de probabilidad. gestores y ejecutivos obtener una visión de los datos por medio de un acceso rápido. Paquetes de análisis estadístico (SAS. Las técnicas estadísticas. basadas en técnicas de Inteligencia Artificial. ofreciendo intetfaces con la mayoría de las plataformas para almacenes de datos. etc. Herramientas OLAP.

etc. . . existe otro tipo de técnicas. por tanto. que el propio usuario va haciendo y validando con los datos que le devuelven sus consultas. . sin embargo. existe una fuerte tendencia.Comparaciones. años. pudiendo navegar por las distintas dimensiones de los datos. por la utilización de modelados abstractos: Objetos y clases entre otros.Perfiles estadísticos y clasificaciones. meses. por: . . 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: . más potentes. .Ratios multidimensionales. Este tipo de herramientas permite a los analistas del negocio verificar hipótesis. . en el seno de los grupos de IA.6. en nuestro estudio.Analizar las entre diferentes elementos de negocio.Comparar datos agregados en periodos de tiempo jerárquicos (días. Estas herramientas se caracterizan. son las que se engloban dentro de la categoría de minería de datos (data mining) propiamente dicha.Involucrar datos agregados.Acceder a una gran cantidad de datos (varios años de ventas).Implicar cálculos complejos entre los elementos de datos.). Sin embargo. Estado del Arte 127 la empresa tal y como la entiende el usuario. que permiten descubrir información valiosa sin depender del usuario. sólo hemos pormenorizado en los algoritmos de modelado basados en IPL. Presentar datos en diferentes perspectivas .

construye modelos que encuentran registros de datos similares (mediante técnicas geométricas. .Detección de agrupamiento. 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.Agrupamiento por afinidad. Categorizar objetos. es decir. . ingresos de una familia.Descripción. utiliza instancias conocidas como modelo para hacer predicciones acerca de otras instancias desconocidas. por ejemplo. examinar sus características y asignarlos a un conjunto predefinido de clases. Los datos se clasifican de acuerdo a un comportamiento futuro. .Clasificación. permite identificar grupos de elementos que ocurren juntos en una transacción. Estado del Arte 128 Algunas de las tareas que se llevan a cabo con las herramientas de minería de datos son las siguientes: . la estimación consiste en obtener un valor continuo.Predicción. Mientras que la clasificación obtiene una salida discreta. estadísticas. .Análisis de enlace.6. sigue las interrelaciones entre los registros con el fin de desarrollar modelos basados en patrones en las interrelaciones (aplicando teoría de grafos).). clasificar personas que van a pedir un préstamo según el riesgo que presentan. . Explicación de lo que sucede en la base de datos. En la práctica se utiliza para llevar a cabo clasificaciones.Estimación. etc.Razonamiento basado en memoria.Agrupamiento (clustering).Análisis de la cesta de la compra. sin que existan clases predefinidas. Segmentar una base heterogénea en varios grupos (clusters) homogéneos. . por ejemplo. . . Estas tareas se pueden llevar a cabo mediante la aplicación de distintas técnicas que resumimos a continuación: . .

Ingeniería: diagnóstico de fallos. . generalizando patrones para clasificación o predicción. Estado del Arte 129 . .Agricultura: identificación dé plagas. donde sirven para el análisis de los datos procedentes de telescopios o de sondas.Árboles de decisión y reglas de inducción. identificación de tratamientos eficaces. diseño de productos. detección de fraudes. . costes de los hospitales.Algoritmos genéticos. predicción de valores bursátiles. . efectos de drogas.Redes neuronales artificiales.Medicina. predicción de quiebras. . como hemos señalado. . CAD. ofertas individuales. . . astronomía.).. . modelos predictivos... .6. . reclamaciones no válidas. . análisis de riesgos.Banca: concesión de créditos. 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. ..Energía eléctrica: programas de distribución. existe un conjunto muy amplio de aplicaciones: .. patrones de compra. . análisis de productos. . . son capaces de aprender de un conjunto inicial. . clasificación de enfermedades. predicción de ventas. . . 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. .Ciencias espaciales. 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.Seguros: detección de fraudes. etc. segmentación de clientes (para ofrecer tarjetas de créditos según el tipo de cliente). patrones basados en tiempo para tomar decisiones respecto a los almacenes. análisis de incidentes.Distribución: análisis de la cesta (qué elementos tienden a comprar conjuntamente los clientes). Aunque. . en concreto. . . . Es la técnica más común. biomedicina. análisis genéticos.Ventas: identificación de subgrupos específicos.

Las imperfecciones deberían ser expresadas mediante medidas de la incertidumbre en forma de reglas de aproximación. etc. etc. etc.Formatos de entrada de datos limitados. .Gran consumo de recursos. por ejemplo. incapacidad de realizar validaciones cruzadas. multimedia. . fórmulas matemáticas. . . . textos. donde destacan los siguientes: .Utilidad. . . interfaces gráficas. para que el usuario pueda refinar de forma iterativa su petición. . certeza y expresividad de los resultados de la minería de datos. presentando los resultados de diferentes formas y bajo diferentes perspectivas. .Mecanismos de explicación limitados. que son objeto de discusión en numerosas conferencias y publicaciones especializadas.Técnicas de validación limitadas. formatos.Minería interactiva del conocimiento a vanos niveles de abstracción. ya que las herramientas no siempre son capaces de explicar al usuario cómo han llegado a los datos.Eficiencia y escalabilidad de los algoritmos de minería de datos. no ofrecen posibilidad de manipular gráficos. pero todavía se enfrenta a numerosos retos por resolver. Estado del Arte 130 Como podemos observar prácticamente todos los sectores empresariales pueden beneficiarse de estas técnicas. mediante la utilización de lenguajes de alto nivel. .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. los tiempos de ejecución de estos algoritmos debe ser predecible y aceptable en bases de datos muy grandes.Expresión de varios tipos de peticiones y resultados de minería de datos. sino también espaciales (geográficas). 6.Soporte limitado a ciertas plataformas. etc. se deberían construir sistemas capaces de explotar los datos no sólo en bases de datos relacionales.Manejo de diferentes tipos de datos.6. tamaños.

Estado del Arte 131 .Minería de información de diversas fuentes.Conjuntos de datos masivos y soporte de alta dimensionalidad así como de bases de datos de millones de registros (varios Gbytes). . que desde un punto de vista matemático son correctos pero que a veces el usuario no llega a comprender. . .6.Inteligibilidad de los patrones.Protección de la seguridad y privacidad de los datos. .

ya que permite representar. Es flexible. sin afectar los tipos de deducción que se pueden hacer. informada e inteligente. sinérgico. 3. los hechos sin importar para qué son utilizados.7. 2. la principal de ellas se centra en la búsqueda de soluciones en un dominio particular donde el uso de SQL resulta insuficiente. . en función de las reglas de manipulación sintáctica que hayan sido definidas. 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. Es modular. La confluencia de tecnologías. Garantiza que las conclusiones que se derivan de las premisas iniciales son correctas. Representación que permite consultas con parámetros sobre relaciones no explícitas en la definición del esquema relacional. 4. Conclusiones 132 7. 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. Pueden ser utilizadas para analizar el conocimiento y para aplicar el razonamiento deductivo sobre dicho conocimiento. y en especial de tecnologías de información. en forma sencilla. destinado al mejoramiento del desempeño del sistema dentro del contexto en el cuál se opera. ha abierto nuevas avenidas para el desarrollo de sistemas cuyas capacidades conjugan la funcionalidad de tecnologías individuales en un todo cohesivo. Conclusiones 1. 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. nuevos hachos pueden ser agregados a la base de conocimiento en forma independiente.

7. organización y síntesis de información en un cuerpo coherente. Conclusiones 133 5. conceptos. Estos símbolos representan conocimiento acerca de objetos existentes en el mundo real. se valen de la manipulación de símbolos para la resolución de problemas. 7. 6. a problemas que no pueden ser resueltos por medios algorítmicos convencionales y que requerían la ayuda de otras personas para resolución. estrategias y heurísticas que el sistema tiene en su poder y que emplea para la resolución del problema. esto es. permitiendo tratar como miembros de un subconjunto determinado grupos de registros con valores atómicos distintos. 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. 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. Esta funcionalidad permite incrementar 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. 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 relaciona¡. Adicionalmente pueden ayudar a transformar información en conocimientos al proveer mecanismos automáticos para el análisis. 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. El tratamiento de la incertidumbre mediante estrategias de lógica difusa y lógica multivaluada permiten una representación global de los datos con una semántica sensiblemente mayor a las representaciones convencionales. .

. 1990. Addison-Wesley. 1998 MIRA. 1986. México. Massachusetts. CORONELL. México. Henry. FERNÁNDEZ. 1987 . Enterprise Edition” Book’s on line. Ed. “Concepción v diseña de bases de datos” Del modelo E/R al modelo relacional. Massachussets. Ed. F. Sanz y Torres. USA. HANSEN. 1997 KOLMAN. 1998 Microsoft. RAMA Addsison-Wesley-Iberoamericana. McGraw-Hill. McGraw-Hill. 1997 DATE. 1995. ‘Visual Basic 5. M. KORTH. Ed. Gary. E. ‘Visual Basic 5. USA. "An Introduction to Database Systems” Ed. Gray. User Guide” Microsoft. Autómatas. 1998 Microsoft. J. PIATTINI. Addison-wesley. J. W.F. Algoritmos y Lenguajes" Ed. 1993 ROBINSON. “The Relational Model for Database Manaaement: Version 2”. Anaya. “Estructuras de Matemáticas discretas para la computación” Ed. Bernard. “Fundamentos de bases de datos” Ed. Madrid. Salamanca. 1986.Referencias bibliográficas Referencias bibliográficas a) Textos CODD. McGraw-Hill. México. 1993 Microsoft. “Visual Basic 5". “Diseño y Administración de Bases de Datos” Ed.0 User Guide " Microsoft. “Aspectos básicos de la Inteligencia Artificial” Ed. “Fundamentos de Informática: Lógica. Prentice Hall. "Access 7. Philip. Madrid. Prentice Hall. 'Aflitgue Turbo Prnloq" Ed. Madrid. 1995.

6 user quide" LPA Software. Algoritmo. 1998. Johns. 1997. 1988 SHAFIELD. 1997. 24-32 Mateos. pp. 3. pp. pp. TRIANA. PIATTINI. b) Artículos BURGOS. 38-47 . Soluciones Instantáneas” Ed. McGraw-Hill. "Programación Avanzada en Turbo Prolog " Ed. 1997. No. 56-65 KRIVDA. SOM. 1997. Jorge. " Knowledge-Based Query Formulation for Integrated Information Systems” Techincal Digest. ‘Yisuat Basic Experto” Grupo Eidos. Cheryl. Algoritmo. “Dinamita para extraer datos” Byte. WINTER. Rebeca. 1997. Prentice Hall. 'Winproloq 3. M. Harvey. Guillermo. 1995. Año 6. 1997. 1998. “Microsoft Access 97. “lntelligent Database Engines” Database Programming & Design. México. 2. “Objetos en Visual Basic” Grupo Eidos. Rick. Año 5. “lntelligent Databases” IA Expert. "Investigación de operaciones” Ed. Volumen 5. Algoritmo. Limusa. Algoritmo. pp. Algoritmo. H. “Intercambio dinámico de datos con Visual Basic” Grupo Eidos. 1997. México.Referencias bibliográficas SHILDT. THIERAÜF. Año 5. “Aplicaciones profesionales en Visual Basic” Grupo Eídos. Herbert. Año 5. HOPKINS. México. “El futuro de las bases de datos (I-V)" Grupo Eídos. 261-270 KHOSAFIAN. WONG. 1990. No. Año 5. Julio. 93. Año 9. Volumen 18. No.

Volumen ll. 37-42.html GOMEZ. J. Wojciech.ca/pub/cs/hanlkdd/sigmod96 tuto_des. No.html HAN.gsi. “Constraint-Based Query Evaluation in Deductive Databases” ftp://ftp. pp.eecs.sfu. James N. “Defining Data Mining” http:/lwww.sfu. “Database Systems: A Textbook Case of Research Paying Off” http://www.edu/-fchan/caddis/ds_systems. "LogicBase: A Deductive Database System Prototype” ftp://ftp.uk MOXON. “Data Mining ".ca/pub/cs/han/kdd/ency99.mor.ougf.itesm. ZOZAYA.es/tesis/anto.ps HAN.edu/homes/lazowska/cra/database. 2. No. año 2. “Tutorial de Prolog" http://w3. 1995. html Tecnológico de Monterrey. "Analysis of Decision Support for Distributed Systems” http://www-cad.fas sfu. J. pp. Antonio J.html GRAY.dbmsmag.cs. Francis.ps HAN. “Data-based acquisition and incremental classification rules” Computational Intelligence.Referencias bibliográficas ZIARKO.mx/-esucar/IA/prolog. ftp://ftp.41 -47.berkeley.fi/nouc/Handouts/Olsen/stdOO8. “Data Mining Techniques”.lpa. “FAQ WinProlog" http://www.html OLSEN. “Arquitecturas de Sistemas Expertos”.ca//pub/cs/han/doodlconstr94.upm. htm . J. “Inducción de conocimiento en bases de datos” http://www. " What Databases ?" http://www. J.fas. 13.fas.com/9608d53.sfu. C.ps Logic Programmíng Assocíates.fas. modification of c) Uniform Resource Locator CHAN.washington.cal/pub/cs/han/dood/cikm94. ftp:/Iftp. 1994.dit. Bruce. Soluciones Avanzadas.co.ps HAN.

ca/pub/cs/han/kdd/sigmod98. “Tutorial de Prolog” http://www.mx/proton/tutorial/prolog/Prolog. “Tutorial de Prolog” http://proton.udg. A. sfu.fas. "Exploratory Mining and Pruning Optimizations of Constrained Associations Rules”.cultura.html .ps The Data Mining Research Group.ucting.htm Universidad de Guadalajara. ppt Universidad de Guadalajara.mx/tutoriales/prolog/proiog. ftp://ftp.Referencias bibliográficas PANG. “lntroduction to DBMiner and Data Mining and Warehousing Concepts" ftp://ftp.udg.fas. ca/pub/cs/han/slides/boeingintro.sfu.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->