Está en la página 1de 396

UNIVERSIDAD DE GRANADA

E.T.S.I. INFORMA TICA

Dpto. de Ciencias de la Computacion e Inteligencia Arti

cial

TESIS DOCTORAL

TRATAMIENTO de la IMPRECISIO N
en BASES de DATOS RELACIONALES:
EXTENSIO N del MODELO y ADAPTACIO N
de los SGBD ACTUALES

Jose Galindo Gomez

1999

UNIVERSIDAD DE GRANADA

TESIS DOCTORAL

TRATAMIENTO de la IMPRECISIO N
en BASES de DATOS RELACIONALES:
EXTENSIO N del MODELO y ADAPTACIO N
de los SGBD ACTUALES

Autor : Jose Galindo Gomez
Director : Juan Miguel Medina Rodrguez
Departamento : Ciencias de la Computacion e
Inteligencia Arti

cial
Programa de Doctorado : Tratamiento de la Informacion en
Inteligencia Arti

cial

Esta Tesis Doctoral fue defendida del 12 de Marzo de 1999,
obteniendo la cali

cacion de
SOBRESALIENTE CUM LAUDE.

.

.1. . . 9 1. . . . . . . . . . . . .3 De. . . . . . 8 1. . . .1 Motivacion y Objetivos . . . . . . . . .2 Modelo Relacional de Bases de Datos . . . . . . . . . 3 1. . . . .1 Estructuras de Datos: Tablas o Relaciones . . . . . . 6 1. . . . . . . . . . 5 1. . .2. . . . . . . . . . . . . . . . . . . . . . . . . . .Indice General Agradecimientos y Dedicatorias 1 1 Introduccion: Bases de Datos y Conjuntos Difusos 3 1. . . . . .2. . .1 Descripcion por Captulos . . . . .2. . . . .2 Integridad de los Datos . . . . . . . . . . . . . . . .

. . . . . . . .5. . . . 13 1. . . . .5 Teora de la Posibilidad . . .2. . .5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . 20 1. .2 Calculo Relacional . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1. . . . . . .6. . . . . . . . 25 1. 36 2. . . . . 25 1. . . . . . . . . . . . . 25 1. . .1 Estructuras y Tipos de Datos . . . 17 1.2 Esquema con Valores por Defecto . . . . . . . . . . . . . .2. . . . . .3. . . . . . . . . . . . . 32 1. . . . . . . . . . . . .4. . . . .1 Union e Interseccion . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . 31 1.nicion de los datos . . .2 Conceptos sobre Conjuntos Difusos .3. . . . . . .2. . . .3. . . . . . . . . . . . 20 1. .3. . . . . . . . . . . .1. . . . . .6. . .1 Comando SELECT . . . . . . . . . .3. . . . . . . . . . .1. . .4. . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . .2. . . . . . 28 1. .2 Complemento .1 A lgebra Relacional . . . . . . .1 Aproximacion de Codd . . . . . 30 1. . . . . . . 37 I . . . .2 Comando INSERT . . . . . .3. . . . . . . . . . . . . . . . . . 23 1. .2 Integridad de los Datos .4 Comando UPDATE . . . . . . .3 Teora de Conjuntos Difusos . . . . . . . 36 2. . . . . . . . . . . . . . . . . . . . . . . . .5 El Lenguaje SQL . . 16 1. . . . 22 1. . . . . . . . . . . . . . . .1 El Principio de Extension . . . . . . . 27 1. . . . 19 1. . . . . . . . . .4. . .2. . .2. . . . . . . . . . 10 1. . . . .5. 11 1. . . .5. . . . . . . . . . . . 33 2 Modelos de BDR Difusas: GEFRED 35 2. . . . . . .2. . . 29 1. . . . . . . . . . . . . . . . . . .3. . . . . . . . . . . . . . .3. . .1 Imprecision Sin Utilizar Logica Difusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3 Operaciones sobre Conjuntos Difusos . . .5 Comando CREATE TABLE . . . . . .3. . . . . 28 1. . . 20 1. . . . . . . . . . . . . . . . . . . . . . . . . . .1 Conjuntos Difusos . . . . . . . . . . . .3. . . . . .3 Comando DELETE .5. . . . . . . .2. . . . . .4 Manipulacion de los Datos: A lgebra y Calculo Relacional .2 Aritmetica Difusa .3. . .6 El SGBDR Oracle . . .4 Numeros Difusos .

.2 Modelos Basicos de Bases de Datos Difusas . . . . . . . . . . . . . . . 37 2. . . . . . . . . . . . .7 Modelo GEFRED de Medina et al. . . . . . . . . . . . . . . . . . . .3 Modelo de Buckles-Petry . .6 Modelo de Zemankova-Kaendel . . . .4 Bases de Datos Estadsticas y Probabilsticas . . . .8 Resumen de los Tipos de Modelos de BDRD . . . 38 2. . . . . . . 38 2. . .9 Lenguajes para Consultas Flexibles . . . . . . . . . .5 Modelo de Umano-Fukami . . . . . . . . . . . . . . .2 Cuanti. 49 2. . . . . . . . . . . . . . 47 2. . . . . . . . .9. . . . .1 El Lenguaje SQLf de Bosc y Pivert . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Rangos en Valores . . . . . 37 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2. . . . . 42 2. . . . . . 39 2. . . . . . . . . . . .4 Modelo de Prade-Testemale . . . . . . . . . . . .1. 40 2. . . . . .1. . . .II INDICE GENERAL 2. . . . . .9. . . . . .

. . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Introduccion y Enfoque del Problema . . . . . . 55 3. . . . . . . . . . 53 3. . . . .1 Interseccion Difusa Cuali. . . . 50 3 Division Relacional Difusa 53 3. .cadores Difusos de la Consulta .2 Dos Nuevos Operadores .

. 65 3. . . . . . . . 64 3. . . . . . . 55 3. . . . . . . .3. . . . . . . . . . . .cada: \Q . .2.3 Division Relacional Difusa Generalizada:  . . . . . .1 De. . . . . . . 60 3. .2. . . . . . . .2. .2 Proyeccion Difusa Generalizada con Funciones de Grupo F : P F . . .1 Consideraciones Adicionales .

. . . . . . . . .3. .nicion . . . . . . . . . 65 3. . . . . . . . . . . . . . .2 Justi. .

. . . . . . . . . . . . . . . . . . . . . . . . . 66 3. . . . . . . .cacion de la Division Difusa Generalizada y Comparacion con la Formula Clasica de la Division Relacional . . . . .4 Un Ejemplo Practico de Division Relacional Difusa . . . . 74 3.5 Problemas que se Plantean y Posibles Soluciones . . . . 67 3. .6 Relajacion del Cuanti. .

. . . . . . .3 Distintos Tipos de Divisiones para Distintos Signi. . . . . . . .2. . . . . .7 Estudio Comparativo con otras Propuestas .7. . . . . . . .1. . . . . . . . . . . . . 78 3. . . . . . . .7. . . . 80 3.1 Analisis de la Propuesta .cador en la Division Difusa . . . . . . .1 La Division de Mouaddib . . . . . . .7. . . . . . . . . . . 82 3. . . . . 81 3. .7. . . . . . . 78 3. . . . . . . . . . . . . . . . . . . . . . . . . 75 3. .2 La Division de Umano/Fukami . . .7.1 Analisis de la Propuesta . . . . . . . . . .

7.1 Analisis de la Propuesta . . . . . . . . . 88 3. . . . . . . . .7. 91 3. . . . . 86 3. . . . . . . . . . . . . . . . . .1 Analisis de la Propuesta . . . . 93 3.1 Analisis de la Propuesta . . . . . . . . . . . . . . . . . .7. . . . . 83 3. . .7. . . .3. .1. . . . . . . . . . . . . 98 4. . . . . . . . .5. . . . . . . . . . . . . . . . .4. .5 La Division de Vila et al. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3. segun Bosc et al. . . . . .8 Conclusiones y Lneas Futuras sobre la Division Difusa .1 De.cados. . . .1 Calculo Relacional Difuso de Dominios . . . . . . . . . . . . . . . . . . . . . . .4 La Division de Yager . . . . . .7. . . . . . . . . . . . 95 4 Calculo Relacional Difuso 97 4. . .

. .1. . 98 4. . . 101 .1. . . . . .2 Formulas Bien Formadas con A tomos Difusos: WFF (Well Formed Formulas ) . . . . . . . . . . . . . . .1. . . . . . .nicion de las Expresiones del Calculo Difuso de Dominios .1. . . . .1 A tomos Difusos . . 98 4. . . . . . . . . . . . . . . . .

. . . . . .2 Operadores No Primitivos del A lgebra .3. . . 104 4. . . . . . . . . . . . . . . . . 108 4. . . . . . . . . . . . . . . . .2 Restriccion del Calculo Relacional Difuso para Producir Relaciones Fi- nitas . . .2. . . . . .4 Ejemplos de Consultas en Calculo Relacional Difuso . . . . .2 Relacion Difusa Generalizada Resultante . . . . . . . . . . . . 106 4. . . . . . . . . . . . . . . . 104 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .INDICE GENERAL III 4. . . . . . . . 116 4. . . . .2. . . . . . . . . . . 103 4. . .3 Calculo de la Relacion Difusa Resultante . . .3 Traduccion de A lgebra Relacional Difuso a Calculo Relacional Difuso de Dominios . . . .1. . . . . . . . . . . . . . . . . . . .3. . 115 4. . . . . 108 4. . . . . . .2. 109 4. .1 Grado de una variable en una WFF con una sustitucion . . . . . . . .1 Operadores Primitivos del A lgebra .5 Cuanti.2 Capacidad Expresiva del Calculo Relacional Difuso . . . . .

.1 Implementacion de la BDRD: FIRST . . . . . . . . . . . . .2 Representacion del Conocimiento Impreciso . . 139 5. . . . . . . 134 5.1 Representacion de los Datos Difusos y/o con Tratamiento Difuso136 5. . . . . . . . . . . .2. . . . 129 4. . . . . . . 136 5. . . 131 4. . . .1. . . . . . . 134 5. . . 132 5 Arquitectura de la BDRD: El Servidor FSQL 133 5. . . . . . .6 Estudio Comparativo con otras Propuestas . .1. . . .cadores Difusos en el Calculo Relacional Difuso . . .2 Comparadores Difusos Generalizados . . .2. . . .1. . .2. . . . . . .1 Esquema General de FIRST . . . . . . . . .7 Conclusiones y Lneas Futuras sobre el Calculo Relacional Difuso . . . . . . .1. . . . . . . . .3 Umbral de Cumplimiento de una Condicion Difusa: Cuali. . . . . .1. .

. .4 Representacion de Cuanti. . . . . . . . . . . . . . . . . . 140 5. .1. . .2. . .- cadores . . . . . .

. . . .3 Implementacion de FIRST en Oracle . . . . . . . 140 5. . 141 5. . . . .3. . .1 Representacion del Conocimiento Impreciso en la Base de Da- tos Oracle . . Base de Metaconocimiento Difuso): De. . . .cadores Difusos de la Consulta .1. . . . . . . . . .1. . . . .2 FMB (Fuzzy Metaknowledge Base. . . . . . . .3.1. . . 140 5. . . . .

160 5. . . . . . 160 5.3.4 Ejemplo de Implementacion en FIRST de la BD y la FMB . 167 5. . . . 161 5. . . . . . . .2. 154 5. . . . . . . . .3 Cuanti. . .1 Novedades en el SELECT Difuso . .2.2. 144 5. . . . . .1.3. . . . . . .nicion de Tablas . . . . . . 153 5. . .1. . . .3 Resumen del Contenido de la FMB . . .1. . . . . . . . . . . . . . . . .2 Otros Comandos: INSERT. . . . .1 El DML de FSQL: SELECT. . . . . . .1. . . . .4 Vistas sobre la FMB . INSERT. . .2. . 152 5. . . . . . . . . . . . . .1. . . . .1. . DELETE y UPDATE . DELETE y UPDATE . . .2 Sintaxis y Semantica del Lenguaje FSQL . . . . . . .

2. 167 5. . . . . . .4 De.1. . . . . . . . .cadores en FSQL . . . . . .

.nicion de los Comparadores Difusos de FSQL para Atri- butos Difusos Tipo 1 o 2 .1. . . . . . . . . . .5 Equivalencias entre Comparadores Difusos y Excepciones a sus De. . . . . 170 5. . . . .2.

. . . . .1. 178 5. . . .1. . . . . . . .6 Restrictividad de los Comparadores Difusos . .2. . .7 De. 176 5.niciones . . . . . . . . .2. . . . . . . .

. . . . . . . . .2. .1. . . . . . .1. . . . . .9 Comparacion de Valores Crisp Usando Comparadores Difusos 183 . . . 179 5. . . . . . . . . . Con y Sin Expre- siones Aritmeticas . . . . . . . . . . . . .8 Tipos de Condiciones Difusas Elementales. .2. . . . . . .nicion del Comparador Difuso FEQ para Atributos Difusos Tipo 3 . 178 5. .

. . . . . . 191 5. . . . . .1. . . . . . . . . . . . . . . . . . . . . . .4 Funcionamiento del Servidor FSQL . . 183 5. . . . . . . . . . .3. . . . .2. . . . . .2 El DDL de FSQL: CREATE.3. . .4. . . . . . . .3. . .2 Ejemplo de Creacion de una BDRD con Sentencias del DDL de FSQL . . . . .3 Arquitectura del Servidor FSQL . . . . . . .2. .1 Datos: Base de Datos Tradicional y FMB . 202 5. . . 197 5. . . . . . . .10 Ejemplos de Consultas en FSQL . . . . . . . . . . . . . . . 200 5. . 190 5. . . . . .2. . . . . . .2 Servidor FSQL . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . .4 El Servidor FSQL . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . 201 5. . . . . . . . . . .3 Cliente FSQL . . . . ALTER y DROP . . . . .IV INDICE GENERAL 5. .3. . . . . . . . 201 5. . . . . . .1 Comandos del DDL de FSQL . 199 5. 200 5. . . . . . . . . . . . . . . . . .1 Informacion y Opciones de Con.

. 227 5.6. . . . . .3 Fase de Tratamiento de la Funcion CDEG . . . .1 Objetivo y Funcionamiento . .4. . . . .4. . . 215 5. . . . . . . . . .3. . . . . . . . .3 Instalacion/Desinstalacion del Servidor FSQL . . . . . 229 6 El Cliente FSQL 231 6.1 Ejecucion de Sentencias FSQL . 212 5. . .5. .5. . . . . . . .2 Mejoras al Servidor FSQL . . . . . . . . . . . . . .5. . . . . . . . . . . . . . . . . . . .2 Analizador Sintactico . . . . . . 227 5. .5. . .2. . . 220 5. . . 209 5. . . . . . .1 Fase preliminar: Las Tablas. . . . . . . . .3 Analizador Semantico y Conversor . . . 219 5. . . . . . . . . . . . .4. . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Como Introducir Nuevos Comparadores Difusos en FSQL y su Servidor 225 5. . . . . . . . . . . .5. . . . .1 Analizador Lexico . . . . . . . 207 5. . . 220 5. . . . 209 5.2 Fase de Tratamiento de Atributos Difusos . . . . . . 231 6. 217 5. . . 206 5.5. . . . . . . . 233 6. . . .2 Funciones de Comparacion Difusa . . . . . . 233 6. . . . . . . . . . . . . . . . .3. . . . . . . . . .2 Estadsticas y Controles de Acceso del Servidor FSQL .2 Programacion de Clientes FSQL: Operaciones Basicas . . . . 218 5. . . . sus Alias y los Comodines .5. . . . . . . . . . . .4 Funciones de Representacion y Comparacion Difusa . .5 Implementacion del Servidor FSQL . . . . . . . . .4. . . . . .5.6 Mejoras Posibles al Sistema FSQL .1 Mejoras al Lenguaje FSQL . .guracion del Servidor FSQL . . .1 Funciones de Representacion . . . . . .5. . . . . . . . . . . . . 218 5.5. . . . 223 5. . . . . . . . . . . . . . . . . . . . . . . . .3. . 202 5. . .6. .4. . . .4 Instalacion/Desinstalacion de una Base de Datos de Ejemplo . . . . . .2 Ver las Etiquetas De. . . . .

. . . . . . . .2. .2. .3 Ver el MARGEN y la Distancia MUCH . . . 235 6. . . . . .2. . . .5 Ver si estan Instalados los Paquetes del Servidor FSQL .4 Ver Atributos Difusos Tipo 3 Compatibles y sus Longitudes . . 236 6. . . . . . .2. . .6 Ver Funciones que Aplica CDEG para los Operadores Logicos . 234 6. . .7 Acceso a Informacion sobre el Servidor FSQL. 236 6. . . . Estadsticas y otras Op- ciones de Con. .nidas para un Atributo Difuso . 236 6. . . . .2. . . . . . .

. . .3 Programacion de FQ. . 237 6. . . . . . . . . . . . . . . . . . . . . . . . . un Cliente FSQL . . . . . . . . . . . . . . . . . . . . . 240 . . . . . 237 6.guracion . . . . . . . . . . . . . . . . . . .4 Cliente FSQL Visual en Java . .

INDICE GENERAL V 7 Algunas Aplicaciones del lenguaje FSQL 243 7.1 Clasi.

. 243 7. . . .1. . . . . . . . . . . . . . . . . .cacion Difusa de Imagenes de una Base de Datos . . .2. . . . . . . .1. .1 La Curva de Curvaturas a la Escala Mas Signi. . . .1 Introduccion al Problema . . . . . . .2 Representacion de la Forma de un Objeto . . . . . . . . . .1. . . 244 7. 243 7.

. . . .cativa . . . . . 245 7. . 244 7. . . . . .4 Clasi.3 Deteccion de Caractersticas Propias . . .1.1. . . . . .

1 Clasi. . . . segun las Caractersticas de cada Imagen . . . . .4. 248 7. .1.cacion.

248 7. .2 Clasi. . .cacion de Figuras Geometricas .1. . .4. . . . . . . .

.3 Las Opciones de FQ . . . . .3 Gramatica del DELETE Difuso de FSQL . 283 B. . . . . . . . . . . 334 . . . . . . . . 255 7. . .5 Gramatica de las Sentencias del DDL de FSQL . . . . . . . . . . . . . . . . 258 7. . . 325 G Manual de Usuario de FQ (Fuzzy Queries) 331 G. . 285 C Errores Generados por el Servidor FSQL 297 D Funciones U tiles del Paquete FSQL PKG 311 E Ficheros Generados con este Trabajo 315 E. . . . . . . . . . . . . . . . . . 273 B. . . .2. .1 Gramatica del SELECT Difuso de FSQL . . . . . . . . . . . . . . . . . . . .2 DDL: Sentencias CREATE. . . . . . . . .2 Empezando con FQ . . . . .2. . 250 7.4 Gramatica del UPDATE Difuso de FSQL . . . . .1 Funcionamiento de DAPHNE . . . . . . . . . . .3 Ejemplos de Consultas Flexibles . . .2. . . 332 G. . . . . . . . . .1 DML: Consultas FSQL Traducidas por el Servidor FSQL . . . . . . . . . . . . . . . . . . . . . .1 Data Mining como A rea Independiente . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Objetivos Principales . . . . . . . . . .3. . . . . . . .4 Uso de FSQL para Clustering Difuso . . . . . . .3. . . .2 Tecnicas de Data Mining . . . . . . . . . . . . . . . . . 262 7. . . . . . 250 7. . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . .3 DAPHNE: Un Prototipo para Clustering Financiero .1 Instalacion de FQ . . . . . . . . . . . . . . . . . . . . .2. . . . . . .2 Discos de FQ: El Cliente FSQL . . . . ALTER y DROP de FSQL Traducidas a SQL . . . .5 Resultados Experimentales . . . . . . . . . . . . . . . .1 Disco del Servidor FSQL . . . . . . . . . . . . . . . . . . . . 252 7. . . . . 261 7.2 Gramatica del INSERT Difuso de FSQL . . . . . . . . . . . 315 F Ejemplos de Sentencias FSQL Traducidas a SQL 319 F. . . . . . . . . . . . 254 7. . . . . . . 319 F. . . .2. 332 G.3 Gestion de una Inmobiliaria Difusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .cacion de Figuras Complejas . 283 B. . . . . . . . .2 Atributos Difusos . . . 249 7. . 259 7. . . . . . . . 264 Conclusiones y Lneas Futuras 267 A Palabras Reservadas de FSQL 271 B Gramatica de FSQL 273 B. . . 263 7. . . .2 Data Mining con FSQL en un Entorno Financiero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 B. . . . . . . 315 E. . . . . . . . . . . . . . . . .

. . .4. . . . . . . . . . . . . . . . .3. . . . . . . . . . 346 G. . . . . . . . . . . . . . . . . . . . . 350 G. . . . . . . . . . . . . . . . . . . . . 341 G. .3. . . .1 Menu Archivo (File) . . . . . . . .6 Mejoras para Sucesivas Versiones . .5 Menu Opciones (Options) . . . . 351 H Glosario de Terminos y Siglas 353 Referencias Bibliogra. . . . . . . . . . .3. .3. . . . . . . . . . . . 335 G. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . .3. . . 347 G. . . . . . . . . . . . . . . . . . . . . . . .VI INDICE GENERAL G. . . . . . . . . . . . . . . . . .6 Menu Herramientas (Tools) . . . . . .5 Sobre los Tiempos de Traduccion y Recuperacion . . . . . . . 344 G. . . . . . . . . . . . .4 La Ventana de Resultados . . . . . . .4. . . . . . . . . . . . . . . . . . . .2 Submenu Opciones (Options) . . . .4 Menu Insertar (Insert) . . . . . . . . .2 Menu Edicion (Edit) . . . . . . . . . 344 G. . .1 Submenu Archivo (File) . . . . . . 334 G. . . . . . 345 G. .3.7 Menu Ayuda (Help) . . . . . .3 Menu SGBD (DBMS) . . 343 G. . . . . . . . . . . 334 G. . . . . . . .

. . . . . . . . . . . . . . . . . . . . . 379 . . . . . . . . . . . . . . . . . . . . . . . . . . . .cas 359 Marcas Registradas 371 Indices 373 Indice de Tablas . . . . . . . . . . . 377 Indice de Materias . . . . . . . 373 Indice de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A todos ellos quiero expresar mi agradecimiento mas sincero y \crisp". de alguna forma.Agradecimientos y Dedicatorias No han sido pocos los que. me gustara nombrar a algunos para agradecerles explcitamente su colaboracion y apoyo: A todos los miembros en general del grupo de trabajo en \Razonamiento Aproximado e Inteligencia Arti. han colaborado a que pueda terminar este trabajo. Aun pudiendo caer en el error de olvidar a alguien.

cial" del Departamento de Ciencias de la Computacion e Inteligencia Arti.

Antonio Caba y Jose Andres Carreras. a quien. mi sobrino Carlos. mas limpio y lleno de vida. por supuesto. y no por nosotros. Carmen Aran- da y. debemos luchar todos para conseguirles un mundo mas justo.2). 1 . y a la \Caja General de Ahorros de Granada" por su colaboracion en el trabajo sobre Data Mining y FSQL (apartado 7. mi mujer M. a traves del proyecto TIC97-0931. al Gobierno Espa~nol. mis suegros y cu~nados. En general. a la Universidad de Malaga y en particular a los miembros del Departamento de Lenguajes y Ciencias de la Computacion. a Ramon Alberto Carrasco.cial de la Universidad de Granada y en particular a Juan Miguel Medina y Amparo Vila. mi abuela Esperanza. me gustara dedicar este trabajo a los ni~nos y ni~nas del mundo. Tambien quiero dedicar este trabajo y agradecer el apoyo de mis padres y hermanas. mi hija Patricia. ademas de agradecer su increble capacidad comprensiva tambien quiero dedicarle este trabajo muy especialmente. pues ellos son el presente y el futuro y por ellos.

2 AGRADECIMIENTOS Y DEDICATORIAS .

1 Motivacion y Objetivos La evolucion de las bases de datos comenzo con el uso. de forma elemental.Captulo 1 Introduccion: Bases de Datos y Teora de Conjuntos Difusos 1. de .

cheros secuen- ciales. Con el tiempo. se fueron creando aplicaciones para estos .

cheros y fueron surgiendo diversos problemas. como son la e.

tipos de datos. teniendo en cuenta los aspectos y problemas que esto plantea. describiendo las entidades.ciencia en la recuperacion de informacion. Estos tres niveles son muy importantes en todos los SGBD. datos numericos (basicamente naturales. As. El nivel externo es el mas cercano al usuario y se encarga de describir una parte de la base de datos para un usuario o grupo de usuarios particular. El nivel interno es el mas cercano a la parte fsica del SGBD. como programas encargados de gestionar el almacenamien- to y recuperacion de la informacion. Originariamente. La arquitectura ANSI/SPARC data de 1978 y en ella se propone la division de un SGBD en tres niveles: El nivel interno. escondiendo el resto de la base de datos y evitando el acceso de los usuarios a informacion privada.. enteros y reales con distinta precision). nacieron los primeros Sistemas Gestores de Bases de Datos (SGBD o DBMS. la redundancia. operaciones basicas y restricciones de la base de datos global. por ejemplo. seguridad. datos alfanumericos (cadenas de caracteres de distinta longitud) y datos binarios (como . DataBase Management Systems ). el nivel conceptual permite la utilizacion de tipos de datos elementales a los que llamaremos \crisp" (en contraposicion a los tipos difusos que veremos mas adelante). el nivel conceptual y el nivel externo. Estos tipos de datos son. El nivel conceptual se encarga de organizar las relaciones existentes entre los datos.. y se encarga de como y donde son almacenados fsicamente los datos. pero quizas el mas relevante de ellos sea el nivel conceptual. atributos. relaciones.

). modi. Ademas. por ejemplo.cheros de imagenes.. sonido. insertar. un SGBD debe incorporar un conjunto de operaciones basicas sobre la base de datos para..

Por ejemplo. borrar o consultar informacion. se pueden efectuar preguntas del tipo \dame las personas que tienen mas de 17 a~nos y menos de 25". las mas importantes y usuales seran aquellas destinadas a la consulta de informacion.car. Por conceptos o 3 . De estas. Las bases de datos tradicionales o clasicas no permiten el almacenamiento de concep- tos \difusos" que los humanos manejamos de forma cotidiana y natural.

1. de compatibilidad o nivel de satisfaccion. como son \dame las personas que son jovenes" o \cuya edad es cercana a \joven". incluyendo la consulta difusa en bases de datos clasicas.2. Es decir. pero esto. Es decir. en bases de datos difusas podemos efectuar consultas exibles y muy expresi- vas estableciendo umbrales de cumplimiento para las condiciones difusas. El Servidor FSQL permite . pero no la informacion que esta expresa. que nos parece de vital importancia en estas: Cada elemento resultante de una consulta difusa debera ser recuperado junto con un grado que indique el nivel con el que dicho elemento ha satisfecho la condicion difusa impuesta en la consulta. podemos almacenar la palabra \joven". Por ejemplo.3). Este grado de cumplimiento suele ser un valor real entre 0 (condicion no satisfecha en absoluto) y 1 (condicion totalmente satisfecha).7.6). otro tipo de consultas son tambien imposibles de efectuar en bases de datos clasicas.75". \dame las personas jovenes con grado mnimo 0. como \dame las personas que tienen entre 17 y 25 a~nos". En bases de datos tradicionales se podra almacenar la etiqueta \joven" como de forma textual (dato alfanumerico). pero no indica explcitamente su edad exacta. Tambien presentamos el Servidor FSQL. Por el contrario. nos centraremos en estudiar la operacion de la division relacional en bases de datos difusas y la creacion de un lenguaje de consulta difuso basado en el calculo relacional. A este grado lo llamaremos grado de cumpli- miento. De este modo. Ademas. Principalmente. en lo posible. Con esa consulta. pues es una ventaja importante con respecto a las bases de datos clasicas.7) como una sntesis de los modelos mas relevantes publicados en la literatura. sin informacion difusa. As pues. la pregunta \dame las personas jovenes" en una base de datos clasica sera traducida. Las bases de datos difusas unieron la teora de bases de datos. El grado de cumplimiento es fundamental. por ejemplo. que es un prototipo multiusuario de bases de datos difusas construido sobre el SGBD Oracle (apartado 1. Ligado a esto han surgido propuestas en multitud de sentidos. ademas de complicar el almacenamiento de edades numericas normales. Queremos hacer hincapie en un aspecto de las bases de datos difusas. Algunos ejemplos de esas propuestas seran expuestas en el Captulo 2 y en el apartado 3. cuestiones como \dame las personas que tienen menos de 40 a~nos" no se podran resolver. En este trabajo pretendemos estudiar tales problemas y plantear soluciones para eliminarlos o para evitar. nos imposibilita el tratamiento apropiado de esta informacion. Por ejemplo. a la consulta \dame las personas jovenes" una base de datos difusa respondera recuperando cada persona con un grado de cumplimiento indicando en que medida cada persona es \joven". pues habra que comparar el numero 40 con la cadena de caracteres \joven". por ejemplo. principalmente del mo- delo relacional (apartado 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS informacion \difusa" (o fuzzy ) entendemos informacion que encierra alguna imprecision o in- certidumbre. Sin embargo. el uso de informacion difusa hace surgir nu- merosos problemas que no se plantean con informacion \crisp". destacando el Modelo GEFRED (apartado 2. por supuesto) y el tratamiento y consulta de esta informacion de forma difusa o exible.4 CAPITULO 1. una persona con 16 o 26 a~nos es tambien \joven" en algun nivel. Aunque a primera vista pueda no parecerlo. basicamente dos objetivos: El almacenamiento de informacion difusa (ademas de informacion no difusa o \crisp". podemos obtener como resultado de la consulta anterior la relacion de la Tabla 1. el concepto de persona \joven" indica claramente que la persona no tiene 80 a~nos. sus efectos. una base de datos clasica recupera exclusivamente las personas que tienen una edad entre 17 y 25 a~nos y no recuperara una persona que tenga 16 o 26 a~nos. para permitir.2) con la teora de conjuntos difusos (apartado 1. como por ejemplo.

1 Matusalen 969 0. 33 0.1: Resultado de ejemplo de la consulta difusa \dame las personas jovenes".1. el almacenamiento de informacion difusa y su tratamiento a traves de otro lenguaje especial para manejo y de.5 Zutano Aprox.7 Benito Maduro 0. MOTIVACION 5 Grado de Nombre Edad Cumplimiento Fulano 23 1. Tabla 1.8 Juanito 13 0. 5.0  Matusalen o Matusalem fue un Patriarca bblico antediluviano (Gen. 21{27) al que la Biblia le computa 969 a~nos.0 Mengano Joven 1.  Y OBJETIVOS 1.0 Pepe 28 0.

Se incluye una vision general de las diferentes caractersticas que distinguen los distintos modelos de Bases de Datos Relacionales Difusas (BDRD).  Captulo 2: Se introducen los principales modelos publicados para dar solucion al tratamiento de informacion \imprecisa" en bases de datos relacionales.2.  Captulo 3: Se de.nicion de informacion difusa. especialmente aquellos que utilizan la teora de Conjuntos Difusos. Por supuesto. sobre el que esta construido todo este trabajo. Se incluyen una introduccion a los conceptos de Bases de Datos Relacionales y de la Teora de Conjuntos Difusos. nos centramos en el modelo GEFRED. En particular. el FSQL (Fuzzy SQL). que es una extension del popular lenguaje SQL (apartado 1.1 Descripcion por Captulos De una forma rapida y general. podemos describir el contenido de esta memoria explicando brevemente el contenido de los captulos:  Captulo 1: Se da una introduccion general y se plantean los objetivos de este trabajo.5). este lenguaje permite recuperar los grados de cumplimiento.1. 1. los cuales seran utilizados a lo largo de esta memoria.

ne el operador Division Relacional del A lgebra Relacional. se de. pero para trabajar con Bases de Datos Relacionales Difusas (BDRD). Para ello.

nen dos nuevos operadores con utilidad por s mismos. Al .

nal se incluye un analisis comparativo con otros modelos de Division Relacional Difusa.  Captulo 4: Se de.

 Captulo 5: Este captulo trata sobre como se ha implementado el Servidor FSQL. Para ello. primero se de.ne un Calculo Relacional de Dominios para una BDRD. as como un mecanismo para calcular para cada tupla los grados de cumplimiento de las condiciones impuestas en la formula bien formada de la expresion.

nen dos conceptos que seran utilizados en esta implementacion: Una arquitectura para una BDRD basada en Oracle y un lenguaje de consulta y de.

Se incluye una descripcion detallada de las caractersticas del Servidor FSQL y de su implementacion.nicion de datos para BDRD basado en SQL. . el lenguaje FSQL.

 Apendices: En los apendices se incluye informacion general. as como una serie de operaciones utiles en estos programas. en Java para que pueda ser ejecutado a traves de Internet. adicional o de consulta que puede ser util para el entendimiento de algunos apartados espec. un Cliente FSQL creado para este trabajo. que son utilizados como interfaz entre el usuario y el Servidor FSQL del captulo anterior. En este captulo exponemos algunas de las aplicaciones practicas que hemos estudiado y en algunos casos implementado.  Captulo 7: De poco o nada servira todo este trabajo si no tuviera aplicaciones practicas. Se incluye una breve referencia a como esta implementado el programa FQ. se explica el funcionamiento de la comunicacion entre Cliente y Servidor FSQL y como programar un Cliente FSQL. y el proyecto de creacion de un cliente FSQL Visual. Ademas.6 CAPITULO 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS  Captulo 6: En este captulo se explican los objetivos y caractersticas basicas de los programas Cliente FSQL.

la gramatica empleada por del Servidor FSQL de consultas difusas (sentencia SELECT). las gramaticas para otras sentencias del DML de FSQL y la gramatica para sentencias del DDL de FSQL. su signi.cos: A Lista con las Palabras Reservadas de FSQL que utiliza el Servidor FSQL. B Se incluyen. en formato Yacc. C Lista con todos los posibles mensajes de error que puede detectar el Servidor FSQL.

cado y algunas pautas para subsanarlos. incluido con el Servidor FSQL. D Descripcion de las funciones que pueden utilizarse del paquete FSQL PKG. E Descripcion del contenido y utilidad de todos los discos y .

Esta memoria se cierra con una lista de las referencias bibliogra. G Manual de usuario de FQ. H Glosario en el que se explican brevemente algunos terminos y siglas empleados en esta memoria y que puede resultar util consultar en cualquier momento. el Cliente FSQL creado para esta memoria y que en el Captulo 6 se explica como fue programado.cheros generados en este trabajo. F Lista de ejemplos de sentencias de FSQL traducidas a SQL.

ndices de tablas y .cas utilizadas. una lista de las marcas registradas que se mencionan en esta memoria.

guras aparecidas en el texto y un ndice de materias para facilitar la localizacion (por paginas) de algunos conceptos concretos o las referencias a los autores mas relevantes (buscar por \Autores").2 Modelo Relacional de Bases de Datos En esta seccion intentaremos dar una vision general de lo que son las bases de datos en general y el Modelo Relacional en particular. 1. No pretendemos dar una explicacion exhaustiva de su de.

86. 132.nicion ni de sus caractersticas pues ya existen en la bibliografa multitud de libros sobre el tema con distintos enfoques [51. . 141].

Los datos de una base de datos no deben tener redundancias (un mismo dato no debe estar almacenado en distintos lugares) y pueden ser compartidos por varios usuarios del SGBD. El SGBD maneja las solicitudes de acceso a la base de datos por parte de los usuarios. Ademas. normalmente en dispositivos electronicos de un ordenador.2. y que son gestionados (para lectura y/o escritura) por un programa llamado Sistema Gestor de Bases de Datos (SGBD). el SGBD se encarga de tareas como la privacidad de los datos y la e.1. ocultando a estos detalles sobre el hardware donde los datos estan almacenados. MODELO RELACIONAL DE BASES DE DATOS 7 Entenderemos por Base de Datos un repositorio o conjunto de datos almacenados.

donde los datos inferiores dependen o estan incluidos en los datos superiores. Los modelos de bases de datos que mas se generalizaron fueron: 1. Modelo relacional: En este modelo todos los datos son vistos en forma de tabla o relacion. pero sin limitacion en cuanto a su organizacion.ciencia en su acceso. Modelo jerarquico: Los datos se representan por una estructura en arbol. Es el mas extendido por su facilidad de comprension y lo veremos mas en profundidad a continuacion. Su limitacion radica en el hecho de que solo permite representar directamente relaciones de uno a muchos. 3. permite modelar mejor una correspondencia de muchos a muchos. en un intento de simpli. As. Modelo en red: Los datos se pueden ver como en el modelo jerarquico. Codd de IBM en 1970 y publicado en [41]. El Modelo relacional de bases de datos fue propuesto por Dr. En todas las bases de datos se almacena informacion sobre determinadas entidades u objetos y sobre las relaciones existentes entre algunas de estas entidades. usandose en multitud de peque~nas y medianas empresas y no solo en las grandes. E.F. de forma que los datos inferiores pueden estar tambien relacionados con varios de los superiores. 2. La gestion de bases de datos se empezo a hacer popular en los a~nos 1970s y 1980s y hoy da su uso esta ampliamente extendido.

aunque muchos de los sistemas que se llamaban relacionales no lo eran realmente. Codd publico una lista de 12 reglas que deberan cumplir todos los SGBD Relacionales [45]. Pronto. que llegaba a ser demasiado compleja en otros modelos. el modelo relacional se popularizo. Por eso. De.car la estructura de la base de datos.

tu Esta de. El SGBD Relacionales (SGBDR) es un SGBD que trabaja sobre este tipo de bases de datos.nicion 1.1 Llamaremos Base de Datos Relacional (BDR) a aquella base de datos donde todos los datos visibles al usuario estan organizados estrictamente como tablas (o rela- ciones) de datos y donde todas las operaciones de la base de datos trabajan sobre estas tablas y/o producen nuevas tablas.

junto con las caractersticas basicas de toda base de datos. nos lleva a tener que de.nicion.

De. 3. Integridad de los datos: Claves primarias. Estructuras de datos empleadas: Las tablas o relaciones.nir los siguientes apartados: 1. 2. candidatas y externas.

nicion de los datos: Lenguajes (DDL) basicamente para la creacion. Manipulacion de los datos: Lenguajes (DML) basicamente para la consulta. 4. borrado y alteracion de la estructura de las tablas y objetos de la base de datos relacional. modi- .

.cacion e insercion de datos.

1 Estructuras de Datos: Tablas o Relaciones La estructura de los datos viene caracterizada por el concepto de tabla o relacion.2.8 CAPITULO 1. Para precisar dicho concepto es necesaria la de. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS 1.

nicion previa de algunos conceptos: De.

nicion 1. para reconocer a dicha entidad u objeto. Column) a cada una de las caractersticas importantes y variables que tiene cualquier tipo de entidad u objeto y que son almacenadas en una base de datos. deseamos almacenar en nuestra base de datos. por tanto. pero solo trataremos aquellos que realmente nos interesan y que.2 Llamaremos Atributo. Campo o Columna (Attribute. tu De. No nos importara que dicha entidad tenga otros atributos.

3 Llamaremos Dominio (Domain) al conjunto de todos los valores posibles que puede tomar un atributo. Por tanto.nicion 1. todos los atributos tendran un dominio asociado. tu Una caracterstica inicial que se le exiga a los valores del dominio era la atomicidad. en el sentido de que no exista una descomposicion de los mismos que aporte signi.

y actualmente se encuentran en la literatura muchas matizaciones de la misma. No obstante esta premisa se ha relajado con la evolucion del modelo.cado. Un dominio puede llevar asociado un conjunto de operadores espec.

De. el dominio de los numeros enteros tiene operadores como la suma y la resta. Por ejemplo.cos del mismo.

tu De.4 Llamaremos Tupla al conjunto de todos los valores concretos de todos los atributos de una determinada entidad u objeto.nicion 1.

nicion 1.5 Llamaremos Valor de Dominio a un valor concreto de una tupla. O sea es el valor para un atributo concreto de una entidad concreta. tu Con estos conceptos podemos de.

nir lo que es una relacion: De.

nicion 1. Table) a el conjunto de dos par- tes.6 Llamaremos Relacion o Tabla (Relation. cabecera y cuerpo:  La cabecera consiste en un conjunto .

:::. :::. siendo m el numero de tuplas que contiene el conjunto. (A2 : D2 ). 2. :::. (An : vin)g con i = 1. f(A1 : D1 ).  El cuerpo consta de un conjunto de tuplas. Para cada atributo Aj existe un par atributo-valor (Aj : vij ) donde vij es el Valor de Dominio del atributo Aj perteneciente al dominio Dj de la entidad o tupla i-esima. n. donde cada tupla consiste en un conjunto de n pares atributo-valor. f(A1 : vi1).jo de n pares atributo-dominio. m. (An : Dn)g donde cada atributo Aj se corresponde exactamente con el dominio subyacente Dj con j = 1. . siendo estos dominios no necesariamente distintos. (A2 : vi2). 2. :::.

respectivamen- te. Cada relacion tiene un nombre que identi. Mientras que el grado se mantiene constante en el tiempo para una relacion. la cardinalidad puede variar en una misma relacion con el tiempo.1.2. MODELO RELACIONAL DE BASES DE DATOS 9 Los valores m y n se denominan cardinalidad y grado de la relacion.

tu Otras de.ca a todo su contenido y que sera usado para expresar las operaciones que se realicen sobre la relacion.

niciones utiles para expresar las restricciones de integridad son: De.

nicion 1.7 Llamaremos Clave o Llave Primaria (Primary Key) al conjunto de atri- butos que se usaran para identi.

quedando los restantes como Claves Al- ternativas o Claves Candidatas.car unvocamente cada tupla de una relacion. Este conjunto debe ser mnimo. pero solamente se seleccionara uno de estos como Clave Primaria. tu De. Pueden existir varios de estos conjuntos para una relacion dada. es decir. que no exista un subconjunto de el que pueda usarse con el mismo proposito.

tu De su de.8 Llamaremos Clave o Llave Externa (Foreign Key) al conjunto de atribu- tos de una relacion que son Clave primaria o candidata en otra relacion distinta y que pueden usarse para enlazar o relacionar los datos de ambas relaciones.nicion 1.

nicion se obtienen las siguientes propiedades para las relaciones:
1. No hay tuplas duplicadas1: Esto implica que siempre debera existir una clave primaria.
La necesidad de que exista una clave primaria para cada relacion estriba en que es la
unica forma de acceder de forma unvoca a cada tupla de la misma. A veces, la clave
primaria puede ser el conjunto de todos los atributos que forman la relacion.
2. Los atributos no estan ordenados. Esta propiedad proviene del hecho de que la cabecera
de una relacion es un conjunto matematico.
3. Las tuplas no se encuentran ordenadas. Tambien esta propiedad se apoya en que la
de

nicion del cuerpo de una relacion se corresponde con un conjunto matematico.
4. Los valores de los atributos son atomicos, en el sentido en el que apuntabamos cuando
introducamos el concepto de dominio. Una relacion que cumpla esta propiedad se dice
que esta NORMALIZADA. Aunque a primera vista esta propiedad pueda suponer una
fuerte restriccion a la representacion de imprecision, se pueden hacer lecturas de la
misma que posibiliten la representacion de este tipo de informacion sin ocasionar una
perdida de validez del modelo. En el Captulo 2 se prestara una atencion especial al
estudio del tratamiento que diferentes modelos proporcionan a esta propiedad.
1.2.2 Integridad de los Datos
Una base de datos consiste en una con

guracion de datos que se supone que representan
una porcion del mundo real. Ningun modelo de base de datos puede garantizar que esa
representacion se corresponda con la realidad en todo momento, esto supondra, entre otras
1 En algunas implementaciones particulares, se permiten que existan duplicados en la relacion resultante de
una consulta. En SQL, por ejemplo, se dispone de la palabra reservada DISTINCT para especi

car que no se
muestren las tuplas repetidas en la relacion resultante.

10 CAPITULO 1. INTRODUCCION:
 BASES DE DATOS Y CONJUNTOS DIFUSOS

cosas, que la base de datos tendra que poseer un conocimiento, no solo sobre los datos,
sino tambien sobre su signi

cado. Lo que s puede y debe hacer un SGBD es impedir que se
introduzca informacion que no pueda ser identi

cada, ni que se haga referencia en un lugar de
la base de datos a informacion que no exista en la misma. Estos son los enunciados informales
de las reglas de Identidad y Referencial respectivamente. En forma mas precisa pueden ser
formulados como sigue:
 Regla de Identidad: Ningun componente de la clave primaria de una relacion base
puede aceptar un valor nulo.
Donde nulo signi

ca que la informacion no se encuentra por alguna razon (como por ejemplo que la propiedad no sea aplicable o que el valor sea desconocido).3 De.2. 1.  Regla de Integridad Referencial: La base de datos no puede contener valores para la clave externa que no hallen correspondencia con los adoptados por la clave primaria de la relacion a la que hacen referencia.

nicion de los datos Los lenguajes de de.

nicion de datos o DDL (Data De.

modi.nition Language) permiten la creacion.

Estos objetos pueden ser de diversos tipos segun el SGBD y estan desde los basicos como los son tablas. hasta los mas so. vistas o ndices.cacion y eliminacion de objetos de la base de datos relacional.

5). clusters. del que hablaremos mas adelante (apartado 1. modi.2.sticados como son snapshots.. triggers. roles. sinonimos. Para esto existe un lenguaje ampliamente extendido en la actualidad: El lenguaje SQL (en su parte DDL). 1. procedimientos y funciones almacenadas. secuencias.4 Manipulacion de los Datos: A lgebra y Calculo Relacional Los lenguajes de manipulacion de datos o DML (Data Manipulation Language) permiten la consulta.2. paquetes de funciones y procedimientos..

Para tal . Para esto. Las consultas forman la parte mas importante de la manipulacion de datos pues en una base de datos hay informacion almacenada en distintas tablas y su objetivo es poder consultar toda esta informacion y la relacion que exista entre ella. del que hablaremos mas adelante. el lenguaje SQL (en su parte DML).cacion e insercion de datos. es tambien muy utilizado.

El A lgebra proporciona un conjunto de operadores mediante los cuales especi. Codd dise~no dos niveles de lenguajes formales para la Manipulacion de Datos: El Algebra Relacional y el Calculo Relacional. Estos dos lenguajes son la base de cualquier otro lenguaje y son mencionados y explicados ampliamente en la bibliografa. En [42].n puede ser util emplear varias relaciones en una misma consulta.

car la operacion a realizar sobre las tablas. mientras que el Calculo proporciona una sintaxis con la que expresar aquello que se desea obtener de las relaciones sin tener que especi.

car el mecanismo para obtenerlo. O sea. en el A lgebra hay que indicar como se recuperan los datos de nuestra consulta a traves de sus operadores y en el Calculo hay que indicar que datos queremos recuperar. sin especi.

De.car como hacerlo.

En [141] Ullman expone como pasar una expresion en algebra a otra en calculo de tuplas. como pasar una expresion en calculo de tuplas a otra en calculo de dominios y como pasar . 141]. en sus dos versiones Calculo de tuplas y Calculo de dominios. 51. pueden encontrarse en la bibliografa numerosas veces [17. 132.niciones del A lgebra y del Calculo Relacional.

MODELO RELACIONAL DE BASES DE DATOS 11 una expresion en calculo de dominios a otra en algebra. Diferencia y Pro- ducto Cartesiano.  Operadores tradicionales sobre conjuntos: Son Union. Existen tres tipos de operadores:  Operador de asignacion: Asigna el resultado de otras operaciones sobre relaciones a una nueva relacion. individualmente y combinandolos. 1.1.1 A lgebra Relacional Este lenguaje de consulta dispone de unos operadores que. es necesario que las relaciones sobre las que operan sean compatibles. Estos operadores actuan sobre relaciones existentes produciendo nuevas relaciones.2. demostrando la equivalencia total de estos lenguajes. en el sentido de que posean el mismo grado y de que esten de.2. Interseccion. A traves de este operador es posible conservar el resultado de otras operaciones anteriores. Salvo para el Producto Cartesiano. permiten expresar practicamente cualquier tipo de consulta a una base de datos clasica.4.

constantes de cualquier dominio. un subconjunto de tuplas que cumple una condicion. donde F es una formula o condicion que puede incluir atributos de la relacion R. Una proyeccion produce un sub- conjunto \vertical" de una relacion R. <.r2 . Lo notaremos como R [ S . Times ): El producto cartesiano de dos relaciones R y S consiste en todas las posibles combinaciones de pares de tuplas. . { Producto Cartesiano (Cartesian Product.rn (R). . Lo notaremos como R \ S . Proyeccion. donde los ri son atributos de la relacion R. comparadores aritmeticos (>. AND y OR). { Diferencia o Resta (Di erence ): La diferencia de dos relaciones R y S es el conjunto de tuplas que pertenecen a R y no pertenecen a S . Lo notaremos como F (R). = y 6=) y operadores logicos. Lo notaremos como R  S . { Interseccion (Intersection ): La interseccion de dos relaciones R y S da como resultado el conjunto de aquellas tuplas que pertenecen a R y a S .nidas sobre el mismo producto cartesiano de dominios. . Lo notaremos como R S. Una condicion atomica o simple esta formada por una sola comparacion. mientras que en el segundo caso se trata de un conjunto de condiciones atomicas combinadas mediante el uso de operadores logicos (NOT. una de cada relacion. { Proyeccion (Projection ): Con esta operacion podemos eliminar de una relacion los atributos que no nos interesen en cada momento.  Operaciones especiales: Son Seleccion. proyectando la relacion en cuestion sobre los atributos que s nos interesen. Esta condicion puede ser: atomica o compuesta. a la relacion S o a ambas relaciones.:::. { Seleccion (Selection ): Este operador extrae de una relacion R. { Union (Union ): La union de dos relaciones R y S es el conjunto de aquellas tuplas que pertenecen a la relacion R. Reunion y Division. Lo notaremos como r1 .

s es un atributo de S y  es un comparador aritmetico que da nombre a la operacion: -Reunion. una a la relacion R y la otra a la relacion S . En el caso de que la condicion sea la igualdad \=" entre algunos atributos de R y S . { Reunion Natural (Natural Join ): Es una reunion en la que la condicion es la igualdad pero entre todos los atributos de R con igual nombre que los de S y por tanto. se hablara de Equi-Reunion. pertenecientes. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS { Reunion (Join ): Mediante este operador. se construye una relacion compuesta de todas las posibles combinaciones de pares de tuplas concatenadas. en el resultado .12 CAPITULO 1. donde r es un atributo de R. a partir de dos relaciones R y S . tales que las tuplas que componen el par satisfacen una condicion comun. Se notara como R 1rs S .

Se notara como R 1 S . B ) y una relacion S con cabecera (B ). ya que son iguales. donde A y B son atributos simples o conjuntos de atributos.nal solo aparecera uno de los dos (o el atributo de R o el de S ). Quotient ): Dada una relacion R con la cabecera (A. { Division (Division. se de.

B : b) en R para cada tupla (B : b) que aparece en S . diremos que las tuplas de la relacion Q cumplen los requisitos de la division R  S . que se notara como R  S . se generaliza la de. Tanto la relacion R como la S pueden ser relaciones base de la Base de Datos o pueden ser el resultado de cualquier tipo de operacion algebraica.ne la Division Relacional de R entre S . A veces. Entonces. a una relacion Q con cabecera (A) y cuyo cuerpo esta constituido por todas las tuplas (A : a) tales que existe una tupla (A : a.

C : c) que aparecen en S . C ) el resultado seran las tuplas (A : a. En ese caso. Diferencia. En realidad los unicos operadores del A lgebra que son realmente imprescindibles son los llamados operadores primitivos: Union.2)  Reunion Natural: Es como una proyeccion sobre una seleccion sobre el producto cartesiano entre R y S .1)  Reunion: La operacion de Reunion es como una seleccion sobre el producto cartesiano entre R y S : R 1rs S = rs(R  S ) (1. extendiendo la division y considerando el caso en el que la relacion S tenga tambien atributos no comunes con la relacion R. C : c) tales que existe una tupla (A : a. El resultado es equivalente a hacer la division de R entre la proyeccion de R0 sobre B y posteriormente hacer el producto cartesiano entre la relacion resultante y la proyeccion de S sobre C . El resto pueden ponerse en funcion de los anteriores:  Interseccion: R \ S = R (R S ) (1. Proyeccion y Seleccion. B : b) en R por todas las tuplas (B : b.nicion anterior. Producto Cartesiano. R 1 S = d R:a=S:a (R  S ) (1. si la cabecera de S la representamos como (B.3) donde: .

R:a y S:a son todos los atributos de R y S respectivamente que se llaman igual en ambas relaciones. tenemos que la division relacional tiene su equivalencia en operadores primitivos en lo que llamaremos formula clasica de la division relacional : R  S = A (R) A((A (R)  S ) R) (1. Esta idea de usar el calculo de predicados como base de un lenguaje de consulta parece haberse originado en un artculo de Kuhns [94].2 Calculo Relacional El Calculo Relacional usa el calculo de predicados de primer orden.1.4) 1.2. como hemos dicho.2. Segun el esquema anterior. aunque aplicado a Bases de Datos Relacionales fue propuesto en su forma original en [42]. Codd tambien introduce el concepto de completitud relacional: Se dice que un lenguaje es relacionalmente completo si posee la propiedad de que cualquier relacion (consulta) de. MODELO RELACIONAL DE BASES DE DATOS 13 d hace referencia a la union sin duplicados de los atributos de R y S .4. En ese artculo.  Division: La division es un poco mas compleja de expresar en funcion de los demas operadores.

que es una variable que toma los valores de las tuplas de alguna relacion o de la union de dos o mas relaciones. que es una variable que denota una tupla de longitud . presen- tado por Zloof en [173] y otros artculos. que varan sobre los dominios subyacentes de los atributos de las relaciones. En el artculo tambien describe el \algoritmo de reduccion de Codd" por el que se puede convertir una expresion arbitraria del Calculo en una expresion del A lgebra semanticamente equivalente. usado en el sistema INGRES [89]. Los mismos autores presentaron en [96] un lenguaje basado en este calculo. Una expresion en el Calculo Relacional Orientado a Tuplas toma la siguiente forma: ft j (t)g donde t es una variable tupla. en donde las variables de tupla se sustituyen por variables de dominio. tambien se puede considerar como una realizacion particular del calculo de dominios. Una implementacion del calculo de tuplas fue el lenguaje QUEL. En 1977. es decir. mucho mas formal que el ILL. una variable tupla tiene como unicos valores permitidos las tuplas de una unica relacion o de una union. El lenguaje SQL incorpora tambien elementos del calculo (ver apartado 1. el calculo de dominios. Lacroix y Pirotte propusieron en [95] un calculo relacional alternativo.5). El Calculo de Codd se conoce como calculo de tuplas porque se basa en el concepto de variable de tupla.nible por medio de las expresiones del calculo se puede recuperar mediante proposiciones pertinentes de ese lenguaje. el ILL. Pirotte y Wodon presentaron en [126] el lenguaje FQL. Query By Example (QBE). mostrando as la completitud del A lgebra relacional y dando una posible forma de realizar el Calculo.2.

ja. con unos dominios .

Notaremos como t[i] al i-esimo atributo de la tupla t o como t:nombre al atributo cuyo nombre es puesto tras el punto. .jos en sus atributos. A veces puede ser util indicar que t tiene n atributos. para lo que usaremos la siguiente notacion: t(n) .

Este atomo expresa la a. Pertenencia: R(t). que describimos a continuacion Un atomo puede ser de dos formas: 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS es una formula construida por atomos y operadores.14 CAPITULO 1. donde R es una relacion y t una variable tupla.

rmacion de que t pertenece a R. Esta a.

logicamente. que t tiene los dominios de R. 2. donde  es un comparador aritmetico y x e y son constantes o atributos particulares de una variable tupla.rmacion expresa tambien. Comparacion: xy. Este atomo expresa la a.

de.rmacion de que x se relaciona con y mediante . A continuacion.

nimos los operadores validos y lo que son ocurrencias de variables libres y ligadas. a la vez que de.

nimos el concepto de Formula Bien Formada o WFF
(Well Formed Formula). Una WFF esta de

nida de la siguiente forma:
1. Un atomo es una WFF. Todas sus ocurrencias de variables de dominio son libres.
2. Si es una WFF, tambien lo es : (NOT ). La formula : sostiene que es falsa.
Las ocurrencias de variables de dominio en : son libres o ligadas segun esten en .
3. Si 1 y 2 son WFF, tambien lo son 1 _ 2 ( 1 OR 2 ) y 1 ^ 2 ( 1 AND 2 ). La
formula 1 _ 2 sostiene que es cierta 1 o es cierta 2 o lo son ambas, y la formula
1 ^ 2 sostiene que 1 y 2 son ambas ciertas. Las ocurrencias de variables de dominio
en 1 _ 2 y 1 ^ 2 son libres o ligadas segun esten en 1 y 2 .
4. Si 1 y 2 son WFF, tambien lo es 1 ! 2 (IF 1 THEN 2 ), indicando que si 1 es
cierta tambien lo es 2 . Las ocurrencias de variables de dominio en 1 ! 2 son libres
o ligadas segun esten en 1 y 2 .
5. Si es una WFF y x es una variable de dominio que aparece como libre en , entonces,
9x( ) y 8x( ), son tambien WFF siendo las ocurrencias de x ligadas en esas dos ultimas
WFF. La formula 9x( ) sostiene que existe un valor de x tal que cuando sustituimos
este valor en todas las ocurrencias libres de x en , la formula se hace cierta. La
formula 8x( ) sostiene que para cualquier valor de x, si sustituimos ese valor en todas
las ocurrencias libres de x en , la formula se hace cierta.
6. Si es una WFF, tambien lo es ( ).
7. Nada mas es una WFF.
Los parentesis pueden situarse cuando sean necesarios para alterar la precedencia de los
operadores o para aclarar el orden de evaluacion de estos. Normalmente se supone que el orden
de precedencia es el siguiente: A tomos, cuanti

cadores (9 y 8), negacion (:), conjuncion (^),
disyuncion (_) e implicacion (!), en ese orden. Igualmente, se pueden introducir tambien
otros operadores logicos como XOR (eXclusive OR), NOR (NOT OR), NAND (NOT AND)...
Ejemplo 1.1 Sea R una relacion con los alumnos de una determinada asignatura y su nota.
La consulta \dame los nombres de los alumnos que han obtenido una nota superior a 7", se
resolvera, en calculo de tuplas con la siguiente expresion:
ft(1) j 9u(R(u) ^ u:nota > 7 ^ u:nombre = t:nombreg
tu

1.2. MODELO RELACIONAL DE BASES DE DATOS 15

Los operadores del A lgebra Relacional pueden ser tambien expresados en Calculo Rela-
cional. Por ejemplo, los operadores primitivos del algebra seran expresados de la siguiente
forma en Calculo Relacional:
Ejemplo 1.2 La union de R y S se expresa en Calculo por la siguiente expresion:
ft j R(t) _ S (t)g
tu
Ejemplo 1.3 La interseccion de R y S se expresa en Calculo por la siguiente expresion:
ft j R(t) ^ S (t)g
tu
Ejemplo 1.4 La diferencia R S se expresa en Calculo por:
ft j R(t) ^ :S (t)g
tu
Ejemplo 1.5 La seleccion F (R) se expresa en Calculo por:
ft j R(t) ^ F 0g
donde F 0 es la misma formula F con cada atributo i, denotando la i-esima componente,
reemplazado por t[i]. tu
Ejemplo 1.6 El producto cartesiano de R y S , teniendo estas relaciones grados r y s res-
pectivamente, se expresa en Calculo por:
ft(r+s) j 9u(r); v(s) (R(u) ^ S (v)
^t[1] = u[1] ^ : : : ^ t[r] = u[r]
^t[r + 1] = v[1] ^ : : : ^ t[r + s] = v[s]g
Observe que igualamos los atributos de la tupla t con los de las tuplas u y v que existen en
R y S respectivamente. tu
Ejemplo 1.7 La proyeccion i1 ;:::;i (R) sobre n atributos de R se expresa en Calculo por:
n

ft(n) j 9u(R(u) ^ t[1] = u[i1 ] ^ : : : ^ t[n] = u[in ]g
tu
El Calculo Relacional Orientado a Dominios utiliza variables de dominio en vez de
variables tupla y esto hace que sea mas explcito, al manejar cada atributo independiente-
mente. Una expresion en Calculo de dominios tiene el siguiente formato:

fx1 ; x2; : : : ; xn j (x1 ; x2 ; : : : ; xn)g
Las principales diferencias con el Calculo de Tuplas son:

16 CAPITULO 1. INTRODUCCION:
 BASES DE DATOS Y CONJUNTOS DIFUSOS

1. Usa variables de dominio, en vez de variables de tupla. Una variable de dominio es
como los valores t[i] usados en el Calculo de tuplas. As, en la expresion, antes de la
formula hay que especi

car todas las variables de dominio que deseamos recuperar (los
xi ).
2. En los atomos de pertenencia hay que utilizar tantas variables de dominio como atributos
tenga la relacion.
3. En los atomos de comparacion x e y son constantes o variables de dominio.
4. Tras los cuanti

cadores (9 y 8), hay que indicar la variable de dominio que esta ligada.
5. El usuario percibe la base de datos como un conjunto de entidades (atributos) que estan
relacionados a traves de las relaciones. En cambio, en el calculo de tuplas las entidades
son las relaciones, las cuales tienen distintos atributos. Por eso el calculo de dominios
esta mas cerca del lenguaje natural.
En el Captulo 4 veremos mas detalles sobre el Calculo Relacional, en especial el de
Dominios, aplicado a BDRD y se explicara el concepto de expresiones \seguras" (\safe ") del
calculo relacional.
1.2.5 El Lenguaje SQL
El lenguaje SEQUEL (Structured English QUEry Language) fue desarrollado por Chamberlin
et al. [37, 38] en la segunda mitad de los a~nos 70 para manejar el modelo relacional de Codd
[41]. Con el tiempo este lenguaje llego a conocerse como SQL (Structured Query Language).
En 1979, Relational Software, Inc. (actualmente Oracle Corporation) introdujo el primer
sistema comercial que usaba SQL. Hoy da, SQL es el lenguaje aceptado como estandar para
los SGBDR y la bibliografa sobre el lenguaje SQL es muy extensa [26, 52, 86] y en todos se
explican los comandos basicos de este lenguaje en sus dos vertientes:
 DML (Data Manipulation Language, Lenguaje de Manipulacion de Datos): Las sen-
tencias de este lenguaje permiten la consulta y la modi

Ejemplos de comandos del DML SQL son: SELECT. DELETE y UPDATE que seran brevemente explicados a continuacion. INSERT.cacion de los datos almacenados en la base de datos.  DDL (Data De.

Lenguaje de De.nition Language.

nicion de Datos): Las sentencias de este lenguaje permiten la creacion y modi.

). Ejemplos de comandos del DDL SQL son: CREATE (para crear objetos de la base de datos: tablas. DROP (para borrar objetos)..cacion de las estructuras en las que se almacenaran los datos.. ALTER (para modi. vistas.

Al . Los objetos pueden ser. usuarios (objeto USER). sinonimos (objeto SYNONYM). vistas (objeto VIEW) ndices (objeto INDEX). tablas (objeto TABLE)..car objetos). ndices y control del al- macenamiento fsico de los datos.. y sentencias para controles de seguridad. por ejemplo.

2 Se ha utilizado el SQL de Oracle. A continuacion vamos a resumir la sintaxis de los comandos mas importantes del DML y del DDL de SQL2. que puede tener algunas diferencias con respecto al SQL estandar dependiente de la ANSI/ISO.nal de este apartado resumiremos el comando CREATE TABLE. .

GROUP BY <lista de expresiones> [HAVING <condici on>] para agrupar las tuplas resultantes segun el valor de la lista de expresiones que se indica y devolviendo una unica . funciones. Como expresiones pueden emplearse los nombres de atributos de alguna tabla.. IS y BETWEEN). separadas por comas. comparadores aritmeticos (>. valor por defecto) o descendente (DESC).5. indicando la expresion por la que ordenar o el numero de atributo de la <lista de seleccion>. . vistas. <condicion> es una condici on que puede incluir atributos de una relacion. El comando SELECT de SQL tiene el siguiente formato basico3 : SELECT <lista de selecci on> FROM <lista de tablas> [WHERE <condici on>] [<otras cl ausulas>] donde <lista de selecci on> es una lista de expresiones. IN.1. que incluyen todo lo que deseamos que aparezca en la relacion resultante de nuestra consulta. comparadores.1 Comando SELECT El comando mas importante es. las mas impor- tantes son: ORDER BY <expresiones o posiciones> [ASC|DESC] para ordenar la consulta por los campos de la misma que se indiquen a continuacion. <lista de tablas> es una lista con todas las tablas. otros comparadores (LIKE.2.). AND y OR). quizas. que pueden involucrar multitud de expresiones y objetos diferentes (tablas. Esta ordenacion puede ser ascendente (ASC. el de consulta. MODELO RELACIONAL DE BASES DE DATOS 17 1. operaciones aritmeticas. subconsultas. Entre estas clausulas. constantes de cualquier dominio. constantes. <. = y 6=). . ya que nos debe permitir expresar una gran cantidad de tipos de consultas. La relacion resultante incorporara todas las tuplas que cumplan esta condicion.. separadas por comas. Aqu deben aparecer las tablas de los atributos que sean usados en el resto de la sentencia.. que intervienen en la consulta.. <otras cl ausulas> es una lista de clausulas opcional. llamadas a funciones y operadores logicos (NOT.2. modos de ordenacion y agrupamien- to.

la de datos para el grupo con informacion sobre el grupo en general. recuperando solo aquellos grupos que cumplan esa condicion. Con la clausula HAVING se puede establecer una condicion sobre los grupos.2. Esta clausula se puede usar si se usan Funciones de Grupo (Group Functions ). como las mostradas en la Tabla 1. Las funciones de grupo son aquellas funciones que se aplican a un grupo .

dando como resultado un unico valor. Si no se usa la clausula GROUP BY con funciones de grupo.9 y 1. de un determinado grupo. Ver Ejemplos 1. .10. 3 Entre corchetes indicamos las clausulas que son opcionales.nito de valores. entonces se supone un unico grupo formado por todas las tuplas que cumplen la condicion.

AVG Calcula la media de la expresion en el grupo. STDDEV Calcula la desviacion tpica en el grupo. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS Funcion Utilidad COUNT Cuenta el numero de elementos del grupo. MAX Valor maximo del grupo. MIN Valor mnimo del grupo. para la expresion.18 CAPITULO 1. para la expresion. Todas las funciones de grupo tienen un argumento en el que hay que especi. SUM Suma de la expresion en el grupo. VARIANCE Calcula la varianza en el grupo.

en una consulta con la clausula GROUP BY. elementos conteniendo funciones de grupo. todos los elementos expresa- dos despues de la palabra SELECT deben ser elementos de la clausula GROUP BY. sobre la que actuara la funcion. Tabla 1. o constantes.car un atributo o una expresion.2: Funciones de Grupo utilizables en la sentencia SELECT. As pues. START WITH y CONNECT BY se utilizan para devolver .

sin el NOT. INTERSECT para la interseccion y MINUS para la diferencia o resta. toma el valor verdad si la primera expresion. Se pueden utilizar subconsultas dentro de <lista de tablas> como si estas fueran tablas y se pueden utilizar condiciones especiales como: [NOT] EXISTS <subconsulta> que. toma el valor verdad si la subconsulta recu- pera alguna tupla y falso en caso contrario. Varias sentencias SELECT pueden ser concatenadas usando operadores de conjuntos: UNION para la union sin duplicados. <expr1> [NOT] BETWEEN <expr2> AND <expr3> que. <expr1> [NOT] LIKE <expr2> que. sin el NOT. de tipo cadena de caracteres. cumple el patron especi. toma el valor verdad si la expresion <expr1> esta entre las otras dos. toma el valor verdad si la expresi on esta incluida en el resultado de la subconsulta y falso en caso contrario. sin el NOT. sin el NOT.las en orden jer arquico. <expr> [NOT] IN <subconsulta> que. UNION ALL para la union con duplicados.

y mucho mas. sin el NOT. muy simple de utilizar en consultas no muy complicadas y no tan simple en consultas complejas. Ejemplo 1. Todo ello.8 Seleccionar aquellos Clientes y su Salario que tienen un salario mayor que 100000: . se pueden tambien utilizar subconsultas que recuperen un unico valor como si fueran una expresion. hace que el comando SELECT de SQL sea un comando tremenda- mente potente y exible. <expr> IS [NOT] NULL que. Tambien permite establecer nombres de alias en tablas y atributos para enlazar tablas entre distintas partes de las subconsultas. Ademas.cado en la segunda expresion. toma el valor verdad si la expresion toma el valor Nulo.

1. Salario FROM Empleados WHERE Nombre LIKE '%X%' AND Salario > (SELECT AVG(Salario) FROM Empleados) ORDER BY Salario.2 Comando INSERT El comando INSERT sirve para introducir nuevos datos en la base de datos y tiene el siguiente formato general: INSERT INTO <tabla> [ (<lista de atributos>) ] VALUES (<lista de expresiones>) donde <tabla> Es la tabla (vista o subconsulta) donde se desea insertar una tupla. (<lista de atributos>) es una lista de atributos entre par entesis y separados por comas que indican el orden de las expresiones siguientes. tu 1. Observe el alias E. su Salario y su Departamento. ordenando la salida por el Departamento: SELECT Nombre. (<lista de expresiones>) es una lista de expresiones entre par entesis y separados por comas que expresan los valores que deseamos insertar en los correspondientes atributos. Esta lista y la palabra VALUES pueden sustituirse por una subconsulta que contendra los datos que seran insertados.9 Seleccionar aquellos Clientes y su Salario que tiene una letra 'X' en el nombre y que tienen un salario mayor que la media. que es utilizado en la subconsulta para hacer referencia al Dpto del SELECT mas externo. Esta lista es opcional y si no aparece se toma la lista de atributos de <tabla> en el orden en el que se usaron en su creacion.2. MODELO RELACIONAL DE BASES DE DATOS 19 SELECT Nombre. que tienen un salario mayor que la media de su Departamento. tu Ejemplo 1. Dpto FROM Empleados E WHERE Salario > (SELECT AVG(Salario) FROM Empleados WHERE E. Usando una subconsulta pueden insertarse varias tuplas a la vez. esto es. Salario. tu Ejemplo 1.Dpto = Dpto) ORDER BY 3. por Dpto.2.10 Seleccionar los Clientes. ordenando la salida por el salario: SELECT Nombre. El 3 hace referencia a que se ordene (ascendentemente) por el tercer argumento de la lista de seleccion. . Salario FROM Empleados WHERE Salario > 10000. Observe la subconsulta y los caracteres comodn (%) de la condicion LIKE.5.

WHERE <condicion> es una cl ausula opcional que indica la condicion que deben cumplir las tuplas de <tabla> para ser actualizadas con los datos indicados.20 CAPITULO 1.5.2. (<lista de atributos> = <subconsulta> que expresa que se actualizan todos los atributos de la lista con los datos de la subconsulta (que debe ser con igual numero y tipo de atributos).3 Comando DELETE El comando DELETE sirve para borrar datos (tuplas) en la base de datos y tiene el siguiente formato general: DELETE <tabla> WHERE <condicion> que borra las tuplas de <tabla> que cumplen la condicion que se indica. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS 1.2.5.5.4 Comando UPDATE El comando UPDATE sirve para actualizar valores de datos antiguos en la base de datos y tiene el siguiente formato general: UPDATE <tabla> SET <asignaci on> [WHERE <condicion>] donde <tabla> Es la tabla (vista o subconsulta) donde se desean actualizar datos.5 Comando CREATE TABLE El comando CREATE TABLE sirve para crear tablas en la base de datos especi.2. <asignacion> es una asignaci on con los siguientes dos formatos posibles para actualizacion de un unico atributo o varios de ellos respectivamente: <atributo> = <expr> que expresa que se actualiza el atributo a la expresi on que se indican. 1. 1.

. Es similar a la sentencia ALTER TABLE y tiene el siguiente formato general: CREATE TABLE <tabla> [( <definici on de columnas y restricciones> )] [<otras cl ausulas>] donde <tabla> Es el nombre que tendra la tabla que se desea crear. restricciones. los atributos. sus dominios.. <definicion de columnas y restricciones> Es una lista separada por comas de de.cando el nombre de la tabla.

que se explicaran a continuacion.ni- ciones de columnas y/o restricciones de tabla. .

MODELO RELACIONAL DE BASES DE DATOS 21 <otras cl ausulas> permite especi.1.2.

.. como el maximo numero de transacciones concurrentes que pueden actualizar el bloque de datos de la tabla.car algunas caractersticas de la tabla. si habilita o no la restriccion de integridad. La de. inserta los valores iniciales de una subconsulta tras la creacion de la tabla. el lugar fsico de almacenamiento. cluster al que pertenece. el grado de paralelismo al crear la tabla.

Dentro de la de.nicion de columnas y restricciones pueden ir mezcladas con las restricciones de tabla.

nicion de columnas se pueden incluir las restricciones de columna.
La De

nicion de una columna se hace simplemente indicando el nombre de la columna
y el tipo de datos que almacenan (su dominio). En el apartado 1.2.6.1 daremos un resumen
de los tipos de datos de Oracle. Tras esto se pueden a~nadir, opcionalmente, dos clausulas. Si
se a~naden ambas, debe hacerse en este orden:
DEFAULT <expr> para establecer un valor por defecto para la columna actual. Ese valor sera
el que se asigne a ese atributo si en una sentencia INSERT se omite el valor para dicha
columna.
<restricci
on de columna> que indica un requisito que deben cumplir todos los valores
insertados en este atributo.
La imposicion de restricciones se efectua poniendo el tipo de restriccion, de entre los
siguientes:
 NOT NULL: Impone que una columna no contenga valores NULL. Esta restricci
on, como
hemos apuntado anteriormente, supone el soporte para la Regla de Identidad. Esta
restriccion no puede ser de tabla.
 NULL: Indica que una columna puede contener valores NULL.
 UNIQUE: Impone que una columna o grupo de ellas sean unicas dentro de la tabla.
 PRIMARY KEY: Identi

ca a una o varias columnas como Clave Primaria. Si es restriccion
de tabla, hay que especi

car despues, entre parentesis, la lista de columnas que forman
la Clave primaria.
 FOREIGN KEY: Identi

ca a una o varias columnas como Clave Externa y fuerza a que exis-
tan en alguna tabla las columnas o grupos de ellas que constituyan dicha clave, forzando
el cumplimiento de la Regla de Integridad Referencial. Con la clausula REFERENCES se
puede indicar la clave candidata que es referenciada por una clave externa y con la op-
cion ON DELETE CASCADE especi

ca que se mantenga la regla de integridad referencial,
borrando las tuplas con las llaves externas si se borra su correspondiente llave candidata
en la otra relacion.
 on>):
CHECK (<condici Esto habilita la posibilidad de imponer una determinada con-
dicion sobre uno o varios atributos. Esto permite, por ejemplo, restringir los valores de
dominio que pueden ser adoptados por una columna o grupo de ellas. Con esta restric-
cion se pretende especi

car, en forma precisa, el dominio que subyace a un atributo o
columna.

22 CAPITULO 1. el nombre de la restriccion . As. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS Todas las restricciones pueden ser etiquetadas con un nombre utilizando la clausula CONSTRAINT seguida del nombre que se le quiere dar. cuando esta restriccion se vulnere.

cuya clave primaria es PISO#. DIRECCION VARCHAR2(60). PRECIO NUMBER(6) CONSTRAINT NULL_INVALIDO_PRECIO NOT NULL. Oracle incorpora un lenguaje procedural. Oracle esta implementado en cerca de 100 plataformas distintas incluyendo MS-DOS. ZONA VARCHAR2(9) DEFAULT 'CENTRO' CONSTRAINT ZONA_NO_VALIDA CHECK (ZONA IN ('CENTRO'. 118.gurara en el mensaje de error que genere el SGBD. 86]. adelantandose a la propia IBM en casi 2 a~nos. 146]. OS/2. Oracle dispone de acceso a traves de ODBC y multitud de aplicaciones para los mas diversos . En ella se crea una tabla con 6 atributos. tu 1. Actualmente es el mayor vendedor de SGBDR independiente. facilitando al usuario la comprension del mensaje y la solucion del problema. MIPS y muchas otras basadas en sistemas Unix.'ESTE'. Macintosh.11 Observe la siguiente sentencia de creacion de una tabla: CREATE TABLE PISOS ( PISO# NUMBER(9) NOT NULL PRIMARY KEY. por lo que antes de crear esta tabla debe existir la tabla CLIENTES con el atributo CLIENTE# como clave primaria y que estos atributos sean de tipos compatibles. Sun. Los paquetes PL/SQL son conjuntos de funciones y/o procedimientos. Pero ademas. y fue tambien el primero en sacar un producto que usase SQL. el PL/SQL [82. siendo. Ejemplo 1.2. El atributo DUENNO# es clave externa. el lder en ejecucion OLTP. Oracle utiliza SQL [26. por meritos propios.6 El SGBDR Oracle Como ejemplo de SGBDR comercial vamos a comentar algunos aspectos del gestor de bases de datos ORACLE de Oracle Corporation [117]. DUENNO# NUMBER(9) NOT NULL CONSTRAINT DUENNO#_NO_VALIDO REFERENCES CLIENTES(CLIENTE#). que fue el primer fabricante en introducir un producto relacional en el mercado.'NORTE'. SUPERFICIE NUMBER(9.'SUR'.1) CONSTRAINT NULL_INVALIDO_SUPERFICIE NOT NULL. 52. como Linux. Windows. Oracle siempre ha sido el SGBDR con mejores tiempos de ejecucion. que es una extension de SQL y que permi- te crear procedimientos y funciones almacenadas en el SGBD. Como DML y DDL.'OESTE'))).

99. sin que se usen elementos que puedan no funcionar en versiones posteriores.. la implementacion ha sido programada en la version 7. Aunque Oracle ha sacado recientemen- te su version 8 [2. 82. 116].nes SQL*Net.3 [17. 4]. ya que es el SGBD empleado para la implementacion que se explica en el Captulo 5.. Aqu resumiremos algunos aspectos relacionados con Oracle. Las novedades mas relevantes de Oracle 8 son que se presenta como una base de datos objeto-relacional. SQL*Plus. el particionamiento de tablas (pudiendo bloquear exclusivamente una parte . Developer 2000.

MODELO RELACIONAL DE BASES DE DATOS 23 de una tabla). mejora de procesos internos como el paralelismo o el procesamiento de transacciones on-line.1. accesible de igual modo con clientes HTTP.2. IMAP. nuevas herramientas de administracion (Enterprise Manager) y asistentes para diversas operaciones utiles. aumento de rendimiento en aplicaciones de Data Warehouse. FTP. POP o SMTP o con el mismo que accedamos a los . Ademas la inminente aparicion de la version Oracle 8i abre aun mas las posibilidades incorporando la tecnologa iFS (Internet File System) para ver la informacion de la base de datos como si fueran archivos y directorios contenidos en un disco. como la creacion automatica de una base de datos casi sin intervencion del usuario y la posibilidad de importar bases de datos de otras aplicaciones (como de Microsoft Access) o de versiones anteriores de Oracle.

cheros convencionales. hacen que el SGBD Oracle este en primera . Data Cartridges. Oracle 8i incorpora una maquina virtual Java y permite la programacion tanto en PL/SQL como en Java de cualquier objeto. Ademas. Junto a todo lo ya apuntado. la posibilidad de extender las capacidades del servidor Oracle a traves de los llamados cartuchos de datos. incluyendo triggers (disparadores). Tambien incluye la sintaxis SQLJ para incluir codigo SQL en el codigo Java.

exibilidad. e.la en cuanto a potencia.

que en Oracle se denominan columnas (columns ). Las columnas pueden estar de. los datos se organizan a traves de tablas y en general de acuerdo con el modelo relacional. no presentan un orden de acuerdo con el modelo relacional y respondiendo a la nocion de conjunto que subyace a estas.1 Estructuras y Tipos de Datos Como en cualquier base de datos relacional. 1... Las cabeceras de atributo. WWW.2.ciencia y adaptacion a las nuevas tecnologas (Internet.6.).

nidas sobre los tipos de dominio o tipos de datos que a continuacion se relacionan:  Caracter: Una columna de.

debera especi.nida sobre un dominio de este tipo.

car la longitud maxima de la cadena de caracteres que podra contener. La longitud maxima para una columna de.

Si no se especi. donde los parametros p (precision) y s (escala) indican. el numero maximo de dgitos (de 1 a 38) y el numero de cifras decimales (de {84 a 127) que puede contener el atributo. os- cilando entre los 255 caracteres de maximo para el tipo CHAR.  Numerico: Los diferentes dominios numericos soportados por Oracle son subconjuntos de los enteros y los reales. los 2000 para el tipo VARCHAR2 y los 231 1 bytes del tipo LONG. Todos ellos pueden ser representados a traves del tipo NUMBER(p.s).nida sobre este dominio dependera del tipo de la columna. respectivamente.

C. mes.  Fecha y Hora: Oracle permite representar fechas en diferentes formatos para un rango comprendido entre el 1 de Enero del a~no 4712 A.C. como son: INTEGER y FLOAT. se supone que es cero. minuto y segundo. Existen otras expresiones sintacticas de tipo aceptadas pero todas ellas pueden encontrar una expresion equivalente mediante el tipo NUMBER. hora.ca el valor de s.  Binario: A traves de los datos de. entre otros. y el 31 de Diciembre del 4712 D. El tipo que opera sobre este dominio es el tipo DATE y cada valor de este tipo almacena: El siglo. a~no. La funcion TO_CHAR permite convertir este tipo de dato a cadena de caracteres en diversos formatos. da.

como una coleccion de .nidos sobre este dominio se pueden representar cual- quier tipo de informacion mediante una representacion binaria.

INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS bytes. sin que Oracle les atribuya signi.24 CAPITULO 1.

cado alguno. pueden almacenarse gra. As.

 Identi. sonidos. Los tipos que sustentan este dominio son el RAW para un tama~no maximo de 255 bytes y el LONG RAW para una longitud superior a los 2 GigaBytes. documentos y su interpretacion no depende de Oracle.cos.

cador de .

la: Oracle identi.

ca mediante un codigo cada uno de los registros de la base de datos. El tipo ROWID se re.

ere a un dominio que contiene todos los valores que puede adoptar esta codi.

las vistas. Sin embargo. la cual tiene un nombre propio.cacion. Para todos los dominios existe un valor denominado NULL que signi. Es posible la creacion de vistas como representacion logica de una tabla o un conjunto de tablas. pueden plantearlos en la actualizacion de las mismas. al resultar imposible en algunas ocasiones reconstruir la informacion a actualizar en las tablas base sobre las que se construyen. aunque no presentan problemas en consulta. O sea. una vista es una consulta particular sobre la base de datos.

ca que, o no se conoce
el valor o no es aplicable4. Oracle proporciona un tratamiento espec

co para este tipo de
valores, utilizando una logica tri-valuada, pues cualquier comparacion con valores NULL no
es resuelta ni como verdadera ni como falsa. En el apartado 2.1.1 se explica esta logica
tri-valuada.
Todas las columnas pueden contener el valor NULL en alguna tupla, excepto aquellas en
las que en se establecio la restriccion NOT NULL (NULL no permitido) o PRIMARY KEY (Clave
primaria).
Cuando se emplea el valor NULL en una condicion simple, esta se evalua como UNK-
NOWN (desconocido), que es similar a FALSE (falso). La diferencia esta en que si operamos
con UNKNOWN siempre obtenemos UNKNOWN. As, por ejemplo, NOT UNKNOWN vale
UNKNOWN, mientras que NOT FALSE vale TRUE (verdad).
Como se explico en el apartado 1.2.5.1 pueden emplearse condiciones especiales con LIKE,
IN, IS y BETWEEN.
Otros elementos estructurales proporcionados por Oracle son:
 Indices: Facilitan, de forma transparente al usuario, un rapido acceso a las tuplas de
una tabla y pueden forzar la unicidad de las mismas.
 Agrupaciones (clusters): Pueden ayudar al sistema a almacenar fsicamente juntas
estructuras de datos a las que se accede conjuntamente con frecuencia, aunque perte-
nezcan a tablas distintas. Al igual que los ndices, su empleo es transparente al usuario
y es el optimizador el que se encarga de usarlos para mejorar la e

ciencia del sistema.
 Procedimientos almacenados: Son fragmentos de codigo en lenguaje PL/SQL y
pueden ser de 4 tipos:
1. Funciones (FUNCTION): Fragmento de codigo cuya llamada devuelve un valor.
Pueden tener argumentos.
2. Procedimientos (PROCEDURE): Fragmento de codigo cuya llamada no devuelve
un valor. Pueden tener argumentos y pueden devolver valores usando paso de
parametros por variable (OUT).
4 El
primer intento de representar informacion inexacta fue precisamente la introduccion del concepto de
valor nulo, NULL, y fue publicado por Codd en [43] (ver apartado 2.1.1).

1.3. TEORIA DE CONJUNTOS DIFUSOS 25

3. Paquetes : Son conjuntos de funciones y procedimientos que pueden ser expor-
tados para poder usarse desde fuera o internos para que solo puedan ser utiliza-
dos desde dentro del paquete. Cada paquete tiene dos partes: La especi

cacion
(PACKAGE), con las declaraciones publicas visibles desde fuera del paquete, y el
cuerpo (PACKAGE BODY), con las declaraciones privadas que solo son visibles desde
dentro del paquete.
4. Disparadores (TRIGGER): Un trigger es un fragmento de codigo asociado a una
tabla que se ejecuta cuando se efectua alguna determinada accion sobre dicha tabla,
como insertar datos, borrar datos, actualizar datos... Los disparadores son muy
importantes para mantener la integridad de los datos, ya que pueden evitar insertar
datos inconsistentes, erroneos o que no cumplen determinadas condiciones.

1.2.6.2 Integridad de los Datos
Oracle fuerza la Regla de Identidad mediante el uso de la restriccion NOT NULL en la creacion
y modi

cacion de las tablas. (sentencias CREATE TABLE y ALTER TABLE respectivamente).
Como hemos dicho, la Regla de Integridad Referencial esta soportada por Oracle a traves de
la restriccion FOREIGN KEY en la creacion y modi

cacion de las tablas.
Ademas, dispone de un conjunto de restricciones para mantener la integridad de la base
de datos que se pueden aplicar a las sentencias de creacion y modi

satisfagan algunas condiciones. Dichas restricciones se pueden imponer a una columna (restriccion de columna) o a un grupo de ellas (restriccion de tabla) y determinan. Estas restricciones fueron de.cacion de tablas. que las operaciones que se realicen sobre las mismas.

Zadeh5 en 1965. Esta generalizacion se realiza como sigue: 5 L. [61] y [172] es posible encontrar recopilados los aspectos mas importantes que constituyen la teora de conjuntos difusos as como la teora de la posibilidad.2.A.3. Zadeh fue nombrado doctor honoris causa por la Universidad de Granada en 1996.nidas en el apartado 1. En [159] podemos encontrar una recopilacion de algunos de los artculos mas interesantes publicados sobre el tema por L.5. 1. En este resumen nos detendremos en los aspectos semanticos y de representacion relacionados con esta potente herramienta teorica. Zadeh. En la literatura podemos encontrar una gran cantidad de trabajos sobre esta teora.5. . as como la notacion utilizada al respecto a lo largo de esta memoria. 1.1 Conjuntos Difusos La interpretacion original de conjunto difuso proviene de una generalizacion del concepto clasico de subconjunto ampliado a la descripcion de nociones \vagas" e \imprecisas".A. Una mas moderna sntesis de los conjuntos difusos y sus aplicaciones puede verse en [93. En [57].A. que fue introducida por primera vez por L. por su valiosa aportacion en este campo de la ciencia. en su trabajo [165]. 101.3 Teora de Conjuntos Difusos Vamos a dedicar este apartado a introducir algunas nociones elementales sobre la teora de conjuntos difusos (fuzzy sets ). 111] y sobre todo en [123].

Dicha pertenencia puede ser cuanti. La pertenencia de un elemento a un conjunto pasa a ser un concepto \difuso" o \bo- rroso". Para algunos elementos puede no estar clara su pertenencia o no al conjunto.26 CAPITULO 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS 1. 2.

responden a criterios subjetivos. la de. Esto es. Mediante esta herramienta podemos representar de forma adecuada conceptos \impreci- sos". si no todos. Dicho grado se denomina ha- bitualmente como \grado de pertenencia" de dicho elemento al conjunto y toma un valor en el intervalo [0. Es necesario hacer notar que muchos de estos conceptos con naturaleza \imprecisa".cada por un grado. 1] por convenio.

nicion de esa imprecision depende en mayor o menor medida de la persona que la expresa. De forma mas precisa podemos introducir la de.

nicion de conjunto difuso como sigue: De.

nicion 1.9 Un Conjunto Difuso Ae sobre un universo de discurso es un conjunto de pares Ae = fA(x)=x : x 2 . 1]g (1. se da una de.5) donde A (x) se denomina grado de pertenencia del elemento x al conjunto difuso Ae. en vez de dar una lista exhaustiva de todos los pares que forman el conjunto. A (x) =1 indica que x pertenece totalmente al conjunto difuso Ae. A (x) 2 [0. Este grado oscila entre los extremos 0 y 1: A (x) =0 indica que x no pertenece en absoluto al conjunto difuso Ae. A veces.

nicion para la funcion A (x). el conjunto difuso que representa dicho concepto podra expresarse en la forma: joven = f1=20. entonces. 0:8=27.1g. 0:7=28. 0:1=34g El identi. 1=25. 0:9=26.12 Si consideramos que la \edad" (en a~nos enteros) es el universo de discurso de \joven". 0:5=30. tu Si la funcion de pertenencia solo produce valores del conjunto f0. el conjunto que genera no es difuso. : : : . llamada funcion caracterstica o funcion de pertenencia. sino \crisp". 0:6=29. Ejemplo 1.

tu De.cador \joven" con la connotacion de que lleva asociado un conjunto difuso recibe la denominacion de \etiqueta lingustica".

en lenguaje natural. que puede estar formalmente de.10 Llamaremos Etiqueta Lingustica a aquella palabra. que exprese un conjunto difuso.nicion 1.

nido o no. tu Con esta de.

\bajo". \caliente".nicion. \caro". podemos asegurar que en nuestra vida cotidiana utilizamos multitud de etiquetas lingusticas: \joven".. \grande". la de. \barato". Ademas. \fro". \alto". \viejo".. \templado". \peque~no".

nicion intuitiva de esas etiquetas. sino que tambien vara del contexto en el que se aplique. seguramente no mediran la misma altura una persona \alta" y un edi. no solo puede variar de un individuo a otro y del momento particular. Por ejemplo.

La representacion de conjuntos difusos puede ser variada y depende.cio \alto". fundamentalmente de la naturaleza del universo de discurso sobre el que de.

.namos el conjunto difuso.

1. TEORIA DE CONJUNTOS DIFUSOS 27  Dado un universo de discurso .3.

x2 . : : : .nito = fx1 . 2. Habi- tualmente los elementos con grado cero no se listan. xn g un conjunto difuso Ae se puede representar como Ae = 1 =x1 + 2 =x2 + : : : + n=xn (1. : : : . Aqu la suma no hace el papel de la suma aritmetica sino que tiene el sentido de agregacion. n.6) donde i representa el grado de pertenencia del elemento xi . con i = 1.  Dado un universo de discurso in.

3. 1. (1.2 Conceptos sobre Conjuntos Difusos Sobre conjuntos difusos se de.nito . un conjunto difuso Ae sobre se puede repre- sentar como Z eA = Ae(x)=x.7) donde Ae(x) es el grado de pertenencia de x.

nen una serie de conceptos que nos permiten tratar y comparar conjuntos difusos:  Igualdad de conjuntos difusos: De.

8) tu  Inclusion de un conjunto difuso en otro: De.nicion 1.11 Dos conjuntos difusos Ae y Be sobre se dicen iguales si cumplen: Ae = Be () 8x 2 . Ae(x) = Be (x) (1.

decimos que Ae esta incluido en Be si cumplen: Ae  Be () 8x 2 . Ae(x)  Be (x) (1.9) tu  Soporte de un conjunto difuso: De.12 Dados dos conjuntos difusos Ae y Be sobre .nicion 1.

nicion 1.13 El soporte (support) de un conjunto difuso Ae de.

Ae(x) > 0g (1.10) tu  -corte de un conjunto difuso: .nido sobre es un subconjunto de dicho universo que satisface: supp(Ae) = fx 2 .

28 CAPITULO 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS De.

14 Un -corte de un conjunto difuso Ae de.nicion 1.

11) donde 2 [0. es un subconjunto no difuso de elementos de .nido sobre . 1]. tu  Nucleo de un conjunto difuso: De. Ae(x)  g (1. cuya funcion de pertenencia toma un valor mayor o igual que algun valor concreto : de dicho universo que satisface: Ae = fx : x 2 . denotado por Ae .

nicion 1.15 El nucleo (kernel) de un conjunto difuso Ae de.

12) tu  Altura de un conjunto difuso: De.nido sobre es un subconjunto de dicho universo que satisface: kern(Ae) = fx 2 . Ae(x) = 1g (1.

nicion 1.16 La Altura (height) de un conjunto difuso Ae de.

nido sobre se de.

13) x2 tu  Conjunto difuso normalizado: De.ne como: hgt(Ae) = sup Ae(x) (1.

nicion 1.17 Un conjunto difuso Ae de.

3.14) tu 1.nido sobre se dice normalizado si y solo si 9x 2 . Ae(x) = hgt(Ae) = 1 (1.3 Operaciones sobre Conjuntos Difusos Las operaciones que inmediatamente se sugieren de la de.

En [125] podemos encontrar estas y otras operaciones.nicion de conjunto difuso son la union. la dilatacion (efectuar la raz cuadrada de la funcion de pertenencia) y la intensi. como la concentracion (elevar al cuadrado la funcion de pertenencia). la interseccion y el complemento.

cacion. que pueden utilizarse cuando se usan modi.

cadores lingusticos (linguistic hedges ) como \muy" o \poco".1 Union e Interseccion De. 1.3.3.

nicion 1. Be (x)). Ae [ Be . la funcion de pertenencia de la union de ambos conjuntos. tu . x 2 (1. viene dada por Ae[Be (x) = f (Ae(x).15) donde f es una T-conorma [134].18 Si Ae y Be son dos conjuntos difusos sobre un universo de discurso .

1. TEORIA DE CONJUNTOS DIFUSOS 29 De.3.

la funcion de pertenencia de la interseccion de ambos conjuntos. tu Las de.nicion 1. Be (x)).19 Si Ae y Be son dos conjuntos difusos sobre un universo de discurso . Ae \ Be. viene dada por Ae\Be (x) = g(Ae(x).16) donde g es una T-norma [134]. x 2 (1.

ademas de la idempotencia. la propiedad distributiva aplicada sobre ambos y son estrictamente crecientes.niciones anteriores no son unicas ya que existen varios operadores que satisfacen el concepto de T-norma y de T-conorma. como las presentadas en [57. Los mas importantes son:  Operadores idempotentes: El maximo y el mnimo para la union y la interseccion res- pectivamente. 156]. Satisfacen. Estos operadores son los mas utilizados por- que conservan gran cantidad de las propiedades de los operadores booleanos. En [14] puede encontrarse una justi.

cacion a la eleccion de los operadores max y min para de.

3. Por contra.nir los anteriores conceptos.3. respectivamente.2 Complemento La nocion de complemento se puede construir a partir del concepto de negacion fuerte de E. min(1. 1. x + y 1).  Operadores arquimedianos: Emplean la suma probabilstica. x + y) y max(0. la propiedad distributiva ni la propiedad de absorcion. Estos operadores no satisfacen la propiedad distributiva ni son idempotentes.  Operadores acotados (bounded ): Los operadores dados por. (x + y x  y). representan la union y la interseccion respectivamente. Trillas [140]: De. para la union y la interseccion. satisfacen las propiedades conmutativa. y el producto. (x  y). asociativa y de identidad. Estos operadores no satisfacen la idempotencia.

nosotros.17) Por tanto. para un conjunto difuso Ae sobre un universo de discurso .20 Una funcion C de [0.1] en [0. emplearemos principalmente la version proporcionada por Zadeh en [165]. C es estrictamente decreciente 4. x 2 (1. viene dada por: :Ae(x) = 1 Ae(x).18) .nicion 1. la funcion de pertenencia del complemento de Ae. C(C(a))=a (involucion) 3. :Ae.1] es una negacion fuerte si satisface las siguientes condiciones: 1. en la cual: C (x) = 1 x (1. para el complemento. tu Aunque existen varios tipos de operadores que satisfacen tales propiedades o versiones re- lajadas de las mismas. C(0)=1 2. C es continua.

INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS h 0 α β γ δ Figura 1.1: Numero difuso general: Entre .30 CAPITULO 1.

1. y .4 Numeros Difusos El concepto de numero difuso fue introducido por primera vez en [167] con el proposito de ana- lizar y manipular valores numericos aproximados. El concepto ha sido re.3.

nado sucesivamente y en esta memoria entenderemos por numero difuso lo siguiente [59]: De.

8x. es decir que es convexo. 2. 3. A (y)g. entonces diremos que A es un numero difuso. El soporte de A es un conjunto acotado. y 2 . tu Algunos autores incluyen en la de. A es semicontinua superiormente.21 Sea A un subconjunto difuso de y A su funcion de pertenencia cum- pliendo: 1. 8A (t)  minfA (x).nicion 1.

nicion la necesidad de que el subconjunto difuso este normalizado (De.

La forma general de la funcion de pertenencia de un numero difuso A. . es la siguiente: 8 r (x) > < hA si x 2 [ .nicion 1.17).

) A (x) = > s (x) si x 2 [.

] (1. ] en otro caso donde rA . rM no decreciente.. sA : ! [0. 1]. sM no creciente y rA (.19) : 0A si x 2 ( .

. ) = h = sA ( ) con h 2 (0. 1] y .

. Al numero h se le denomina altura del numero difuso. al intervalo [.  2 ..

] intervalo modal y a los numeros ..

El numero difuso de la Figura 1. y  holguras izquierda y derecha respectivamente.1 es una representacion de \aproximadamente entre .

y ". .

1.2: Numero difuso trapezoidal normalizado. TEORIA DE CONJUNTOS DIFUSOS 31 1 0 α β γ δ Figura 1. A lo largo de esta memoria utilizaremos a menudo un caso particular de numeros difusos que se obtienen cuando consideramos a las funciones rA y sA como funciones lineales. En este caso la funcion de pertenencia adopta la forma: 8 (x .3.

.)h > si x 2 [ .

) < hh + .

> si x 2 [.

] : 0 en otro caso A un numero difuso de este tipo lo llamaremos triangular o trapezoidal .20) > h (x )h si x 2 ( . en este caso podremos carac- terizar un numero difuso trapezoidal normalizado A.. ] A(x) = > (1. mediante el empleo de los 4 parametros que son realmente imprescindibles: A  ( . . Usualmente trabajaremos con numeros difusos normalizados por lo que h = 1.

) La Figura 1. ..2 muestra una representacion gra.

ca de dicho numero.1 El Principio de Extension Este principio. 1. Se de. propuesto en [167].4.3. proporciona un metodo general que permite extender conceptos matematicos no difusos para el tratamiento de cantidades difusas.

ne como sigue: De.

2 . : : : . n conjuntos difusos de 1 . entonces un conjunto difuso Be de 0 viene de.22 Sea un producto cartesiano de universos = 1  2  : : :  n. y Af1 .nicion 1. Af2 . f una funcion desde al universo 0 . Afn . : : : . n respectivamente.

x2 . : : : .nido por: Z Be =  e (y)=y 0 B donde y = f (x1 . xn ) (y 2 0). y .

: : : . la funcion de pertenencia de la suma viene dada por la expresion: A1A2 (y) = supfmin(A1 (y x).4.2 Aritmetica Difusa Gracias al Principio de Extension es facil extender las operaciones aritmeticas clasicas al tratamiento de numeros difusos. Afn (xn )g.x2 . la funcion de perte- nencia de la suma viene dada por la expresion: A1 A2 (y) = supfmin(A1 (y + x).3.32 CAPITULO 1. A2 (x))=x 2 g (1.21)  Diferencia Extendida: Dadas dos cantidades difusas A1 y A2.::: . A2 (x))=x 2 g (1.22) De estas de.xn)2f 1 (y) fAf1 (x1 ). INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS  max min Be (y) = (x1 . en otro caso tu 1. f 1(y) 6= 0 0. De esta forma las cuatro operaciones principales quedan extendidas como sigue:  Suma Extendida: Dadas dos cantidades difusas A1 y A2 .

niciones se puede obtener facilmente que el si A1 tiene n terminos y A2 tiene m terminos. Ejemplo 1. el numero de terminos de A1 + A2 y de A1 A2 es (n 1) + (m 1) + 1.13 Sean A1 y A2 dos cantidades difusas de. o lo que es lo mismo: n + m 1.

nidas (con el formato de la De.

6) como: A1 = 1=1 + 0:9=2 + 0:5=3 A2 = 1=2 + 0:8=3 + 0:3=4 entonces.9 y la ecuacion 1.nicion 1. aplicando el Principio de Extension obtenemos que: A1 + A2 = 1=3 + 0:9=4 + 0:8=5 + 0:5=6 + 0:3=4 A1 A2 = 0:3= 3 + 0:8= 2 + 1= 1 + 0:9=0 + 0:5=1 Observe que se cumple que el numero de terminos de las operaciones es 3 + 3 1 = 5. tu  Producto Extendido: El producto de dos cantidades difusas A1 .

 (y))=y 2 f0gg si z 6= 0 A 1 . A2 se obtiene:  supfmin( (z=y).

A2 (0)) si z = 0  Division Extendida: La division de dos cantidades difusas se de. A 2 ( z ) = A1 A2 (1.23) max(A1 (0).

. denominado numero L R. A2 (y))=y 2 g (1.24) Basandose en una expresion particular del principio de incertidumbre adaptada al empleo de cortes y en un tipo de numero difuso similar al descrito anteriormente. en [57] se describen formulas de calculo rapido para las anteriores operaciones aritmeticas.ne mediante: A1 A2 (z) = supfmin(A1 (y:z).

5 Teora de la Posibilidad Esta teora se basa en la idea de variables lingusticas y como estas estan relacionadas con los conjuntos difusos [168]. se puede evaluar la posibilidad de que una determinada variable X sea o pertenezca a un determinado conjunto Ae. As. como el grado de pertenencia de los elementos de X en Ae.3.3.1. De. TEORIA DE CONJUNTOS DIFUSOS 33 1.

nicion 1.23 Sea un conjunto difuso Ae de.

Entonces.nido sobre con su funcion de pertenencia Ae(x) y una variable X sobre (que desconocemos su valor). la proposicion \X es Ae" de.

de forma que se dice que la \posibilidad" de que X = u vale Ae(u). \necesariamente igual" (ecuaciones 5.6 y 5. . para todo valor u 2 . y la medida de necesidad.8 respectivamente). Los mas tpicos son la medida de posibilidad. tu Como veremos.ne una Distribucion de Posibilidad. dos distribuciones de posibilidad pueden ser comparadas con distintos comparadores. \posiblemente igual".

34 CAPITULO 1. INTRODUCCION:  BASES DE DATOS Y CONJUNTOS DIFUSOS .

desventajas y sus limitaciones.Captulo 2 Modelos de Bases de Datos Relacionales Difusas: GEFRED El problema de la representacion y el tratamiento de informacion \imprecisa" ha sido amplia- mente estudiado y pueden encontrarse muchas referencias al respecto en la bibliografa. todos los modelos publicados para dar solucion a este problema tienen sus ventajas. Ademas. el termino \imprecision" engloba varios signi. Sin embargo.

que desconocemos totalmente esa informacion (unknown) o que dicha infor- macion no es aplicable a determinada entidad (unde.cados que puede ser interesante distinguir: Que la informacion que tenemos es incompleta. que no sabemos si es o no cierta (incertidumbre).

A veces estos signi.ned).

ya que hay que modi.cados no son disyuntivos. El problema no es trivial. En este captulo se exponen los principales modelos publicados para dar solucion al pro- blema de la representacion y el tratamiento de informacion imprecisa en bases de datos rela- cionales. sino que pueden unirse en una determinada informacion.

122]. el modelo de Buckles- Petry [28. 32]. 47]). 171] y el modelo GEFRED de Medina-Pons-Vila [102. introducidos por Pawlak en 1982 [121. El modelo GEFRED constituye una sntesis eclectica de los diferentes modelos publicados para tratar el problema de representacion y tratamiento de informacion difusa mediante bases de datos relacionales. Una de las principales ventajas de este modelo es que consiste en una abstraccion general que permite tratar diferentes enfoques. el modelo de Umano-Fukami [70. 30. con esto. 143. como los basados en los conjuntos rough (rugosos). un estudio 35 . 142. Para permitir almacenar informacion imprecisa y consultar de forma imprecisa esta informacion se requiere el estudio de multitud de casos particulares que no ocurren en el modelo clasico. 144. 128. Existen otros modelos para el tratamiento de la incertidumbre en bases de datos. En [103] puede verse. 103. 79]. las operaciones sobre estas. en el cual nos hemos basado para desarrollar este trabajo. 129. sin imprecision. 29. el modelo de Prade-Testemale [127. Entre los modelos que se exponen estan: distintas aproximaciones sin utilizar la logica difusa (como la aproximacion \clasica" de Codd [43. incluso aunque estos puedan parecer muy dispares. el modelo de Zemankova-Kaendel [170.car la estructura de las relaciones y. 145]. Un estudio mas detallado de todos estos modelos puede verse en las respectivas referen- cias de cada uno y todos juntos en [103. pero que no han tenido demasiada aceptacion. 125]. 44. ademas. 130]. 72. Principalmente nos centraremos en el modelo GEFRED. 46.

algunas de las ideas que aqu se exponen no han sido implementadas en ningun modelo. por tanto. origina un resultado que no es ni Verdad (T.1. pero aplicable y el valor \I-marca" que re- presenta que el valor esta ausente porque no es aplicable.1 Imprecision Sin Utilizar Logica Difusa En este apartado vamos a resumir algunas ideas que posibilitan. en el atributo matrcula del coche. NOT AND T A I F OR T A I F T F T T A I F T T T T T A A A A A I F A T A A A I I I I I I F I T A I F F T F F F F F F T A F F Tabla 2. el trata- miento de informacion imprecisa. unknown. 2. en 1979 en [43] y ampliado en [44. Este modelo no utilizaba la teora de conjuntos difusos. aunque. por parte de Codd. Despues. 2. False). que tiene el similar signi.1. por ejemplo. NULL. 47]. Las tablas de verdad de los comparadores clasicos NOT. Maybe) (o desconocido. En la bibliografa a veces se engloban estos modelos en el apar- tado de imprecision en bases de datos convencionales. Esto da lugar a una logica tetra-valuada donde el valor A. de algun modo. de alguien que no tiene coche. en el SQL de Oracle). AND y OR pueden verse en la Tabla 2.1: Tablas de verdad para la logica tri-valuada. pero sin utilizar la teora de conjuntos difusos ni. comparativo de GEFRED con todos los demas modelos.2: Tablas de verdad para la logica tetra-valuada. MODELOS DE BDR DIFUSAS: GEFRED NOT AND T m F OR T m F T F T T m F T T T T m m m m m F m T m m F T F F F F F T m F Tabla 2. True) ni Falso (F. diferenciando el valor NULL en dos marcas: \A-marca" que representa un valor ausente o desconocido. Cualquier comparacion con un valor NULL.36 CAPITULO 2. Un valor NULL en un atributo indica que dicho valor era cualquiera de entre todos los que estuvieran incluidos en el dominio de dicho atributo. 46. se a~nadio un matiz mas. Una I-marca puede ser situada. llamado \quizas" (m.1 Aproximacion de Codd El primer intento de representar datos imprecisos en una base de datos fue la introduccion de valores nulos. distribuciones de posibilidad.

. surge como resultado de comparar cualquier valor que contenga una \A-marca" y un nuevo valor I es a~nadido como resultado de comparar cualquier valor que contenga una \I-marca". En la Tabla 2.2 se muestran las tablas de verdad de esta logica tetra-valuada.cado que el m de la Logica tri-valuada anterior.

1.  SIN UTILIZAR LOGICA 2.2 Esquema con Valores por Defecto Date presento en 1982 una aproximacion para el tratamiento de valores nulos (dicha aproxi- macion se recoge en [50]).1. IMPRECISION  DIFUSA 37 2. Parte de la opinion de que el problema del tratamiento de valores nulos no se encontraba bien de.

de momento no debera incorporarse esta caracterstica al Modelo Relacional.nido y de que. Partiendo de esta premisa. ademas de un valor preciso y el valor NULL en el caso de que no se tenga ninguna informacion.2. pueden ser distintas. cuando se inserta una nueva tupla en una relacion. presenta una alternativa basada en el concepto de \valores por defecto".1. ya que aunque aparezcan como identicas. en la declaracion de cada dominio se designa un valor de dicho dominio como \valor por defecto".5. Grant extiende el modelo relacional para permitir almacenar en un atributo un rango o intervalo de valores posibles para el mismo. En este modelo. As. El problema de tuplas repetidas lo soluciona permitiendolas.5). por tanto.3 Rangos en Valores En [85]. Igual que en SQL se hace con la clausula DEFAULT (ver apartado 1. el usuario tiene que propor- cionar un valor para cada atributo que no tenga un \valor por defecto" y el sistema asignara el \valor por defecto" en aquellos atributos en los que no se proporcione su valor. 2. Los operadores relacionales son rede.

Por ejemplo el operador < se de. True y Maybe.nidos en dos versiones.

m] si a < m Para las consultas en este modelo puede utilizarse la propuesta de Lipski [98.ne como: [a. cada atributo probabilstico se trata como una distribucion de probabilidad discreta. publicaron el modelo mas desarrollado de bases de datos proba- bilsticas. en el que las probabilidades estan asociadas a los valores de los atributos.1. En este modelo. sin especi. Barbara et al. 2. b] <T [n. Esta formulacion supone que la informacion incompleta puede ser comparada estadsticamente.1) [a. puede ser difcil determinar las probabilidades para todos los posibles valores del dominio. En [137]. b] <M [n. Este metodo ve las consultas como experimentos estadsticos en los que la informacion es incompleta y se centra en calcular la respuesta a la consulta como el conjunto de aquellas tuplas que minimizan los dos tipos de errores estadsticos. En [11]. Shoshani y Wong resumen la investigacion y utilidad sobre bases de datos estadsticas. En una tupla. As. las probabilidades deben estar normalizadas: La suma de las probabilidades de todos los valores probables debe ser igual a 1. tupla que posiblemente pertenece al resultado (possible-set) y tupla que seguro que no pertenece al resultado (eliminated-set). en la cual maneja multitud de casos de incertidumbre por inferencia estadstica. 128] de situar cada tupla en una de estas tres categoras: Tupla que seguro que pertenece al resultado (surely-set). m] si b < n (2. desarrollan el concepto de probabilidades perdidas (missing probabilities ) para introducir. Sin embargo.4 Bases de Datos Estadsticas y Probabilsticas La principal propuesta en este sentido fue publicada en 1982 de la mano de Wong [153]. el resto de probabilidades en un valor general que incluye todos los valores del dominio.

car como se distribuye .

las probabilidades pueden necesitar ser recalculadas. indicando la probabilidad de que dicha tupla pertenezca a la relacion. en cambio. MODELOS DE BDR DIFUSAS: GEFRED la probabilidad en esos valores. Uno es que estas sean introducidas por el usuario de acuerdo a su criterio personal o a unos calculos efectuados por el mismo. Otro es que el sistema sea el que calcule estas probabilidades a partir de un conjunto de ejemplos. El trabajo de Fuhr [69]. para el conjunto de todos los va valores del dominio se almacena el valor restante de la probabilidad (1 menos la suma de las probabilidades que conocemos). se centra mas en como especi. en la base de datos se almacenara cada valor del dominio que sepamos su probabilidad y esta probabilidad y. Ademas. Para el calculo de estas probabilidades se consideran dos metodos. En las recuperaciones. se podran establecer un mecanismo para recuperar solo los valores que tengan una probabilidad mayor que un determinado umbral. En el modelo de Cavallo y Pittarelli [36] la probabilidad aparece asociada a cada tupla.38 CAPITULO 2. O sea. entre los que pueden estar datos recogidos por encuestas o examinando directamente una muestra de la poblacion. en las operaciones relacionales (como la Reunion Natural).

normalmente en el intervalo [0. la semantica que se le asigne a ese grado sera la que determine su utilidad y. por tanto. 2. Esto permite mantener la homogeneidad de los datos de la base de datos.1]. a cada tupla. Este grado puede tener el signi.car consultas imprecisas. Sin embargo.2 Modelos Basicos de Bases de Datos Difusas El modelo basico de BDRD se considera la forma mas simple y consiste en a~nadir un grado. esta semantica sera utilizada en los procesos de consulta.

Este grado puede tener otros signi. 114].cado de grado de pertenencia de cada tupla a la relacion [84.

el caracter difuso es asignado de forma global a cada tupla. en el que las bases de datos no difusas son un caso particular de su modelo. Ademas. 29. como el nivel de la fuerza de dependencia que existe entre dos atributos. 30]. Una Relacion Difusa la de.3 Modelo de Buckles-Petry El primer modelo que utiliza relaciones de similitud [166] en el modelo relacional fue el propuesto por Buckles y Petry [28.8). El principal inconveniente de estos modelos difusos es que no permite representar la infor- macion imprecisa que tengamos sobre algun atributo particular de alguna entidad concreta (como los valores \joven" o \viejo" para un atributo \Edad"). entre otros (ver apartado 2.cados. 2. representando as la relacion que exista entre ellos [10]. el grado de cumplimiento de una condicion o el grado de importancia [23] de cada tupla en la relacion.

Conjunto . Los dos primeros pertenecen al modelo original y el tercer tipo fue a~nadido mas tarde [30]: 1. que incluye a todos los subconjuntos que pueden considerarse dentro del dominio Di (con cualquier numero de elementos). A continuacion ponemos algunos ejemplos de los valores que pueden representarse. donde P (Di ) representa el conjunto de las partes de un dominio Di .nen como un subconjunto del producto cartesiano siguiente: P (D1 )  : : :  P (Dm ).

casta~no.nito de escalares. Ej. . frubio. pelirrojog.

MODELO DE PRADE-TESTEMALE 39 2. Conjunto .4.2.

fmuy alto. 17g. Conjunto de numeros difusos.nito de numeros. Ej. 16. altog. El signi. Ej. f15. 3.

se establece una Relacion de similitud que sirve para medir la similitud o parecido entre cada dos elementos del dominio1.cado de estos valores es disyuntivo. A cada uno de esos valores posibles se le llama interpretacion. casta~no. o pelirrojo. Normalmente. escalar o numerico. Para cada dominio D. en el primer ejemplo indica que la persona que tiene ese valor tiene el pelo rubio. correspondiendo el 0 al signi. los valores de similitud estan normalizados en el intervalo [0. o sea.1].

cado \totalmente diferentes" y el 1 al signi.

4 Modelo de Prade-Testemale Prade y Testemale publicaron en [127. 2 y 3 permiten representar las situaciones tratadas anteriormente en los modelos sin Logica difusa (apartado 2.1). Consideremos un atributo A cuyo dominio es D. En cambio. dj 2 U . Con esta formulacion pueden representarse todos los tipos de valores que se exponen en la Tabla 2. Un modelo similar fue propuesto por Shenoi y Melton [135.2) sr (di . una Relacion de Similitud puede ser vista como una funcion sr . As. A(x) es una aplicacion que va de D [ feg al intervalo [0. . para un d 2 D.cado \totalmente parecidos" (o \iguales"). En otras palabras. 1] con di . se cumple que A(x)(d) = 1. Los casos 1. En [7] pueden encontrarse distintas formulas que modelan esta indistinguibilidad. los valores que sean similares con un grado mayor que seran indistinguibles y podran ser considerados identicos. Todo nuestro conocimiento disponible acerca del valor que toma A para un objeto x puede ser representado mediante una distribu- cion de posibilidad A(x) sobre D [ feg. pueden construirse clases de equivalencia de forma que los elementos de una misma clase son indistinguibles para el grado de similitud . 128.3. 136].5). esto solo indica que el valor d es completamente posible 1 En la Tabla 5.5 se muestra un ejemplo de relacion de similitud sobre un atributo RENDIMIENTO de una tabla de EMPLEADOS. el resto supone un muestrario de las capacidades de representacion del modelo. En todos los modelos posibilsticos hay que tener en cuenta que si tenemos que. Para un determinado umbral . En [32] se desarrolla un Calculo Relacional para este modelo. Por tanto. 1]. donde e es un elemento especial que denota el caso en que A no se aplica a x. Las relaciones de proximidad cumplen tambien las propiedades re exiva y simetrica pero no cumplen necesariamente la propiedad transitiva [166].3. tal que: sr : D  D ! [0. dj ) 7 ! [0. en el que usaban re- laciones de proximidad en vez de las relaciones de similitud. 2. 129. 1] (2. 130] un modelo de BDRD que permite incorporar lo que denominan datos \incompletos" o \inciertos" en el ambito de la Teora de la Posibilidad (apartado 1.

8d 2 D. d 6= c 2.40 CAPITULO 2. A(x)(e) = 0 mente el dato y este A(x)(c) = 1 A(x) (d) = f1=cgP es \crisp": c A(x)(d) = 0. Sabemos exacta. Desconocida (pero A(x)(e) = 0 Unknown (ecuacion 2. MODELOS DE BDR DIFUSAS: GEFRED Informacion Modelo Prade-Testemale Modelo Umano-Fukami 1.3) aplicable) A(x)(d) = 1. 8d 2 D 3. No aplicable o sin A(x)(e) = 1 Unde.

5 Modelo de Umano-Fukami Uno de los primeros modelos de bases de datos relacionales difusas fue el que presentaron Umano.A(x) (d) = a (d) 8d 2 D A(x) (d) = a (d) 8d 2 D tribucion de posibili- dad a 7. caso de que sea aplicable el dato es a Observe que. 8 d0 6= d. Rango [m. 8d 2 D [ feg Null (ecuacion 2. Tabla 2.5) 5. en el caso 7.e. Ademas. 142. 2. A(x)(e) = 0 tre m y n A(x()(d) = A(x() (d) = 1 si d 2 [m. es decir. y no que el valor d sea cierto para A(x). las tuplas resultantes pueden ser distinguidas por su nivel de satisfaccion de la condicion. n]  D 0 en otro caso 0 en otro caso 6. La informacion A(x) (e) = 0 disponible es una dis. debe existir al menos un valor d con total posibilidad (A(x) (d) = 1). 144. todas las distribuciones de posibilidad deben estar normalizadas. Ademas. i.ned (ecuacion 2. la distribucion de posibilidad a puede representar cualquier tipo de informacion de los tipos 1. 8d 2 D 4. n]  D 1 si d 2 [m. . pudiendo as efectuar una determinada seleccion sobre una relacion difusa de este modelo. 143.5 dos distribuciones de posibilidad pueden ser comparadas usando los comparadores de posibilidad o de necesidad. n]: En.3: Representacion de informacion en dos modelos posibilsticos.4) sentido A(x)(d) = 0. A(x) (d0 ) = 0. 2. La posibilidad de A(x) (e) = . No representable que no sea aplicable A(x) (d) = a (d) 8d 2 D es  y. en [70. Ignorancia total A(x)(d) = 1.. a menos que ese sea el unico valor posible. Como se dijo en el apartado 1. 145].3. Fukami et al. para A(x). 5 y 6.

Es decir. en la que cada valor de dominio aparece con un valor de posibilidad igual a 0. emplea la misma representacion que Prade-Testemale: Unknown : A(x) (d) = 1 8d 2 D (2. MODELO DE UMANO-FUKAMI 41 En esta propuesta utiliza las distribuciones de posibilidad para modelar el conocimiento sobre la informacion en forma similar a como lo hacen Prade-Testemale. que denomina \unknown". La diferencia reside en como concibe la informacion \no aplicable" que entienden que puede ser modelada por una distribucion de posibilidad sobre el dominio considerado. si D es el universo de discurso de A(x) y A(x) (d) representa la posibilidad de que A(x) tome el valor u en U .5.2. entonces para los valores \desconocidos y aplicables".3) Para los valores \no aplicables" existe un caso especial de distribucion de posibilidad denominado \inde.

nido" (unde.

ned) y que se representa como: Unde.

1=Unde.4) Para representar la situacion en la que no se conoce incluso si una \ausencia" de informa- cion es \aplicable" o no. emplean un valor especial que denominan \Null": Null = f1=Unknown.ned : A(x) (d) = 0 8d 2 D (2.

al que llaman modelo possibility-distribution-fuzzy-relational (modelo relacional difuso de distribuciones de posibilidad). cada tupla de una relacion tiene asociada una distribucion de posibilidad en el intervalo [0.3 puede verse una comparacion de las representaciones empleadas en ambos modelos. En este modelo permiten alma- cenar distribuciones de posibilidad en los valores de los atributos. Ademas.5) Para el resto de los casos de informacion \imprecisa" adopta una representacion similar a la del modelo Prade-Testemale.nedg (2. de forma que indica el grado de pertenencia de esa tupla a esa relacion (signi. En [145] Umano y Fukami extienden su modelo de bases de datos difusas. En la Tabla 2. para representar y manipular datos ambiguos.1].

O sea. ellos de.cado 2).

puede almacenarse un numero entre 0 y 1 (por ejemplo 0. Ambiguedad en los valores de los atributos: Permite que los valores que almacenan las relaciones no sean valores exactos. . m es la coleccion de todas las distribuciones de posibilidad en el Universo de discurso Uj del j -esimo atributo de R.8) como valor para ese atributo.1] y que sera vista como un grado de pertenencia de esa tupla a R. P (Uj ) con j = 1. A efectos practicos es como si a cada relacion R se le a~nadiera un atributo (R ) con el dominio en P ([0. podemos almacenar valores \crisp" en cualquier otro atributo. De esta forma el modelo possibility-distribution-fuzzy-relational tiene la ventaja de per- mitir dos tipos de ambiguedad: 1. siendo este visto como una distribucion de posibilidad (1/0. 1]). Naturalmente. : : : . 2. sino que pueden ser distribuciones de posibilidad. 1]).8 en el ejemplo).nen una relacion difusa R. que es el conjunto de todas las distribuciones de posibilidad en el intervalo [0. Igualmente. La funcion R asocia a cada tupla de la relacion R un valor de P ([0. como una funcion de pertenencia R : R : P (U1 )  P (U2 )      P (Um ) ! P ([0. 1]) donde el smbolo  denota el Producto Cartesiano. de m atributos.

42 CAPITULO 2. que puede ser visto como un grado de verdad para indicar en que medida estan relacionados los atributos de cada tupla (a traves de la relacion). En este contexto de. Ambiguedad en la asociacion de valores: Asigna a cada tupla un grado de pertenencia a la relacion. MODELOS DE BDR DIFUSAS: GEFRED 2.

Proyeccion y Seleccion. Diferencia. Producto Cartesiano. Tambien de.ne los operadores basicos del A lgebra Relacional entre relaciones de este tipo: Union.

de forma que en la relacion resultante de una seleccion.6 Modelo de Zemankova-Kaendel Este modelo de base de datos. se compone de tres partes: (a) una base de datos de valores (VDB) donde se organizan los datos en forma similar al resto de los modelos posibilsticos. con sus ventajas e inconvenientes. Reunion y Division. en el apartado 3. 2.2 estudiaremos la Division Relacional que estos autores proponen. donde se almacenan las de. (b) una base de datos explicativa. 171]. publicado en [170. las tuplas tendran un grado que sera obtenido de tomar el mnimo entre el grado que tenan en la relacion original y el grado de cumplimiento de la condicion de la seleccion. En particular.ne los otros operadores no basicos: Interseccion. Cuando en los valores de los atributos hay distribuciones de posibilidad (valores no \crisp") utiliza el Principio de Extension [167] para operar entre ellos. Algunos autores [115. 139] utilizan un grado de posibilidad.7.

etc. la interpretacion del grado de certeza no esta clara y no hay relacion entre la posibilidad y la certeza. Sobre estas relaciones se pueden establecer unos umbrales mnimos a satisfacer para las tuplas que se recuperen. que se emplean para el manejo de adjetivos.  Planteamiento de la consulta: Este modelo plantea la recuperacion en una consulta en forma similar al de Prade-Testemale solo que la medida de posibilidad que emplea para encontrar la compatibilidad del subconjunto difuso F de la condicion con el valor del atributo A para cada tupla en la relacion viene dada por: pA(F ) = sup fF (u)  (u)g (2.niciones para los subconjuntos difusos y relaciones difusas y (c) un conjunto de reglas de traduccion. El resultado de una consulta se presenta en forma de relaciones difusas las cuales con- tienen dos campos en los que se recogen los valores de posibilidad y certeza que presenta cada tupla para la consulta dada. Este lenguaje esta implementado en una forma extendida del sistema RIM (Relational Information Management) desarrollado por la Boeing Co.7) es usada en lugar de la medida de necesidad de Prade-Testemale.6) u2D y la medida de certeza cA (F ) = max u2D f0. como s la hay entre posibilidad y necesidad: N (X ) = 1 P (:X ). inf fF (u)  A(u)gg (2. . Sin embargo. La manipulacion de datos esta basada en el algebra relacional.

7.7 Modelo GEFRED de Medina et al. 2. Si s es la relacion de similitud de la que se parte la relacion \mayor que" se construira:  1 0:5  s(x. 43  Operadores de Seleccion: En el estudio que hacen de las condiciones impuestas en la seleccion parten de una relacion  de similaridad sobre D  D y a partir de ella construyen cualquier otra relacion de comparacion [170].9) d2D para condiciones del tipo AF donde F no sea atomico. no da ninguna regla de calculo.6 lo que dara para condiciones de tipo Af con f atomico: pf (A(x)) = supf (d. igual". f )  A(x)(d)g (2.8) Las correspondientes medidas de posibilidad se computaran utilizando la ecuacion 2. 103] fue propuesto por Medina. y) si x  y mayor que(x. y) = 0:5  s(x. Pons y Vila y se basa en la de. El modelo GEFRED [102. MODELO GEFRED DE MEDINA ET AL. Dan tres ejemplos: \aprox.2. y) si x < y (2. \mayor que" y \menor que".

que incluyen los dominios y las relaciones clasicas respectivamente: De.nicion de lo que llama Dominio Difuso Generalizado (D) y Relacion Difusa Generalizada (R).

nicion 2.1 Si U es el universo o dominio de discurso. Pe(U ) el conjunto de todas las distribuciones de posibilidad de.

nidas sobre U . incluidas las que de.

nen los tipos Unknown y Unde.

4).ned (tipos 8 y 9 de la tabla 2. y NULL es otro tipo de.

4 (tipo 10) entonces. de.nido en la tabla 2.

Unde. Los tipos Unknown.nimos Dominio Difuso Generalizado como D  Pe(U ) [ NULL.

ned y NULL son de.

De. tu Con esos dominios difusos podremos representar todos los tipos de datos que se expresan en la tabla 2.4. Fukami et al.nidos en el sentido de Umano. de [70] y [143].

nicion 2. B).2 Una Relacion Difusa Generalizada. viene dada por un par de con- juntos: \cabecera" (H) y \cuerpo" (B). R = (H. de. R.

La \Cabecera" es un conjunto .nidos como sigue: .

Cj es un \atributo de compatibilidad" que toma valores en el intervalo [0. H = f(A1 : D1 [. . Cn ])g donde a cada atributo Aj . n). 2. : : : . le subyace un dominio difuso generalizado. C2 ]).jo de ternas atributo-dominio-compatibilidad (donde el ultimo es opcional). no necesariamente distinto.1]. C1 ]). (An : Dn [. (A2 : D2 [. Dj (j = 1. : : : .

Edad=28. Un valor desconocido Unknown dado por la distribucion de posibilidad Unknown=f1=u : u 2 U g sobre el dominio. MODELOS DE BDR DIFUSAS: GEFRED 1. considerado. representado mediante f1=20.44 CAPITULO 2. 6. Edad= f0:4=23. 1] representando grados de cumplimiento (Ej. Edad= f20. 4. Una distribucion de posibilidad en el dominio de los numeros (Ej. 2. 9. se expresa f1/Mala. 1=21g). etiquetas lingusticas). 21g. Un conjunto de posibles asignaciones excluyentes de numeros (Ej. Calidad=0. Un numero Real 2 [0. representado mediante la distribucion de posibilidad 1/28). Un valor inde.1. 7. Un escalar simple (Ej. Tama~no=Grande. representado mediante la distribu- cion de posibilidad 1/Grande). Una distribucion de posibilidad en el dominio de los escalares (Ej.0/regularg). 3. Aptitud= f0:6/mala. 8. Aptitud=fMala. 5. Un conjunto de posibles asignaciones excluyentes de escalares (Ej. numeros difusos.9).Buenag.1/Buenag). 0:8=25g. 1:0=24. U . Un numero simple (Ej.

nido Unde.

ned dado por la distribucion de posibilidad Unde.

10.ned=f0=u : u 2 U g sobre el dominio. U . Un valor nulo NULL dado por la expresion NULL=f1/Unknown. considerado.1/Unde.

y cij el grado de compatibilidad asociado a este valor.nedg. As. (An : dein [. : : : . (A2 : dei2 [. : : : . ci1 ]). donde cada tupla esta compuesta por un conjunto de ternas atributo-valor-grado (el grado es opcional). tu El grado de compatibilidad se usara cuando efectuemos alguna operacion (por ejemplo una consulta) y nos servira para almacenar el grado con el que un valor de un atributo concreto de una tupla concreta ha satisfecho dicha operacion. ci2 ]). las relaciones base de la base de datos no tienen atributos de compatibilidad. 2. Tabla 2. cin ])g con i = 1.4: Tipos de datos que puede representa GEFRED. siendo m el numero de tuplas de la relacion.El \Cuerpo" consiste en un conjunto de tuplas difusas generalizadas distintas. . De. m. B = f(A1 : dei1 [. y donde deij repre- senta el valor de dominio que toma la tupla i sobre el atributo Aj .

m. se de. Entonces. : : : . c n])g (2.3 Sea R una relacion difusa generalizada dada por:  H = f(A : D [. c 1]). : : : .10) 1 i1 i1 n in in con i = 1.nicion 2. C ])g R = B = f(A1 : de 1 [. siendo m el numero de tuplas de la relacion. C ]). (A n : de n [. : : : . (A : D [. 2.

nen: .

: : : [.  Componente de compatibilidad de una relacion difusa generalizada. : : : . Rv .12) donde Hc y Bc son las componentes de compatibilidad de la \cabecera" y el \cuerpo" respectivamente. como la parte de la relacion dada por:  Hv = f(A1 : D1 ). tu Los operadores de comparacion tambien son rede. Rc.7. (An : Dn )g Rv =Bv = f(A1 : dei1 ). cin ]g (2. 45  Componente de valor de una relacion difusa generalizada. MODELO GEFRED DE MEDINA ET AL.11) donde Hv y Bv son las componentes de valor de la \cabecera" y el \cuerpo" respec- tivamente.2. Cn ]g Rc = Bc = f[ci1 ]. : : : [. como la parte de la relacion dada por:  Hc = f[C1 ]. (An : dein )g (2. : : : .

nidos para adaptarse a la naturaleza difusa de los datos que manejamos: De.

4 Sea U el dominio de discurso considerado.nicion 2. Llamaremos Comparador Ex- tendido. . a cualquier relacion difusa de.

uj ) 7 ! [0. uj 2 U tu De.13) (ui. 1] con ui . expresada en la forma:  : U  U ! [0.nida sobre U . 1] (2.

nicion 2. D el dominio difuso generalizado construido sobre el y sea  un comparador extendido de.5 Sea U el dominio de discurso considerado.

nido en U. Consideremos una funcion  de.

nida como:  : D  D ! [0. de2 ) 2 [0. tu . si cumple:  (de1 . diremos que  es un Comparador Difuso Generalizado sobre D inducido por el comparador extendido .14)  (de1 . respectiva- mente. de2 representan las distribuciones de posibilidad 1=d1 . por los valores d1 . d2 . d2 ) 8d1 . 1=d2 . de2 ) = (d1 .15) donde de1 . d2 2 U (2. 1] Entonces. 1] (2. inducidas.

46 CAPITULO 2. MODELOS DE BDR DIFUSAS: GEFRED En una relacion (De.

el grado de compatibilidad del valor de un atributo concreto (en una tupla) se obtiene como consecuencia de los procesos de manipulacion rea- lizados sobre esa relacion y expresa el grado con el que ese valor ha satisfecho la operacion realizada sobre el.2). Sobre estas de.nicion 2.

niciones GEFRED rede.

Diferencia. Interseccion. Seleccion. Proyeccion. Estos operadores se de. Reunion y Division. Pro- ducto cartesiano.ne los operadores del algebra relacional en el llamado A  lgebra Relacional Difuso Generalizado: Union.

Todos esos operadores estan de.nen indicando la cabecera y el cuerpo de una Relacion Difusa Generalizada que sera el resultado de la operacion.

excepto la division que esta de.nidos en [102] y [103].

damos la de. A continuacion.nida en el Captulo 3 [72].

De.nicion de algunos de los operadores del A lgebra Relacional Difuso Generalizado. que usaremos posteriormente.

m0 . C ]). Cn0 0 ])g R0 = B0 = f(A01 : de0k1 [. c n])g 1 i1 i1 n in in  H0 = f(A01 : D10 [. (A : D [. C10 ]). (A0n0 : Dn0 0 [. : : : . c 1]).6 Sean R y R0 dos relaciones difusas generalizadas dadas por:  H = f(A : D [. C ])g R = B = f(A1 : de 1 [. : : : . (A n : de n [. : : : . siendo m y m0 las respectivas cardinalidades y donde n y n0 son los respectivos grados. : : : . c0kn0 ])g donde i = 1. Entonces. : : : . (A0n0 : de0kn0 [. c0k1 ]). el Producto Cartesiano Difuso Generalizado se de.nicion 2. m y k = 1. : : : .

16) B = B  B0 tu De.ne como una relacion difusa generalizada dada por: H H [ H0 R  R0 =  = (2.

y sea X un subconjunto de H expresado como: X  H. X = f(As : Ds [.10. X ) = H BP = f(As : deis [. tu De. s0 2 S 0 y S. s0 2 S 0. X ) es una relacion difusa generalizada dada por:  P = X P (R . : : : .nicion 2.7 Sea R una relacion difusa generalizada dada por la ecuacion 2. P (R. S 0  f1. : : : . ngg Entonces.17) con s 2 S . cis0 ])g (2. S 0  f1. S. la Proyeccion Difusa Generalizada de R sobre X . Cs0 ]) : s 2 S. ng.

nicion 2.8 Sea R una relacion difusa generalizada dada por la ecuacion 2. 1] un \umbral de cumpli- miento". ng) y cuali. : : : . Entonces. ea 2 D una constante.  un comparador difuso generalizado y sea 2 [0. la Seleccion Difusa Generalizada realizada sobre R con la condicion inducida por  compuesto con ea y el atributo Ak (k 2 f1.10.

cada por . S (R. es una relacion dada por: . ea)  ).  (Ak .

lo extienden para permitir almacenar y/o tratar informacion imprecisa o incierta. : : : . a nivel teorico existen muchos modelos de Bases de Datos Relacionales Di- fusas (BDRD) que.2). C1 ]). Ademas. (Ak : derk . m0 . ea)  ) = BS = f(A1 : der1 [.8. (An : dern [. Los modelos de BDRD se basan en el concepto de relacion difusa. ea)  (2.2. Algunas de las mas importantes formas de introducir informacion difusa en las relaciones son: 1. esas formas pueden ser mezcladas para permitir una mayor exibilidad.  (Ak . crn ])g (2. cr1 ]). c0rk ). Valores difusos en los atributos: Esto se re. Cn ])g S (R.19) donde r = 1.18) con c0rk =  (derk . tu 2. basados en el modelo relacional (apartado 1. : : : . siendo m0 la cardinalidad de la seleccion. Sin embargo. : : : . (An : Dn [. RESUMEN DE LOS TIPOS DE MODELOS DE BDRD 47  HS= f(A1 : D1 [. : : : .8 Resumen de los Tipos de Modelos de BDRD Como hemos visto. hay varias formas de permitir informacion imprecisa o incierta en estas relaciones difusas.

30.ere a que en los atributos de una relacion podremos almacenar valores difusos y podremos operar con ellos.4. como se ha visto. aunque. no todos admiten todos los tipos posibles. 114. generalmente en el intervalo [0. como se muestra en la Tabla 2. Este tipo de relaciones difusas es empleado en [28. Grado en cada valor de un atributo: Esto implica que cada valor de cada atributo puede tener asociado un grado. 102. 129.1]. El signi. 103] el mas general. que mida el nivel de difuminado de dicho valor. 145]. El tipo de estos valores puede ser muy variado. 143. 2. siendo GEFRED [102.

Este puede ser un caso poco usual pero que puede ser a veces muy util. el signi. como por ejemplo distribuciones de posibilidad. 138. pero pueden permitirse otros valores. Este tipo de relaciones difusas es empleado en [114.1]. Aqu el grado esta asociado a algunos atributos. Ademas. 3.7.1 y 3.cado de estos grados puede ser variado como veremos a continuacion. 145] (ver apartados 3. pero aqu el grado esta asociado a toda la tupla y no exclusivamente a un valor particular de una tupla. 4. Grado en un conjunto de valores de diversos atributos: Este es un caso intermedio entre los dos casos anteriores.7. El dominio de esos grados suele estar delimitado al intervalo [0.2). Este tipo de relaciones difusas es empleado en [23] (ver apartado 3.7.3) y en el modelo GEFRED [102]. Grado en toda la tupla de una relacion: Esto es similar al caso anterior.

Dependiendo de este signi.cado de esos grados es variado.

cado el tratamiento de los datos podra ser diferente. Los posibles signi.

cados mas importantes de los grados son los siguientes: .

48 CAPITULO 2.e. Este signi. MODELOS DE BDR DIFUSAS: GEFRED 1. Esto suele emplearse tras establecer alguna condicion sobre los valores de una relacion (i. Grado de cumplimiento (o satisfaccion): Una propiedad puede cumplirse con cierto grado entre dos extremos: La propiedad se cumple totalmente (usualmente grado 1) y la propiedad no se cumple en absoluto (usualmente grado 0). una seleccion con una condicion difusa) y los grados expresaran en que medida esa condicion ha sido satisfecha.

2. 138]. para el ejemplo anterior). Este signi. 102.cado se usa en [23. Grado de pertenencia: Este tipo de grados miden el nivel de pertenencia de un objeto (por ejemplo una tupla) a un conjunto (una relacion.

Grado de incertidumbre: El grado expresa la seguridad con que conocemos un dato determinado. 3. Los valores entre 0 y 1 expresan distintos niveles de incertidumbre. Este signi. 145]. En [63] puede verse una discusion sobre estos aspectos.cado se usa en [114. Si estamos seguros de su veracidad dicho grado sera 1 y si estamos seguros de su falsedad dicho grado sera 0. indicando que no estamos completamente seguros.

en cierta forma. Grado de posibilidad: Mide la posibilidad de la informacion almacenada. este signi. pues puede entenderse esa incertidumbre como expresada sobre la pertenencia de una tupla a la relacion. 4.cado es. Como se dice en [125]. bastante parecido al anterior.

Este signi.) pueden tener dife- rentes importancias.. Grado de importancia: Distintos objetos (tuplas. de forma que existan objetos mas importantes que otros. 5. pero se ve este grado como mas debil ya que contiene informacion que es mas o menos posible (y no mas o menos cierta). atributos..cado es similar al anterior.

aunque su trabajo se enfocaba sobre bases de datos clasicas. 2. La consulta exible a bases de datos puede ser realizada tanto en bases de datos clasicas como difusas. Ademas de las consideraciones que se han expuesto anteriormente al explicar los distintos modelos. las ventajas generales de las consultas exibles son:  Pueden proveer respuestas cuando las consultas clasicas.9 Lenguajes para Consultas Flexibles La recuperacion de informacion de una base de datos es una actividad fundamental. 114]. Por consulta exible entendemos aquella consulta en la que cada condicion individual puede ser satisfecha parcialmente.  Conseguir los elementos que cumplen las condiciones con un grado que indique su nivel de cumplimiento de estas condiciones. Uno de los primeros trabajos sobre consultas exibles utilizando conjuntos difusos fue el de Tahani [138]. pudiendo obtener solo los n mejores. Con ello pretendemos siempre obtener los datos que nos interesan en cada momento para aplicarles un tratamiento particular. A partir de . Basicamente. por ser demasiado restrictivas.cado se usa en [23. En una consulta clasica (o tradicional) se establecen las llama- das condiciones de consulta y cada dato del resultado debe satisfacer completamente dichas condiciones. aqu vamos a a~nadir algunas mas. no lo hacen.

2. en donde hace un estudio sobre la division relacional entre las relaciones difusas resultantes de sendas consultas difusas. En el apartado 3. Muy similar a la idea de Tahani es la propuesta por Bosc et al.3 se explica su modelo de bases de datos. sus distintas propues- tas de division relacional y un estudio comparativo entre esas propuestas y la que nosotros proponemos en ese mismo captulo. en [23].7. LENGUAJES PARA CONSULTAS FLEXIBLES 49 relaciones clasicas y un predicado difuso produce una relacion en la que cada tupla tiene asociado un grado que indica el nivel de satisfaccion del predicado.9. Una consulta con condiciones imprecisas utiliza predicados atomicos de.

\Caro". A estos predicados se le pueden a~nadir modi. son predicados imprecisos \Alto".nidos usando con- juntos difusos sobre un dominio particular. \Bueno"... Por ejemplo.

1] para modelar los signi.cadores lingusticos. repre- sentados por funciones de [0.1] a [0.

.cados de \muy". Las funciones modi. \mas o menos". \no muy"..

Amod (d) = on (A (d)) donde o es una norma idempotente para un concentrador y una co-norma para un dilatador.3). 3. donde A es el predicado: 1.cadoras mas usuales son de la forma siguiente. Amod (d) = (A (d  a)) En [25] puede verse mas informacion sobre modi. Amod (d) = (A (d))n donde n > 1 para un concentrador y n < 1 para un dilatador (ver apartado 1.3. 2.

3. 161. 133]. pero pueden usarse otras funciones [64. como las expresadas en el apartado 1. Tambien puede desearse expresar que determinadas condiciones simples tienen mayor importancia que otras [60.1. Las condiciones compuestas expresadas en forma de expresiones logicas son representadas usando operaciones sobre conjuntos difusos. Normalmente se usa la funcion mnimo para la conjuncion y la funcion maximo para la disyuncion. Las consultas tambien pueden involucrar cuanti. 164].3.cadores.

97. para recuperar la relacion resultante.cadores [149.9.T] <lista_de_selecci on> FROM <lista_de_tablas> WHERE <condicion_difusa> donde. como [19. SQLf solo considera el comando de consulta SELECT. Igual que en estos trabajos. representa una sntesis de las caractersticas y funcionalidades sugeridas en otras propuestas anteriores de consulta exible en bases de datos clasicas. 154].1) y es: SELECT [N|T|N. El formato de una consulta SQLf se basa en el de una consulta SQL (apartado 1. se aplica la condicion difusa al producto carte- siano de todas las tablas de la lista.1 El Lenguaje SQLf de Bosc y Pivert El lenguaje SQLf [22]. 138.5. se proyecta sobre los atributos de la lista de seleccion y se devuelven solo las N mejores tuplas y/o aquellas que tengan su umbral (threshold ) de . 115.2. 2. 169] y funciones de agregacion [62]. 158. publicado en 1995.

MODELOS DE BDR DIFUSAS: GEFRED cumplimiento mayor que T.50 CAPITULO 2. Los valores N y T son opcionales y se puede especi.

las unicas condiciones difusas que pueden emplearse son la comparacion entre valores \crisp" (columnas) con etiquetas lingusticas y el uso del comparador difuso \aproximadamente igual" entre valores \crisp". En la condicion difusa.car uno de ellos o los dos. Tambien permite el uso de cuanti. ademas de condiciones clasicas.

2 Cuanti. 2.cadores.9.

cadores Difusos de la Consulta Mediante el concepto de cuanti.

los cuanti. 164. 169] es posible construir consultas que requie- ren efectuar un calculo sobre el numero de tuplas que satisfacen una determinada condicion.cador [158. Al igual que en el modelo clasico.

Los cuanti.cadores pueden ser absolutos y relativos.

\pocos".cadores absolutos pueden resolver cuestiones sobre el numero total de tuplas resultantes de una determinada consulta. \peque~no". \muchos".. diciendo (o respondiendo a) si este numero es \gran- de".. En estos casos se observa que la verdad del cuanti. \muchsimos".

Los cuanti.cador depende de una unica cantidad.

cadores relativos pueden resolver cuestiones en las que la verdad del cuanti.

- cador depende de dos cantidades. Este tipo de cuanti.

..cadores se usan en expresiones como \la mayora". \la minora". \aproximadamente la mitad". para evaluar la verdad del cuanti. En estos casos.

En [169] representa a los cuanti.cador necesitamos hallar la cantidad total que cumple la condicion y pon- derarla respecto a la cantidad total que podra cumplirla (incluyendo los que la cumplen y los que no la cumplen).

O sea.cadores difusos absolutos como conjuntos difusos en el intervalo [0. 1]. +1) y los relativos como conjuntos difusos en el intervalo [0. un cuanti.

1] En [103] se ofrece una discusion con mas profundidad sobre este aspecto. 1] ! [0.cador Q es representado como una funcion Q. cuyo dominio depende de si es absoluto o relativo: Qabs : R+ ! [0. donde representa a los cuanti. 1] Qrel : [0.

En las Figuras 4.cadores difusos (absolutos o relativos) como distribuciones de posibilidad trape- zoidales.5 y 5.9 puede verse la representacion gra.

ca de algunos ejemplos de cuanti.

Ademas.cadores difusos relativos. los cuanti.

cadores pueden usarse en dos principales familias de expresiones [125]. donde Q es el Cuanti.

cador y A y B son predicados (condiciones difusas o no): 1. \la mayora de los jugadores del equipo X son muy buenos". \Q elementos del conjunto X cumplen A": Por ejemplo. Existen varios metodos para determinar el grado de verdad de sentencias con cuanti. \Q elementos del conjunto X que cumplen B tambien cumplen A": Por ejemplo. 2. \la mayora de los jugadores del equipo X que son altos son tambien muy buenos".

164] basado en operadores OWA (Ordered Weighted Average) [160]. en [158] se propone un metodo basado en el principio de extension. . Por ejemplo.7. en [162] (ver apartado 3.cado- res.4) se propone un metodo muy extendido [20.

donde se explica el uso de cuanti.1 y 5.2.3.2.1.1.9.2. LENGUAJES PARA CONSULTAS FLEXIBLES 51 Otros metodos [169] distinguen cuando A es un predicado clasico y cuando A es un predicado difuso en el que los elementos que cumplen A forman un conjunto difuso (ver apartados 5.

cadores en FSQL). Pueden encontrarse otras propuestas alternativas en [149. 131]. Un estudio sobre la aplicacion de cuanti.

7. En el apartado 4.cadores difusos en la Division Relacional en BDRD puede verse en el apartado 3.6 y otras propuestas anteriores en los apartados 3.4 y 3.5 puede verse el uso y utilidad de cuanti.7.5.

.cadores difusos en el Calculo Relacional Difuso que se propone en ese mismo captulo.

MODELOS DE BDR DIFUSAS: GEFRED .52 CAPITULO 2.

Captulo 3 Division Relacional Difusa El modelo GEFRED [102. 103] no inclua una de.

Al . que mejora algunos aspectos de otras soluciones aparecidas en la bibliografa.nicion explcita para la Division Relacional Difusa. por sus caractersticas intrnsecas y por los problemas que plantea el tratamiento de informacion \imprecisa". Esta operacion. En este captulo pretendemos dar una solucion a este problema. no es directamente trasladable de bases de datos clasicas a difusas.

Las tuplas de la relacion resultante de la division que aqu proponemos se obtienen junto con un grado de posibilidad que indica la medida en que esa tupla cumple las condiciones de la division relacional.nal de este captulo se ofrece un resumen de algunas otras soluciones al problema de la Division Difusa y un breve estudio comparativo con la propuesta que aqu hacemos. Los resultados obtenidos son los que intuitivamente se esperan obtener. se de. Ademas. para formalizar este metodo de division relacional difusa.

2): La Interseccion Difusa Cuali.nen dos nuevos operadores que pueden ser utiles en otras operaciones (apartado 3.

A lo largo de este trabajo nos centraremos en el uso de las relaciones difusas del modelo GEFRED que. representa la informacion difusa en dos sentidos: Valores difusos en los atributos y un Grado (opcional) asociado a cada valor.1 Introduccion y Enfoque del Problema La division relacional es un operador del A lgebra relacional.8.  Dame los clientes de Madrid que han comprado de todos los 10 productos mas vendidos.cada y la Proyeccion Difusa Generalizada con Funciones de Grupo. Este operador permite resolver preguntas del tipo:  Lista todos los clientes que han comprado todos nuestros productos. como se ha dicho en el apartado 2. La division relacional hace uso del cuanti. 3. Esos grados son vistos como grados de cumplimiento.

de alguna forma.cador universal (para todo. Los cuanti. 8) seleccionando las tuplas de una primera relacion que estan relacionadas. con todas las tuplas de una segunda relacion.

En este ultimo artculo puede verse.cadores lingusticos han sido muy usados en el contexto de las Bases de Datos para procesar consultas exibles. un estudio comparativo de los metodos de Zadeh y Yager. presentaron en [150]. 163. 53 . el uso de los operadores OWA presentado por Yager en [162. 164] o el metodo que Vila et al. Ejemplo de esto es el metodo presentado por Zadeh en [169]. ademas.

54 CAPITULO 3. DIVISION  RELACIONAL DIFUSA Estos estudios sirven para calcular el grado de cumplimiento (o de verdad) de a.

rmaciones que incluyen cuanti.

calculan el grado de cumplimiento de a. Por ejemplo.cadores lingusticos (absolutos o relativos) y propiedades (precisas o imprecisas).

Sin embargo.  La mayora de los estudiantes son jovenes. estos metodos solo dan un grado de cumplimiento para la expresion y no nos dicen las tuplas que cumplen la a.rmaciones del tipo:  Muy Pocos estudiantes son buenos en Matematicas.

rmacion y en que grado la cumple cada una. En el presente trabajo formalizamos un metodo para calcular la respuesta a preguntas del tipo de los primeros ejemplos. indicando las tuplas que satisfacen la pregunta y en que grado la satisfacen. Esto nos va a permitir establecer un umbral.4). para seleccionar solo aquellas tuplas cuyos grados de cumplimiento sean mayor que u. Otra importante aportacion de nuestra propuesta es que los valores de los atributos pueden ser difusos de multitud de tipos (Tabla 2. u. dados al principio de esta seccion. La de.

nicion de la division relacional clasica la podemos encontrar en el apartado 1.2.4.1. En este trabajo nos centraremos en la primera de.

para simpli. sin considerar la division extendida.nicion.

El problema surge cuando los atributos de nuestra base de datos no son \crisp".3. Como se ha dicho. ya que puede expresarse en terminos de los operadores primitivos del algebra relacional clasico.1) d2D donde "D es un umbral dependiente del dominio.2. GE- FRED de. El mismo problema se plantea en la diferencia relacional. en un contexto difuso no siempre dara por respuesta si o no. ya que dos tuplas pueden ser redundantes solo en cierto grado. sino distribuciones de posibilidad. El metodo que aqu presentamos esta enmarcado dentro del modelo GEFRED [102. Nosotros llamaremos a esa ecuacion la formula clasica de la division relacional. la proyeccion no es trivial. 103]. La division relacional no es una operacion primitiva del algebra relacional clasico. Esa formula sera explicada y demostrada de manera informal en el apartado 3. lo cual. pues hay que considerar cuando dos distribuciones de posibilidad se consideran redundantes. en [129] Prade y Testemale consideran que dos distribuciones de posibilidad  y 0 sobre un dominio D son aproximadamente iguales si sup j (d) 0 (d) j "D (3. Existen varios criterios para esto. ya que hay que considerar si dos tuplas son o no iguales. aunque sus fundamentos teoricos pueden usarse en otros contextos.4 se muestra como puede expresarse el operador de division en funcion de algunos de los operadores primitivos del algebra relacional clasico: Proyeccion. Por ejemplo. Entonces. En la ecuacion 1.car y para enfocar mejor el problema. Producto Cartesiano y Diferencia relacional.

Seleccion y Reunion. Producto cartesiano.ne de nuevo los operadores del algebra relacional en el llamado A  lgebra Relacio- nal Difuso Generalizado: Union. Interseccion. Diferencia. Estos operadores se de. Proyec- cion.

las relaciones base . El grado de com- patibilidad del valor de un atributo concreto (en una tupla) se obtiene como consecuencia de los procesos de manipulacion realizados sobre esa relacion y expresa el grado en el que ese valor ha satisfecho la operacion realizada sobre el.nen indicando la cabecera y el cuerpo de una Relacion difusa generalizada que sera el resultado de la operacion. De acuerdo con esto.

por tanto. DOS NUEVOS OPERADORES 55 de la base de datos no tienen atributos de compatibilidad. el grado de pertenencia a la relacion.3. Para nuestra de. El grado de compatibilidad no indica.2.

nicion de Division Relacional Difusa. usaremos las de.

para la de.niciones de Pro- ducto Cartesiano Difuso Generalizado.7.2 Dos Nuevos Operadores Como ya hemos indicado anteriormente. Proyeccion Difusa Generalizada y Selec- cion Difusa Generalizada dadas en el apartado 2. 3.

nicion de la division difusa generalizada. vamos a de.

nir dos nuevos operadores que tambien pueden usarse para otros .

nes.1 Interseccion Difusa Cuali. incluso fuera del contexto de GEFRED. 3.2.

representa las tuplas de R que pertenecen tambien a R0 (entendiendo la pertenencia desde un punto de vista \crisp"). notada por R \ R0 . En una base de datos relacional difusa los conceptos anteriores ya no estan tan claramente de. si suponemos que tenemos dos relaciones clasicas R y R0 com- patibles respecto a la union (con igual numero y tipo de atributos).cada: \Q En el algebra relacional clasico. la interseccion relacional.

de.nidos: La igualdad de tuplas y la pertenencia a un conjunto son conceptos difusos. En este contexto.

nimos la Interseccion Difusa Cuali.

que expresa la posibilidad de que existan las tuplas de R en la relacion R0 o. la posibilidad de que las tuplas de R esten en la interseccion. notada por R \Q R0 . dicho de otro modo.cada de R y R0 . De.

: : : . siendo m y m0 las cardinalidades de R y R0 respectivamente. : : : . (An : de0kn)g con i = 1. y siendo n el grado de ambas relaciones1 . : : : . (An : Dn )g R= B = f(A1 : dei1 ). m y k = 1. : : : . m0 . (A0n : Dn g R0 = B0 = f(A01 : de0 k1). tales que ambas son rela- ciones base de la base de datos y compatibles con respecto a la union.1 Sean R y R0 dos relaciones difusas generalizadas. dadas por: H = f(A1 : D1 ). : : : . (An : dein )g  H0 = f(A01 : D1 ). : : : .nicion 3. la Interseccion Difusa Cuali. Entonces.

cada de R y R0 . modi. sera igual a R.

c00in g 1 Los conceptos de relacion. : : : .cando los grados de compatibilidad de sus atributos: 8H > < \ f(A1 : D1 . : : : .2) : \ Q = B\c Q = fc00i1 . : : : . C1 ). cardinalidad y grado fueron introducidos en la De. (An : dein )g Q 0 R \Q R = > B (3. (An : Dn. Cn)g = ( B\v Q = Bv = f(A1 : dei1).

nicion 1.6 y el concepto de relacion difusa generalizada en la De.

2. .nicion 2.

DIVISION  RELACIONAL DIFUSA con i = 1. Los grados de compatibilidad de la componente de compatibilidad B\c Q se calculan de la siguiente forma: c00iq = Ki 8q = 1. n (3. : : : . de R. m y donde Bv es la componente de valor (sin grados de compatibilidad) del cuerpo. Observese que. : : : .56 CAPITULO 3. por de. B.3) donde Ki es el grado de posibilidad de que la tupla i de R exista en R0 .

Dichos valores.m0 q=1.:::. se calculan uno a uno de la siguiente forma: 8i = 1. m. m Ki = w=1max f min f= (deiq . Ki .nicion.4) donde = es un comparador difuso generalizado (ver De. con i = 1. siempre van a existir sus grados de compatibilidad Cq . : : : .n (3. de0 wq )gg .:::. : : : .

Una de. d0 )=(d. d0 ).nicion 2.5) sobre D inducido por el comparador extendido = (d. tu Observaciones:  El comparador = sera usado para medir la igualdad de dos valores.

pe0 ) = sup min (= (p. por ejemplo: = (pe. pe0 (p0 )) (3. pe(p). para distribuciones de posibilidad.nicion de este comparador.p0 )2U U = sup min (pe(d). y sus distribuciones de posibilidad asociadas son pe y pe0 respectivamen- te. p0 ). podra ser. pe0 2 D. U es el dominio de discurso sobre el que se construye el dominio difuso generalizado D (ver De.5) (p.6) d2U donde pe. pe0 (d)) (3.

nicion 2.1). El comparador = se puede traducir por \posiblemente igual". Para este comparador puede usarse otra de.

1. se puede utilizar una medida de necesidad.40.nicion. sobretodo si se emplea para compa- rar escalares o distribuciones de posibilidad sobre escalares con una relacion de similitud entre ellos.7 se da una de.2. como la indicada en la ecuacion 3. Por ejemplo. En el apartado 5.

Nosotros. usaremos la de.nicion de este comparador para distribuciones de posibilidad sobre escalares con una relacion de similitud.

aunque queremos remarcar que este metodo es independiente del comparador empleado para evaluar la igualdad entre valores difusos.nicion anterior a lo largo de este captulo. Para determinados tipos de valores es posible que para aplicar este metodo se requiera de.

nir previamente un comparador de igualdad para ellos. de que exista en R0 .  Al aplicar la ecuacion 3. . Ki . son relaciones base de la base de datos y por tanto no tienen atributos de compatibilidad.  Notese que para calcular los Ki los grados de compatibilidad de R y R0 no son tenidos en cuenta porque ambas relaciones. i es una constante que indica la tupla de R a la cual estamos calculando su posibilidad. R y R0 .4.

DOS NUEVOS OPERADORES 57  Se puede mejorar mucho la e.2.3.

si entre los atributos de R y R0 existen n0 atributos con dominios \crisp". Si establecemos que esos n0 atributos sean los primeros. con 1  n0  n (numericos o escalares simples.ciencia del proceso de calcular los Ki . tipos 1 y 2 de la Tabla 2. podemos cambiar la de. esto es.4). entonces.

10) donde v es la cardinalidad de la relacion Ri . (An : dein0 )g (3. la funcion max se aplica solo a v valores (en vez de a m0) y la funcion min solo se aplica cada vez a n n0 valores (en vez de a n). alterando solamente los atributos de compatibilidad de los n0 primeros atributos (con dominios \crisp"):  K si q 2 f1.4.::: . de R.:::.7) > : B\ Q = B\c Q = fc00i1 . : : : . B. (An0 : Dn0 . : : : . c00in0 g con i = 1. As. Por tanto.n (3. : : : .9) (b) Calcular Ki aplicando la misma ecuacion 3. : : : . < Q ((Anv0 +1 : Dn0 +1v ). Cn0 ). m (a) Calcular una relacion. : : : . ng y 9Cq (3. : : : . para cada funcion min. para cada tupla i.8) Los valores Ki . Los grados de compatibilidad de la componente de compatibili- dad B\c Q se calculan ahora de la siguiente forma. pero considerando ahora la relacion Ri en vez de R0 y restringiendo el rango de q: Si llamamos deiwq a los valores de Ri. entonces Ki = w=1 max f min f=(deiq . m y donde Bv es la componente de valor (sin grados de compatibilidad) del cuerpo. : : : .  A la relacion resultante de la Interseccion Difusa Cuali. el comparador = se aplica solo a los valores de los n n0 atributos difusos. m. : : : . : : : . resultante de la siguiente seleccion (que no plantea problemas ya que la condicion de seleccion es una igualdad sobre atributos \crisp"): Ri = S (R0 . en los siguientes dos pasos: 8i = 1.nicion anterior haciendo que: 8H > > \ = f(A1 : D1 .v q=n0+1. A0q = deiq 8q = 1. (An :eDn)g R \Q R0 = > B\Q = B = f(A1 : di1 ). n0g c00iq = i 0 ciq si q 2 fn + 1. Ri . deiwq )gg . se calculan uno a uno. C1 ). n0 ) (3. : : : . con i = 1.

1]. de forma que C1  u. As conseguimos que en el resultado .cada podemos aplicarle un umbral u 2 [0.

nal esten las tuplas de R que estan en R0 con posibilidad u como mnimo.  La Interseccion Difusa Cuali.

. Este operador es. como una interseccion en una sola direccion. en cierto sentido. La operacion R \Q R0 expresa la posibilidad de que las tuplas de R esten en R0 y la operacion R0 \Q R expresa la posibilidad de que las tuplas de R0 esten en R.cada no posee la propiedad conmutativa.

1: Ejemplo 3.58 CAPITULO 3. DIVISION  RELACIONAL DIFUSA H A B C B A1 B1 C1 A1 B3 C2 A2 B2 C2 A2 B3 C2 A3 B3 C2 A3 B1 C3 Tabla 3.1 de Interseccion Difusa Cuali.

2: Ejemplo 3. H A B C B A1 B1 C1 A1 B2 C1 A1 B2 C3 A2 B3 C3 A2 B1 C1 A3 B3 C3 A3 B2 C1 Tabla 3.cada: Relacion R.1 de Interseccion Difusa Cuali.

4 y 3. vara el signi. \mucho mayor que".. Sin embargo. para que dicho valor sea conservado.  Los grados de posibilidad calculados por las ecuaciones 3.). En tal caso..  Tambien es posible usar un comparador difuso generalizado inducido por otro compa- rador extendido que no sea la igualdad (como \mayor que".cada: Relacion R0 . el unico requisito indispensable es que sea asignado como mnimo a un atributo.10 son asignados a un conjunto de atributos (con n y n n0 elementos cada uno respectivamente).

cado de la Interseccion Difusa Cuali.

para simular la operacion de division relacional difusa solo sera valido el uso de un comparador que exprese la \igualdad". El siguiente ejemplo ilustra el funcionamiento de este operador: Ejemplo 3.cada R \Q R0 . Supondremos que el atributo A es un atributo con dominio \crisp" y que los atributos B y C son atributos difusos que usan las etiquetas lingusticas de la Figura 3.2 respectivamente. que expresa la posibilidad de que las tuplas de la relacion R esten relacionadas con las tuplas de R0 de la forma que indique el comparador.1. Si calculamos ahora la Interseccion Difusa Cuali.1 Sean las relaciones difusas generalizadas R y R0 dadas por las Tablas 3. Naturalmente.1 y 3.

En dicha Tabla hemos expresado tambien las operaciones por las que se obtienen los valores de CA (obviamente ese calculo no aparecera en la relacion .3.cada R \Q R0 el resultado es el que se encuentra en la Tabla 3.

nal).1). El calculo de CA de la Tabla 3.10 desarrollada.5) so- bre las etiquetas lingusticas de los atributos B y C (Figura 3. Cada funcion max .3 expresa la ecuacion 3. Los valores numericos se obtienen al aplicar el comparador difuso generalizado = (ecuacion 3. Cada funcion min actua sobre dos valores porque hay dos atributos con dominios difusos (B y C).

75 0.1: Ejemplo 3.1 de Interseccion Difusa Cuali.25 0 1 2 3 4 5 6 7 8 9 10 11 Figura 3. DOS NUEVOS OPERADORES 59 B B1 B2 B3 1 0.3.66 0.5 0 1 2 3 4 5 6 7 8 9 10 11 C 1 C1 C2 C3 0.2.

cada: De.

.nicion de etiquetas sobre los atributos B y C.

4.C3) tiene compatibilidad 0 porque no hay posibilidad de que dicha tupla se encuentre en R0 .B1.5.0.9 (tuplas de R0 cuyo valor del atributo A sea igual al valor del atributo A de la tupla que estamos calculando su CA ).0.66gg B3 C2 A3 0.25gg B3 C2 A2 0. DIVISION  RELACIONAL DIFUSA H A CA (Calculo de CA ) B C B A1 1 = maxfminf1.6 a R \Q R0 .66 B3 C2 A3 0.C1) de R0.B1.0. minf0.0.B3.4.0gg B1 C1 A1 0. mas adelante en la seccion 3.5 = maxfminf0. En R0 hay tres tuplas con el valor A1. minf0. dos con el valor A2 y dos con el valor A3.6 como mnimo.2. como se expresa en la Tabla 3. minf0.75. actua sobre tantos valores como tuplas se obtengan en la seleccion de la ecuacion 3.1g.25 = maxfminf1.4: Ejemplo 3.1: Resultado de aplicar el umbral 0.25g. en las tuplas con A1 la funcion max actua sobre tres valores y en las tuplas con A2 o A3 la funcion max actua sobre dos valores.1g. Igualmente (A3. Para la tupla (A1.66gg B3 C2 A3 0 = maxfminf0.5.C1) es de 1.1: Relacion R \Q R0 .5. Por tanto.3: Ejemplo 3.C2).75.3.0.66 = maxfminf0.66gg B2 C2 A2 0. H A CA B C B A1 1 B1 C1 A1 0. la compatibilidad es 0.25g. 3.60 CAPITULO 3.66 B3 C2 Tabla 3.1g.0gg B1 C3 Tabla 3.0.5.B2. con el calculo de CA . minf0.0.75. minf0. ya que esa tupla tambien se encuentra exactamente igual en R0 . vemos que el grado de compatibilidad CA para la tupla (A1.0. minf0.66g. tu Para una explicacion mas detallada del calculo de este operador vease el Ejemplo 3.75. Podemos aplicar un umbral a CA para obtener solo las tuplas cuya posibilidad de pertenecer a R0 sea 0. El valor del atributo CA para una tupla concreta expresa la posibilidad de que esa tupla se encuentre en la relacion R0 . As. El resultado de aplicar este umbral esta en la Tabla 3.66g.25g.2 Proyeccion Difusa Generalizada con Funciones de Grupo F : P F De.5.66 = maxfminf1.minf0.66 por su \parecido" con la tupla (A1.0. minf0.

nicion 3.2 Supongamos que tenemos los siguientes cuatro elementos. de.

m. : : : . cr1 ]). crn ])g con r = 1.nidos como sigue: 1. . Una relacion difusa generalizada R dada por: H = f(A1 : D1 [. (An : Dn [. C1 ]). 2. Cn ])g R= B = f(A1 : der1 [. : : : . : : : . siendo m el numero de tuplas (la cardinalidad) de la relacion. (An : dern [.

que notaremos como: X = fx1 . Una lista de elementos de H. X 0 . compuesto por atributos de. x g : xi 2 H. Un subconjunto de H.3. : : : . no necesariamente distintos. X . : : : .2. DOS NUEVOS OPERADORES 61 2. 3. 8i = 1.

4). Si al numero de elementos de X 0 le llamamos .nidos sobre dominios \crisp" (tipos 1 y 2 de la Tabla 2.

: : : . x0. . a este subconjunto lo notaremos como: X 0  H : X 0 = fx01 .

g En X 0 . F . como en cualquier conjunto. Los elementos de X y X 0 pueden ser atributos normales o atributos de compatibilidad. no se admiten elementos duplicados. de. Una lista de Funciones de Grupo2 . 4.

Por tan- to. donde cada elemento es una funcion de grupo (no necesariamente distinta) de. la lista F tiene elementos.nidas sobre los elementos de X .

(x0. gfunc g Considerando que la Proyeccion Difusa Generalizada de R sobre X 0 viene dada por: ( R0 = P (R.11) B0 = f(x01 : de0 t1 ). : : : .nida sobre cada uno de los atributos de X respectivamente: F = fgfunc1. X 0 ) = H0 = X 0 (3. : : : .

: de0t.

con base a los elementos anteriores. )g con t = 1. : : : . Entonces. m0 . de. siendo m0 el numero de tuplas de la proyeccion.

con Funciones de Grupo F sobre X .nimos la Proyeccion Difusa Gene- ralizada de R sobre X 0. : : : . X 0 :x0. como una relacion difusa generalizada dada por: 8 F > < HFP = fX 0 :x01 .

X:x g F 0 P (R. : : : . (X 0 :x0. X:x1 . . X . : : : . X ) = > BP = f(X 0 :x01 : de0 t1 ).

: de0 t.

m0 . : : : . : : : . siendo m0 el numero de tuplas de esa proyeccion y donde los de0 tj con j = 1. : : : .12) : (X:x1 : deFt1 ). (3. ). . (X:x : deFt )g con t = 1.

:::.8j =1. 8i = 1. : deFti = gfunci fR:deri : r = 1. X 0 ) expresada anteriormente (por eso los notamos igual). m0 . : : : . mg (3.13) R0 :de0 tj =R:de0 rj . : : : . : : : . son los valores que se obtienen aplicando la proyeccion P (R. Los deFti se obtienen aplicando la siguiente ecuacion: 8t = 1.

donde los R:de0 rj con j = 1. : : : . .

tu . son los valores de X 0 en la r-exima tupla de R.

DIVISION  RELACIONAL DIFUSA FOR := 1 TO 0 DO t m (* Para cada tupla *) i FOR := 1 TO DO (* Para cada atributo de *) X := G . (* Se inicializa un grupo (o lista) G *) FOR r := 1 TO DO m (* Se recorren las tuplas de *) R IF ( 0 0 e R :d t1 = R:de 0 r1 AND 0R :de 0 t2 = 0 R:de r2 AND AND 0  0 t.62 CAPITULO 3.

= R :de R:de0 r.

La ecuacion 3. Es posible elaborar una version mas e. Esa ecuacion. ) G := G [ R:deri (* Se a~ nade un elemento al grupo *) END IF END FOR ti de F := gfunc i fGg (* Se calcula la funci on de grupo sobre G *) END FOR END FOR Figura 3.13 puede calcularse a traves del algoritmo de la Figura 3.2: Algoritmo para el computo de los resultados de las Funciones de Grupo.2. Esta igualdad se entiende en el sentido clasico ya que los elementos de X 0 son \crisp". aplica la funcion de grupo gfunci a los valores del atributo xi 2 X de R de aquellas tuplas que cumplan que los valores de los atributos X 0 sean iguales a los de R0. al igual que el algoritmo.

ciente (en tiempo) de ese algoritmo. Los ultimos elementos de HPF (sobre los que actuan las funciones de grupo de F ). pero la que aqu exponemos es mas clara e intuitiva. pueden expresarse mediante una variante en la que se hace referencia a la funcion de grupo espec.

En este caso. : : : . x0. podemos eliminar la etiqueta de los elementos de X 0: HPF = fx01 .ca que actua sobre el atributo.

14) A continuacion exponemos un sencillo ejemplo que clari. gfunc1(x1 ). . : : : . gfunc (x )g (3.

Una relacion difusa generalizada R dada por la Tabla 3.2 Sean los siguientes 4 elementos: 1.5. Hemos considerado todos sus atributos con dominios \crisp" para simpli.ca la utilizacion de la Proyeccion Difusa Generalizada con Funciones de Grupo: Ejemplo 3.

car el ejemplo. Cg 2 Por Funciones de Grupo (o de Agregacion) entendemos aquellas funciones que se aplican a un grupo . X . Una lista de elementos de H. B. con 3 elementos: X = fB. 2.

la desviacion tpica (stddev). la varianza (variance). la media (avg). la suma (sum). Todas las funciones anteriores estan de. Los ejemplos mas tpicos de funciones de grupo son las que se usan para contar el numero de elementos del grupo (count). calcular el valor maximo (max).nito de valores dando como resultado un unico valor. el mnimo (min)...

2.nidas en el lenguaje SQL: Ver seccion 1.1 y Tabla 1. .5.2.

6: Ejemplo 3.5 5 A3 0.1 6 Tabla 3. F . 3.7 3 A2 0.1 6 Tabla 3.2: Resultado de P F (R. X 0 ). H A min(B) avg(B) sum(C) B A1 0. DOS NUEVOS OPERADORES 63 H A B C B A1 0.5 0.3. Un subconjunto de H. X 0 .2: Relacion R. Una lista de Funciones de Grupo.3 4 A2 0. de.1 0. con un elemento: X 0 = fA g 4.3 0.5: Ejemplo 3.2.6 2 A1 0.5 1 A1 0.6 6 A2 0.4 9 A3 0. X .

8) en 2 o mas asignaturas. NOTA. Malo.. B. avg.. Cg) obtendremos la relacion que se expresa en la Tabla 3. ASIGNATURA. con una relacion R con los atributos (ALUMNO. P F (R. con las funciones de grupo F sobre los atributos de X .14.avg.nidas sobre los elementos de X . tu La capacidad de la Proyeccion Difusa Generalizada con Funciones de Grupo para resolver facilmente cuestiones que. se ilustra mediante el siguiente ejemplo: Ejemplo 3. Por tanto. media y suma de un grupo): F = fmin. fAg.. sumg Si con los datos anteriores calculamos la Proyeccion Difusa Generalizada de R sobre el conjunto de atributos X 0 . . X 0 . X ) = P fmin. La cabecera esta expresada en el formato de la ecuacion 3.6. donde el atributo NOTA admite valores difusos (Bueno. Supongamos que deseamos averiguar lo siguiente:  Que alumnos son Buenos (con grado mnimo 0.). la lista F tendra 3 elementos (las funciones mnimo. seran mas complicadas. fB..). de otra forma.sumg(R.3 Sea una base de datos sobre alumnos.

si = es el comparador difuso generalizado de.64 CAPITULO 3. DIVISION  RELACIONAL DIFUSA Entonces.

count(NOTA)  2) El resultado que buscamos lo obtenemos en el ultimo paso. Recordemos que en una consulta con la clausula GROUP BY. Como hemos indicado. X 0 .4. Para una explicacion mas detallada del calculo de este operador vease el Ejemplo 3. X ) BY. o constantes.2.2. 3. Bueno)  0:8) 2. En ese caso. S (R00 . tu Con la misma tecnica del ejemplo anterior se pueden resolver cuestiones mas complicadas:  Que alumnos son Buenos en 2 asignaturas y Malos en 3 asignaturas. NOTA) 3.5. seran los del conjunto X 0 y cada una de las funciones de F sobre cada uno de los atributos de X respectiva- mente. modela en algebra relacional difusa generalizada lo que en SQL (apartado 1.5. con Funciones de Grupo F sobre los atributos de X . la proyecci podra ser facilmente traducida a una sentencia SELECT de SQL.2. P F (R. X ).nido en la ecuacion 3. As. elementos conteniendo funciones de grupo.  GROUP BY: En esta clausula apareceran todos los atributos de X 0 .1 Consideraciones Adicionales La Proyeccion Difusa Generalizada de R sobre el conjunto de atributos X 0 . sobre los que se proyectara.5) se efectua con la clausula GROUP BY de una sentencia SELECT. los atributos de X pueden tener dominios difusos. las funciones de grupo de F correspondientes a dichos atributos deberan estar de. ALUMNO. R0 = S (R. R00 = P fcountg (R0 . todos los ele- mentos expresados despues de la palabra SELECT deben ser elementos de la clausula GROUP on P F (R.  FROM: La relacion R. = (NOTA. el proceso a seguir es simple: 1. mas adelante en la seccion 3. actuando cada clausula sobre los siguientes elementos:  SELECT: Los elementos seleccionados. X 0 .

3. De esta forma podremos calcular el valor mnimo de un grupo de numeros difusos.4 El paso 2 del Ejemplo 3. Ejemplo 3. se especi. el maximo..nidas sobre dichos dominios..

Count(NOTA) FROM R' GROUP BY ALUMNO.cara en SQL como: SELECT ALUMNO. tu . El resultado sera una relacion con dos atributos. con el nombre de los alumnos y el numero de notas de cada uno en R0 .

3 Division Relacional Difusa Generalizada:  En este apartado vamos a dar primero la de. Tambien podra contener atri- butos con dominios difusos. Ademas. en la proyeccion de la ecuacion 3. De esta forma.11 habra que aplicar ese criterio para eliminar las tuplas redundantes.3.13 (y en su algoritmo) habra tambien que aplicar dicho criterio para ver la igualdad de todos los valores de los atributos de X 0 (en R y R0 ). DIVISION 65 Los elementos de X 0 son atributos con dominios \crisp". 3. en la ecuacion 3. si adoptamos un criterio para saber cuando considerar que dos valores de un atributo son iguales.  RELACIONAL DIFUSA GENERALIZADA:  3.

nicion de nuestra propuesta de Division Difusa y posteriormente damos una justi.

1 De.cacion para esta division.3.4). 3. comparandola con la formula clasica de la Division Relacional (ecuacion 1.

nicion De.

: : : . (An0 : Dn0 [. c0kn ])g con i = 1. m0 . : : : . dadas por: H = f(A1 : D1 [.nicion 3. son dominios \crisp": numerico o escalar simple (tipos 1 y 2 de la Tabla 2. : : : . (A0n : Dn [. Cn ])g R= B = f(A1 : dei1 [. : : : . : : : . con j = 1. Ademas. tenemos que 1  n0 < n. C1 ]). tal que los Dj . cin0 ]). (An0 : dein0 [. n0 . ci1 ]). de. m y k = 1. Entonces. (An : dein [. (An : Dn [. : : : . Cn0 +1 ]). Cn ])g R0 = B0 = f(A0n0 +1 : de0 kn0+1 [. Cn0 ]).4). siendo m y m0 las cardinalidades de R y R0 respectivamente y donde n y n n0 son los respectivos grados. : : : . c0kn0 +1]). : : : . : : : . (An : de0 kn [.3 Sean R y R0 dos relaciones difusas generalizadas. cin ])g  H0 = f(A0n0 +1 : Dn0 +1 [.

notada por R  R0 . 2.nimos la Division Relacional Difusa Generalizada de R entre R0 . Se aplica la Interseccion Difusa Cuali. ya que hemos supuesto que todos los atributos de A tienen dominios \crisp".15) con A = fA1 . como otra relacion difusa generalizada obtenida por la aplicacion de las siguientes operaciones: 1. La proyeccion sobre A no plantea problemas. An0 g. : : : . A)  R0 (3. Se calcula la relacion R00 de la siguiente forma: R00 = P (R.

16) Para esta operacion.cada entre R00 y R: R000 = R00 \Q R (3. consideramos que el numero n0 de esta de.

nicion tiene el mismo valor que el numero n0 mencionado en la de.

nicion de la Interseccion Difusa Cuali.

3.8.9 y 3.cada (ecuaciones 3.10). . 3.7.

Los resultados de.66 CAPITULO 3. DIVISION  RELACIONAL DIFUSA 3.

:n:0:.18) La Proyeccion con Funciones de Grupo del ultimo paso no plantea ninguna problematica. ambas obtienen identicos resultados (aunque de distinta forma). 3.2 Justi. por tanto. todas ellas iguales.3. O sea. incluye a esta. y F es una lista de n0 funciones. correspondientes a la funcion de grupo \mnimo" ( min): F = fmin. : : : . tu La Division Relacional Difusa Generalizada es una extension de la Division Relacional clasica sobre atributos \crisp" y. A. En otras palabras. C ) (3. ming (3.nitivos se obtienen aplicando la Proyeccion Difusa Generalizada de R000 sobre A.17) donde C = fC1 . sobre relaciones clasicas (sin atributos difusos). con Funciones de Grupo F sobre C : R  R0 = P F (R000. ya que tanto A como C son conjuntos de atributos con dominios \crisp". Cn0 g son todos los atributos de compatibilidad asociados a los atributos de A. en bases de datos clasicas esta sera tambien otra forma de calcular la division relacional.

Con esta operacion conseguimos una relacion (R00 ) con todas las tuplas sobre las que evaluaremos su existencia en R. expresada en la ecuacion 1. solucionando los problemas que aparecan por la naturaleza imprecisa de los datos que manejamos. En esta operacion es realmente donde se aplica el cuanti. en la ecuacion 3. Esta operacion se aplica de la misma forma en la Division Difusa.cacion de la Division Difusa Generalizada y Comparacion con la Formula Clasica de la Division Relacional La Division Difusa que aqu presentamos funciona de manera similar a la formula clasica de la Division Relacional.4 que aqu reproducimos: R  R0 = A(R) A ((A (R)  R0 ) R) Para elaborar la Division Difusa nos hemos basado en la formula clasica. Para aplicar la formula clasica en R  R0 lo primero que hace es calcular A (R)  R0 (siendo A los atributos de R que no son comunes a R0 ).15.

Con esta operacion eliminamos del conjunto de todas las tuplas que buscamos. obtenemos aquellas tuplas que buscabamos en R y que no existen en esa relacion. obtendremos aquellas tuplas que no cumplen las condiciones de la Division Relacional.cador universal (8). En Bases de datos difusas el primer problema se plantea al aplicar la diferencia relacional: R R. para cada valor del conjunto de atributos A. porque. Si ahora proyectamos sobre A. Para obtener las que s las cumplen basta restar a todas las tuplas de A (R). aquellas que no las cumplen. La di. la formula clasica aplica el operador Diferencia Relacional: R00 R. A continuacion. las que realmente existen en R. As. tendremos en R00 todos los valores que buscaremos en R.

ya que en ambas relaciones pueden haber tuplas que no sean iguales pero si parecidas. .cultad radica en determinar en que medida una tupla de R00 pertenece o no a 00 R.

UN EJEMPLO PRACTICO  RELACIONAL DIFUSA DE DIVISION 67 Para solventar este problema introducimos la Interseccion Difusa Cuali.4.  3.

cada que aplica- mos en la ecuacion 3. la Interseccion Difusa Cuali. Este operador tiene una diferencia semantica con respecto a la diferencia relacional: Mientras que la diferencia relacional. R00 R. devuelve las tuplas de R00 que no pertenecen a R.16.

si es 0 es que esa tupla pertenece solo a R00 y cualquier grado intermedio representa una posibilidad intermedia. devuelve el grado de posibilidad de que las tuplas de R00 pertenezcan a R. R00 \Q R. Si dicho grado es 1 indica que esa tupla pertenece a ambas relaciones.cada. Como la Interseccion Difusa Cuali.

3. Por ello. tomamos la T- norma del mnimo en todas las Funciones de Grupo de F . en el sentido clasico.4 Un Ejemplo Practico de Division Relacional Difusa Vamos a exponer un ejemplo simple pero signi.17. Recordemos que. la cual daba la vuelta a los valores obtenidos. aplicamos la Proyeccion Difusa con Funciones de Grupo. Esto plantea un nuevo problema. pues para cada valor A puede haber varios grados de posibilidad distintos asociados a el. solo queda proyectar la relacion R000 sobre los atributos A. tomando el valor mnimo de todos los asociados a un mismo valor de A. ecuacion 3. una interseccion equivale a dos diferencias: R \ S = R (R S ).cada devuelve los valores de manera inversa a la dife- rencia relacional. nos evitamos tener que efectuar la ultima Diferencia de la formula clasica. En este punto. como hemos visto. Como buscamos los valores de A que estan relacionados (en R) con todos los valores de R0 .

realizaremos una serie de observaciones de caracter intuitivo acerca de los resultados que cabran esperar.7.3. Obviamente. Esta relacion puede verse en la Tabla 3. quedando la relacion R que muestra la Tabla 3. para el ejemplo. permiten almacenar valores difusos (tipo 6 de la Tabla 2.7. usaremos las etiquetas lingusticas de la Figura 3. Obtenemos una segunda relacion R0 mediante la proyeccion sobre los atributos ALTURA y CALIDAD despues de haber efectuado una seleccion con la condicion EQUIPO=Cordoba. CALIDAD. EQUIPO.. Antes de exponer el calculo de la Division Difusa Generalizada R  R0 . Para encontrar dichos equipos. Hemos eliminado las etiquetas \Muy Bajo" y \Muy Malo".). podemos ver que en R tenemos que el equipo de Granada cumple con las condiciones de dicha division. primero tomaremos una proyeccion de la relacion anterior sobre los atributos que nos interesan (EQUIPO. Nosotros. Si observamos ambas relaciones. Ambos equipos tienen dos tuplas con los mismos valores que R0 en los atributos ALTURA y CALIDAD. R0 contendra solo dos tuplas. Esta tabla no tiene atributos de compatibilidad puesto que solo hemos efectuado la proyeccion sobre una relacion base. En nuestro ejemplo. el equipo de Cordoba tambien. NUM_CAMISETA.5 Supongamos que tenemos una base de datos Relacional Difusa sobre jugadores de baloncesto. En este contexto. Una relacion de la base de datos podra tener los atributos (JUGADOR. ALTURA y CALIDAD).cativo que muestre la forma en que se aplica la Division Difusa Generalizada y su capacidad expresiva: Ejemplo 3. vamos a encontrar los equipos de baloncesto que poseen una plantilla con todos los tipos de jugadores (en ALTURA y CALIDAD) de los que dispone el equipo de Cordoba.4). Los campos ALTURA (que almacena la altura del jugador) y CALIDAD (que mide la calidad del jugador segun el numero de puntos medio por partido). por considerar que profesio- nalmente no juegan jugadores de esas caractersticas. . ALTURA..

5 0 170 175 180 185 190 195 200 205 210 cm.75 0.5 de Division Relacional: De. DIVISION  RELACIONAL DIFUSA ALTURA Bajo Normal Alto Muy Alto 1 0.3: Ejemplo 3. CALIDAD Malo Regular Bueno Muy Bueno 1 0.68 CAPITULO 3.5 0 5 10 15 20 25 30 35 40 45 Puntos/Partido Figura 3.

.nicion de etiquetas sobre los atributos ALTURA y CALIDAD.

H ALTURA CALIDAD B Bajo Muy Bueno Muy Alto Malo Tabla 3.8: Ejemplo 3.  3.5 de Division Relacional: Relacion R.4.7: Ejemplo 3.5 de Division Relacional: Relacion R0 . . UN EJEMPLO PRACTICO  RELACIONAL DIFUSA DE DIVISION 69 H EQUIPO ALTURA CALIDAD B Cordoba Bajo Muy Bueno Cordoba Muy Alto Malo Granada Bajo Muy Bueno Granada Muy Alto Malo Granada Alto Regular Malaga Bajo Muy Bueno Malaga Alto Malo Malaga Muy Alto Muy Bueno Sevilla Bajo Bueno Sevilla Muy Alto Malo Sevilla Normal Bueno Cadiz Muy Alto Muy Bueno Cadiz Bajo Bueno Almera Alto Muy Bueno Almera Bajo Regular Huelva Alto Muy Bueno Tabla 3.

Muy Bueno) de R0 (con grados 1 y 0. Por eso. Por tanto.75 en CALIDAD (Bueno y Muy Bueno \se parecen" con grado 0. Sin embargo. el equipo de Sevilla tiene una tupla que coincide con una de R0 . parece obvio que el resultado debera indicar que Cadiz no cumple los requisitos necesarios para estar en la relacion de la Division. Sin embargo. Por ultimo. Despues de este estudio informal acerca de los resultados esperados. La otra tupla de R0 . Muy Bueno): Con compatibilidad 1 en CALIDAD y 1 en ALTURA. (Muy Alto.70 CAPITULO 3. Normal. Alto. Bueno) es de 1 en ALTURA y 0. La otra tupla de R0 . la otra tupla de R0 . Bajo. (Bajo. y la compatibilidad con la tupla (Sevilla. Malo). Igualmente.5). vemos que el equipo de Sevilla tambien cumple \en parte" con los requisitos de la division. parece logico que el equipo de Malaga debe aparecer en el resultado de la division. DIVISION  RELACIONAL DIFUSA El equipo de Malaga tiene una tupla que coincide con una de R0 . no se empareja con ninguna otra de Cadiz (si en ALTURA. Bueno) con la tupla (Bajo. no empareja directamente con ninguna otra tupla de Sevilla.5 en ALTURA (Alto y Muy Alto \se parecen". con grado 0. Muy Bueno). los equipos de Almera y Huelva no cumplen claramente con los requisitos de la Division. Bueno) es de 0.75 en ALTURA y CALIDAD respectivamente). (Muy Alto. As. pero en absoluto en CALIDAD). pasemos a ver como se comporta la Division Difusa Generalizada que hemos de.5 en ALTURA y 0. (Bajo. o son posiblemente iguales. Con el equipo de Cadiz se empareja la tupla (Cadiz. Malo). Malo) es de 1 en CALIDAD y de 0. pues cumple \en parte" con los requisitos. Malo). Bajo.75). pero vemos que hay similitudes: La compatibilidad con la tupla (Sevilla. vemos que no hay muchas diferencias: La compatibilidad con la tupla (Malaga. no empareja directamente con ninguna otra tupla de Malaga. (Muy Alto.75 en CALIDAD.

9.15: Calculamos R00 de la siguiente forma: R00 = P (R.nido. Ecuacion 3. EQUIPO)  R0 (3. Para calcular R  R0 .16: Calculamos la Interseccion Difusa Cuali.19) obteniendo la relacion que se expresa en la Tabla 3. Ecuacion 3. 2. calcularemos las siguientes ecuaciones: 1.

teniendo en cuenta que hay un atributo con dominio \crisp" (EQUIPO). R00 \Q R. En el campo CEQUIPO tenemos la posibilidad de que las tuplas de R00 esten en R. Los valores a los que afectan las funciones min son los resultados de aplicar el comparador difuso generalizado de la ecuacion 3.10. hemos incluido las operaciones por las que se obtienen esos valores aplicando la ecuacion 3.cada. Para aclarar el funcionamiento de la Interseccion Difusa Cuali. En esta Tabla. obtenemos la relacion R000 de la tabla 3. As.10.5.

Como esta tupla es la tercera. Los pasos a seguir son los siguientes: (a) Hallar la seleccion de la ecuacion 3.9. Bajo.cada vamos a efectuar paso a paso el calculo de CEQUIPO para las dos tuplas del equipo de Granada y para las dos del equipo de Cadiz:  Calculo de CEQUIPO para la tupla (Granada. sabiendo que n0 = 1: R3 = S (R. EQUIPO = Granada) . tenemos que i = 3. Muy Bueno) de R000.

1g.5 de Division Relacional: Relacion R00 = P (R.0gg Bajo Muy Bueno Almera 0 =maxfminf0. minf1.5.0. minf1.1gg Bajo Muy Bueno Malaga 0.10: Ejemplo 3.5.1g.1g.0g. minf0.0g.1gg Bajo Muy Bueno Huelva 0 =maxfminf0. minf0.75 =maxfminf1.0g.  3.1g.5 de Division Relacional: Relacion R000 = R00 \Q R. EQUIPO)  R0 .75 =maxfminf0. minf0.0.0g.0g. minf0. minf0.5. minf0.0gg Bajo Muy Bueno Granada 1 =maxfminf0.0. UN EJEMPLO PRACTICO  RELACIONAL DIFUSA DE DIVISION 71 H EQUIPO ALTURA CALIDAD B Cordoba Bajo Muy Bueno Cordoba Muy Alto Malo Granada Bajo Muy Bueno Granada Muy Alto Malo Malaga Bajo Muy Bueno Malaga Muy Alto Malo Sevilla Bajo Muy Bueno Sevilla Muy Alto Malo Cadiz Bajo Muy Bueno Cadiz Muy Alto Malo Almera Bajo Muy Bueno Almera Muy Alto Malo Huelva Bajo Muy Bueno Huelva Muy Alto Malo Tabla 3. minf0.0gg Bajo Muy Bueno Cordoba 1 =maxfminf0.5 =maxfminf0.75gg Bajo Muy Bueno Cadiz 0 =maxfminf1.0g. minf0.0gg Muy Alto Malo Cadiz 0.5.75gg Bajo Muy Bueno Sevilla 1 =maxfminf0. H EQUIPO CEQUIPO (Calculo de CEQUIPO ) ALTURA CALIDAD B Cordoba 1 = maxfminf1.0gg Muy Alto Malo Sevilla 0. minf1. con el calculo de CEQUIPO .5gg Muy Alto Malo Huelva 0 =maxfminf0. minf0. minf1.0gg Muy Alto Malo Tabla 3.0gg Muy Alto Malo Almera 0 =maxfminf0.1gg Muy Alto Malo Granada 1 =maxfminf1. minf1.0.1g. minf0.0g.75g.1g. .1g.1g.5gg Muy Alto Malo Malaga 1 =maxfminf1.0g.9: Ejemplo 3.0g.4.5.0. minf0. minf1. minf0.

Muy Alto.10.:::. Malo)g. (b) Calcular K3 (que sera el valor de CEQUIPO para esa tupla). minf= (Muy Alto. Alto). de3w(CALIDAD) )gg w=1.72 CAPITULO 3. minf1. Regular)gg = maxfminf0.3 = maxfminf= (Muy Alto.:::.10.12. 0g. = (Malo. teniendo en cuenta que v = 3 porque en la seleccion anterior se seleccio- naron 3 tuplas: K4 = max fminf= (Muy Alto. minf0. Regular)gg = maxfminf1. .CALIDAD f= (de3q . = (Malo. = (Muy Bueno. Muy Alto).11. de4w(ALTURA) ). Muy Bueno)g. (b) Calcular K4 (que sera el valor de CEQUIPO para esa tupla). = (Muy Bueno. 1g. Bajo. = (Malo. R4 .:::. de donde obtenemos la relacion de la Tabla 3. Muy Bueno)g.5 de Division Relacional: Relaciones intermedias R3 y R4 .11. de3w(ALTURA) ).3 = max fminf= (Bajo. = (Muy Bueno. de3w(CALIDAD) )gg w=1. Alto). Bajo). de4w(CALIDAD) )gg w=1.5. teniendo en cuenta que v = 3 porque en la seleccion anterior se seleccio- naron 3 tuplas (cardinalidad de R3 ): K3 = max f min w=1. segun la ecuacion 3. DIVISION  RELACIONAL DIFUSA H EQUIPO ALTURA CALIDAD B Granada Bajo Muy Bueno Granada Muy Alto Malo Granada Alto Regular Tabla 3.:::. minf0. segun la ecuacion 3. de3wq )gg = max fminf= (de3(ALTURA) .11: Ejemplo 3. minf= (Bajo. minf0:5.9. = (Malo. Muy Bueno) de R000 (i = 9): (a) Hallar la seleccion de la ecuacion 3. EQUIPO = Cadiz) de donde obtenemos la relacion de la Tabla 3.9: R9 = S (R. = (Muy Bueno. de3w(ALTURA) ).3 q=ALTURA. 0g. minf= (Muy Alto.3 = maxfminf= (Bajo. 1g. 0:5gg = 1  Calculo de CEQUIPO para la tupla (Cadiz.  Calculo de CEQUIPO para la tupla (Granada. Bajo). Muy Alto). Malo)g. = (de3(CALIDAD ) . Malo) de R000 (i = 4): (a) Hallar la seleccion de la ecuacion 3. minf= (Bajo. 0gg = 1 donde = es el comparador difuso generalizado de la ecuacion 3. que es la misma que la del punto anterior y su resultado es tambien la relacion de la Tabla 3.

de10w(CALIDAD) )gg = maxfminf= (Muy Alto. = (Malo.2 fminf= (Muy Alto.10: K10 = wmax =1. con Funcion de Grupo \mnimo" (min) sobre el atributo CEQUIPO : R  R0 = P fming (R000 . (b) Calcular K9 (que sera el valor de CEQUIPO para esa tupla). R10 . minf= (Bajo. UN EJEMPLO PRACTICO  RELACIONAL DIFUSA DE DIVISION 73 H EQUIPO ALTURA CALIDAD B Cadiz Muy Alto Muy Bueno Cadiz Bajo Bueno Tabla 3. (b) Calcular K10 (que sera el valor de CEQUIPO para esa tupla). Muy Bueno)g.10. Muy Alto. Bajo). Malo) de R000 (i = 10): (a) Hallar la seleccion de la ecuacion 3. = (Malo. la relacion de la Tabla 3.12: Ejemplo 3. = (Muy Bueno. =(Malo. segun la ecuacion 3. Bajo). igual que antes.20) El resultado . Muy Alto). 0:75gg = 0:75  Calculo de CEQUIPO para la tupla (Cadiz. minf= (Muy Alto. CEQUIPO ) (3. =(Muy Bueno.9. Muy Alto).17: Siguiendo con el proceso general de la Division Difusa. 0gg = 0 3. 1g. segun la ecuacion 3. Ecuacion 3. de10w(ALTURA) ). efectuamos la Proyeccion Difusa Generalizada de R000 sobre el atributo EQUIPO.5 de Division Relacional: Relaciones intermedias R9 y R10 . de donde obtenemos. EQUIPO.12.  3. minf1. Muy Bueno)g. teniendo en cuenta que ahora v = 2 porque en la seleccion anterior se seleccionaron solo 2 tuplas: K9 = wmax =1. y para terminar. 0g. de9w(CALIDAD))gg = maxfminf= (Bajo. minf0. de9w(ALTURA) ). = (Muy Bueno. Bueno)gg = maxfminf1.2 fminf=(Bajo.4. Bueno)gg = maxfminf0.

Se podra haber de. no obtendremos las tuplas de los equipos de Malaga. establecemos u = 0:7.13.nal de la division puede verse en la Tabla 3. Almera y Huelva. donde u 2 [0. si en el ejemplo anterior. Cadiz. 1] es un umbral. tu A la relacion resultante de la Division Difusa Generalizada se le puede aplicar una seleccion de forma que CEQUIPO  u. De esta forma.

nido la Division Difusa Generalizada para que no se obtuvieran aque- llas tuplas en las que CEQUIPO = 0. pero de la forma de.

. ya que as podemos saber los equipos que no cumplen en absoluto los requisitos de la division.nida obtenemos mas informacion.

DIVISION  RELACIONAL DIFUSA H EQUIPO CEQUIPO B Cordoba 1 Granada 1 Malaga 0. obtenido al aplicar la Proyeccion con Funciones de Grupo (ecuacion 3.20) a la relacion R000 de la Tabla 3. El problema estriba en que hemos utilizado un denominador poco discriminador. al estar demasiado proximos los valores de \Bajo" y \Normal". Este caso se da cuando. por lo que podra ser conveniente que no se devolviera.5 (minf0.75 Cadiz 0 Almera 0 Huelva 0 Tabla 3. por ejemplo. pues al solucionar ese problema estamos impidiendo que se muestre informacion que pudiera ser util.14: Ejemplo 3. Imaginemos. vamos a ver un ejemplo en el que se da este caso: Ejemplo 3. Una solucion podra ser que al efectuar la Interseccion Difusa Cuali. el resultado de la division devolvera ese equipo en una tupla con grado de posibilidad 0. H ALTURA B Bajo Normal Tabla 3. con el unico atributo ALTURA. R0 sera una relacion de cardinalidad 2. tu En el ejemplo anterior se ve que la Division Difusa devuelve un equipo que se relaciona solo con una tupla de las dos de R0 . En este caso. una misma tupla de R se relaciona con todas o parte de las tuplas de R0 . Podemos encontrar una solucion al problema anterior. siempre sera posible hacer otras consultas a la Base de Datos para conseguir mas informacion. ya que ese equipo no tiene ningun jugador \Bajo".14.6 Supongamos que buscamos los equipos que tienen al menos un jugador \Bajo" y al menos un jugador de altura \Normal".13: Ejemplo 3. como se muestra en la Tabla 3.74 CAPITULO 3. Siguiendo en el mismo contexto que el Ejemplo 3.5. 3.5 Sevilla 0. pero no sabemos hasta que punto es aconsejable. al hacer la division (R  R0 ).5 Problemas que se Plantean y Posibles Soluciones Hay un caso particular para el que la Division Difusa Generalizada puede parecer no compor- tarse correctamente.5 de Division Relacional: Relacion resultante de R  R0 .15. En este caso. Si tenemos datos difusos.6 de Division Relacional: Relacion R0 . que el equipo de Jaen tiene todos sus jugadores \Muy Altos".5 de la base de datos sobre equipos de baloncesto. Este tipo de problemas es tpico al manejar datos imprecisos.1g). menos uno que es \Normal". Ademas. los resultados tambien lo seran y deberan interpretarse como tales.

De .cada. las tuplas de R solo pueden usarse una vez donde obtengan mayor grado de posibilidad. en cada grupo.

0g Normal . .. ....0g Bajo Jaen 1 = maxf1..15: Ejemplo 3.5 = maxf0. . 0.6. : : : . . Jaen 0. .  DEL CUANTIFICADOR EN LA DIVISION 3. . 0.6 de Division Relacional: R000 (resultado de la Interseccion Difusa Cuali. . . : : : . . RELAJACION  DIFUSA 75 H EQUIPO CEQUIPO (Calculo de CEQUIPO ) ALTURA B ..5.. Tabla 3.

: : : ..... . H EQUIPO CEQUIPO (Calculo de CEQUIPO ) ALTURA B . .16: Resultado de la Interseccion Difusa modi.. . . 0. : : : .. . Jaen 0 = maxf0..0g Normal .0g Bajo Jaen 1 = maxf1. . Tabla 3.cada). . . .

6. para el Ejemplo 3. en el Ejemplo 3. esta forma.cada. la relacion resultante de esta Interseccion Difusa modi.6.

cada es la que se muestra en la Tabla 3. Por tanto.16. el resultado . Puede observarse que el resultado de la comparacion con la tupla con el valor \Normal" de R solo aparece una vez. donde obtiene el grado de posibilidad 1.

La Division Difusa modi.1g).nal sera que este equipo obtiene un grado de posibilidad cero en la division (minf0.

cada (usando la Interseccion Difusa modi.

cada) aumenta con- siderablemente el numero de calculos a efectuar de forma no justi.

Este umbral puede usarse al . La mejor solucion al problema planteado esta en dos factores fundamentales: 1. Elegir (si es posible) cuidadosamente las etiquetas lingusticas de forma que la similitud entre ellas no sea excesiva. u. 2. Usar un umbral. adecuado y seleccionar las tuplas cuyo grado de compatibilidad sea mayor que u.cada para casos generales.

6 Relajacion del Cuanti. puede ser util comparar los resultados que se obtienen con distintos umbrales y efectuar otras consultas similares a la base de datos.nal de calcular la Division Difusa. 3. Ademas.

cador Universal en la Division Di- fusa Hasta ahora. hemos considerado exclusivamente el cuanti. es decir. hemos visto un sistema para calcular el resultado de la division relacional en relaciones con atributos difusos. Esta division la hemos considerado desde el punto de vista clasico.

cador universal \para todo" (8) a la hora de calcular esta division. En este apartado vamos a exponer algunos metodos para relajar ese cuanti.

cador y permitir usar cuanti.

Los cuanti.cadores difusos tanto relativos como absolutos.

2.cadores difusos fueron explicados en el apartado 2. .9.

76 CAPITULO 3. DIVISION  RELACIONAL DIFUSA Puede parecer que todos los cuanti.

cadores que pueden utilizarse para relajar el cuan- ti.

cador universal de la division son cuanti.

Ejemplos de estos cuanti. ya que estos dependen de las tuplas existentes en la relacion del denominador de la division relacional.cadores relativos.

\la mayora".cadores son \todos".. Sin embargo. \la minora".. tambien pueden utilizarse cuanti. \aproximadamente la mitad". \casi todos".

cadores absolutos. Ejemplos de cuanti. que no depen- dan del numero de tuplas del denominador.

cadores absolutos son \1 o mas" (cuanti.

\mas de 5".. \pocos". El cuanti.cador existencial). \aproximadamente 5"..

cador existencial es una muestra de cuanti.

cador absoluto que puede utilizarse en lugar del cuanti.

Para utilizar este cuanti.cador universal de la division.

Es decir.17.cador. en vez de la de. basta con utilizar la funcion maximo en lugar de la funcion mnimo en la proyeccion con funciones de grupo F de la ecuacion 3.

18 utilizaramos la siguiente de.nicion de F de la ecuacion 3.

nicion: F = fmax. :n:0:.21) Para cualquier otro cuanti. maxg (3.

cador absoluto Q. aplicar la funcion del cuanti. se puede aplicar la funcion de grupo suma y a continuacion.

:n:0:.cador Q sobre el resultado obtenido: F = fQ(sum).22) Para un cuanti. Q(sum)g (3.

aplicar la funcion del cuanti. se puede calcular la media aritmetica (avg) y a conti- nuacion.cador relativo Q.

Q(avg)g (3.5.23) Ejemplo 3. supongamos que queremos aplicar la division relacional difusa con los siguientes cuanti.7 Siguiendo con el Ejemplo 3.cador Q sobre el resultado obtenido: F = fQ(avg). :n:0:.

Cuanti.cadores: 1.

Cuanti. 2.cadzor existencial (9).

cador absoluto \aproximadamente 2" de.

Cuanti. de la siguiente forma: 80 < si x  0 o si x  3 Q(x) = : x 1 si 1 < x  2 3 x si 2 < x < 3 3.nido como una funcion triangular.

cador relativo \algunos". de.

4. Cuanti.nido como: Q(x) = x.

cador relativo \casi todos". de.

Cuanti.4. 5.nido como en la Figura 3.

cador universal (8). Entonces. el resultado de la division relacional difusa R  R0 con estos cuanti.

cadores es el que se muestra en la Tabla 3. tu Otro ejemplo de division difusa con cuanti.17.

.7.cadores difusas es expuesto mas adelante en el Ejemplo 3.5).15 (apartado 3.

9 1 Figura 3.6.4: Cuanti.  DEL CUANTIFICADOR EN LA DIVISION 3. RELAJACION  DIFUSA 77 Q 1 0 0.4 0.

7 de Division Difusa con cuanti.75 0 0.375 0 0 Almera 0 0 0 0 0 Huelva 0 0 0 0 0 Tabla 3.5 0.875 0.17: Ejemplo 3.7 0.5 Sevilla 1 0. 9 H EQUIPO CEQUIPO aprox: 2 C algunos C casi todos C 8 CEQUIPO EQUIPO EQUIPO EQUIPO B Cordoba 1 1 1 1 1 Granada 1 1 1 1 1 Malaga 1 0.cador difuso relativo \casi todos".75 0.95 0.75 Cadiz 0.75 0.

.cadores: Relacion resultante de R  R0.

Generalmente estas propuestas usan un modelo de relaciones difusas o un signi. DIVISION  RELACIONAL DIFUSA 3.78 CAPITULO 3.7 Estudio Comparativo con otras Propuestas de Division Difusa En la bibliografa podemos encontrar algunas propuestas para efectuar la Division Relacional en una Base de Datos Difusa.

8).1 La Division de Mouaddib En [114]. Ahora exponemos algunas de estas propuestas. Mouaddib propuso un metodo para efectuar la division relacional en bases de datos difusas basada en la identi. 3. comparandolas con la que aqu damos.7.cado de los grados distinto al que nosotros empleamos (ver secciones 3.1 y 2.

Para ello. usa un sistema de calcular la division valido en bases de datos tradicionales: Si tenemos la relacion R(X. Y ) y S (Y ). donde los atributos Y de R y los de S estan de.cacion de objetos que tuvieran similares caractersticas.

30) Ri (x) = u:X max  0 (u) con u 2 Ri0 =x Ri (3. . Ri .29) donde \f es el operador de interseccion difusa. entonces.28) Ri0 (X.31) R0i (u) = min(u: . Y = yi) con yi 2 S (3. Ri0 ) esta representada por una funcion caracterstica. Y ) = Selectf (R. n] (3. Y = yi ) con yi 2 S (3. 1] asociado. u:Y (y))) con y 2 DomY (3. cada tupla tiene un valor 2 [0. max y min(yi (y).26) donde n es el numero de elementos de S . la division relacional sera una relacion D(X ) que puede ser calculada de la siguiente forma: D(X ) = \Ri con i 2 [1.27) Ri (X ) = Ri0 [X ]f (3. [ ] es la proyeccion sobre los atributos que haya dentro de los corchetes y el operador de seleccion se expresa con la palabra Select.25) Ri0 (X. n] (3. En su modelo de bases de datos difusas. Tambien puede verse como el grado de certeza de cada tupla. La funcion caracterstica asociada a R f S puede calcularse como sigue: Rf S = min Ri (x) con x 2 DomX (3. que indica el grado con el que cada tupla pertenece a la relacion. Y ) = Select(R.nidos en el mismo dominio. Cada relacion difusa (R f S .24) Ri (X ) = Ri0 [X ] (3. \ es el operador de interseccion.32) donde u: denota el grado de pertenencia de u a R y yi es un valor de S . R f S = \f Ri con i 2 [1. [ ]f es la proyeccion difusa y el operador de seleccion difusa lo expresa con la palabra Selectf .

4 0 0 0 whitish 0.8 de Division de Mouaddib: Relacion R.8 1 0 red 0 0 0 0 0 1 Tabla 3.6 m3 yellow 1 Tabla 3.5 1 0 0 0 yellow 0 0 0 1 0.5 0 0 0 creme 0.20: Ejemplo 3.3.8 de Division de Mouaddib: Similitud entre colores.8 m1 red 0.19: Ejemplo 3.8 de Division de Mouaddib: Relacion S .4 0. Mushroom Color m1 white 1 m1 yellow 0.7 m2 red 1 m3 whitish 0. Color whitish 1 yellowish 1 Tabla 3.8 1 0.8 0 yellowish 0 0 0 0.7.8 0. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 79 Colores white whitish creme yellow yellowish red white 1 0.18: Ejemplo 3. .

Los colores son escalares y su funcion caracterstica de similitud esta en la Tabla 3.18. maxy fmin(whitish(y). 0.33) = min(1. sobre setas (Mushrooms) y su color.20 respectivamente. Por ejemplo. R01 (u2). DIVISION  RELACIONAL DIFUSA Ejemplo 3. deducimos que: R1 (m1) = max(R01 (u1). 0g) = 0:8 (3. 0:8.80 CAPITULO 3.8 Sean R y S las relaciones de las Tablas 3. maxy f0:8. white (y))g) (3. para las 3 primeras tuplas u1.34) R01 (u2) = R01 (u3) = 0:6 (3. u2 y u3 de R. 0:4. R01 (u3)) = 0:8 De similar forma obtenemos que R2 (m1) = 0:8. tenemos que: R01 (u1) = min(1.35) Entonces. 0. de donde calculamos el resultado .19 y 3.

1. 0:8) = 0:8 (3.37) Rf S (m3) = min(R1 (m3). 0) = 0 (3. R2 (m3)) = min(0:6.1 Analisis de la Propuesta La division de Mouaddib representa un caso bastante particular y su modelo de bases de datos no permite representar mas tipos que los escalares y un grado ( ) asociado a cada escalar.36) Para las otras tuplas (m2 y m3) obtenemos que: Rf S (m2) = min(R1 (m2).7. Este grado tiene un signi. R2 (m1)) = min(0:8. R2 (m2)) = min(0. 0:8) = 0:6 (3.38) tu 3.nal para m1: Rf S (m1) = min(R1 (m1).

4. Ademas. con un unico valor no normalizado. Sin embargo.32 desplaza la variable y por todo el dominio del atributo Y .cado de pertenencia. GEFRED nos permite representar multitud de tipos entre los que esta incluido el tipo que usa Mouaddib. Esto implica que el resultado de la division puede variar con solo modi. pues en la ecuacion 3. que sera el tipo 5 de la Tabla 2. el metodo de Mouaddib no funciona correctamente.

tal que whitish (white whitish) = 0:9 y white (white whitish) = 0:9.1).yellowish. En este caso obtenemos los mismos valores de la division del Ejemplo 3.8. si nosotros introducimos un nuevo valor en el dominio de un atributo la relacion resultante puede verse alterada.8.9 para m1. Ejemplo 3. vemos que el resultado de la division ha variado. como antes de modi. que llamaremos white whitish. Introduzcamos ahora un nuevo color entre white y whitish. pues obtenemos un grado de 0.car el dominio y la funcion de similitud asociada al mismo. En ese caso. como se demuestra en el siguiente ejemplo.9 Cambiemos la segunda tupla de R por los valores (m1. Por ejemplo. cuando lo esperable es 0.

car el dominio. tu .

En el mismo artculo.5): = (x. 1] es el grado asociado a ese valor.40) Mouaddib utiliza tambien grados con el signi.3. Cada valor tiene a su vez dos campos: x. Para utilizar la medida de necesidad en la division que aqu presentamos solo tenemos que utilizar el siguiente comparador difuso: =N (pe. Mouaddib presenta el concepto de Informacion Matizada (Nuanced Information) con el cual permite que su modelo de base de datos admita distribuciones de posibilidad. pe0 ) = dinf 2U max (pe(d). La principal desventaja con respecto a la division que aqu presentamos es que la division de Mouaddib solo permite un atributo comun a ambas relaciones (R y S ). Para ello basta con usar la siguiente funcion de comparacion difusa (en vez de la ecuacion 3.39) donde x e y son los valores que queremos comparar. x:value (y:value)) (3. 1 pe0 (d)) (3. y: . mientras que en nuestra propuesta podemos tener cualquier numero de atributos comunes a ambas relaciones. y) = min(x: . Mouaddib utiliza tambien medidas de necesidad.value es el valor asociado a x y que debe pertenecer al dominio del atributo en cuestion y x: 2 [0.7. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 81 Nuestra division puede obtener similares resultados que la division de Mouaddib pero sin el inconveniente anterior.

b1 .2 La Division de Umano/Fukami En [145] Umano y Fukami proponen su modelo de BDRD.23. El resultado puede verse en la Tabla 3. b3 > no aparece en el resultado. el cual fue expuesto en el apartado 2.10 Sean dos relaciones R y S con los valores de las Tablas 3.7 de las tuplas <a1 . y los grados que usamos son grados de cumplimiento. no grados de importancia. R  S . la tupla <a3 . d1 > y <a1 .22. 3. d3 > respectivamente.3. considera que en el resultado estaran las tuplas tales que los valores del grado S para todas las tuplas de S son menores o iguales que los valores del grado R en las tuplas correspondientes. c3 . b1 . d3 > de R.3 de las tuplas de S son menores que los valores de los grados 1 y 0. 0:3 ^ 0:7) = min(0:8. respectivamente. c3 .cado de importancia y propone una division relacional en la cual se pondera la importancia de cada atributo en ambas relaciones con unos pesos entre 0 y 1. El grado para esta tupla es igual a: min(0:8 ^ 1. b3 .7. d3 > de S es mayor que el grado 0. 0:3) = 0. donde las columnas R y S expresan. tu Cuando las relaciones incluyen distribuciones de posibilidad como valores de atributos los resultados son obtenidos evaluando la igualdad de los valores de los atributos. En su division.2 de la tupla <a3 .3 de la tupla <c3 .8 y 0. Ejemplo 3. Ademas. c1 .21 y 3. b1 > esta en el resultado porque los valores de los grados 0. Esta consideracion no es tenida en cuenta en nuestro modelo. a~naden que si en grados de pertenencia hay distribuciones de posibilidad entonces se debe de. Como el grado 0. el grado de pertenencia de cada tupla a su relacion. La tupla <a1 .5.

nir una relacion de orden para esas distribuciones de posibilidad. . indicando una forma para hacerlo.

Cosa que s hacen con los demas operadores.8 a3 b3 c1 d1 0. color del pelo. Por otra parte. El grado de pertenencia es util tras alguna operacion y es visto o como grado de pertenencia al conjunto que genera esa operacion o como grado de cumplimiento de las condiciones establecidas en esa operacion. DIVISION  RELACIONAL DIFUSA R A B C D 1 a1 b1 c1 d1 0. o sea difcil medir con exactitud.7.3 a1 b1 Tabla 3.8 c1 d1 0.2 a3 b3 c3 d3 0. 3. casos en los que una entidad lo sea con cierto grado en una relacion \base" de la base de datos. RS A B 0. S C D 0. Lo mas normal es que desconozcamos. un jugador de baloncesto lo es o pertenece a un equipo con grado 1. se limitan a indicar que \cuando las relaciones incluyen distribuciones de posibilidad como valores de atributos los resultados son obtenidos evaluando la igualdad de los valores de los atributos" (pagina 25 de [145]).2. pero que puede que desconozcamos exactamente algunos de sus atributos.22: Ejemplo 3.21: Ejemplo 3.10 de Division de Umano/Fukami: Relacion S .7 a1 b1 c3 d3 0.10 de Division de Umano/Fukami: Relacion resultante R  S . Umano y Fukami no explican detenidamente que hacer en una division difusa cuando los valores de los atributos son distribuciones de posibilidad. Sin embargo. Simplemente.23: Ejemplo 3. en la practica.1 Analisis de la Propuesta La principal ventaja que presenta el modelo de bases de datos de Umano y Fukami es que nos permite almacenar un grado de pertenencia para cada tupla. nosotros creemos que en la mayora de los casos esa informacion no es muy util. Es raro encontrar. altura. pues en la mayora de los casos reales se tienen entidades que sabemos que lo son (pertenecen a una relacion con grado 1). siempre. clientes o jugadores de baloncesto. sabremos que esas entidades lo son con grado 1.9 a2 b2 c3 d3 0.. calidad. si tenemos una base de datos de alumnos. Por ejemplo. algun o algunos de sus atributos: edad. Por ejemplo.82 CAPITULO 3. ..3 c3 d3 Tabla 3.10 de Division de Umano/Fukami: Relacion R.9 a1 b1 c2 d2 Tabla 3.

3 Distintos Tipos de Divisiones para Distintos Signi. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 83 3.7.7.3.

cados. segun Bosc et al. Dubois. En [23] Bosc. Pivert y Prade hacen un estudio detallado de algunos tipos de divisiones dependiendo del signi.

nivel de importancia en una consulta o incertidumbre en los datos.cado de los grados asociados a cada tupla de cada relacion: Grado de cumplimiento en atributos graduales. En su estudio se centran en los dos primeros signi.

permitiendo imprecision e incertidum- bre: Esto puede ser conseguido por distintos mecanismos. 147] (Captulo 2). 153] (apartado 2. En su artculo.cados. ellos ven dos clases de problemas. 143. las consultas exibles necesitan una expresion de las preferencias (comparaciones difusas) y unos niveles de importancia (umbrales). centrandose en el segundo de ellos exclusivamente:  Almacenar y manipular informacion incompleta. Para la division consideran dos interpretaciones posibles.1. en una consulta. De esta consulta difusa se obtiene una relacion en la cual existe un grado para cada tupla. As. pero ambas se basan en bases de datos clasicas y las relaciones difusas consideradas son el resultado de una consulta difusa efectuada sobre una relacion clasica.4) o de la teora de la posibilidad [127. como por ejemplo a traves de la probabilidad [11. algunas partes de la condicion pueden ser mas importantes que otras.  Admitir la posibilidad de poder efectuar consultas exibles (difusas) usando predicados o condiciones imprecisas y teniendo en cuenta que. Consideran dos tipos de signi.

ellos solo consideran relaciones difusas como consecuencia de una seleccion sobre una relacion clasica (\crisp") usando predicados difusos o por medio de la valoracion directa de los niveles de importancia.cados para esos grados: 1. O sea. Grado de cumplimiento: Una propiedad puede cumplirse con cierto grado entre dos extremos: La propiedad se cumple totalmente (usualmente grado 1) y la propiedad no se cumple en absoluto (usualmente grado 0). aunque el grado esta asociado a un atributo. A e Y son atributos simples o conjuntos de atributos. s[A]) y a S (s): R(x. Notaremos como T (t) el grado de la tupla t en la relacion T . de forma que existan objetos mas importantes que otros. Y ). Grado de importancia: Distintos objetos (tuplas) pueden tener diferentes importan- cias. donde X . De esta forma no es posible establecer distintos grados para distintos atributos dentro de una misma tupla. Entonces. Este problema se hace mas patente cuando A es un conjunto formado por varios atributos. . Supongamos que tenemos dos relaciones R(X. 2. en [23] se consideran los siguientes dos casos. A) y S (A. segun las interpretaciones que se den a R (x. s[A]) S (s) Caso 1 Grado de cumplimiento Grado de cumplimiento Caso 2 Grado de cumplimiento Grado de importancia Un inconveniente de este modelo es que. solo considera un grado por cada tupla.

5 x3 a1 0.41) interpretando el cuanti.11 de Division de Bosc et al.5 x5 a1 0.: Relacion R. Caso 1: El grado de las tuplas de la division se calculara por: RS (x) = min ( (s) ! R (x.8 x2 a1 0. s[A])) s S (3. DIVISION  RELACIONAL DIFUSA X A R x1 a1 0.84 CAPITULO 3.2 x3 a2 1 x4 a1 0.8 x1 a2 0.2 x2 a2 0.24: Ejemplo 3.3 x4 a2 0.7 Tabla 3.2 x5 a2 0.

b=a) si a 6= 0 (3.42) 1 si a = 0 Implicacion de Goguen : a ! b = min(1. el grado de pertenencia de cada tupla a su relacion.24 y 3. a  c  bg. .43) donde consideramos para la division que a = S (s) y b = R (x. la implicacion de Godel no mide si el grado de cumplimiento en R se parece mucho o poco al grado en S . Entonces. la implicacion de Lukasiewicz no permite distinguir entre el Caso 1 y el Caso 2. a ! b = supfc 2 [0. Por el contrario. respectivamente.26 se muestran los resultados de la division: A la izquierda empleando la implicacion de Godel y a la derecha empleando la implicacion de Goguen. tu Es importante destacar que. puede interesar un resultado que mida ese acercamiento de forma relativa. generada usando el producto en la operacion . podemos usar la implicacion de Goguen que es una R-implicacion. En este caso la division puede ser efectuada usando dos modelos de implicacion: 1 si a  b Implicacion de Godel : a ! b = b en otro caso (3. en estas dos implicaciones. dando la relacion R (x. Ademas. el resultado de la implicacion es R (x. s[A])  S (s).cador universal de la division como una conjuncion generalizada y usando la T-norma del mnimo. en la Tabla 3. cuando R (x. O sea. donde las columnas R y S expresan. s[A]). A veces. entonces RS (x) = 0. En esas relaciones se muestran tambien las operaciones efectuadas para calcular el grado de cumplimiento  en cada tupla. Con la implicacion de Godel. para que un elemento xi aparezca en el resultado es obligatorio que todos los elementos de S esten relacionados en R con xi : Si S (s) > 0 y R (x. s[A]) = 0. s[A])=S (s).45). 1]. la implicacion de Lukasiewicz no se comporta as y su resultado sera 1 S (s) en este caso (ver ecuacion 3.25. Para ello. s[A]) y esta evaluacion es absoluta puesto que no depende de S (s). Ejemplo 3.11 Sean dos relaciones R y S con los valores de las Tablas 3.

0.00 = minfminf1. independientemente del grado de importancia que tengan: RS (x) = 1 () (8s. 0.67 = minfminf1. 0.2 = minf0. 0. una tupla x cumplira totalmente las condiciones de la division si posee en R el maximo grado de cumplimiento con todos los requisitos expresados en S que tienen alguna importancia.11 de Division de Bosc et al.8gg x3 0.25: Ejemplo 3. en cierto sentido.3 a2 0.3g.3g.44) Observese que la implicacion de Dienes respeta los dos casos particulares que hemos ex- plicado justo antes. S (s) > 0 ) R (x.5 = minf1.2 = minf0.2.8/0. As. una tupla x no cumplira en absoluto las condiciones de la division si existe al menos un requisito en S con el maximo nivel de importancia y ademas x no cumple en absoluto este requisito: RS (x) = 0 () (9s.7g x5 0.5/0. 0. vaca.3g. para as tener una escala apropiada para los niveles de importancia. el mayor grado de im- portancia debe ser 1 (9si.8 Tabla 3. 1g x1 1. minf1.5/0. esto es.8gg x5 0.2 = minf0.2/0. minf1. La relacion S debe estar normalizada con respecto a .2/0.7/0. Caso 2: En este caso.8gg x4 0.3/0.67 = minfminf1.: Relacion S . minf1. . Implicacion de Godel Implicacion de Goguen X  (Calculo de ) X  (Calculo de ) x1 1.63 = minfminf1. S (si ) = 1).8gg Tabla 3.3g. minf1. de forma que cada requisito tiene asociado el grado de importancia que tiene. donde ahora la implicacion usada es la implicacion de Dienes: Implicacion de Dienes : a ! b = maxf1 a. la relacion S puede ser vista como un conjunto de requisitos que deben cumplir los objetos X de R.5g x4 0. 1g x3 0.2.8/0. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 85 A  a1 0.63 = minfminf1. S (s) = 1 ^ R (x. bg (3.41. 0. (caso 1): Resultados de R  S segun las implicaciones de Godel y Goguen. 0. Si S no esta normalizada entonces estamos dividiendo por una relacion que esta.8gg x2 0.11 de Division de Bosc et al. minf1.26: Ejemplo 3.7. 0.3g.2.0 = minf1.2/0. s[A]) = 0) Para las situaciones intermedias se utiliza la ecuacion 3.3. 1/0. 0. 0. 0.5g x2 0. s[A]) = 1) Por otra parte. 0.

no es obligatorio que todos los elementos de S esten relacionados en R con xi .2 x7 a1 0.: Relacion R.8 x5 a2 0. Ademas.7. para que un elemento xi aparezca en el resultado. De esta consulta difusa se obtiene una relacion en la cual existe un grado para cada tupla pero no admiten valores difusos como valores de los atributos en una relacion.27 y 3. Entonces. hay que destacar que ese grado esta asociado a la tupla entera. En el caso 1 se dan ciertos casos que podran ser vistos como incoherencias.28: Ejemplo 3.27: Ejemplo 3. es que ellos parten de bases de datos clasicas y las relaciones difusas consideradas son el resultado de una consulta difusa efectuada sobre una relacion clasica.2 Tabla 3.1 Analisis de la Propuesta La principal diferencia entre la division que proponemos y el enfoque de Bosc et al. DIVISION  RELACIONAL DIFUSA X A R x1 a1 1. Por tanto.86 CAPITULO 3.4 x6 a2 0. cosa que s pasaba en el caso 1.8 x6 a1 0.4 x3 a2 0. En esa relacion se muestran tambien las operaciones efectuadas para calcular el grado de cumplimiento  en cada tupla.0 x2 a1 1. tu Observese en este caso que. 3.12 de Division de Bosc et al.29 se muestran los resultados de la division.0 x3 a1 0. estos modelos de division no son aplicables cuando ambas relaciones tienen varios atributos en comun y queremos que en la division se tengan en cuenta todos ellos.0 Tabla 3.2 x8 a2 0.2 x7 a2 0. en la Tabla 3.3 a2 1.3. Este caso ocurre cuando un objeto x de R se relaciona con todas las tuplas de S pero con un grado .8 x4 a1 0.28.12 Sean dos relaciones R y S con los valores de las Tablas 3. no a un atributo particular. A  a1 0.2 x4 a2 0.0 x1 a2 1.: Relacion S . Ejemplo 3. Observe que la relacion S esta normalizada.12 de Division de Bosc et al.

0.7 = minfmaxf1 0. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 87 X  (Calculo de ) x1 1.3. (caso 2): Resultado de R  S segun la implicacion de Dienes.2g.8gg x6 0. 0.29: Ejemplo 3. maxf1 1.8gg x5 0. 0.2gg x8 0. maxf1 1. 0.0g.0 = minfmaxf1 0.2 = minfmaxf1 0. 0. 0.0gg x2 0.3.2gg Tabla 3.3. maxf1 1. 0.4g. 1.3.0gg x3 0. maxf1 1.3. 0.0g.2 = minfmaxf1 0.8 = minfmaxf1 0. 0. 1.2gg x7 0.3.4g.2 = minfmaxf1 0.3.2g. 0. maxf1 1.7 = minfmaxf1 0. 0.0 = minfmaxf1 0.12 de Division de Bosc et al.8gg x4 0. maxf1 1.0g. Implicacion de Lukasiewicz Implicacion de Lukasiewicz modi.3.3. 0. 0. maxf1 1.7. maxf1 1. 1.0g.

1. 1 0.0.2g x4 0. 1 0.11 de Division de Bosc et al.1. (caso 1 modi. 1 0.cada X  (Calculo de ) X  (Calculo de ) x1 1.7 = minf1.30: Ejemplo 3.9 = minf1 0.5. 1g x3 0.7 = minf1 0.3g x4 0.1.1g Tabla 3. 1 0.7 = minf1 0.1.1. 1 0.7 = minf1 0.9 = minf1 0.9 = minf1 0. 1 0. 1 0.3g x5 0.0 = minf1. 1g x1 0.8 = minf1 0.1.3g x3 0.1g x5 0. 1 0.0g x2 0.3g x2 0.5 = minf1 0.

usando la implicacion de Goguen obtiene 0. Ese problema puede ser solucionado utilizando la implicacion de Lukasiewicz: 1 si a  b Implicacion de Lukasiewicz : a ! b = 1 (a b) en otro caso (3.cado): Resultados de R  S segun las dos implicaciones de Lukasiewicz. ligeramente inferior al que marca S .1 grados por debajo de los requisitos expresados en la relacion S en ambos valores (a1 y a2 ).67 y usando la de Godel obtiene solo un grado de 0. puede interesarnos encontrar tuplas que cumplan los requisitos de la division estrictamente como se expresan en la relacion S . En ese caso. x es recuperado en la relacion de la division pero con un grado que puede ser muy peque~no en relacion a lo cerca que esta de cumplir las condiciones de la division. pues solo esta a 0. Para solucionar este problema podemos utilizar una modi.45) Ademas.11 la tupla de x5 esta muy cerca de cumplir las condiciones de la division. As.2. Sin embargo. en el Ejemplo 3.

cacion de la anterior implicacion: Implicacion de Lukasiewicz modi.

. Con esas dos implicaciones los resultados de la division R  S con las Tablas del Ejemplo 3.cada : a ! b = 1 ja bj (3.30.46) donde ja bj expresa el valor absoluto de esa diferencia.11 son los expresados en la Tabla 3.

88 CAPITULO 3. que es tremendamente simple y que no obtiene los resultados graduados: si a  b 1 Implicacion de Rescher-Gaines : a ! b = 0 en otro caso (3. en el caso 2 la principal ventaja estriba en que para que un elemento aparezca en el resultado no es obligatorio que todos los elementos de S esten rela- cionados. con dicho elemento. DIVISION  RELACIONAL DIFUSA Otra posible implicacion aplicable es la de Rescher-Gaines. Esto puede verse como una relajacion del cuanti. ya que todo depende de la importancia que tenga ese elemento.47) Como ya se ha indicado. en R.

aunque en su propuesta no consideran la posibilidad de utilizar cuanti.cador universal de la division.

4 La Division de Yager En [162] Yager expone una division difusa basada. su metodo aporta la novedad de relajar el cuanti. 3. en relaciones difusas que sim- plemente a~naden un grado de pertenencia a cada tupla.9. de nuevo.cadores difusos como los explicados en el apartado 2.7.2. Sin embargo.

cador universal de la division. utilizando cuanti.

cadores difusos de.

nidos de la forma de Zadeh [169] (apartado 2. Su propuesta se basa en los operadores OWA (Ordered Weighted Average) introducidos por el mismo Yager en [160]: De.2).9.

de forma que X n wi = 1 i=1 y donde para cualquier argumento (a1 . : : : . 1].48) que tiene asocido un vector de n pesos: wi 2 [0. 1] (3. con i = 1. : : : .nicion 3. 1]n ! [0. an ). se tiene la siguiente de. n.4 Un operador OWA de dimension n es una funcion F F : [0.

es un metodo intermedio entre tomar el valor mnimo y tomar el valor maximo de un conjunto de valores (a1 . As. an ).nicion X n F (a1 . As.32 respectivamente. : : : . 0. 0. an) = bi  wi (3. : : : .13 Sean R y S las relaciones de las Tablas 3. si el vector de pesos (w1 . an ) tomara el valor mnimo de los ai y si el vector de pesos es (1. 0) la funcion tomara el valor maximo.31 y 3. indica el grado con el que dicha habilidad requiere destreza manual.49) i=1 donde los bi son los elementos ai ordenados de mayor a menor: b1  b2  : : :  bn . La relacion difusa S almacena los requisitos de destreza manual. a traves del siguiente ejemplo: Ejemplo 3. Mostraremos el metodo para efectuar su division relacional difusa. 1) la funcion F (a1 . wn ) es (0. Sea el cuanti. tu En sntesis. : : : . : : : . : : : . : : : . para cada tipo de habilidad.

1]. con r 2 [0. Entonces. la consulta \mostrar la gente que tiene la mayora de las habilidades que requieren destreza manual " se soluciona con una division entre R y S de la siguiente forma: .cador difuso relativo \la mayora " modelado de forma simple: Q(r) = r.

3.13 de Division de Yager: Relacion R.2 Tabla 3.32: Ejemplo 3.0 Patricia I 1.3 Barbara II 0.31: Ejemplo 3.8 Patricia III 0.6 Debbie I 1.2 Tina II 1.5 Debbie IV 0. Habilidad I 1.0 Tabla 3.7 Debbie III 0.0 Patricia II 0.13 de Division de Yager: Relacion S .8 III 0.0 Debbie II 0.7.2 IV 0.0 Jean II 0. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 89 Nombre Habilidad Jean I 1.7 Jean III 0. .0 II 0.5 Barbara I 0.

90 CAPITULO 3. de la que obtenemos: fJean. DIVISION  RELACIONAL DIFUSA 1. 3. Hallar la gente de R: Es una proyeccion simple sobre el atributo \Nombre". Evaluar el grado de verdad de la a. 2. como la proyeccion en R sobre los atributos que no estan en u. Barbara. Tina. calcular Ru+ . Patriciag. Debbie. Para cada elemento u obtenido en el paso anterior.

0:7g = 0:7 CIII = maxf1 0:2. (b) Calculamos el conjunto de valores Sj .IVg: Ci = maxf1 i . e2 = 0:2. Ordenar de mayor a menor los Ci : b1  b2  b3  b4 . El valor de 8 indica el resultado obtenido utilizando el cuanti.rmacion \Q S 's son Ru+ ". e4 = 1 y d = 2. b3 = 0:8.II. 1:0g = 1:0 CII = maxf1 0:8. con i 2fI. Calcular los Ci . por tanto: T (Jean) = 1  0 + 1  0:1 + 0:8  0:4 + 0:7  0:5 = 0:77 El resultado global se muestra en la Tabla 3. w3 = 0:4 y w4 = 0:5. 3. Para ello: (a) Ordenamos de menor a mayor los grados de S y calculamos su suma d: e1 = 0. ii. Calcular el grado de verdad buscado como: X 4 T (u) = bi  wi j =1 Los 3 ultimos pasos. \la mayora de los elementos de S estan en Ru+ ". o sea. S2 = 0:1.33 con la mayora . Ru+(i)g donde i y Ru+ (i) son los grados del elemento i en S y en Ru+ respectivamente. (d) Para cada u: i. b4 = 0:7 y.III. b2 = 1. 0:0g = 1:0 De donde obtenemos que b1 = 1. para \Jean" seran calculados de la siguiente forma: CI = maxf1 1:0. 4g: w1 = 0. de forma que S0 = 0 y Sj = edj + Sj 1 S1 = 0. 2. 0:5g = 0:8 CIV = maxf1 0:0. iii. e3 = 0:8. w2 = 0:1. (c) Calculamos el conjunto de pesos: wj = Q(Sj ) Q(Sj 1) En este caso tenemos que wj = ej =d con j 2 f1. S3 = 0:5 y S4 = 1.

Este ultimo cuanti.cador 8. con el que Q(r) = 1 si y solo si r = 1.

de hecho. lo que hace es tomar el mnimo de los Ci . que coincide con la medida de necesidad entre los valores de R con respecto a los de S para un determinado \Nombre".cador. tu .

4.13: Resultado de la Division de Yager. 3.1 Analisis de la Propuesta La division de Yager tiene la caracterstica principal de relajar el cuanti. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 91 Nombre la mayora 8 Jean 0.77 0.42 0.70 Tina 0.3.7.47 0.30 Debbie 0.77 0.00 Patricia 0.80 Tabla 3.70 Barbara 0.33: Ejemplo 3.82 0.7.

pudiendo usar cualquier otro cuanti.cador universal.

como por ejemplo el cuanti.cador difuso Q.

En la division que proponemos nosotros tambien se permite relajar el cuanti. Esta relajacion la hace a traves de los operadores OWA.cador difuso \la mayora " del ejemplo anterior.

pudiendo usar cualquier tipo de cuanti.cador.

cador. incluso aquellos que son no monotonos. Yager considera solo los cuanti.

de hecho. solo estudia el caso particular de los cuanti.cadores monotonos. aunque.

Este grado tiene un signi.1) que no permite representar mas tipos que los escalares y un grado ( ) asociado a cada escalar.cadores monotonos crecientes. Yager utiliza un modelo de BDRD similar al empleado por Mouaddib (apartado 3.7.

pero con signi.cado de pertenencia. Como dijimos anteriormente este tipo de datos es tambien considerado por GEFRED.

Ademas. ya que. por ejemplo \Patricia" cumple perfectamente con los requisitos expresados en la relacion S y sin embargo solo obtiene 8 = 0:8. Algunos resultados mereceran un estudio detallado. Con el cuanti.cado de posibilidad (distribuciones de posibilidad no normalizadas sobre escalares). Yager no considera en su division el caso en el que ambas relaciones tengan varios atributos comunes con distinto grado cada uno.

es decir. Cubero. para cada valor del dominio subyacente. en BDRD bajo el modelo posibilstico.50) . un valor que creemos demasiado peque~no con respecto al que intuitivamente se espera obtener. Medina y Pons proponen un novedoso sistema para el calculo de la division relacional R(A. entonces. Las distribuciones de posibilidad de B son comprimidas en una unica distribucion de posibilidad tomando el valor maximo en cada distribucion. Si llamamos B (R) a la relacion R comprimida de esa forma y P a la distribucion de posibilidad resultante de la relacion S . Vila.5 La Division de Vila et al. Su sistema se basa en \comprimir" las relaciones involucradas. de forma que: La relacion del numerador R se quede con tantas tuplas como valores distintos existan para el conjunto de atributos A y la relacion del denominador S se quede con una unica tupla. su division es efectuada de la siguiente forma: A( QB'P (B (R))) (3. En [149].cador difuso obtiene la mayora = 0:82. 3. B )  S (B ).7. en las que se pueden almacenar distribuciones de posibilidad como valores en sus atributos.

DIVISION  RELACIONAL DIFUSA P# S# P1 0.6/S1.7/S4 P2 1/S1 P2 1/S4 P3 0. donde A es la proyeccion sobre los atributos de A y  QB'P es una seleccion generalizada llamada '-seleccion dependiente de la medida difusa Q. 0. 0.6/S1. 0. 1/S3 Tabla 3. para un cuanti. A grandes rasgos.5/S1.: Relacion R. 0.7/S2.5/S4 P5 1/S3 P6 0.7/S1. 0.14 de Division de Vila et al.2/S3 P4 1/S2 P4 1/S3 P4 0.34: Ejemplo 3.7/S1.6/S2 P1 0.5/S2 P1 0.8/S1. 0.92 CAPITULO 3. 0.8/S3.9/S3 P3 1/S2 P4 0.

el cuanti.cador difuso Q creciente se obtiene una medida Q . Por ejemplo.

bQ 2 [0.cador Q puede ser expresado como: 8 > < 0(x si 0  x  aQ Q(x) = > (b aQ ) si aQ < x < bQ (3.51) aQ ) :1 Q si bQ  x  1 donde aQ . 1] y aQ  bQ . Estos dos valores representan al cuanti.

de forma que para el cuanti.cador.

cador 9 corresponden los valores (0.0) y para el cuanti.

1). Entonces.cador 8 corresponden los valores (1. podemos obtener el valor Q de la siguiente forma: Q = (bQ aQ)=2 + 1 bQ (3. podemos de.52) Con esos datos.

35.14 Sea R la relacion de la Tabla 3. Ejemplo 3.nir que la seleccion  QB'P a~nade un grado que es calculado de la siguiente forma: Q(B jP ) + (1 Q)N (B jP ) (3. donde el atributo S# es difuso.53) donde (AjP ) y N (AjP ) son las medidas de posibilidad y necesidad respectivamente con las que el B se empareja con P . Al com- primir la relacion R obtenemos la relacion de la Tabla 3. Y sea P una distribucion de posibilidad de.34.

1=S 3g .nida como: P = f0:5=S 1. 0:7=S 2.

0.00 P3 0.14: Resultado de la Division de Vila et al.3. 0.50 0.7/S2.50 Tabla 3.10 0.8/S1. Consideremos.7/S1. 0. por ejemplo.80 0. los siguientes 3 cuanti.14 de Division de Vila et al.6/S2.00 0.5/S1.60 P4 1.7.00 0.9/S3 P4 0. P# 9 casi todos 8 P1 0.76 0.7/S4 P2 1/S1.66 0.70 P5 1.: Relacion R comprimida.5/S4 P5 1/S3 P6 0. 1/S2.60 P2 0.60 0.00 0.30 P6 1.64 0.8/S3.44 0. 0. 1/S3 Tabla 3. 1/S3. 0. 0. 1/S4 P3 0. 1/S2.90 0. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 93 P# S# P1 0.36: Ejemplo 3.6/S1.35: Ejemplo 3.

el cuanti.0. con sus valores (0. \casi todos ".0) y 9 = 1.7.cadores: 9 con sus valores asociados (0.9) y casi todos = 0:2 y por ultimo.

1) y 8 = 0.36 se incluyen los resultados para los 3 cuanti. con sus valores (1.cador clasico para la division. 8. En la Tabla 3.

As.cadores considerados tomando el maximo y el mnimo como la T-conorma y la T-norma respectivamente. por ejemplo para P1 tenemos los siguientes calculos para cada cuanti.

minf0:7. minf0. 0:8g. 0:6g. 0:7gg = 0:6 casi todos (P 1) = (0:2  0:8) + (1 0:2)  0:6 = 0:64 Es facil obtener los valores para cualquier otro cuanti. max f1 0:7. 0:8g. minf1. max f1 1. maxf1 0. 0:6g. 0:7gg = 0:8 8(P 1) = minfmaxf1 0:5. 0:8g. 0:8g.cador: 9 (P 1) = maxfminf0:5.

teniendo los valores de 9 (posibilidad) y de 8 (necesidad).5. tiene la caracterstica principal de relajar el cuanti.1 Analisis de la Propuesta La division de Vila et al. tu 3.cador.7.

cador universal. pudiendo usar cualquier otro cuanti.

como por ejemplo el cuanti.cador difuso Q creciente.

- cador difuso \casi todos " del ejemplo anterior. Ademas. Esta division no de. aunque no contempla explcitamente el uso de escalares con una relacion de semejanza entre ellos. por lo que permite el uso de distribuciones de posibilidad. el modelo de BDRD que emplea es un modelo posibilstico.

ne el caso en el que ambas relaciones tengan varios atributos comunes. obtiene el conjunto de los elementos de A para los que la union de los valores de B con los que estan relacionados. En terminos generales. es \similar" a la union de los valores de la . aunque da una nocion sobre como se podra efectuar.

2 0 Huelva 1 0.15 de comparacion entre la propuesta de Division de Vila et al.5 0 0 1 0.2 0 Cadiz 1 0.5 0.94 CAPITULO 3.5 0.6 0.75 0. relacion denominador S .875 0. H EQUIPO C9EQUIPO C algunos EQUIPO C casi todos EQUIPO C8 EQUIPO 9 algunos casi todos 8 B Cordoba 1 1 1 1 1 0.6 0.75 0.5 Malaga 1 1 1 1 1 0. Ese \similar" puede ser visto como una medida de posibilidad.2 0 Almera 1 0.5 0 0 1 0.875 0.75 1 0. DIVISION  RELACIONAL DIFUSA Nuestra Propuesta Propuesta de Vila et al.25 0.5 0.6 0.5 Sevilla 1 0.5 0. y nuestra propuesta.75 0. dependiendo del cuanti.5 Granada 1 1 1 1 1 0.5 1 0.75 0.37: Ejemplo 3.2 0 Tabla 3. de necesidad o de una mezcla de ambas.

o sea S#=P . es.8. una \seleccion generalizada" que permite efectuar selecciones con cierta similitud semantica a la division relacional.7 (Ejemplo 3. Algunos resultados mereceran un estudio detallado. un valor que creemos demasiado peque~no con respecto al que intuitivamente se espera obtener. La diferencia entre esta propuesta y la nuestra se ve facilmente con un ejemplo: Ejemplo 3. estan expresados en la Tabla 3.37 utilizando cuatro cuanti. Su propuesta es interesante pues aporta la operacion de compresion y la seleccion generalizada. Por tanto. operaciones estas que pueden resultar muy utiles en consultas exibles a BDRD.15 Sea R la relacion de la Tabla 3.cador empleado. la propuesta de Vila et al. y sin embargo solo obtiene 8 = 0:5. mas que una division relacional en sentido estricto. ya que. como ellos mismos llaman. por ejemplo \P6" cumple perfectamente con los requisitos expresados en P . As pues. pero considerando solo el atributo CALIDAD. los resultados de R  R0 obtenidos por nuestra propuesta y por la propuesta de Vila et al.5) y sea R0 la relacion de la Tabla 3.

(3) el cuanti. (2) universal.cadores: (1) Existencial.

cador difuso \algunos" de.

nido como Q(x) = x. y algunos = 0:5 y (4) el cuanti. esto es.51. con sus valores (0. siguiendo la ecuacion 3.1).

de.cador difuso \casi todos".

esa graduacion depende del cuanti. Ademas.0. esto es. quizas.nido como en el Ejemplo 3. nuestra propuesta distingue entre los casos de los equipos de \Sevilla".14. \Cadiz" y \Almera". los resultados de nuestra propuesta son mas acordes a los resultados que intuitivamente uno espera obtener. Naturalmente. con sus valores (0. dando distinto grado a cada uno de esos equipos.7.9) y casi todos = 0:2. Puede apreciarse que.

cador difuso empleado. solo considera cuanti. tu Por otra parte.

51. ya que algunos cuanti. algo demasiado restrictivo.cadores difusos cuya funcion Q sea creciente y si- guiendo la ecuacion 3.

. Nuestra propuesta permite el uso de cualquier tipo de cuanti. tales como \la minora". \aproximadamente x". \exclusivamente unos pocos". \aproximadamente menos que la mitad"..cadores son inhe- rentemente decrecientes (global o localmente).

.7. como se muestra en el Ejemplo 3.cadores difusos. independientemente de la forma que tenga su funcion Q.

escalares. Las principales ventajas de nuestra pro- puesta son:  Las relaciones difusas pueden almacenar muchos tipos de datos difusos (distribuciones de posibilidad. CONCLUSIONES Y LINEAS FUTURAS SOBRE LA DIVISION  DIFUSA 95 3.8 Conclusiones y Lneas Futuras sobre la Division Relacional Difusa La Division Difusa Generalizada presentada permite extender de forma consistente la semantica de la Division Relacional al ambito de las BDRD.8..3.) y lo unico que necesitamos es tener de..

nida una funcion de comparacion para esos valores.  Permite la relajacion del cuanti. la cual puede ser sustituida sin necesidad de alterar el proceso de la division.  Las relaciones sobre las que se aplica la division pueden disponer de cualquier numero de atributos comunes. si usamos distintas funciones de comparacion los resultados podran ser diferentes. Por supuesto.

con cualquier tipo de cuanti.cador universal propio de la operacion de Division Relacional.

cador difuso de.

Ademas. podemos saber en que medida es cierta la siguiente a. 163.2. sus resultados pueden a~nadirse a los de otras operaciones. 169] para obtener mas informacion de una base de datos.nido como se explico en el apartado 2. como las presentadas en [150.9. Por ejemplo.

rmacion y. ademas. saber que alumnos cumplen esa a.

1). para el calculo de la Division Difusa Generalizada: En esta operacion se proyecta sobre todos los atributos de A.rmacion y en que grado la cumple cada uno:  La mayora de los alumnos son Buenos (o Muy Buenos) en al menos una asignatura y Malos (o Muy Malos) en al menos otra asignatura.11 para el calculo de la Proyeccion Difusa Generalizada con Funciones de Grupo: En esta operacion se proyecta sobre atributos de A (all llamados X 0 ). . Esta extension se hace de la misma forma que para la Division clasica (explicada en el apartado 1. atributos en los que no surgen problemas al aplicar la proyeccion sobre ellos (cuando se eliminan tuplas re- dundantes).13 para el calculo de la Proyeccion Difusa Generalizada con Funciones de Grupo: Esta ecuacion aplica una condicion de igualdad sobre atributos de A.  Ecuacion 3.  Ecuacion 3. Si entre los atributos de A hay atributos con dominios difusos el problema surge al efectuar las siguientes operaciones:  Ecuacion 3. En el computo del resultado de las funciones de grupo no hay problemas porque en X se usan exclusivamente atributos de compatibilidad (que tienen dominio crisp: [0. esto es. La Division Relacional Difusa Generalizada puede ser extendida para el caso en el que R0 tenga ademas otros atributos no comunes a R. Hemos estudiado aqu la Division Relacional en Bases de Datos Difusas cuando los atri- butos de A (atributos no comunes a ambas relaciones) son \crisp".2.4.15. 1]).

Tambien estamos estudiando la posibilidad de relajar el cuanti. y por tanto. para incluir atributos con dominios difusos entre los atributos de A. Buckles y Petry.96 CAPITULO 3.1. exponen otras aproximaciones al problema. en lo posible. No obstante. Actualmente. dentro del modelo propuesto por estos autores. el problema de la igualdad de conjuntos difusos y el problema de la redundancia en Bases de Datos Difusas. la eliminacion total de este problema. DIVISION  RELACIONAL DIFUSA Por tanto. de forma unica para todos los contextos. el resultado puede variar dependiendo del orden de evaluacion de las tuplas de una relacion. estamos estudiando una propuesta que contribuya a reducir. es imposible. por la naturaleza difusa de los datos en cuestion. es necesario adoptar previamente un criterio para saber cuando dos valores difusos pueden ser considerados iguales. 30]. El problema que presenta este criterio es que no cumple la propiedad transitiva. en [28. Un ejemplo es el criterio de Prade y Testemale [129] de la ecuacion 3.

cador universal pero utilizando los operadores OWA sobre los grados resultantes de la Interseccion Difusa Cuali.

el problema que surge es como obtener los pesos wi del operador OWA (ver De. Para ello.cada.

Una posible ampliacion de nuestra propuesta consiste en considerar el caso en el que las relaciones sobre las que se aplica la division relacional tengan atributos de compatibilidad asociados a algunos de sus atributos. .nicion 3.4).

Captulo 4 Calculo Relacional Difuso Como parte integrante del modelo relacional de bases de datos (apartado 1. Ambos lenguajes fueron explicados basicamente en el apartado 1.4 para bases de datos clasicas (con todos los dominios crisp). y se adaptan perfectamente a ellas. En bases de datos difusas las de. Data Manipulation Languages ): El A lgebra Relacional y el Calculo Relacional.2) Codd introdujo en [42] dos niveles de Lenguajes para la Manipulacion de Datos (DML.2.

7 se explico el modelo GEFRED [102.niciones se complican para atender a una casustica mayor. Aqu. En el apartado 2. damos la de. 103] de bases de datos relacionales difusas. Como se ha visto GEFRED dispone de un algebra relacional difuso para este modelo. incluyendo la operacion de la division (Captulo 3 y [72]).

esto es. las cuales tienen propiedades particulares (sus atributos). el calculo de dominios es mas explcito y mas facil de usar. En el calculo de tuplas las entidades principales son las relaciones. Hemos elegido el calculo de dominios en vez del de tuplas porque tiende a estar mas cerca del lenguaje natural que el calculo de tuplas. el cual es mas restrictivo que el modelo GEFRED (apartado 2. La diferencia fundamental entre el calculo de tuplas y el de dominios estriba basicamente en como el usuario entiende la base de datos.nicion de un calculo relacional difuso orientado a dominios para el modelo GEFRED. 30] (apartado 2. En el calculo de dominios las entidades principales son los atri- butos.7) y no cuenta con los atributos de compatibilidad para evaluar el grado de cumplimiento de la condicion impuesta en una expresion.3). En [32] se propone un calculo de dominios para el modelo de bases de datos relacionales difusas de Buckles-Petry [28. aunque sus fundamentos pueden usarse en otros modelos. Al usar variables de dominio y tratar as cada atributo independientemente. las relaciones y los atributos. En primer lugar daremos la de. los cuales se pueden relacionar entre ellos usando las relaciones de la base de datos. Esta ultima vision esta mas cercana a como el hombre ve y entiende el universo que representa la base de datos.

Posteriormente. el grado de cumplimiento con el que cada valor de cada tupla ha satisfecho la condicion de la consulta. Finalmente. en la relacion resultante. Despues veremos las expresiones en calculo de los operadores primitivos del algebra y de los operadores no primitivos mas tpicos y una demostracion sobre como para cualquier expresion algebraica se puede encontrar una expresion equivalente en calculo. mostraremos un mecanismo para averiguar.nicion del calculo relacional difuso de dominios. expondremos unos ejemplos practicos que muestran la capacidad o potencia expresiva de este lenguaje y como extraer los grados de cumplimiento en la relacion resultante (muy importante para 97 .

1 Calculo Relacional Difuso de Dominios (Fuzzy Domain Relational Calculus) Para la de.98 CAPITULO 4. 4. CALCULO  RELACIONAL DIFUSO considerar el conjunto de tuplas del resultado como un conjunto difuso).

4. usando la notacion de Ullman [141].nicion del Calculo Relacional Difuso de Dominios nos basaremos en el Calculo Re- lacional de Dominios clasico (apartado 1.2). Primero de.2.

veremos como res- tringir las expresiones del calculo a aquellas que representan una relacion .niremos las expresiones validas de este Calculo Relacional. junto con los atomos difusos y las Formulas Bien Formadas (WFF) con atomos difusos. Posteriormente.

nita (expresiones \seguras").1. 4.1 De.

en Calculo de Dominios son de la forma: fx1 . x2 . x2 . : : : . xn)g (4. xn son variables de dominio. xn j (x1 . x2 .1) donde:  x1 .nicion de las Expresiones del Calculo Difuso de Dominios Las expresiones. esto es. : : : . variables que toman valores dentro del dominio en el que se de. : : : .

Con estas variables expresamos una tupla con los atributos que deseamos que tenga nuestra relacion resultante u objetivo. para simpli. La relacion resultante sera tambien una relacion difusa generalizada. a veces se les nombra con igual nombre que ese atributo.nan. Por eso. Entre los xi de la parte izquierda puede tambien haber constantes o expresiones que usen constantes y variables pero. Estas variables toman valores dentro del rango (o dominio) de un atributo concreto de una relacion difusa generalizada.

que esta construida a partir de elementos llamados atomos difusos y de unos operado- res espec. xn ) es una Formula Bien Formada o WFF (Well Formed Formula ).car y enfocar mejor el problema. no tendremos en cuenta estas posibilidades. x2.  (x1 . : : : .

: : : .cos. x2 . xn y expresa un predicado o condicion que debe ser cumplida por las tuplas resultantes. Esta formula debe tener como unicas variables libres x1 . Todos estos conceptos los de. Un predicado solo puede ser Verdadero o Falso (recordemos que esta basado en el calculo de predicados de primer orden).

1 A tomos Difusos Los atomos difusos de las formulas (WFF) los de.1.1.nimos a continuacion. 4.

.nimos como formados por dos partes: 1. Grado de cumplimiento:  2. aunque cambiara totalmente el sentido de la consulta. Umbral de cumplimiento: y se expresaran usando el comparador crisp \" (o usualmente tambien \>") de la siguiente forma1 : 1 Puede utilizarse otro comparador distinto a \" y a \>".

x2 .  4.1. Pertenencia:  = R(x1 . CALCULO RELACIONAL DIFUSO DE DOMINIOS 99  El grado de cumplimiento  de los atomos puede. donde R es una relacion difusa generalizada de grado n y cardinalidad m (como en la ecuacion 2. a su vez. Este atomo expresa el grado de cumplimiento (o de verdad) que tiene la a. : : : . xn ). ser de dos tipos: 1.10) y cada xi es una variable de dominio o una constante (crisp o difusa).

:::.n (4. xn ) es una tupla de R. Este grado de cumplimiento se calcula de la siguiente forma: R(x1 . x2 .rmacion que sostiene que (x1 . : : : . : : : .2) donde = es un comparador difuso generalizado (ver De. xn ) = r=1max f min f=(derc.::: .m c=1. xc)gg . x2 .

d0 )=(d.5) sobre D inducido por el comparador extendido = (d. de. d0 ).nicion 2.

nido de forma general. y sus distribuciones de posibilidad asociadas son pe y pe0 respec- tivamente. para distri- buciones de posibilidad. como: =(pe. U es el dominio de discurso sobre el que se construye el dominio difuso generalizado D (ver De. pe0 ) = sup min (= (p. pe0 (d)) (4. pe(p).p0)2U U = sup min (pe(d). p0 ).3) (p.4) d2U donde pe. pe0 2 D. pe0 (p0 )) (4.

El comparador = se puede traducir por \posi- blemente igual" y su de.nicion 2.1).

En otros tipos de datos (como los escalares). su de.nicion puede cambiarse por otra distinta.

nicion sera distinta.1. En el apartado 5. adaptada al tipo de datos en cuestion (relaciones de similitud [166]).7 se da una de.2.

usaremos la de. Nosotros.nicion de este comparador para distribuciones de posibilidad sobre escalares con una relacion de similitud.

aunque queremos remarcar que el calculo que de.nicion anterior a lo largo de este captulo.

Para determinados tipos de valores es posible que se requiera de.nimos es independiente del comparador empleado para evaluar la igualdad entre valores difusos.

kc)g (4.n .:::.n f=(dejc. (dej 1 . : : : .5) Esto es.::: . : : : . llamaremos tupla mas parecida a K en R a la tupla j {esima.m c=1. entonces. Por tanto. dejn ) de R que mas \se parece" a (k1 . : : : . R(K ) toma el valor (por la ecuacion 4.:::. la tupla mas parecida a K en R es la tupla (dej 1 . kn ).nir previamente un comparador de igualdad para ellos. tal que cumple que: max f min f= (derc . kc )gg = c=1min r=1. dejn ). Si notamos por K a una tupla (k1 .2) de la . : : : . kn ) donde todos ki son constantes.

A esa similitud que calcula la ecuacion 4.2 calcula la mayor similitud entre K y una tupla de R (que sera su tupla mas parecida). CALCULO  RELACIONAL DIFUSO similitud entre K y su tupla mas parecida en R. la ecuacion 4. a veces.2. para simpli. En otras palabras.100 CAPITULO 4.

en las expresiones del calculo tambien podremos usar comparaciones crisp. Por tanto. Se puede observar que las comparaciones crisp son un caso particular de las comparacio- nes difusas y estan incluidas dentro de estas. donde  es un comparador difuso generalizado inducido por el comparador extendido . y x e y son variables de dominio o constantes (crisp o difusas). Estos atomos difusos los llamaremos comparaciones difusas.car. y). le llamaremos grado de pertenencia de una tupla a R. Comparacion:  =  (x. 2. con la notacion in. Este atomo difuso expresa el grado de cumplimiento con el que x se relaciona con y mediante el comparador  . por cuestiones de claridad.

6=. O sea. 1]. re. >. establecemos que los atomos se podran escribir sin el umbral cuando se desee expresar que el grado de cumplimiento sea no nulo. se supone que este es expresado con el comparador \>" y = 0. donde x e y son constantes o variables de dominio y  es un comparador aritmetico:  2 f=. El umbral de cumplimiento es una constante real. . Por simplicidad. con 2 [0.ja tradicional: xy. Esto sera muy usual en las comparaciones crisp. que expresa un lmite que debe igualar o superar  para que el atomo se considere Verdad. g. <. cuando en un atomo no aparezca el umbral.

Entonces.  > es el comparador difuso generalizado \mayor que".riendose a que estas sean verdad. Ejemplo 4.  \Bueno" es una etiqueta lingustica constante con una distribucion de posibilidad aso- ciada. y en los atomos de pertenencia para indicar que solo vamos a considerar las tuplas que pertenecen a la relacion con grado no nulo.2 recogen algunos ejemplos de atomos difusos de Pertenencia y de Comparacion respectivamente. x2 y x3 son variables de dominio. las Tablas 4.1 Consideremos que:  R y S son relaciones difusas generalizadas de grado 4 y 3 respectivamente. siendo n una constante numerica.1 y 4.  >> es el comparador difuso generalizado \mucho mayor que".  #n es un numero difuso que expresa \aproximadamente n". junto con su signi.  x1 .

cado. distribuciones de posibilidad.. Observese como en cualquier campo de un atomo difuso pueden aparecer variables de dominio.).. etiquetas lingusticas. tu El signi. constantes crisp o constantes difusas (numeros difusos.

cado y la utilidad de los umbrales de cumplimiento varan en funcion del tipo de atomo: .

5 S (x1 . 8)  0:6 La tupla (x1 . x3 . x2 . CALCULO RELACIONAL DIFUSO DE DOMINIOS 101 R(x1 . #8) pertenece a R con grado mnimo 0. x2 . #8)  0:5 La tupla (x1 . 13.  4.6 R(x1 .1: Ejemplos de atomos difusos de Pertenencia y su signi.1. Bueno. x3 ) La tupla (x1 . x3 ) pertenece a S con grado no nulo Tabla 4. x2 . 8) pertenece a R con grado mnimo 0. 13. x2 . Bueno. x3 .

2: Ejemplos de atomos difusos de Comparacion y su signi. x2 )  0:5 \Aproximadamente 5" es mucho mayor que x2 con grado mnimo 0.9 >(x1 .5 Tabla 4. Bueno)  0:9 x1 es \Bueno" con grado mnimo 0. =(x1 .25 >>(#5. #15)  0:25 x1 es mayor que \aproximadamente 15" con grado mnimo 0.cado.

 A tomos de Pertenencia: En este tipo de atomos aplicamos un criterio de indistin- guibilidad de tuplas. un criterio que indica si 2 tuplas podemos considerarlas su.cado. o sea.

xn ) el valor de la similitud de la tupla (x1 . : : : .2 asignamos a R(x1 . En la ecuacion 4. Con- sideraremos que esas dos tuplas son su.cientemente parecidas. xn ) con la tupla de R que mas se le parezca. : : : .

En caso contrario. lo que es lo mismo. el atomo sera Falso. xn )  . 4.  A tomos de Comparacion: Los umbrales de cumplimiento indican si se considera que el atomo de la comparacion difusa es aceptado como Verdad o rechazado por ser Falso: Si el valor que devuelve el comparador difuso ( ) es mayor o igual que . : : : .2 Formulas Bien Formadas con A tomos Difusos: WFF (Well Formed For- mulas ) A continuacion. xn ) 2 R si esa similitud es mayor o igual que el umbral de cumplimiento preestablecido . si R(x1 .1.cientemente parecidas o. de. que (x1 . entonces el atomo sera Verdad. el atomo se aceptara como Verdad y en otro caso se tomara como Falso. : : : . esto es.1. En ese caso.

nimos los operadores validos y lo que son ocurrencias de variables de dominio libres y ligadas. a la vez que de.

Una WFF con atomos difusos esta de.nimos el concepto de Formula Bien Formada o WFF con atomos difusos.

y la formula 1 ^ 2 sostiene que 1 y 2 son ambas ciertas. La formula : sostiene que es falsa. Si 1 y 2 son WFF. indicando que si 1 es cierta tambien lo es 2 . Si es una WFF. tambien lo son 1 _ 2 ( 1 OR 2 ) y 1 ^ 2 ( 1 AND 2 ). Si 1 y 2 son WFF. .nida como las WFF del calculo clasico pero incluyendo atomos difusos: 1. La formula 1 _ 2 sostiene que es cierta 1 o es cierta 2 o lo son ambas. Las ocurrencias de variables de dominio en : son libres o ligadas segun esten en . Las ocurrencias de variables de dominio en 1 ! 2 son libres o ligadas segun esten en 1 y 2 . 2. Un atomo difuso es una WFF. Todas sus ocurrencias de variables de dominio son libres. Las ocurrencias de variables de dominio en 1 _ 2 y 1 ^ 2 son libres o ligadas segun esten en 1 y 2 . 4. 3. tambien lo es : (NOT ). tambien lo es 1 ! 2 (IF 1 THEN 2 ).

Normalmente se supone que el or- den de precedencia es el siguiente: A tomos. CALCULO  RELACIONAL DIFUSO 5. 6. la formula se hace cierta. la formula se hace cierta. tambien lo es ( ). La formula 8x( ) sostiene que para cualquier valor de x. 7. Los parentesis pueden situarse cuando sean necesarios para alterar la precedencia de los operadores o para aclarar el orden de evaluacion de estos.102 CAPITULO 4. Si es una WFF. entonces tambien son WFF 9x( ) y 8x( ). Si es una WFF y x es una variable de dominio que aparece como libre en . Nada mas es una WFF. cuanti. La formula 9x( ) sostiene que existe un valor de x tal que cuando sustituimos este valor en todas las ocurrencias libres de x en . siendo las ocurrencias de x ligadas en esas dos ultimas WFF. si sustituimos ese valor en todas las ocurrencias libres de x en .

conjuncion (^). disyuncion (_) e implicacion (!).. NOR (NOT OR). Igualmente. NAND (NOT AND). Nosotros no lo hemos hecho para simpli. en ese orden.cadores (9 y 8).. se pueden introducir tam- bien otros operadores como XOR (eXclusive OR). negacion (:).

car. Observese que solo utilizamos dos tipos de cuanti.

Sin embargo es posible de. el existencial y el universal.cadores.

nir otros cuanti.

Por ejemplo. de alguna forma. las consultas. podramos usar cuanti.cadores difusos que relajen.

. La de. \aproximadamente la mitad"..cadores del tipo \la minora". \la mayora". \aproximadamente n".

nicion de este tipo de cuanti.

Si en la posicion i apareciera una constante ki en lugar de la variable xi . : : : . : : : . xi+1 . xi 1 . xi 1 . : : : . : : : . se supondra que todas las ocurrencias de la variable xi son sustituidas por la constante ki . sin que esto indique que no tiene variables libres. xn son variables libres (no necesariamente todas las que haya en ). : : : . xi+1 . La de. (x1 . ki . xi deja de ser variable libre.5. Notaremos como (x1 . ki . xn ) a una WFF donde las variables x1 .- cadores difusos es un tema complejo que estudiaremos de forma independiente en el apartado 4. Obviamente. A veces. xn ) = 1 (x1 . por lo que tenemos que: (x1 . : : : . : : : . xn ) donde 1 es la misma WFF pero con las ocurrencias de xi sustituidas por la constante ki . notaremos una WFF simplemente . xn ). : : : .

nicion anterior de WFF se puede simpli.

car eliminando de la de.

nicion algunos operadores. 8 y ! de una formula basta con sustituirlos por expresiones equivalentes en funcion de los otros operadores: 1. Reemplazar cada subformula de la forma 8x( (x)) por :9x(: (x)). tu . 2. 3. entonces hay una formula equivalente 0 sin ocurrencias de los operadores ^. como lo demuestra el siguiente lema: Lema 4.1 Si es una formula en calculo relacional (de tuplas o de dominios). _ o 9. Reemplazar cada subformula de la forma 1 ^ 2 por :(: 1 _: 2 ). Por tanto. Demostracion: Para eliminar los operadores ^. 8 o !. Reemplazar cada subformula de la forma 1 ! 2 por : 1 _ 2 . Los otros son utiles para conseguir expresiones mas simples e intuitivas. Esta transformacion se denomina Ley de DeMorgan. en 0 solo apareceran operadores :. que son los realmente imprescindi- bles.

2 Restriccion del Calculo Relacional Difuso para Producir Relaciones Finitas J. de.D. Ullman.1.1. en [141].  4. CALCULO RELACIONAL DIFUSO DE DOMINIOS 103 4.

ne las llamadas expresiones \seguras" (\safe ") del calculo relacional clasico. Las expresiones seguras son aquellas que producen relaciones .

Las expresiones no seguras deben descartarse ya que carecen de sentido.nitas. xn . : : : . Si llamamos X a un conjunto de variables de dominio x1 . la cual denota todas las tuplas posibles que no estan en R. algo imposible de conseguir si algun dominio de R es in. un ejemplo de expresion no segura es fX j :R(X )g.

nito. Para de.

nir las expresiones seguras. Ullman de.

Ullman dice que una expresion en calculo relacional clasico fX j (X )g es segura si: 1. si u 62 DOM(w). el proposito de los puntos (2) y (3) es asegurar que podemos determinar la verdad de una formula cuanti. Para cada subformula de de la forma 9u(w(u)). Siempre que X cumpla . entonces. Con esto. entonces u cumple w para todos los valores de las otras variables libres de w. 2. todos los componentes de X son miembros de DOM( ). Para cada subformula de de la forma 8u(w(u)). 3. si u cumple w para cualesquiera otros valores de las otras variables libres de w.ne DOM( ) como el conjunto de smbolos que aparecen explcitamente en o que son componentes de alguna tupla en alguna relacion mencionada en . Como dice Ullman. u 2 DOM(w).

: : : ) ^    ) (4. cualquier formula de la forma 9u (R(u.cada (con 9 o 8) considerando solo los u que pertenecen a DOM(w).6) cumple (2). : : : ) !    ) (4.7) cumple (3). Por ejemplo. Observe que. en la de. y cualquier formula de la forma 8u (:R(u. : : : ) _    ) o tambien 8u (R(u.

en algunos casos. de forma que la formula queda. As. se puede establecer previamente el rango de cada variable. como mnimo. Las reglas (2) y (3) deben sostenerse independientemente del valor de estas variables. tenga necesariamente valores en DOM(w). no asumimos que cualquier variable libre de w. ligeramente simpli. una variable tiene el dominio del atributo que le corresponda segun la posicion de esa variable en el atomo. excepto u. En algunas versiones del calculo relacional (como QUEL [89]).nicion de seguridad. Todas las variables que aparezcan en una WFF deben formar parte. de un atomo difuso de pertenencia. Esa variable solo puede tomar los valores que tenga ese atributo en esa relacion (o relaciones).

De. manejarlas. debido a las caractersticas difusas de su entorno de trabajo y a que podemos establecer umbrales de cumplimiento. En calculo relacional difuso. restringiendo su evaluacion solo con valores en DOM( ). a veces puede ser util utilizar expresiones no seguras desde un punto de vista estricto y manejarlas como si fueran seguras.cada. esto es. a traves de la llamada \evaluacion limitada".

1 En Calculo Relacional Difuso diremos que una expresion es segura si. segun la \evaluacion limitada". como si . la expresion es segura considerandola desde un punto de vista clasico.nicion 4. Todas las expresiones se evaluaran. es- tableciendo todos sus umbrales a 1.

6. CALCULO  RELACIONAL DIFUSO fueran seguras: Para calcular el resultado de la consulta sera obligatorio que todos los va- lores del resultado pertenezcan a DOM( ). el resultado siempre se restringe exclusivamente a valores en DOM( ). O sea. DOM( ) se restringe a los valores contenidos en la relacion R. tu En formulas con el formato de la ecuacion 4.104 CAPITULO 4. La de. Ademas. los valores de DOM( ) pueden estar relacionados entre s formando las tuplas de las relaciones.

ya que no tiene sentido considerar todas las posibles tuplas de nuestro universo. que pueden ser in.nicion anterior es logica.

En la siguiente seccion se estudian unos casos en los que se aclara esto. Esta a.2 Capacidad Expresiva del Calculo Relacional Difuso de Do- minios Para cualquier expresion del algebra relacional difuso existe una expresion equivalente en calculo relacional difuso de dominios. solo trataremos con tuplas que existan en las relaciones pertinentes de nuestra base de datos. 4. En su lugar. como en el calculo clasico.nitas.

Eso no indica forzosamente que el aco- plamiento entre todos los distintos valores difusos sea exacto. sino que existe total posibilidad de que ambos valores sean (o se re. Las consultas con el calculo difuso son especialmente expresivas por dos motivos principal- mente: El calculo es no procedimental y por tanto debemos indicar solo lo que queremos (no como obtenerlo). podemos establecer unos umbrales ( ) que nos regulen el grado de cumplimiento mnimo que deseamos que tengan los valores de las tuplas del resultado. division y reunion).rmacion es basica para la completitud relacional y sera demostrada mas adelante (Teorema 4. objetivo que se consigue con = 1 en todos los atomos difusos. En bases de datos clasicas el grado de cumplimiento debe ser siempre maximo. En esta seccion. ademas. primero vamos a expresar los operadores primitivos del algebra relacional en calculo relacional difuso de dominios (union. expresaremos en calculo otros operadores no primitivos del algebra (interseccion. y.1). producto cartesiano. proyeccion y seleccion). diferencia. Posteriormente.

Naturalmente..eran) al mismo valor.. si los posibles va- lores difusos del dominio (etiquetas. distribuciones de posibilidad.) estan convenientemente de.

nidos entonces. Por valores difusos o etiquetas lingusticas \convenientemente de. con = 1 aseguramos un acoplamiento exacto entre los valores compa- rados.

y) = 1 (ver ecuacion 4.2.nidas" entendemos aquellos valores (x.1 Operadores Primitivos del A lgebra Los operadores primitivos del algebra difuso. y) tal que. Hay que destacar que en algunas expresiones no tiene sentido poner un umbral < 1 en los atomos de pertenencia ya que aplicaremos la \evaluacion limitada".3). En los atomos en los que puede ser util poner un umbral < 1 lo indicamos explcitamente. 4. expresados en calculo relacional difuso de do- minios. si son considerados distintos no sean tan parecidos como para que = (x. La explicacion a este hecho la damos a continuacion usando como ejemplo la expresion de la union. son los siguientes: .

Diferencia Difusa (Fuzzy Di erence ): Sean R y R0 dos relaciones de grado n compa- tibles respecto de la union. desde un punto de vista difuso esa expresion no es segura. Sin embargo. 2. Con < 1 se eliminaran tambien del resultado aquellas tuplas de R que pertenezcan a R0 en un grado su. xn)  g (4. Ver Ejemplo 4. xn ) tales que estan en R y no pertenecen a R0 con un grado mayor o igual que . Con = 1 tenemos una diferencia similar al estilo clasico.8) En palabras. el resultado se restringe a valores que pertenezcan a DOM( ). : : : . por lo que decimos que es segura en nuestro Calculo Relacional Difuso. : : : . xn ) _ R0 (x1 . xn ) ^ :R0 (x1 . xn j R(x1 .  4. Union Difusa (Fuzzy Union ): Sean R y R0 dos relaciones de grado n compatibles respecto de la union (con igual numero y tipo de sus atributos). xn)g (4.6 en la seccion 4. El grado de pertenencia a la otra relacion no nos importa. En tal caso. Esa situacion ocurrira con mayor frecuencia cuanto menor fueran los umbrales. esa expresion produce el conjunto de tuplas (x1 . xn ) tales que estan en R o en R0 . : : : . La union de ambas relaciones viene dada por la siguiente expresion en calculo: R [ R0 = fx1 . xn j R(x1 . y por eso no son colocados en la expresion. : : : .9) En palabras. esa expresion produce el conjunto de tuplas (x1 .4. como hemos indicado. CAPACIDAD EXPRESIVA DEL CALCULO RELACIONAL DIFUSO 105 1. En la expresion de la union no tiene sentido poner un umbral < 1 en los atomos de pertenencia. ya que podran existir tuplas que cumplieran y con todos o alguno de sus elementos fuera de DOM( ). : : : . Cada tupla del resultado pertenecera con grado 1 a una de las dos relaciones: R o R0 . Con esa restriccion los umbrales de cumplimiento pierden su sentido. : : : . Esa expresion es segura desde un punto de vista clasico. : : : .2. : : : . La diferencia entre ambas relaciones se expresa como: R R0 = fx1 .

: : : . : : : . 3. xn ) pertenece a R y (v1 . Esa pertenencia a R0 se calculara por la ecuacion 4. : : : . Entonces. : : : . A1 . y 1  . vm )g (4.13 en la seccion 4. Ver Ejemplo 4. para que la expresion sea segura. xk j 9xk+1. por lo que dichas tuplas nunca apareceran en el resultado (independientemente de su grado de pertenencia a R). : : : .11) . : : : . la proyeccion de R sobre esos atributos se expresa como: P (R. xn) ^ R0(v1 .4. las tuplas (x1 . xn)g (4. 4. Producto Cartesiano Difuso (Fuzzy Cartesian Product o Times ): Sean R y R0 dos relaciones de grado n y m respectivamente. xn . : : : . xn ) que seran evaluadas seran las de R. xn R(x1. : : : . Ak ) = fx1 . vm ) tales que (x1 . Ak ) un conjunto de atributos de R con k < n. ya que.cientemente grande ( ). : : : . : : : . Igualmente. que pertenecen a R con grado 1. v1 . vm j R(x1 . Tambien podran evaluarse las tuplas de R0 . esa expresion produce el conjunto de todas las tuplas posibles (x1 .10) En palabras.2. : : : . Proyeccion Difusa (Fuzzy Projection ): Sean R una relacion de grado n y (A1 . vm ) pertenece a R0 . : : : . xn . : : : . pero estas pertenecen a R0 con grado 1. v1 . : : : . aqu no tiene sentido poner un umbral < 1 en el atomos de R. El producto cartesiano de ambas relaciones se expresa como: R  R0 = fx1 .

106 CAPITULO 4. CALCULO  RELACIONAL DIFUSO Hemos supuesto que los atributos sobre los que proyectamos son los k primeros para simpli.

xn)  0 g (4.13 en la seccion 4. esa expresion produce el conjunto de tuplas (x1 .7 en la seccion 4.12) donde F 0 es la formula F con cada operando i. 2. : : : . xn .vj ) (4. xn ) tales que perte- necen a R (en grado mnimo ) y pertenecen a R0 (en grado mnimo 0 ). xn j R(x1 . : : : . mg. xn ) ^ F 0 g (4. Igualmente. vm j R(x1 . reemplazado por xi .car la expresion. xn j R(x1 . Esa expresion produce una relacion con las tuplas de R que cumplen el predicado F (o la WFF F 0 ).4. vm ) ^  (xi . 5. : : : . vm ) tales que (x1 . v1 . As. xn . pero eliminando los atributos sobre los que no se proyecta. Entonces. : : : . Ver Ejemplos 4. : : : .4. : : : . Si observamos esa expresion vemos que podran existir tuplas que pertenezcan a R y a R0 con grado mayor que y 0 respectivamente y cuyos valores no esten en DOM( )./ R0 = fx1 . : : : . esa expresion produce el conjunto de tuplas (x1 . denotando el i-esimo componente. : : : . La extrapolacion en el caso de que no sean los primeros es trivial. v1 . la seleccion en R con la condicion F se expresa como: S (R. se considerara que una tupla de R pertenece a la interseccion si pertenece a R0 en grado mnimo 0 . : : : . (v1 . Vamos a expresar en Calculo Relacional Difuso los mas tpicos: 1. En palabras. Si = 0 = 1 tenemos una interseccion similar al estilo clasico. vm ) pertenece a R0 y cumplen que  (xi . ng y j 2 f1.4.2. Seleccion Difusa (Fuzzy Selection ): Sean R una relacion de grado n y F una formula que expresa la condicion que deben cumplir las tuplas de R. : : : . Ver Ejemplo 4.2 Operadores No Primitivos del A lgebra Hay otros operadores muy utiles del algebra relacional que no son primitivos. xn ) ^ R0(v1 . : : : .13) En palabras. F ) = fx1 . Para calcular el resultado se aplicara la \evaluacion limitada" restringiendolo a tuplas con valores que pertenezcan a DOM( ). vj )  . : : : . es decir. xn ) pertenece a R. : : : . : : : .12 y 4.14) con i 2 f1. xn )  ^ R0 (x1 . Ver Ejemplo 4. Esa expresion produce una relacion similar a R. 4. Con esa restriccion tenemos que el umbral de cumplimiento del atomo de R sera util en las tuplas de R0 (ya que las de R pertenecen a R con grado 1). : : : . vj )  g  (xi .12 en la seccion 4. Interseccion Difusa (Fuzzy Intersection ): Sean R y R0 dos relaciones de grado n compatibles respecto de la union. Reunion Difusa (Fuzzy Join ): Sean R y R0 dos relaciones de grado n y m. La interseccion de ambas relaciones viene dada por la siguiente expresion en calculo: R \ R0 = fx1 . : : : . La reunion de ambas relaciones se expresa como: R . pue- den ser expresados en terminos de los operadores primitivos. el umbral 0 del atomo de R0 se aplica a las tuplas de R.

3) y en la que se puede eliminar del resultado uno de cada dos atributos que comparamos. 3. de alguna forma. CAPACIDAD EXPRESIVA DEL CALCULO RELACIONAL DIFUSO 107 siendo xi y vj dos variables con dominio en atributos de R y R0 respectivamente. En una reunion natural difusa puede interesar no eliminar ningun atributo o mezclar. La reunion natural (natural join ) es una variante en la que se comparan todos los atributos con igual nombre en ambas relaciones usando el comparador difuso \posible- mente igual" (ecuacion 4. los dos atributos en un unico atributo. Division Difusa (Fuzzy Quotient o Division ): La de. Observese que una reunion es una seleccion sobre el producto cartesiano.  4.2.

4.1. siendo los atributos de R0 de igual tipo a los ultimos m atributos de R.2. Sean R y R0 dos relaciones de grado n + m y m respectivamente.nicion del operador division del algebra relacional clasico esta incluida en el apartado 1. de.

O sea. R  R0 . la Division Relacional. podemos dar un grado de cumplimiento a esa similitud. bm ) R0(b1 . b1 . : : : .4. : : : . bm (R0(b1 .nidas como: R(a1 . an . bm ) Entonces.15) Esa expresion produce el conjunto de tuplas A = (a1 . En Calculo Relacional Difuso de Dominios esa consulta se obtiene por la siguiente expresion: R  R0 = fa1 . Por tanto. b1 . se puede expresar como la siguiente consulta: Dame las tuplas (a1 . : : : . si = 1 tenemos una division al estilo clasico. an j 8b1 . bm ) ! R(a1 . bm ) pertenece a R0 entonces (A. : : : . Observe que el atomo de R tiene un umbral de cumplimiento . : : : . an ) de R que se relacionan (en R) con todas las tuplas de R0 (en grado mnimo ). Si establecemos = 1 solo se recuperaran las tuplas (a1 . : : : . Ver Ejemplo 4. : : : . : : : . B ) pertenece a R en grado mnimo . En bases de datos difusas la forma de relacionarse sera por similitud (no por igualdad). : : : . : : : . : : : . Con < 1 tendremos en el resultado ademas tuplas que se parecen a todas las de R0 en grado mnimo . Esto hace posible que en el resultado haya tuplas que cumplen parcialmente la condicion de la consulta. an ) de R que se relacionan (en R) con todos los valores de R0 de forma exacta. bm )  )g (4. Puede verse facilmente que esta de.12 en la seccion 4. an ) tal que si B = (b1 . an . : : : .

nicion de la division relacional difusa es totalmente equivalente a la de.

como se vera en el apartado 4. a esta ultima. una seleccion de forma que obtengamos solamente las tuplas con grado mayor o igual que el umbral . Ademas.3. el procedimiento que de.nida en el captulo anterior [72] pero aplicando.

nimos para obtener los grados de cumplimiento del resultado obtiene los mismos grados que los obtenidos aplicando la division relacional difusa del captulo anterior. .

B j 9B (R(A.10.8.2 Consideremos la formula clasica de la Division Relacional. B )) ^ R0 (B )g (A (R)  R0 ) R  fA. 4. an ) y que el resto de atributos es B = (b1 .4. B )) ^ R0 (B ) ^ :R(A. el Producto Cartesiano (E=E1 E2 ).1 Toda expresion E en algebra relacional difusa se puede expresar con una ex- presion segura del calculo relacional difuso de dominios. la Diferencia (E=E1 E2 ).11 y 4. En cada caso.12 sustituyendo los atomos de pertenencia de R y R0 en las ecuaciones por las WFF de las expresiones en calculo de E1 y E2 respectivamente. tenemos que: A (R)  fA j 9B R(A. En ese caso. 4. El operador principal puede ser la Union (E=E1 [E2 ). B )) ^ R0 (B ) ^ :R(A. Ak )) o la Seleccion (E=S (E1 . sin operar sus datos de ninguna forma. B j 9B (R(A. : : : . bm ). : : : . A1 . expresada en la ecuacion 1. Entonces. si R tiene grado n la expresion en calculo de dominios es: R = fx1 .9. para la demostracion operaremos por induccion sobre el numero de operadores de la expresion E: Si E no tiene operadores se trata de una unica relacion R. se procedera segun el operador principal. xn j R(x1 . : : : .3 Traduccion de A lgebra Relacional Difuso a Calculo Relacional Difuso de Dominios Teorema 4. : : : . Para pasarla a una expresion en Calculo Relacional Difuso de Dominios su- pondremos que A = (a1 .2. B )g A (R)  R0  fA. : : : . B )  g A ((A (R)  R0 ) R)  fA j 9B (9B (R(A. se aplica respectivamente la ecuacion 4.108 CAPITULO 4. la Proyeccion (E=P (E1 . Demostracion: Basandonos en lo dicho anteriormente. F )). 4. tu Ejemplo 4. CALCULO  RELACIONAL DIFUSO 4. B )  )g Con lo que construimos la expresion de. xn )g En el caso de que E tenga uno o mas operadores.

B )) ^ :9B (R0 (B ) ^ :R(A.3 Calculo de la Relacion Difusa Resultante Con lo visto hasta el momento ya podemos escribir cualquier expresion en este Calculo Re- lacional Difuso de Dominios. Sin embargo.nitiva. equivalente a la division relacional y en la que hemos eliminado el segundo 9B (R(A.16)  fA j 9B (R(A. En particular. B )) ya que su mision era delimitar el dominio de A y eso ya lo hace el primero: R  R0 = A(R) A ((A (R)  R0) R) (4. los Cj de cada atributo Aj de cada relacion difusa generalizada (ver De. en bases de datos difusas es muy util saber el grado de cumplimiento con el que un determinado valor cumple o satisface una condicion. tu 4. B )  )g Puede verse que esta expresion es equivalente a la mostrada en la ecuacion 4.15. el modelo GEFRED cuenta con los llamados \atributos de compatibilidad".

2). de. Para calcular los valores de Cj .nicion 2. los cij llamados \grados de compatibilidad" de cada atributo en una tupla.

niremos el Grado de una variable de dominio en una WFF: .

3.3. CALCULO  DIFUSA RESULTANTE DE LA RELACION 109 4.1 Grado de una variable en una WFF con una sustitucion Vamos a de.  4.

de los atomos de . De. .nir una funcion  que se aplicara a una WFF . Esta funcion devolvera el grado con el que un valor concreto. Para este calculo no tendremos en cuenta los umbrales de cumplimiento. A la funcion habra que indicarle que valor (x) y de que tupla (S ) queremos evaluar: Sx . de una tupla concreta. satisface el predicado .

(x1 . Entonces.nicion 4. : : : . por el lema 4. que en hay como maximo los tres tipos de operadores basicos: negacion (:). Supondremos. disyuncion (_) y cuanti. xn ) 2 es una WFF con todos los xi como unicas variables libres. para evaluar si es Verdad o Falso tenemos que sustituir las variables libres en por unos valores (s1 . el conjunto de todas las WFF de E . y x una variable de dominio (que puede aparecer o no en ). : : : .1.2 Sea E el conjunto de todas las expresiones seguras del Calculo Relacional Difuso de Dominios. sn ) a los que llamaremos sustitucion S .

cador existencial (9). Entonces. de.

como una funcion: Sx : ! [0.nimos recursivamente lo que llamamos Grado de una variable de do- minio x en una WFF con una sustitucion S . notado por Sx ( ). 1] [  donde  es una constante con el requisito de que  62 [0. Esta constante indica que el Grado de la variable x en no es aplicable o carece de sentido. Nosotros supondremos que  < 0 (para simpli. 1] [  (4.17) Sx ( ) 2 [0. 1].

car la de.

se pueden dar 4 casos: 1. Atendiendo al tipo de operador con mas precedencia de . 3.nicion de la disyuncion). 2. Cuanti. Sin operadores: En este caso es un atomo difuso y distinguiremos entre los dos tipos de atomos difusos: Pertenencia y Comparacion. 4. Disyuncion. Negacion.

Vamos a estudiar esos 4 casos para hallar el valor de Sx ( ). La de.cador existencial.

18) donde: . donde el caso base es el caso 1 (cuando es un atomo). el grado en se obtiene en funcion de los grados en las subformulas obtenidas al evaluar el operador con mas precedencia en : 1. K )g si x = Ai y 9Ci en otro caso (4. Sin operadores ( es un atomo): En este caso. En el resto de los casos. xn . se atendera al tipo de atomo que sea: (a) Pertenencia: 8 R(K ) > < (S. : : : . R(S. K )  ) = > R si x = Ai y @Ci : minfcri.nicion es recursiva. K ) si no hay variables en el atomo Sx (R(x1 .

(b) Comparacion: 8  (s . asociado al atributo Ai . ng. donde suponemos que R tiene m tuplas y donde renombramos la tupla (S. La comparacion x = Ai indica que la variable x tiene el dominio del atributo Ai . : : : . y)  ) = :  (xi . Para \Buscar la tupla r-esima de R tal que sea la tupla mas parecida a (S. : : : . K ) END IF ELSE (* Si x NO es un atributo de R *) RETURN  END IF END IF Figura 4.  Los valores de R(S.2. : : : .  R es una relacion difusa generalizada de grado n + p. CALCULO  RELACIONAL DIFUSO IF @ variables en el atomo RETURN R(K ) ELSE IF = x Ai con i 2 f1.  K es una lista con todas las constantes (k1 . R(S. En caso de que existan varias se tomara la que tenga mayor cri . sn. y) < i si xi es una variable y x = xi Sx ( (xi .2. : : : . y) si xi es una constante (de x) (4. xn . k1 . K ) en R. podemos usar el algoritmo de la Figura 4. K ) es simple. : : : . La tupla mas parecida a (S. siguiendo el algoritmo de la Figura 4. es un atributo de R. K ) en R con mayor cri " y devolver (con RETURN) el resultado pertinente.1. de una tupla r tal que su componente de valor (der1 . K ) en una relacion siempre existe e incluso puede haber varias con igual similitud. K ) en R con mayor cri: RETURN minfcri .19)  en otro caso donde si es el valor de S correspondiente a la variable xi .1: Algoritmo para calcular el grado Sx en un atomo de Pertenencia. . : : : . : : : .  Ai con i 2 f1. Calcular el grado Sx en un atomo de Pertenencia R(x1 . K ) a Y = (y1 . n + pg THEN (* Si x es un atributo de R *) IF 9Ci en R THEN Buscar la r-esima tupla de R tal que sea la tupla mas parecida a (S. yn+p). K )=R(s1 . Con x = xi indicamos que ambas variables son la misma variable (tienen el mismo dominio). kp) que aparecen en el atomo.  cri es un valor del atributo de compatibilidad Ci de R. dern ) es la tupla mas parecida a (S. : : : .110 CAPITULO 4. K )g ELSE (* @Ci *) RETURN R(S. kp ) y R(K ) se calculan por la formula de la ecuacion 4.

: : : . vq ))g (4. g Figura 4. donde cada uj es un xk distinto y cada vj es un xk distinto. Negacion: (x1 . Sx ( (x1 . xn )) 6=  Sx ( (x1 . xn ) = : 1 (x1 .. vq ). y g (* M := Similitud entre y la - Y esima tupla *) t IF G < M THEN G := M C := ti c ELSE IF G = M AND C ti THEN <c C := ti c END IF END IF END FOR RETURN min C G f.n+p = ( tw w ) de . : : : .21) Al ser  < 0 aseguramos que el grado en una disyuncion va a ser  solo si son  los grados de ambas partes de la disyuncion. Cuanti.3. : : : . up ) _ 2 (v1 . K ) en R con mayor cri ". : : : . 2. : : : . Sx ( 2 (v1 . K C := 0 (* Mayor grado de compatibilidad: ri *) c t FOR := 1 TO DO m (* Para cada tupla de .  4. : : : . : : : .:::. xn ) 1 Sx ( 1 (x1 . xn )) =  en otro caso (4.2: Algoritmo para \Buscar la tupla r-esima de R tal que sea la tupla mas parecida a (S. Disyuncion: (x1 . 4. *) R f M := minw=1.. CALCULO  DIFUSA RESULTANTE DE LA RELACION 111 G := 0 (* Mayor similitud: ( ) *) R S. : : : . : : : . xn )) si Sx ( 1 (x1 . xn ) = 1 (u1 . : : : . xn )) = maxfSx ( 1 (u1 . xp )). aunque algunos de los u's pueden coincidir con algunos de los v's.20) 3. : : : .

el valor de sn+1 estara dentro del dominio de la variable xn+1 . : : : . xn ) = 9xn+1 ( 1 (x1 . sn+1 sera una constante y sera tratada como tal. sn+1))g (4. tu . xn+1 )) Sx ( (x1 .cador existencial: (x1 . xn .22) sn+1 2DOM( ) Observe que DOM( )=DOM( 1). : : : . Naturalmente. xn )) = max fSx ( 1 (x1 . A 1 le llamaremos subformula del 9. Observe que al evaluar el grado de 1 . : : : . : : : .

CALCULO  RELACIONAL DIFUSO B B1 B2 B3 1 0.25 0 1 2 3 4 5 6 7 8 9 10 11 Figura 4.3: De.112 CAPITULO 4.66 0.5 0 1 2 3 4 5 6 7 8 9 10 11 C 1 C1 C2 C3 0.3: Ejemplo 4.75 0.

3 Sea R una relacion con dos atributos.nicion de etiquetas sobre los atributos B y C. B y C. que tienen de. Ejemplo 4.

B2)  0:7 _ =(c. c))  :(:1 _ :(: _ 0:66)) . si tenemos una sustitucion S = (B3. c) = R(b. c) ^ (= (b. obteniendo que (b. c))  :(:Sc (R(b. apliquemos el lema 4. Entonces.3. C2)  0:5)) Una forma muy simple de hallar Sc ( (b. Ademas. C1) 2 R. c)) es seguir los siguientes 3 pasos: 1. podremos calcular Sc ( (b. c) _ :(:=(b. C2)  0:5))) 2. B2)  0:7 ! =(c. C2)  0:5) donde = es el comparador difuso generalizado de la ecuacion 4.nidas las etiquetas de la Figura 4. c)) _ :(:Sc (= (b. c)). Para ello. Sea la siguiente WFF: (b.1 a . supondremos que aun no hay atributos de compatibilidad en R. Sustituir en todos sus atomos por los grados de la misma variable c en cada atomo con la misma sustitucion S : Sc ( (b. c) = :(:R(b. B2)  0:7) _ Sc (= (c.3. Hallar cada grado de cada atomo independientemente y sustituirlo en su lugar: Sc ( (b.

3.  4. Operar segun la De. CALCULO  DIFUSA RESULTANTE DE LA RELACION 113 3.

podemos calcular el grado de b en con la misma sustitucion S = (B3. tu A la luz del ejemplo anterior podemos construir el siguiente lema que simpli. lo que se hace es quedarse con los valores que son distintos de . C1): Sb ( (b.nicion 4.2. C2)  0:5)))  :(:1 _ :(:0:75 _ ))  :(1 1 _ :(1 0:75 _ ))  :(0 _ :(0:25))  :(:(0:25))  0:25 La constante  podemos verla como un smbolo que nos indica que debemos eliminar esa parte y centrarnos en otra. Los operadores se van resolviendo de mayor a menor prioridad: Sc ( (b. B2)  0:7) _ Sb (= (c. c))  :(:Sb (R(b. En general. c)) _ :(:Sb (= (b. c))  :(1 1 _ :( _ 0:66))  :(0 _ :(0:66))  :(0 _ (1 0:66))  :(0 _ 0:34)  :(0:34)  1 0:34  0:66 De igual forma.

: : : . : : : . : : : . la formula es del tipo (x1 . up ) _ : 2 (v1 . xp )) . : : : . : : : .1 (ley de DeMorgan) tenemos que: (x1 . es decir. xn ) = 1 (u1 .ca algunas operaciones en el caso de que exista un operador de conjuncion: Lema 4. : : : . xn ) = :(: 1 (u1 . x )) > < x 1 1 p si Sx ( 1 ) 6=  y Sx ( 2 ) =  S x ( 2 (v1 .g en otro caso S > (4. xn )) = min si Sx ( 1 ) =  y Sx ( 2 ) 6=  : fSxx (( 21 ((vu11. : : : . : : : . : : : .2 Sea una WFF cuyo operador principal es el operador de conjuncion ^. : : : . vq )) Sx ( (x1 . En ese caso: 8 S ( (u . :: :: :: .23) Demostracion: Por el lema 4. vq )) Sean = Sx ( 1 (u1 . vq ). vxqp)))). up ) ^ 2 (v1 .. aunque algunos de los u's pueden coincidir con algunos de los v's. donde cada uj es un xk distinto y cada vj es un xk distinto..

: : : . vq )) Se pueden dar 4 casos distintos: . = Sx ( 2 (v1 .

6=  y .114 CAPITULO 4. CALCULO  RELACIONAL DIFUSO 1.

= : En este caso el resultado que obtenemos segun este lema es . Por la De.

: : : .2 obtenemos tambien el mismo resultado: Sx ( (x1 . =  y .nicion 4. xn ))  :(: _ :)  :(1 _ )  :(1 )  1 (1 ) = 2.

6= : En este caso el resultado segun este lema es .

Por la De. .

2 obtenemos tambien .nicion 4.

: : : . xn ))  :(: _ :. : Sx ( (x1 .

)  :( _ 1 .

)  :(1 .

)  1 (1 .

) = .

6=  y . 3.

6= : El resultado es minf . .

g. igual que el obtenido por la De.

xn ))  :(: _ :.nicion 4. : : : .2: Sx ( (x1 .

)  1 maxf1 . 1 .

. g = minf .

=  y . g 4.

g = . = : Por este lema obtenemos como resultado minf. igual que el obtenido por la De.

nicion 4. : : : . xn ))  :(: _ :)  :( _ )  :   Si tomaramos  > 1 podramos simpli.2: Sx ( (x1 .

23 tomando solo el tercer caso.car la ecuacion 4. pero la ecuacion 4. tu Presentamos otros dos lemas que pueden simpli.21 de la disyuncion no quedara tan simple.

car el calculo de la funcion  cuando existen operadores de implicacion (!) o cuanti.

: : : . : : : . aunque algunos de los u's pueden coincidir con algunos de los v's.cadores universales (8). la formula es del tipo (x1 . es decir. S ( 2 )g si S ( 1 ) 6=  y S ( 2 ) 6=  x x x x si Sx ( 1 ) =  y Sx ( 2 ) =  (4. : : : . x )) si S ( ) 6=  y S ( ) =  > < x 1 1 S ( 2 (v1 . : : : . xn )) = maxx si x x > : f1  S ( 1 ). : : : . vq )) p x 1 x 2 S ( 1 ) =  y S ( 2 ) 6=   Sx ( (x1 . En ese caso: 8 1 S ( (u . up ) _ 2 (v1 . Lema 4.24) Demostracion: Por el lema 4.3 Sea una WFF cuyo el operador principal es el operador de implicacion !. vq ). xp )) . up ) ! 2 (v1 . vq ) Sean = Sx ( 1 (u1 . : : : . : : : . : : : .1 tenemos que: (x1 . xn ) = : 1 (u1 . : : : . donde cada uj es un xk distinto y cada vj es un xk distinto. : : : . xn ) = 1 (u1 .

vq )) Se pueden dar 4 casos distintos: 1. = Sx ( 2 (v1 . : : : . 6=  y .

Por la De. = : En este caso el resultado que obtenemos segun este lema es 1 .

: : : .2 obtenemos tambien el mismo resultado: Sx ( (x1 .nicion 4. xn ))  : _   (1 ) _   1 .

=  y .  4.3. CALCULO  DIFUSA RESULTANTE DE LA RELACION 115 2.

6= : En este caso el resultado segun este lema es .

. Por la De.

2 obtenemos tambien .nicion 4.

xn ))  : _ . : Sx ( (x1 . : : : .

  _ .

 .

3. 6=  y .

. 6= : El resultado es maxf1 .

g. igual que el obtenido por la De.

nicion 4. xn ))  : _ .2: Sx ( (x1 . : : : .

 (1 ) _ .

.  maxf1 .

g 4. =  y .

= : Por este lema obtenemos como resultado . igual que el obtenido por la De.

2: Sx ( (x1 . xn ))  : _    _    tu Lema 4.4 Sea una WFF cuyo el operador principal es cuanti.nicion 4. : : : .

es decir. Entonces: Sx ( (x1 . sn+1 sera una constante y sera tratada como tal. Demostracion: Por el lema 4. xn ) = 8xn+1 1 (x1 . : : : . xn )) = min fSx ( 1 (x1 . : : : . xn+1 ) Sean ( 1 . y sea . : : : .1 tenemos que: (x1 . f ) todos los f valores de sn+1. : : : .cador universal 8. Observe que al evaluar el grado de 1 . sn+1))g (4. : : : . xn ) = :9xn+1 : 1 (x1 . la formula es del tipo (x1 .25) sn+1 2DOM( ) A 1 le llamaremos subformula del 8. xn+1 ). : : : . xn. : : : .

xn . f . segun este lema el resultado que obtenemos es: Sx ( (x1 . xn )) = minf. Entonces.i = Sx ( 1 (x1 . : : : . : : : . : : : . i )) con i = 1.

.1 . : : : .

f g Por la De.

xn ))  :Sx (9xn+1 : 1 (x1 .2 el resultado es: Sx ( (x1 . : : : . : : : .nicion 4. xn+1 ))  1 maxf1 .

1 .1 . : : : .

3. tu 4.2 Relacion Difusa Generalizada Resultante Con los elementos de.f g Podemos ver que ambos resultados son equivalentes.

: : : . : : : . 2. c n ])g 1 r1 r1 n rn rn con r = 1. C ])g R = B = f(A1 : de 1 [. : : : . m. xn)g es una relacion difusa generalizada R como la siguiente:  H = f(A : D [. : : : . x2. x2 . se obtienen de la siguiente forma: . c 1 ]). siendo m el numero de tuplas de la relacion y cuyas componentes H y B. xn j (x1 .nidos anteriormente podemos indicar que que el resultado de una ex- presion segura en calculo relacional difuso de dominios de la forma: fx1 . (An : den [. : : : . (A : D [. C ]).

Tambien. dern ) que cumplen (hacen cierto) el predicado (der1 . f(A1 : der1 ). dern ) con r = 1. com- puesta por todas las tuplas (der1 . Aplicamos la funcion  con las sustituciones Sr .116 CAPITULO 4. con todas las tuplas que ya han satisfecho el predicado de la consulta. Entonces. ese atributo de compatibilidad no nos aporta ninguna informacion. : : : . dern ) es la r{esima tupla de R. [. f[cr1 ]. Es facil observar que si el grado vale  para una sustitucion. Si todas las tuplas tienen un valor 1 en un atributo de compatibilidad concreto. : : : . Llamamos m al numero de tuplas que cumplen el predicado. con i 2 [1. esto es. La componente de compatibilidad del cuerpo. dern ). valdra tambien  para todas las demas. Esto podra plantear la pregunta de como obtener esas tuplas para luego aplicarle la funcion  que les corresponda. esa pregunta no tiene demasiado sentido ya que estamos de. n]. crn ]g. : : : . m. sus grados de compatibilidad. para todas las sustituciones Sr = (der1 . si existe el atributo Ci . xn)) (4. Calcular la componente de valor del cuerpo. teniendo en cuenta que en la cabecera existe el atributo de compatibilidad Ci . CALCULO  RELACIONAL DIFUSO 1. para todas las m tuplas se calculan de la siguiente forma: cri = Sxir ( (x1 . 2. : : : . Sin embargo. 2. : : : . : : : . podemos considerar que @Ci (y por tanto podremos eliminarlo) si cri = 1 8r = 1.26) donde r = 1. : : : . : : : . 2. si y solo si Sxir ( (x1 . se calcula des- pues. m. xn )) 6= . : : : . ya que eso es lo que suponemos si no existe el atributo de compatibilidad. : : : . m y Sr = (der1 . (An : dern )g. : : : .

niendo un calculo relacional y este es. por de.

Cada uno de los ejemplos siguientes esta enfocado a uno o varios de esos casos particulares.. calculamos el grado de compatibilidad de cada valor de cada tupla.4 Ejemplos de Consultas en Calculo Relacional Difuso El Calculo Relacional Difuso tiene mayor capacidad expresiva del Calculo Relacional Clasico del que procede. con la funcion .4. pero no como obtenerlo. Es decir.). de alguna forma. Nosotros. ALTURA. usaremos las etiquetas lingusticas de la Figura 4. CALIDAD. Hemos eliminado las etiquetas \Muy Bajo" y \Muy Malo". el cual explicamos a continuacion. Para mostrar esa potencia y para aclarar el calculo de la relacion difusa gene- ralizada resultante de una consulta. Ademas. 4. Para los ejemplos tomaremos una proyecci on de es- ta supuesta relacion que se muestra en la Tabla 4. por considerar que profesio- nalmente no juegan jugadores de esas caractersticas.. para los ejemplos.3. en esta seccion daremos una serie de ejemplos con los que hemos intentado abarcar la inmensa casustica que nos podemos encontrar en una consulta. pero todos estan basados en un mismo contexto. sus expresiones dicen que deseamos obtener. Supongamos que tenemos una Base de Datos Relacional Difusa sobre jugadores de ba- loncesto.4). con ligeros retoques a la funcion  (eliminando los valores ). las tuplas del resultado (R). un lenguaje no procedimental (non procedural ). NUM_CAMISETA. Una vez obtenidas. Una relacion de la Base de Datos podra tener los atributos (JUGADOR. es facil obtener el grado con el que cada tupla globalmente ha satisfecho la condicion completa.nicion. Los campos ALTURA (que almacena la altura del jugador) y CALIDAD (que mide la calidad del jugador segun el numero de puntos medio por partido) permiten almacenar valores difusos (tipo 6 de la Tabla 2. EQUIPO. .

 4.75 0. CALIDAD Malo Regular Bueno Muy Bueno 1 0. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 117 H JUGADOR EQUIPO ALTURA CALIDAD B J1 Almera Alto Muy Bueno J2 Almera Bajo Regular J3 Cadiz Muy Alto Muy Bueno J4 Cadiz Bajo Bueno J5 Cordoba Bajo Muy Bueno J6 Cordoba Muy Alto Malo J7 Granada Bajo Malo J8 Granada Muy Alto Malo J9 Granada Alto Regular J10 Huelva Alto Muy Bueno J11 Jaen Bajo Muy Bueno J12 Jaen Normal Regular J13 Jaen Alto Muy Bueno J14 Jaen Alto Muy Bueno J15 Malaga Bajo Muy Bueno J16 Malaga Alto Regular J17 Malaga Muy Alto Muy Bueno J18 Sevilla Bajo Bueno J19 Sevilla Muy Alto Bueno J20 Sevilla Normal Bueno Tabla 4.5 0 5 10 15 20 25 30 35 40 45 Puntos/Partido Figura 4.3: Relacion R. ALTURA Bajo Normal Alto Muy Alto 1 0.5 0 170 175 180 185 190 195 200 205 210 cm.4.4: De.

nicion de etiquetas sobre los atributos ALTURA y CALIDAD. .

Para los ejemplos usaremos como identi.5 S9 Tabla 4.5 S6 J15 Malaga Bajo 1 S7 J18 Sevilla Bajo 1 S8 J20 Sevilla Normal 0.4: Relacion R4:4 . CALCULO  RELACIONAL DIFUSO H JUGADOR EQUIPO ALTURA CALTURA Sustitucion B J2 Almera Bajo 1 S1 J4 Cadiz Bajo 1 S2 J5 Cordoba Bajo 1 S3 J7 Granada Bajo 1 S4 J11 Jaen Bajo 1 S5 J12 Jaen Normal 0.118 CAPITULO 4.

4 Mostrar los jugadores con sus equipos y alturas de aquellos jugadores Bajos (en grado mnimo 0. a)) .4 indicamos a la derecha de cada tupla la sustitucion a la que corresponde. O sea. a. las tuplas (j. Bajo)  0:5)g Primero se calcula la componente de valor. ya que tenemos que: 8r = 1. e. e. A la relacion resultante de cada ejemplo le llamaremos Ri . e. a)) = 1 cr(EQUIPO) = Se r ( (j. a y c). Por comodidad. tenemos que: c9(ALTURA) = Sa 9 ( (j. donde i es el numero del ejemplo. como en S hay un valor de la clave primaria de R (atributo JUGADOR). para calcular la componente de compatibilidad hay que estudiar que atributos de compatibilidad existen. e.Sevilla. a)) = a(J20. 9 a las 9 tuplas de la componente de valor. El atributo CALTURA existe y para cada Sr tenemos que: cr(ALTURA) = Sa r ( (j. A los predicados. En este caso. para la ultima tupla (jugador \J20") con r = 9. La expresion que resuelve esa consulta sera: fj. a) que cumplen el predicado. Llamaremos Sr con r = 1. a j 9c(R(j. sustituyendo la variable c por el unico valor posible para cada Si .4. Ejemplo 4. : : : . e. e. 9 cr(JUGADOR) = Sj r ( (j. a)) Por ejemplo. c) ^ =(a.Normal) ( (j. Los atributos CJUGADOR y CEQUIPO no los consideraremos en el resultado. esto es. e.22) sera el correspondiente a la tupla de su clave primaria. e. e. para calcular el grado de la WFF se puede eliminar el 9c. les llamaremos como hasta ahora . Despues. como en S hay un valor de la clave primaria. existen 9 tuplas que cumplan el predicado: Ver componente de valor de la relacion resultante mostrada en la Tabla 4. : : : . el valor de c que alcance el grado maximo (ecuacion 4.5). a)) = 1 Observe que.cadores de las variables de dominio las iniciales del nombre del atributo a cuyo dominio pertenezcan (j . en la Tabla 4.

e. Normal. Sevilla. Normal. si aplicamos el metodo del Ejemplo 4. c) ^ = (Normal.Normal) ( (j. obtenemos que (J20 .Sevilla.3. Sevilla. a))  9c(R(J20. Bueno) ^ 0:5  1 ^ 0:5  0:5 El cuanti. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 119 De donde.  4. Bajo)) a  R(J20.4.

Con otros valores de c su grado es 0. tomamos el grado mas peque~no de ambos atomos (segun el lema 4. Por eso. que es el resultado . En particular. 0:5g = 0:5. 0:5g = 0 y con c = \Bueno" tenemos que minf1. 0:5g = 0:5. De todos esos valores tomamos el maximo (ecuacion 4. que hace maximo el grado de la subformula del 9. ya que la sustitucion contiene un valor de la clave primaria.cador existencial lo eliminamos cuando sustituimos todas las ocurrencias de la variable c por el valor \Bueno". : : : . ese valor de c es el unico que existe en R con la sustitucion S9 . Como es una conjuncion. 0. con otros valores de c tenemos que minf0. es 1. y obtenemos que maxf0.22).2). El grado en ese atomo. con ese valor de c.

sre. Normal)  0:5)) )g Observe que los atomos como e = Jaen son comparaciones crisp y se podran haber puesto como comparaciones difusas del tipo = (e. Por motivos de claridad las expresamos como comparaciones crisp. el grado en el atomo de pertenencia siempre sera 1 para cualquier valor de c. a.7). c) ^ (e = Jaen _ e = Malaga) ^ ((=(a.22. a j 9c(R(j. eliminamos el 9 aplicando la ecuacion 4. ya que para cualquier sustitucion Sr = (srj .5. c) ^ (sre = Jaen _ sre = Malaga) ^ ( _ ))  c2DOM( max f1 ^ (sre = Jaen _ sre = Malaga) ^ g )  sre = Jaen _ sre = Malaga En el primer paso. tu Ejemplo 4. para cualquier sustitucion Sr . Bajo)  0:7) _ (=(a. Ademas. e.nal. La relacion resultante. Por tanto. La expresion que resuelve esa consulta sera: fj. sre. Esas comparaciones tomaran el valor 1 si son ciertas y 0 si son falsas. Jaen)  1. Ese predicado es una WFF segura y como la unica relacion que se usa es R. se muestra en la Tabla 4. entonces.5 Obtener los jugadores con sus equipos y alturas de aquellos jugadores de Jaen o Malaga que son de altura Normal (en grado mnimo 0. sra). por lo que una de esas dos comparaciones sera igual a 1 y la otra igual a 0. R4:5 . tenemos que en la relacion resultante los equipos (sre ) seran de \Jaen" o de \Malaga". 0g = 1. Por tanto. sra . todos los valores del resultado estaran en R. se tiene que: Se r ( (j.5) o Bajos (en grado mnimo 0. a))  9c(R(srj . El atributo CEQUIPO no lo escribimos porque su valor es 1 para todas las tuplas que se seleccionen. . Habra tantos ceros como valores de c haya en DOM( ) distintos a \Bueno". e. el resultado sera: maxf1. e.

5) de los Ejemplos 4. S10 y S12 .4) y R4:5 (Tabla 4.18 (o su algoritmo): c6(EQUIPO) = Se 6 ( )  Se 6 (R4:4 (j. a)) _ Se 10 (R4:5 (j.5: Relacion R4:5 . Bajo) _ =(Bajo. a))  9c(R(J16.8: R4:4 [ R4:5 = fj. c) ^ ( _ ) ^ (=(Bajo. a))  9c(R(J11. como en la ecuacion 4. Veamos como se calculara para las tuplas S1 y S6 (Tabla 4. Jaen. e. vamos a ver como se calculan para las tuplas S6 . El calculo de CALTURA se hace de la misma forma. e. Observe que para calcular los valores de compatibilidad debemos aplicar dos veces la ecuacion 4. e. e.6 Partiendo de las relaciones R4:4 (Tabla 4. a j R4:4 (j. Alto. a)g Los valores de los atributos de compatibilidad CJUGADOR y CEQUIPO seran todos igual a 1.4 y 4. e. Por ejemplo.5 S4 J15 Malaga Bajo 1 S5 J16 Malaga Alto 0. la union (en terminos de algebra relacional) de ambas relaciones correspondera a la consulta: Obtener los jugadores con sus equipos y alturas de aquellos jugadores que pertenecen a R4:4 o a R4:5 . e.120 CAPITULO 4.5): c1(ALTURA) = Sa 1 ( (j. Bajo. e. tu Ejemplo 4.5 S6 Tabla 4. 0:5gg = 0:5 En el primer caso la variable c es sustituida por \Muy Bueno" y en el segundo caso se sustituye por \Regular".5 respectivamente. Normal)) )  1 ^  ^ (1 _ 0:5)  minf1. por lo que no los indicamos en la relacion resultante de la Tabla 4. La expresion que resuelve esa consulta sera. e. maxf1. a)) _ Se 6 (R4:5 (j.5 S3 J14 Jaen Alto 0. e. a) _ R4:5 (j. Esos son los unicos valores de c que hacen que el grado de la subformula del 9 sea mayor que 0. 0:5gg = 1 c6(ALTURA) = Sa 6 ( (j. e. e. a))  1 _ 1  1 c10(EQUIPO) = Se 10 ( )  Se 10 (R4:4 (j. CALCULO  RELACIONAL DIFUSO H JUGADOR EQUIPO ALTURA CALTURA Sustitucion B J11 Jaen Bajo 1 S1 J12 Jaen Normal 1 S2 J13 Jaen Alto 0. a)) _ Se 12 (R4:5 (j. Bajo) _ =(Alto. a))  1 _ 0  1 . Normal)) )  1 ^  ^ (0 _ 0:5)  minf1.6. maxf0. a))  0 _ 1  1 c12(EQUIPO) = Se 12 ( )  Se 12 (R4:4 (j. Malaga. c) ^ ( _  ) ^ (=(Alto.

6: Relacion R4:6 = R4:4 [ R4:5 del Ejemplo 4. 1g  maxf0:5.5 S8 J15 Malaga Bajo 1 S9 J16 Malaga Alto 0.  4. 0g = 0:5 tu Ejemplo 4. Note que el calculo de cr(JUGADOR) .5 S7 J14 Jaen Alto 0. la interseccion (en terminos de algebra relacional) de ambas relaciones R4:4 y R4:5 correspondera a la consulta: Obtener los jugadores con sus equipos y alturas que pertenecen a R4:4 y a R4:5 . e. obtengamos ahora los valores del atributo de compatibilidad CALTURA . 1g  maxf0. como en la ecuacion 4. por lo que no aparecen en la relacion resultante de la Tabla 4. a)g Los valores de los atributos de compatibilidad CJUGADOR y CEQUIPO son siempre 1. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 121 H JUGADOR EQUIPO ALTURA CALTURA Sustitucion B J2 Almera Bajo 1 S1 J4 Cadiz Bajo 1 S2 J5 Cordoba Bajo 1 S3 J7 Granada Bajo 1 S4 J11 Jaen Bajo 1 S5 J12 Jaen Normal 1 S6 J13 Jaen Alto 0.5 J15 Malaga Bajo 1 Tabla 4. con r = 1.7. El calculo de ambos es muy similar: Para cualquier sustitucion Sr con r = 1. La expresion que resuelve esa consulta sera.6.5 S10 J18 Sevilla Bajo 1 S11 J20 Sevilla Normal 0. a j R4:4 (j.4. 1g = 1 c10(ALTURA) = Sa 10 ( )  0 _ minf0:5.5 S12 Tabla 4.7: Relacion R4:7 = R4:4 \ R4:5 del Ejemplo 4.13: R4:4 \ R4:5 = fj. 3 tenemos que: cr(EQUIPO) = Se r ( )  1 ^ 1  1 . es similar al de cr(EQUIPO) .7 En la misma lnea que el ejemplo anterior. a) ^ R4:5 (j. H JUGADOR EQUIPO ALTURA CALTURA B J11 Jaen Bajo 1 J12 Jaen Normal 0. e. 1g _ minf1.7. 0:5g = 0:5 c12(ALTURA) = Sa 12 ( )  minf0:5. 1g _ 0  maxf0:5. sabiendo que ese atributo existe en R4:4 y en R4:5 : c6(ALTURA) = Sa 6 ( )  minf0:5. e. : : : . Para las mismas tuplas. 12. 2.

Alto. 1g  1 c2(ALTURA) = Sa 2 ( )  minf0:5. e. minf1. = (Regular.27) El resultado de esta consulta esta en la Tabla 4. Para el atributo de compatibilidad CALTURA tenemos que: c1(ALTURA) = c3(ALTURA) = Sa 1 ( ) = Sa 3 ( )  minf1. e. 1g  minf0:5. el valor para CEQUIPO en la primera tupla S1 . a.5): fe j 9j. a. Se 1 (R(J2. Malo)gg = maxf0. 1g ^ minf1. 0g. Malo)  0:5) g  maxfminf1. lo obtenemos mediante: Se 1 ( )  9j.5 Tabla 4.8: Relacion R4:8 . Malo)  0:5). 0:5g = 0:5 Observe que cuando evaluamos el cuanti. a.8.8 Mostrar los equipos que tienen al menos un jugador Malo (en grado mayor o igual que 0. c1(EQUIPO) . e. c(Se 1 (R(j. e.5 Malaga 0. CALCULO  RELACIONAL DIFUSO H EQUIPO CEQUIPO B Almera 0. 1g = 0:5 tu Ejemplo 4. Malo)  0:5)g (4. c(R(j. Regular) ^ = (Regular. Bajo. Malo)  0:5))  maxfSe 1 (R(J1. Por ejemplo. Muy Bueno) ^ =(Muy Bueno. a.5 Cordoba 1 Granada 1 Jaen 0.122 CAPITULO 4. c)) ^ Se 1 (= (c. 1g ^ minf1. c) ^ =(c.

Malo)g g  maxfminf1. 0:5g = 1 . las variables ligadas (j . Regular)) ^ Se 3 (= (Regular. Bajo. Al calcular Se 3 ( ) nos encontramos que existen tres valores posibles para las variables j . minf1. Malo)  0:5))  maxfSe 3 (R(J7. e.cador existencial (9). minf1. 0:5gg = maxf1. a. Malo)g.22) por los valores de j . Muy Alto. Malo)  0:5). En la ecuacion anterior hemos eliminado aquellos valores de j . = (Malo. c(Se 3 (R(j. a y c) son sustituidas (segun la ecuacion 4. Malo)g. ya que para esos valores el grado en la subformula del 9 es 0. e. Malo)  0:5). minf1. 1g. a y c que hacen que el grado en la subformula del 9 sea mayor que 0. ALTURA y CALIDAD) que hay en DOM( ) para tomar el mayor grado de todas esas sustituciones. Se 3 (R(J9. a y c que no tienen una tupla en R con EQUIPO=S1 (Almera). Estos tres valores son los de las tres tuplas de R con EQUIPO=S3 (Granada): Se 3 ( )  9j. e. a. c)) ^ Se 3 (= (c. = (Malo. 1g. Malo)) ^ Se 3 (=(Malo. Alto. e. a y c (JUGADOR. Malo)) ^ Se 3 (= (Malo. minf1. 1. Se 3 (R(J8. Malo)  0:5) g  maxfminf1. = (Regular.

tu Ejemplo 4. Si observamos los Ejemplos 4.75 Sevilla 1 Tabla 4. c) ^ =(c. c(R(j.9. e.10 Mostrar los equipos en los que existe al menos un jugador Malo (en grado mnimo 0.9 Mostrar los equipos en los que existe al menos un jugador Bueno (en grado mayor o igual que 0. las cuales consiguen ambas grado 1 (la tupla de \J9" consigue solo grado 0.8 y 4. e. a.66 Jaen 0.28) La relacion R4:9 esta en la Tabla 4. Malo)  0:5) ^ 9j. tu Ejemplo 4.9.75 Granada 0.75 Malaga 0. Por tanto. H EQUIPO CEQUIPO B Almera 0. se ve que el predicado de este ejemplo esta formado por la conjuncion de los predicados de ambos ejemplos. e. a. e. a.5 Cordoba 0. a.  4. a. e.10: Relacion R4:10 . a.75 Jaen 0.5): fe j 9j.10.5).4. c(R(j.5) y un jugador Bueno (en grado mnimo 0. c) ^ =(c. Bueno)  0:5)g (4. tomaremos el mayor grado de los tres. que puede ser el grado de la tupla del jugador \J7" o el del jugador \J8".9: Relacion R4:9 .22. Bueno)  0:5)g El resultado se muestra en la Tabla 4. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 123 H EQUIPO CEQUIPO B Almera 0. a) ^ R4:9 (j. esa consulta es equivalente a la siguiente: fe j R4:8(j.5): fe j 9j.66 Huelva 0.5 Malaga 0.75 Cadiz 1 Cordoba 0.75 Granada 0. c(R(j. c) ^ =(c.5 Tabla 4. a)g tu . Al aplicar la ecuacion 4.

11. CALCULO  RELACIONAL DIFUSO Ejemplo 4. e. a. Veamos como obtenemos ese resultado: Si llamamos 1 a la subformula del 8. c) tales que (j. a. 1g  1 y entonces c1(EQUIPO) = Se 1 ( (e)) = minf0:75.11 Mostrar aquellos equipos en los que todos sus jugadores sean Bajos (en grado mnimo 0. e. c) ! (= (a. a.4. buscamos los valores de (j. Regular)) g Desarrollando esos grados por el lema 4. a. Regular))  1 ! (1 _ 0:66)  maxf1 1. 0:75g  0:75 Se 1 ( 1 (J2. Bajo)  0:5 _ = (c. teniendo que la consulta es equivalente a fe j :9j. Los valores de (j. c (R(j.75): fe j 8j. c) para los que el grado puede ser menor que 1 (las dos tuplas del equipo de Almera).11). c): c1(EQUIPO) = Se 1 ( (e)) = minfSe 1 ( 1 (J1. a. aplicando el lema 4. c : (:R(j. a. a. Alto. tenemos que hay dos valores para (j. Alto. a. 1g = 0:75 Aplicando el lema 4.124 CAPITULO 4.5) o Buenos (en grado mnimo 0. e. para la primera tupla (Tabla 4. a. e.Almera. c) 2 R obtienen grado 1. Se 1 ( 1 (J2.1 obtenemos tambien el mismo resultado. e. c) Por ejemplo. Segun eso. Bueno)  0:75) g Si llamamos 2 a esa WFF quitandole la primera negacion y 3 a esa WFF quitandole tambien el cuanti. Bajo)  0:5 _ =(c. Bajo. Bueno)  0:75) ) g La relacion resultante se muestra en la Tabla 4. c) _ = (a. a. tenemos que: (e) = 8j.3 obtenemos que Se 1 ( 1 (J1. a. c 1 (j. Muy Bueno))  1 ! (0 _ 0:75)  maxf1 1. c) en DOM( ) que consiguen un menor grado en 1 con la sustitucion S1 . e. En la siguiente ecuacion expresamos solo esos dos valores de (j. Bajo. Muy Bueno)). e.

c) en DOM( ) que consiguen un mayor grado en 3 con la sustitucion S1 . para la primera tupla tenemos que: c1(EQUIPO) = Se 1 ( (e)) = 1 Se 1 ( 2 (e)) Para resolver Se 1 ( 2 (e)) buscamos los valores de (j. a.cador. a. a. a. que son las dos tuplas del equipo de Almera: . c(: 1 (j. tenemos que hay dos valores de (j. e. c) para los que el grado puede ser mayor que 0. c). En la siguiente ecuacion expresamos solo esos dos valores de (j. a. c)) Entonces. a. tenemos que: (e) = : 2 (e) = :9j. e. Segun eso. c)) = :9j. a. c( 3 (j.

tambien vamos a desarrollar las ecuaciones: c4(EQUIPO) = Se 4 ( (e)) Ahora tenemos que existen 4 valores de (j. e. Alto. Bajo.75 Jaen 0. Alto.4. c) en DOM( ) que pueden tener un grado en 1 con la sustitucion S1 menor que 1 (los 4 del equipo de Jaen). e. a. a. Muy Bueno)). Bajo. e. Alto.75 Huelva 0. obtenemos que c4(EQUIPO) = Se 4 ( (e)) = minf1. En la siguiente ecuacion expresamos solo esos 4 valores de (j. e. 0g = 0:25 Por tanto. 0:75. Muy Bueno))  1 ! (0 _ 0:75)  maxf1 1. Normal. S4 . Se 4 ( 1 (J12. e. Se 1 ( 3 (J2. 0:75g  0:75 Con lo anterior. e.11: Relacion R4:11 . Muy Bueno)) g Calculando cada uno de esos grados tenemos que: Se 4 ( 1 (J11. Alto. Se 4 ( 1 (J14. Regular))  :(:1 _ 1 _ 0:66)  :(1)  0 y entonces Se 1 ( 2 (e)) = maxf0:25. 0:66g  0:66 S 4 Se 4 ( 1 (J13. e. e. Alto. Regular))  1 ! (0:5 _ 0:66)  maxf1 1. 0:66. Muy Bueno))  :(:1 _ 0 _ 0:75)  :(0:75)  0:25 Se 1 ( 3 (J2.  4. obtenemos el resultado esperado: c1(EQUIPO) = Se 1 ( (e)) = 1 Se 1 ( 2 (e)) = 1 0:25 = 0:75 Para la cuarta tupla. e. Regular)). e. Alto. Muy Bueno)). e. Bajo. 1g  1 e ( 1 (J12.75 Cadiz 0. Bajo. Muy Bueno)). Regular)) g Desarrollando esos grados obtenemos que Se 1 ( 3 (J1. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 125 H EQUIPO CEQUIPO B Almera 0. Normal. 0:75g = 0:66 tu . Muy Bueno))  1 ! (0 _ 0:75)  maxf1 1. c): Se 4 ( (e)) = minfSe 4 ( 1 (J11.66 Sevilla 1 Tabla 4. Muy Bueno))  1 ! (1 _ 0:75)  maxf1 1. Se 4 ( 1 (J13. e. Se 1 ( 2 (e)) = maxfSe 1 ( 3 (J1. 0:75g  0:75 Se 4 ( 1 (J14.

12 Dame los equipos que tienen jugadores con iguales caractersticas (en altura y calidad) que el equipo de Cadiz (en grado mnimo 0. CALCULO  RELACIONAL DIFUSO H EQUIPO ALTURA CALIDAD B Almera Alto Muy Bueno Almera Bajo Regular Cadiz Muy Alto Muy Bueno Cadiz Bajo Bueno Cordoba Bajo Muy Bueno Cordoba Muy Alto Malo Granada Bajo Malo Granada Muy Alto Malo Granada Alto Regular Huelva Alto Muy Bueno Jaen Bajo Muy Bueno Jaen Normal Regular Jaen Alto Muy Bueno Malaga Bajo Muy Bueno Malaga Alto Regular Malaga Muy Alto Muy Bueno Sevilla Bajo Bueno Sevilla Muy Alto Bueno Sevilla Normal Bueno Tabla 4.12 y 4.13. Ejemplo 4. Para resolver esta consulta vamos a considerar dos relaciones R0 y R00 de.126 CAPITULO 4.12: Relacion R0 para el Ejemplo 4.5). H ALTURA CALIDAD B Muy Alto Muy Bueno Bajo Bueno Tabla 4.12.13: Relacion R00 para los Ejemplos 4.

a. c)g R00(a. En terminos de algebra relacional. c j 9j R(j.12 y 4. a. c)g donde R(j. Las relaciones R0 y R00 se muestran en las Tablas 4. la relacion R0 es una proyeccion de la relacion R sobre los atributos EQUIPO. c j 9j R(j.13 respectivamente. a.3. ALTURA y CALIDAD. c) = fa. c) = fe. La relacion R00 es el resultado de una seleccion con la condicion EQUIPO=Cadiz y posteriormente una proyeccion sobre los atributos ALTURA y CALIDAD. a. a. como en la ecuacion 4. que es equivalente a la siguiente expresion en Calculo Relacional de Dominios. e. En algebra relacional la consulta de este Ejemplo se resuelve mediante la division rela- cional R0  R00. c) es la relacion difusa generalizada de la tabla 4. Cadiz.nidas mediante las siguientes expresiones: R0 (e.15: . e.

segun la De. R0  R00 = fe j 8a.14: Relacion R4:12 . en la que hemos expresado los valores (a.75 Tabla 4. EJEMPLOS DE CONSULTAS EN CALCULO RELACIONAL DIFUSO 127 H EQUIPO CEQUIPO B Almera 0.75 Sevilla 0. El grado de compatibilidad para la primera tupla (S1 ) viene dado por la siguiente ecuacion.5 Malaga 0.4. a. Si establecemos = 1 solo se recuperaran los equipos que tienen jugadores exactamente con iguales caractersticas (en altura y calidad) que el equipo de Cadiz. c)  0:5)g Observe como en el atomo de R0 incluye un umbral de cumplimiento ( = 0:5). c) ! R0 (e. c (R00 (a. Esto hace que en el resultado haya tuplas que cumplen parcialmente la condicion de la consulta.14.5 Cadiz 1 Jaen 0. c) de DOM( ) que. R4:12 . se representa en la relacion de la Tabla 4.  4. El resultado de la consulta de este ejemplo.

0:75gg = 0:5 c4EQUIPO = minfmaxf1 1.nicion 4. tu . c)  0:5) g La division relacional difusa se expone en el captulo anterior y en [72]. Bueno) ! R0 (e. max f1 1. maxf1 1. Basandonos en esto. c) ! 9j R(j. con cualquier numero de operadores. Para obtener identicos resultados si > 0. 1gg = 1 c3EQUIPO = minfmaxf1 1. 1gg = 0:75 Cualquier consulta posible se puede efectuar mediante una unica expresion en calculo relacional. Bueno)) g = minfmaxf1 1. 0:66g = 0:5 Brevemente. max f1 1. obteniendo el mismo resultado que se obtiene mediante calculo relacional con = 0. Esto es.1. 0:75gg = 0:75 c5EQUIPO = minfmaxf1 1. Cadiz. este ejemplo se podra tambien haber resuelto con una unica expre- sion. Muy Alto. se puede expresar en calculo en una unica expresion. c (R(j 0 . a. 0:5g. 0:5g. Muy Bueno)). 1g. son las 2 tuplas de R00 : c1EQUIPO = Se 1 ( ) = minfSe 1 (R00 (Muy Alto. Bajo. obteniendo los mismos resultados (Tabla 4. e. 0:66gg = minf0:5. a. a. en algebra tendremos que aplicar tras la division una seleccion que recupere solo las tuplas cuyo grado sea mayor o igual que . maxf1 1. sin usar las relaciones R0 ni R00 . 0:75g. cualquier expresion algebraica. 1g. los grados de compatibilidad para las otras tuplas vienen dados por: c2EQUIPO = minfmaxf1 1. maxf1 1. como se demostro en el Teorema 4. Muy Bueno) ! R0 (e.1. Se 1 (R00 (Bajo.14): fe j 8j 0.

se muestra en la tabla 4. partiendo de las relaciones R000 (Tabla 4. c)  0:75g El resultado se muestra en la Tabla 4. se cumple que ci(ALTURA) = ci(CALIDAD) y. La relacion resultante.34 Muy Alto 1 Malo 1 Bajo 1 Malo 1 Alto 1 Regular 1 Normal 0. 1 0:66g = 0:34 Observe que para todas las tuplas el grado en la parte izquierda de la conjuncion sera siempre 1. 1 0:5g = 0:5 Sa 2 ( ) = Sc 2 ( )  1 ^ :0:66  minf1. c)g Entonces. Para cualquier tupla i.13) la diferencia relacional.2) el resultado sera el .34 Regular 0.128 CAPITULO 4. c j R000(a. c) R00 = fa.13. El calculo de los grados de compatibilidad es facil. c) ^ :R00(a.75): R000 (a.15) y R00 (Tabla 4. H ALTURA CALTURA CALIDAD CCALIDAD B Alto 0. adquiere en calculo relacional mayor expresividad. Ejemplo 4.5 Bueno 0. Por tanto. R000. CALCULO  RELACIONAL DIFUSO H ALTURA CALIDAD B Alto Muy Bueno Bajo Regular Muy Alto Muy Bueno Bajo Bueno Bajo Muy Bueno Muy Alto Malo Bajo Malo Alto Regular Normal Regular Muy Alto Bueno Normal Bueno Tabla 4.9).16: Relacion R4:13 = R000 R00 del Ejemplo 4. R000 R00 (ecuacion 4.5 Tabla 4.15 y es obtenida mediante la expresion: R000(a. por ejemplo. resol- viendo la consulta siguiente: Dame las tuplas de R000 que no estan en R00 (en grado mnimo 0. al tomar el mnimo de la conjuncion (lema 4.5 Muy Bueno 0.16. para las dos primeras tuplas (S1 y S2 ) tenemos que: Sa 1 ( ) = Sc 1 ( )  1 ^ :0:5  minf1.13 Tomemos ahora una proyeccion (en terminos de algebra relacional) de la relacion R0 de la Tabla 4.12 sobre los atributos ALTURA y CALIDAD. a.5 Normal 0.5 Bajo 0. c) = fa.5 Regular 0.13.15: Relacion R000 para el Ejemplo 4. c j 9e R0(e.

si el umbral es . Si una tupla pertenece a R00 en grado mayor que 0. As. Esa parte esta negada (:) por lo que. en el resultado apareceran siempre grados de cumplimiento mayores o iguales que 1 . cuanto mas pertenezca una tupla a R00 menos pertenecera a la diferencia y menor sera el grado de compatibilidad de sus atributos en el resultado. CUANTIFICADORES DIFUSOS EN EL CALCULO RELACIONAL DIFUSO 129 grado en la parte derecha de la conjuncion. tu 4.75 entonces no pertenecera al resultado. ya que 0.  4.5 Cuanti.5.75 es el umbral de cumplimiento que hemos adoptado.

cadores Difusos en el Calculo Relacional Difuso El Calculo Difuso presentado no contempla la posibilidad de la inclusion de cuanti.

162.cadores difusos (absolutos o relativos) del tipo de \muchos". 158. [20. 163. 150. La utilidad y forma de uso de estos cuanti. 149.. \casi todos". 164. 169]..

9.2.cadores se vieron en el apartado 2.1. En este apartado vamos a dar unos posibles signi.1.2 en general y en los apartados 5.3 se veran aplicados a FSQL.2.1 y 5.

cados de estos cuanti.

indicando como aplicar la funcion  aqu de.cadores.

nida cuando nos encontramos tales cuanti.

Para calcular en que medida se cumple un cuanti.cadores.

O sea. el numero de jugadores no \Buenos" (con grado mnimo 0.75)". su grado de cumplimiento del cuanti.75) y el grado con el que todos ellos son \Buenos". habra que tener en cuenta: El numero de jugadores \Buenos" (con grado mnimo 0. Por ejemplo. si buscamos los \equipos en los que casi todos sus jugadores son Buenos (con grado mnimo 0. siete \Buenos" con grado 1 y tres \Buenos" con grado 0.7. siete \Buenos" con grado 1 y tres \Buenos" con grado 0. y otro equipo E2 tiene de diez jugadores.75).cador se puede tener en cuenta lo siguiente: La proporcion de tuplas que cumplen la condicion y el grado con el que cumplen la condicion todas las tuplas (incluidas las que no superan el umbral establecido). para evaluar el grado de los equipos que se seleccionen. si un equipo E1 tiene de diez jugadores.

quizas. ser el mismo. Una posible solucion. teniendo en cuenta toda esa informacion. En caso de cuanti. T : Total de elementos que cumplen la condicion. es ponderar de alguna forma cada uno de esos 3 factores: 1.cador casi todos no debera.

En caso de cuanti. 2.cadores relativos ese numero habra que dividirlo por el total de elementos considerados. M : Sumatoria de los grados de cumplimiento de los elementos que cumplen la condicion. Como el grado de cumplimiento siempre es menor o igual que 1. tenemos que T  M .

En caso de cuanti.cadores relativos ese numero habra que dividirlo por el total de elementos considerados. 3. N : Sumatoria de los grados de cumplimiento de los elementos que no cumplen la con- dicion.

sin in uir demasiado en el resultado . No obstante la in uencia del tercer factor N es discutible y puede ser eliminado. Incluso. puede usarse solo uno de los dos primeros factores. en determinados casos.cadores relativos ese numero habra que dividirlo por el total de elementos considerados.

La diferencia entre usar distintas combinaciones de estos cuanti.nal.

cadores producira variaciones de pocos decimales y. esas diferencias pueden ser casi inapreciables en el resultado .

nal moviendo adecuadamente el umbral de cumplimiento para el cuanti.

.cador difuso.

mayor sera la expresion anterior y de ella depende el numero de tuplas a recuperar. Entonces. el numero de tuplas recuperadas tambien depende del umbral que se establezca al cuanti.29) De esta forma.130 CAPITULO 4. a mayor valor de . si  = 1 indica que solo se usa el primer factor T y si  = 0 indica que solo se usa el segundo factor M . Como T  M . Naturalmente. el factor considerado sera:  T + (1 )M (4. CALCULO  RELACIONAL DIFUSO Aqu proponemos un sistema para utilizar los dos primeros factores: Sea  2 [0. 1] un peso que indica la importancia del primer factor T con respecto al segundo M .

El valor de esa expresion es el que sera utilizado como argumento de la funcion Q que represente al cuanti.cador difuso.

La de.cador.

nicion de los cuanti.

As.cadores puede depender del valor de . cada cuanti.

cador podra de.

de forma que dependiendo de este su de.nirse en funcion del valor .

teniendo en cuenta todo lo anterior.nicion adopte una u otra forma. posiblemente. la forma de expresar un cuanti. el matiz que esto represente tenga escasa relevancia global. aunque. Entonces.

xn+1) (4.30) indicando que el cuanti.cador difuso en Calculo Relacional Difuso de Dominios es: (x1 . : : : . : : : . xn ) = Q xn+1 1 (x1 .

29 con el valor de  indicado como superndice de Q.cador Q se cumple en 1 para los valores de xn+1 con un grado mnimo de . evaluando el total en la forma que indica la ecuacion 4. De.

3 Sea una WFF cuyo el operador principal es un cuanti.nicion 4.

30. la formula es del tipo de la ecuacion 4. Es decir. El cuanti.cador difuso Q (absoluto o relativo).

cador Q esta de.

nido como una funcion del tipo indicado en el apartado 2. Entonces: Sx ( (x1 .9. xn )) = Q( T + (1 )M ) (4.2. : : : . Para calcular T hay que contar cuantas tuplas cumplen el predicado 1 (y dividirlo por el numero total de tuplas evaluadas si el cuanti. tal y como se han explicado anteriormente.31) donde T y M son el primer y segundo factor respectivamente.

Para calcular M hay que sumar los grados de las tuplas cumplen el predicado 1 (y dividirlo por el numero total de tuplas evaluadas si el cuanti.cador es relativo).

cador es relativo). Donde \casi todos" es un cuanti.14 Mostrar los equipos en los que casi todos (en grado mnimo 0 y con  = 0:8) sus jugadores son Buenos (en grado mnimo 0. tu Ejemplo 4.75).

cador difuso relativo de.

a.5. c) ! =(c. a. en la que la ecuacion de la recta entre x = 0:4 y x = 0:9 es: y = (x 0:4)=0:5.nido como la funcion Q de la Figura 4. c(R(j. e. La expresion que resuelve esa consulta sera: fe j Casi todos00:8 j. Bueno)  0:75) g .

4.5: Cuanti.9 1 Figura 4. ESTUDIO COMPARATIVO CON OTRAS PROPUESTAS 131 Q 1 0 0.6.4 0.

3. Considerando la relacion R de la Tabla 4.15 Granada 0/3 0/3 0. obtenemos la relacion R4:14 con los datos de la Tabla 4.75/2 0.00 Jaen 3/4 2.47 Sevilla 3/3 3/3 1.15 Cadiz 2/2 1.25/4 0.5/3 0.00 Cordoba 1/2 0. en donde hemos expresado tambien los valores de T y M para cada equipo.63 Malaga 2/3 1.75/2 1.17: Relacion R4:14 . H EQUIPO T M CEQUIPO B Almera 1/2 0. Tengase en cuenta que: CEQUIPO = Q( T + (1 )M ) Hemos puesto el umbral del cuanti.00 Tabla 4.75/2 0.cador difuso relativo \casi todos".17.

cador difuso a cero.3). Como se ha visto. En las condiciones de su calculo. Buckles.6 Estudio Comparativo con otras Propuestas de Calculo Di- fuso En [32]. Jaen y Sevilla. su modelo permite representar menor cantidad de tipos de informacion. Si ese umbral fuera establecido a 0. los umbrales de cumplimiento se pueden establecer para cada atributo y no para cada atomo. Petry y Sachar proponen un calculo de dominios para el modelo de bases de datos relacionales difusas de Buckles-Petry [28. 30] (apartado 2.5 (con igual valor de ) solo se hubieran recuperado los equipos de Cadiz. para recuperar todos los equipos y su grado de compatibilidad. por lo que no se pueden especi.7). tu 4. el cual es mas restrictivo que el modelo GEFRED (apartado 2.

Tampoco consideran en su de.car consultas como la siguiente: \Lista los jugadores que son altos (en grado mnimo 0.9) y bajos (en grado mnimo 0.5)".

nicion la .

132 CAPITULO 4. CALCULO  RELACIONAL DIFUSO posibilidad de usar cuanti.

cadores difusos. ci~nendose exclusivamente a los dos cuanti.

en la de. como en su modelo no incluyen los atributos de compatibilidad de GEFRED.cadores crisp: Existencial (9) y universal (8). Ademas.

En [97]. En las WFF del calculo difuso que proponen no incluyen ni siquiera el uso de los cuanti. no incluyen un metodo formal para calcular los grados de cumplimiento para la condicion establecida. Li y Liu hacen un estudio muy general del calculo relacional aplicado a bases de datos difusas. Esto ultimo nos parece una caracterstica fundamental de todo lenguaje de consulta difuso sobre bases de datos difusas o clasicas.nicion de su Calculo Difuso.

por supuesto los cuanti.cadores existencial (9). universal (8) ni.

cadores difusos. de las que no se aporta ninguna de. En los atomos de pertenencia utilizan funciones de pertenencia. Ademas. no proveen de un metodo claro para calcular el grado de cumplimiento de la condicion para las tuplas seleccionadas y en la WFF establecen un umbral de cumplimiento general para toda la formula y no para cada atomo difuso.

nicion. que permite expresar condiciones difusas y cuanti. 4. sobre todo para valores no extrados de la relacion (del tipo que damos nosotros en la ecuacion 4.7 Conclusiones y Lneas Futuras sobre el Calculo Relacional Difuso En este captulo hemos presentado un Calculo Relacional Difuso para aplicarlo a bases de datos difusas.2).

K ) satisface el predicado . y el conocimiento de esos grados es vital en bases de datos difusas. si sus valores hacen que el predicado sea Falso. Sin embargo. esa tupla no pertenecera al resultado y no sera considerada. esa tupla pertenecera al resultado y aparecera en el. como en el modelo clasico. Por el contrario. Es facil traducir una expresion en Calculo Relacional Difuso de Dominios a otra equivalente en un Calculo Relacional Difuso de Tuplas. para ver si una tupla pertenece o no a la relacion resultante: Si los valores de la tupla hacen que el predicado sea Verdad. Esta funcion nos va a permitir averiguar el grado con el que cada valor de cada tupla cumple la condicion impuesta en la consulta.  nos devuelve los grados de compatibilidad de la relacion difusa generalizada resultante. de una tupla concreta (S. ya que el Calculo Relacional esta basado en la logica de predicados de primer orden. El Calculo Relacional Difuso es una extension del Calculo Relacional Clasico. es decir. Entonces. El trabajo de la funcion  es fundamental.1]. El trabajo de la funcion  es calcular esos grados. por lo que los predicados solo pueden ser Verdaderos o Falsos. cada uno de esos valores ha satisfecho esas condiciones con un cierto grado en el intervalo [0.cadores difusos. si una tupla cumple el predicado es porque cada uno de los valores de esa tupla han satisfecho las condiciones impuestas en ese predicado. Ademas. es un evaluador que devuelve el grado con el que un valor concreto x. como hemos visto. Esta dualidad la utilizamos. por lo que tambien es posible usarlo en bases de datos clasicas o en relaciones sin atributos difusos. hemos presentado la funcion  que. Con esto conseguimos tener los dos niveles de lenguajes de consulta que dise~no Codd [42] para bases de datos relacionales pero extendidos a bases de datos relacionales difusas: El A lgebra Relacional Difuso (de.

103.nido en [102. Un trabajo interesante sera elaborar un metodo e. 72] y en el captulo anterior) y el Calculo Relacional Difuso aqu expuesto.

que podra basarse en el \algoritmo de reduccion de Codd" [42]. .ciente para calcular la componente de valor del resultado de una expresion en Calculo Relacional Difuso.

.Captulo 5 Arquitectura de la BDRD: El Servidor FSQL (Fuzzy SQL) La arquitectura de la BDRD (Base de Datos Relacional Difusa) muestra los elementos basicos con los que esta construida y como se relacionan unos con otros. gramaticas para la de.). Esos elementos son de distinta naturaleza: Estructuras de datos (tablas. vistas..

nicion de DML (Data Manipulation Language) y DDL (Data De.

. programas (en distintos lenguajes). poder almacenar y tratar informacion imprecisa. es absolutamente imprescindible de. como ya se ha indicado. El objetivo de esta arquitectura es.nition Language). difusa. datos. Es decir.. y para ello necesitamos formalizar un metodo de hacerlo.

Este canal de comunicacion sera una va para que los usuarios.nir como se van a almacenar estos nuevos tipos de informacion y como es posible comunicarse con la BDRD para conseguir nuestro proposito. sea directamente o a traves de aplicaciones espec.

Para la construccion de ese canal hemos preferido modi.cas puedan trabajar con la BDRD.

car un canal ya existente y ampliamente empleado: El Lenguaje de Consulta Estructurado SQL (Structured Query Language) [26. 37. 38. 52. 86]. hemos modi. As pues.

78]. A conti- nuacion daremos una de. de forma que permita expresar valores difusos. 103]. hemos construido un programa Cliente FSQL. 99. para uno de los SGBD (Sistemas Gestores de Bases de Datos) mas potentes y difundidos en la actualidad: Oracle [92. que permite consultar esa BDRD de forma facil. 77. Fuzzy SQL o FSQL [75. Para que el lenguaje FSQL cobrara vida hemos creado un Servidor FSQL multiusuario. llamado FQ. Ademas del Servidor FSQL. 116.cado el lenguaje SQL para adaptarlo a las necesidades de una BDRD. En este captulo explicaremos primero como hemos conseguido almacenar valores difu- sos partiendo de un SGDB clasico (Oracle). implantado de acuerdo con el modelo Cliente/Servidor. umbrales de cumplimiento. naciendo as el que hemos denominado SQL Difuso. Esta es la base de nuestro Sistema de BDRD. explicando como se ha implementado el modelo GEFRED de BDRD [102. 117]. atributos difusos. sera explicado en el Captulo 6. El programa Cliente FSQL. comoda y exible usando el Servidor FSQL... para Windows 95/98/NT (ver apartado 6.3 y Apendice G). grados de compatibilidad. condiciones difusas.

Posteriormente de.nicion de la sintaxis y la semantica del lenguaje FSQL (tanto de sentencias DML como DDL).

2). Terminaremos el captulo con una lista de las mejoras mas importantes que pueden 133 .niremos la arquitectura de nuestro modelo Cliente/Servidor de BDRD y como se ha programado el Servidor de Consultas FSQL (ver- sion 1.

) hemos extendido el lenguaje SQL para que permita tratar los nuevos datos. 5. Este modulo.2. Interface Difuso para Sistemas Relacionales). llamado FIRST [106] (Fuzzy Interface for Relational SysTems. consultas exibles. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL incorporarse tanto al lenguaje FSQL como a proximas versiones del Servidor FSQL.1 Implementacion de la BDRD: FIRST En [103] se expuso un modulo para permitir extender la capacidad de un SGBDR clasico para que pueda representar y manipular informacion \imprecisa". Esta extension la hemos llamado FSQL (Fuzzy SQL) y sera explicada en la seccion 5. Ademas. de etiquetas. utiliza GEFRED como modelo teorico y los recursos del modelo relacional clasico para poder representar este tipo de informacion... Nosotros hemos modi. para poder efectuar las operaciones tpicas sobre la BDRD (creacion de tablas.134 CAPITULO 5.

cado ligeramente FIRST para mejorarlo y adaptarlo a nuevas ne- cesidades. Como la idea de partida es la de construirlo sobre un gestor de bases de datos convencional.1. Relational DabaBase Ma- nagement System. El resultado es el siguiente: 5. RDBMS): Todas las operaciones que hayamos concebido para la extension difusa que representa nuestra implementacion. explicamos cada uno de esos modulos:  SGBDR (Sistema Gestor de Bases de Datos Relacionales.1 Esquema General de FIRST La Figura 5.1 muestra el esquema general de FIRST. En breve. todos los desarrollos a realizar toman a dicho gestor como el elemento principal al que van dirigidas todas las peticiones. se traduciran a peticiones al SGBDR an.

. Base de Metaconocimiento Difuso): El \dicciona- rio" o \catalogo del sistema" de un SGBDR representa aquella parte del sistema que almacena informacion sobre los datos recogidos en la base de datos.  BD (Base de Datos): Almacena.. as como otro ti- po de informaciones: Usuarios. igual que cualquier otra base de datos. La unica diferencia es que nuestra base de datos permitira el almacenamiento de informacion difusa en sus tablas. permisos. dependiendo si la consulta involucra o no relaciones y/o condiciones difusas. La forma en que se representan los datos en dichas tablas dependera de la naturaleza de los mismos y se vera en los proximos apartados. las sentencias FSQL seran procesadas por el Servidor FSQL. accesos. datos de control. Como veremos. que extiende esta parte del sistema a .  FMB (Fuzzy Metaknowledge Base. Dentro de este catalogo hemos incluido la FMB. Las peticiones al SGBDR se realizaran emple- ando el lenguaje SQL o FSQL. en formato relacional toda la informacion que sea de interes.trion (en general en SQL).

 Servidor FSQL: Su objetivo es captar las sentencias en lenguaje FSQL y traducirlas a un lenguaje que entienda el SGBDR.n de que pueda recoger aquella informacion necesaria relacionada con la naturaleza \imprecisa" de la nueva coleccion de datos a procesar. el lenguaje SQL. Para efectuar esta traduc- cion utilizara la informacion almacenada en la FMB. Este Servidor esta ntegramente . Su organizacion y la informacion que almacena se veran mas adelante.

programado en el lenguaje PL/SQL de Oracle y se encuentra implantado como una co- leccion de modulos almacenados en el Servidor Oracle.  Cliente FSQL: Se trata de un programa que hace de interfaz entre el hombre (u otro programa) y el Servidor FSQL. En el Captulo 6 se explican las funciones de este programa y como puede programarse. Nuestro Servidor FSQL podra ser instalado en cualquier plataforma donde exista una implementacion de Oracle. Actualmente estamos desarrollando un 1 Los unicos requisitos de un lenguaje para poder programarse un Cliente FSQL en el son que permita efectuar consultas sobre la base de datos clasica y que permita ejecutar procedimientos almacenados en el SGBD .1: Esquema General de FIRST. IMPLEMENTACION 135 ' $' BD FMB DIC $ & ' %& $ % Fuzzy Clasico Base de Datos Catalogo del Sistema HHYHHH  * HjHH  SGBDR & # % Sistema Gestor de Bases de Datos Relacionales 6? " ' $' $'!   * Servidor FSQL 6? HHYHHH HjH H $ & %& %& % Interfaz o FSQLF Cliente Cliente Visual FORM Difuso FSQL Figura 5. pues el trabajo principal de una operacion FSQL sera efectuado por el Servidor FSQL. que ayuden a editar sentencias difusas sin necesidad de conocer la sintaxis de FSQL ni la de SQL. Nosotros hemos desarrollado un Cliente FSQL para Windows 95/98/NT llamado FQ (ver apartado 6. es posible desarrollar Clientes FSQL visuales.3 y Apendice G). El programa Cliente FSQL puede ser programado para cualquier Sistema Operativo y en cualquier lenguaje de programacion1 . Por supuesto.  DE LA BDRD: FIRST 5. Este programa puede ser muy simple.1.

4). 5. sin embargo. A esto habra que a~nadir la perdida de e. As pues. que en s son imprecisos.). con una representacion extremadamente precisa dada por funciones no lineales.2 Representacion del Conocimiento Impreciso Los diferentes elementos que forman parte del tratamiento impreciso pueden recibir diferentes representaciones. una distribucion de posibilidad normalizada puede venir representada por diferentes tipos de funciones (parabolas. esto no es as dada la naturaleza \imprecisa" de la informacion con la que tratamos. hiperbolas. por ejemplo. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 1 0 α β γ δ Figura 5. para que pueda ser ejecutado a traves de una red TCP/IP (como Internet o una Intranet. Lo mismo se puede decir para la forma en que modelamos las operaciones relacionales difusas. No parece muy acertado modelar unos datos.2.. Pudiera parecer que el criterio de representacion expuesto supone una fuerte restriccion.1.. por ejemplo). Nosotros em- plearemos para la misma una representacion trapezoidal del tipo del representado en la Figura 5. as como para el resto de los items u objetos \difusos" que nuestro sistema va a utilizar.136 CAPITULO 5. Cliente FSQL visual programado en lenguaje Java (apartado 6.2: Formato de una distribucion de posibilidad trapezoidal.

que constituyen un paso intermedio a cubrir entre la formulacion de un modelo de Bases de Datos Relacionales Difusas y la implemen- tacion efectiva de un sistema basado en el. como FIRST y su Servidor FSQL. umbrales de cumplimiento y cuanti. Podramos decir. en general. En este apartado vamos a mostrar los criterios de representacion empleados en nuestra implementacion. En [104] se encuentran algunos de los aspectos relacionados con la representacion e implementacion de un SBDRD. mas costosos que en funciones lineales. comparadores difusos. A continuacion resumimos los criterios adoptados para la representacion del conocimiento impreciso [103]: Datos difusos.ciencia. por tanto. sino que representan la base sobre la que construir la implemen- tacion de los mismos de acuerdo con el esquema dise~nado para la realizacion de un SGBDRD (SGBDR Difusas). pues los calculos en funciones no lineales son. Estos criterios no son exclusivos de una implementacion concreta.

- cadores de la consulta.1 Representacion de los Datos Difusos y/o con Tratamiento Difuso Para los diferentes tipos de datos que constituan la de.1.2. 5.

recogidos en la Tabla 2.nicion de dominio difuso generalizado.4. acordamos los siguientes criterios de representacion: .

clasicos): Se empleara la representacion que proporcione el SGBDR an.3: Ejemplo de una Etiqueta Lingustica para el concepto \Alto". 1. Figura 5.1. IMPLEMENTACION 137 Alto 1 0 170 175 180 185 190 195 200 205 210 cm. Datos Precisos (crisp.  DE LA BDRD: FIRST 5.

.. se adoptaran los formatos para cadenas alfanumericas. Datos Imprecisos (fuzzy. Es decir.trion. difusos): Los datos de naturaleza imprecisa soportados por GEFRED pueden ser clasi. soportados por el sistema sobre el que se construya FIRST. horas. e incluso objetos. 2. valores numericos. fechas.

 DATOS IMPRECISOS SOBRE REFERENCIAL ORDENADO Este grupo de datos contiene distribuciones de posibilidad sobre dominios continuos o discretos sobre los que existe una relacion de orden. \Bajo".. por ejemplo. un atributo Altura puede ser considerado difuso para almacenar valores como \Alto" (ver Figura 5.. As. Por \referencial" se entiende el dominio subyacente del atributo en cuestion.4. Cada dato de este tipo tiene asociada una funcion de pertenencia. A este grupo pertenecen el tipo 6 de la Tabla 2.cados en dos grupos con distintas representaciones para cada uno de ellos: Sobre referencial ordenado y sobre referencial discreto no ordenado. pero el dominio subyacente sobre el que se construyen las distribuciones de posibilidad es ordenado y corresponde a los centmetros de altura posibles. Por cuestiones de simplicidad de representacion y de e.3).

ciencia en el calculo. adoptaremos las siguientes representaciones para este tipo de datos: Distribucion de Posibilidad Trapezoidal : Esta representacion determina la fun- cion de pertenencia asociada al dato mediante el uso de cuatro parametros [ . .

. llamado \margen". a partir del cual podemos construir su funcion de pertenencia como una distribucion de posibilidad triangular. podemos dar una representacion del concepto impreciso \aproximadamente n" mediante un valor. a veces subjetivo. puede llevar asociada la distribucion de posibilidad en representacion trape- zoidal que muestra la Figura 5. un valor del dominio subyacente. aquellas que poseen un nucleo no vaco. i. perteneciente al dominio subyacente.e. al menos. Valores Aproximados : Dado un valor. la etiqueta lingustica \Alto". que lleva asociado una distribucion de posibilidad. Por ejemplo. n. tienen posibilidad maxima (1) para. ]. Utilizamos funciones de pertenencia normalizadas. . tal y como se muestra en la Figura 5... Etiqueta Lingustica : Los datos expresados mediante una etiqueta lingustica ha- cen referencia a un concepto impreciso.2.3.

como la de la Figura 5. Intervalos de posibilidad : Son un caso de distribuciones de posibilidad trapezoi- dales en el que las pendientes de ambos lados del trapecio son in. Nuevamente empleamos funciones de pertenencia normalizadas.5: Distribucion de posibilidad para el intervalo [n.4. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 1 0 n-margen =α β= n = γ δ = n+margen Figura 5. 1 0 α = β= n γ = δ= m Figura 5.m].138 CAPITULO 5.4: Distribucion de posibilidad para \Aproximadamente n" (#n).

como se muestra en la Figura 5.5. Se opera con ellos de forma similar a como se hace con la distribuciones de posibilidad trapezoidales. Estos valores tienen el mismo signi.nitas y por tanto todos los valores entre los dos extremos son los unicos que son total- mente posibles (posibilidad 1).

 DATOS CON ANALOGIA SOBRE REFERENCIAL NO ORDENADO Este grupo de datos esta construido sobre dominios subyacentes discretos no or- denados en los que se encuentran de.1.3).cado que en el modelo de Grant [85] (ver apartado 2.

as como para las \relaciones de semejanza" de. Para este tipo de datos tendremos que pro- porcionar almacenamiento para la representacion de los mismos.nidas \relaciones de semejanza" o similitud entre los valores que lo constituyen.

.nidas sobre los valores del dominio. d)g. se considera que el valor del escalar d es el unico posible y su posibilidad es 1 (para que este normalizada2). O sea. aunque esto no es recomendable. Los diferentes tipos que podemos representar dentro de este grupo son: Escalares Simples : Se considera como una distribucion de posibilidad con una unica pareja de datos en la que el valor de posibilidad es 1: f(1. 2 El sistema de representacion empleado permite que no se normalicen ni los escalares simples ni las distri- buciones de posibilidad sobre estos.

pero aplicable): Un dato de este tipo re eja el des- conocimiento con respecto al valor que toma un atributo. que el atributo puede tomar algun valor del dominio de discurso. de [70] y [143]:  UNKNOWN (Desconocido. : : : . existen otros 3 valores especiales que pueden almacenarse en cualquiera de los tipos de datos \imprecisos" que acabamos de describir. dn )g.1. Sabemos. 8u 2 U g donde U es el dominio subyacente. d1 ). Por otra parte. Esto implica que es posible que tome cualquiera de ellos. Fukami et al. sin embargo. (pn . Uno de los pi debe ser 1 para que la distribucion este normalizada. Distribucion de Posibilidad sobre Escalares : A un dato impreciso de este tipo le asociamos una representacion en la que se describen los valores del dominio de discurso que la componen con los respectivos valores de posibilidad para cada uno de ellos.  DE LA BDRD: FIRST 5.6 muestra gra. La Figura 5. Estos 3 valores son tomados en el sentido de Umano. f(p1 . f1=u.6: Distribuciones de posibilidad para los tipos UNKNOWN y UNDEFINED. IMPLEMENTACION 139 Unknown Undefined 1 1 0 0 Figura 5. por tanto representaremos el tipo UNKNOWN mediante la distribucion de posibilidad.

la cual toma el valor 1 para todo el dominio subyacente.  UNDEFINED (No aplicable): Cuando un atributo toma el valor UNDEFINED re eja el hecho de que ninguno de los valores de dominio sobre el que esta de.camente esta distribucion de posibilidad.

 NULL (Ignorancia absoluta): Sobre un atributo tenemos un valor NULL cuan- do no aportamos informacion. La distribucion de posibilidad se muestra en la Figura 5.2 Comparadores Difusos Generalizados En la literatura pueden encontrarse diversos metodos de comparacion de numeros difusos. 1/UNDEFINEDg podemos modelar este tipo de dato.1.6. bien porque no la conocemos (UNKNOWN) o porque no es aplicable (UNDEFINED). Esto se puede entender como que ninguno de los valores de dominio es posible.nido es aplicable. los cuales pueden clasi. Mediante el conjunto f1/UNKNOWN. 8u 2 U g donde U es el dominio subyacente. por lo que lo representaremos mediante la distribucion de posibilidad. f0=u. la cual toma el valor 0 para todo el dominio subyacente. 5.2.

155. 13. 58]. 157]. Sobre el segundo tipo se encuentran diferentes aproximaciones en [9.carse en dos categoras: los que emplean una funcion del conjunto de numeros difusos a un conjunto ordenado y los que utilizan relaciones difusas para el proceso de comparacion. Nosotros basaremos . 53. Al primer tipo pertenecen las propuestas recogidas en [1.

140 CAPITULO 5. partiremos del esquema formulado en [127]. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL la implementacion que estamos describiendo en comparadores construidos en torno al segundo tipo. Concretamente. si bien su representacion ha sido simpli.

la de. Como vimos en el apartado dedicado a GEFRED.cada y adaptada a las peculiaridades tanto de GEFRED como de FIRST.

De ellos.12 y se de. Como veremos. en la implementacion del modelo de BDRD que aqu presentamos se han implementado 15 comparadores diferentes. FIRST no pone lmite con respecto al numero y tipo de los comparadores que pueden emplearse. 14 son para datos sobre referencial ordenado y se muestran en la Tabla 5.nicion de comparador difuso generalizado permita modelar una amplia variedad de modalidades de comparacion.

nen en el apartado 5.2. Ademas.7 se de.4. en el apartado 5.1.2.1.

3 Umbral de Cumplimiento de una Condicion Difusa: Cuali.2.ne 1 comparador para los datos sobre referencial no ordenado.1. 5.

existe un grado de cumplimiento para cada condicion involucrada en una consulta. Dada la naturaleza imprecisa de los operadores y de los datos sobre los que operamos. para el grado de cumplimiento podemos ejercer algun control sobre la precision con que se satisfacen cada una de las condiciones de la consulta. eliminaremos aquellas tuplas que no igualen o superen el umbral para esa condicion. En nuestro modelo es posible asociar un cuali.cadores Cuando planteamos una consulta en una base de datos con imprecision se establecen una serie de condiciones a cumplir por las tuplas que la satisfagan. Este grado de cumplimiento se halla compren- dido entre 0 y 1. Mediante el empleo de un umbral mnimo. entre 0 y 1. Si establecemos un umbral de cumplimiento 1 para una condicion envuelta en una consulta.

cador lingustico (una palabra) a un um- bral determinado. de forma que puedan efectuarse consultas poniendo como umbral dicho cuali.

haciendo que las consultas contengan mas signi.cador.

5.1.2.cado.4 Representacion de Cuanti.

cadores Difusos de la Consulta Como se vio en el apartado 2. los cuanti.2.9.

cadores difusos absolutos se representan como distribuciones de posibilidad trapezoidales en el intervalo [0. como por ejemplo los cuanti. En la FMB se almacenaran los valores de un trapecio en esos rangos. +1) y los relativos como dis- tribuciones de posibilidad trapezoidales en el intervalo [0. 1].

como veremos.9. . Por tanto. de hecho. Co- mo nuestro sistema contempla la representacion de conocimiento impreciso.1. En realidad. habra que extender la representacion de los datos para albergar este tipo de informacion. La base de datos es aquella coleccion de datos persistentes que constituyen la representacion de una fraccion de conocimiento del universo. este \tipo" de informacion imprecisa puede ser.3 Implementacion de FIRST en Oracle A continuacion vamos a describir en lneas generales. debemos determinar la forma en que este se almacena en la base de datos. cuales son los niveles sobre los que podemos actuar para llevar a cabo la implementacion de los principales modulos de FIRST empleando los recursos antes mencionados:  A nivel de la Base de Datos. 5.cadores difusos relativos de la Figura 5. de muchos \tipos" diferentes.

 DE LA BDRD: FIRST 5. 5. El gestor posee conocimiento implementado sobre las operaciones de naturaleza imprecisa que puede realizar y de como hacerlo.1.1. FIRST necesita tener informacion sobre los elementos de la base de datos que contienen informacion imprecisa as como de la naturaleza y representacion de dicha informa- cion. Esta parte representa habitualmente dicha informacion mediante el empleo de tablas o relaciones organizadas siguiendo un esquema similar al empleado por la propia base de datos. a aquella extension del Catalogo del Sistema que recoge la informacion necesaria sobre los datos de natu- raleza imprecisa existentes en la base de datos.1.  A nivel del Gestor de FIRST.1 Representacion del Conocimiento Impreciso en la Base de Datos Oracle En el sistema que se esta describiendo existen tres tipos de atributos susceptibles de tra- tamiento impreciso. El Servidor FSQL sera explicado en detalle en el apartado 5.4. La clasi. IMPLEMENTACION 141  A nivel del Catalogo del Sistema. En un SGBDR clasico existe una parte del sistema en la que se recoge toda aquella informacion que el gestor necesita saber acerca de los datos que almacena .\datos sobre los datos" (denominados a veces \metadatos"). Denominaremos Base de Metaconocimiento Difuso (FMB). A continuacion exponemos el sistema utilizado para la representacion del conocimiento impreciso y para el almacenamiento de la FMB.2 y siguientes. El Servidor FSQL es la parte del sistema que contiene las rutinas que se encargan de implementar esas operaciones. La FMB sera explicada en el apartado 5.3.3.

cacion adoptada se basa en criterios de representacion y de tratamiento de los datos \imprecisos": Se clasi.

can segun el tipo del dominio que les subyace y por si permiten el almacenamiento de informacion imprecisa o solo permiten el tratamiento impreciso de datos sin imprecision: 1. clasicos o crisp. que pueden tener etiquetas lingusticas de. Atributos Difusos Tipo 1: Son atributos con \datos precisos".

son atributos clasicos que admiten el tratamiento difuso y por tanto podremos efectuar consultas difusas ( exibles) sobre ellos. Por tanto. aunque no permitan almacenar valores difusos. cuentan con informacion en la FMB. Sin embargo. tambien recogera informacion acerca de la naturaleza de estos atributos.nidas sobre ellos. Este tipo de atributos son los que permitiran que bases de datos relacionales clasicas puedan bene. donde se almacenaran las etiquetas. Este tipo de atributos reciben una representacion igual que los datos precisos.

1. esto puede ser utilizado para. operaciones de Data Mining. Atributos Difusos Tipo 2: Son atributos que pueden recoger \datos imprecisos so- bre referencial ordenado". Estos atributos recogen el tipo de datos cuya representacion ha sido descrita en el apartado 5. tambien admiten \informacion precisa". permitiendo el tratamiento difuso de datos no difusos. UNDEFINED y NULL. 2.2. Como veremos. .1. por ejemplo.ciarse de nuestro trabajo. Logicamente. mediante el empleo de consultas exibles sobre una base de datos tradicional. Permiten tambien la representacion de infor- macion incompleta en forma de datos de tipo UNKNOWN.

m] 5 n NULL NULL m APROXIMADAMENTE(d) 6 d d{margen d+margen margen TRAPECIO [ . .142 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Tipos de Atributos de la BD para cada Tipo 2 Valores FT F1 F2 F3 F4 UNKNOWN 0 NULL NULL NULL NULL UNDEFINED 1 NULL NULL NULL NULL NULL 2 NULL NULL NULL NULL CRISP 3 d NULL NULL NULL LABEL 4 FUZZY ID NULL NULL NULL INTERVALO [n.

. . ] 7 .

Los valores NULL que aparecen en los atributos tienen el signi.   Para un atributo Difuso Tipo 2 llamado F. la representacion usa 5 atributos: FT para almacenar el codigo de tipo que le corresponde a cada valor y los atributos F1. F2. F3 y F4 para almacenar los parametros de cada dato.

cado de valor \no-aplicable" en el SGBDR an.

As. APRO- XIMADAMENTE (6) o TRAPEZOIDAL (7). Observe que a~nadimos una T al nombre del atributo.1 mostramos el sistema utilizado para representar a los atributos difu- sos Tipo 2. F3 y F4: Los atributos cuyo nombre se forma a~nadiendo los numeros 1. F2.1: Representacion interna de Atributos Difusos Tipo 2. CRISP (3). En la Tabla 5. 3 y 4 al nombre del atributo almacenan la descripcion de los parametros que de. por 5 atributos clasicos:  FT: Almacena el tipo de valor que corresponde al dato que queremos almace- nar. puede ser: UNKNOWN (0). UNDEFINED (1). vemos que un atributo difuso Tipo 2.trion. 2. de hecho. LABEL (4). INTERVALO (5). Tabla 5. llamado por ejemplo F.  F1. Segun lo visto. NULL (2). indicando su representacion. esta compuesto.

UNDEFINED. por lo que todos ellos permanecen a NULL (entendiendo este valor como el NULL del SGBD an.nen el dato y que depende del tipo de valor (FT) al que pertenezca: { UNKNOWN. NULL: Estos 3 valores no necesitan ningun parametro.

trion y no como el NULL del valor difuso. en el cual se almacenara el valor crisp en cuestion. un valor de tipo etiqueta solo necesita un parametro para almacenar el identi. necesita tan solo un parametro. { LABEL: Igualmente. que no deben confundirse). F1. { CRISP: Un valor de tipo crisp.

Ese indicador es util para poder acceder a la FMB y obtener la descripcion asociada a esta etiqueta. { INTERVALO: Necesita los dos valores extremos del intervalo [n.cador asociado a dicha etiqueta (FUZZY ID). respectivamente. se aprovechan los atributos F2. para reducir operaciones (tanto matematicas como de acceso a datos). d+margen y margen. Sin embargo. F3 y F4 para almacenar los valores d{margen.m]. d. que son almacenados en F1 y F4 respectivamente. El valor margen es un valor . { APROXIMADAMENTE: Este valor solo necesita un valor que se almacena en F1 y que es el valor central de la distribucion de posibilidad triangular.

 DE LA BDRD: FIRST 5. y su valor depende del signi.1. IMPLEMENTACION 143 almacenado en la FMB para cada atributo difuso.

o tambien almacenar valores aproximados con un margen particular para ellos. { TRAPECIO: Necesita forzosamente almacenar los 4 valores que identi. usando el margen por defecto almacenado en la FMB. Esto nos permite la posibilidad de almacenar valores aproximados sin indicar el margen. distinto al de la FMB.cado de dicho atributo.

can a un trapecio: [ . .

]. En F2 y F3 se almacenan unas operaciones que simpli.. .

 Uso de los elementos del SGBDR an. sin embargo. Para alguno de los tipos que puede recoger este atributo. En esta representacion se ha primado los aspectos siguientes:  Velocidad de ejecucion frente a economa de almacenamiento. Empleamos cinco atributos clasicos para repre- sentar cada atributo difuso de este tipo.can las ecuaciones cuando se opera con este tipo de dato. esto ralentizara la mayora de las operaciones implicadas en una consulta3 .  Uniformidad en la representacion. se podra emplear una representacion mas compacta.

posibilitara el reducir cualquier operacion de naturaleza imprecisa a terminos del modelo relacional clasico. Tambien almacenara las \relaciones de semejanza" de. UNDE- FINED y NULL.trion para representar la informacion respe- tando en dicha representacion el esquema relacional. Atributos Difusos Tipo 3: Son atributos sobre \dominio discreto no ordenado con analoga". Tambien aceptan datos de tipo UNKNOWN. La FMB (Base de Metaconocimiento Difuso) contabilizara cada atributo de este tipo que aparezca en la base de datos. 3. POS.1.) sobre dominios escalares. para atributos de este tipo tendremos que al- macenar en la base de datos el tipo del valor almacenado y los datos de este valor. unido a otros adoptados a lo largo de esta exposicion. representados en la forma que se describe en el apartado 5. Igual que en atributos difusos Tipo 2. Este criterio.2. Estos atributos recogen datos escalares simples (SIMPLE) o distribuciones de posibilidad (DISTR.

llamado por ejemplo F. 3 En realidad bastara con los atributos FT y F1.nidas sobre el dominio subyacente. (FP1.F1). : : : (FPn. UNDEFINED (1). vemos que un atributo difuso Tipo 3. As. con n1. del tipo (valor de posibilidad. de hecho. asociada a cada tabla que contenga atributos difusos Tipo 2. En un valor de tipo SIMPLE solo se usa la primera pareja y el valor de posibilidad debera ser 1 (para estar normalizada). NULL (2). esta compuesto.Fn): En estos atributos se almacenan los datos de la distribucion de posibilidad que deseamos almacenar. .etiqueta ). almacenando los valores de cada valor trapecio en una tabla independiente. Este puede ser: UNKNOWN (0).  Lista de n parejas.2 mostramos el sistema utilizado para representar a los atributos difu- sos Tipo 3. SIMPLE (3) o DIS- TRIBUCION  de POSIBILIDAD (4). En la Tabla 5. por un numero variable de atributos clasicos:  FT: El tipo de valor que corresponde al dato que queremos almacenar.

acota la capacidad de ese atributo para representar distribuciones de posibilidad y esta almacenado en la FMB. POS. Este valor.1]. Base de Metaconocimiento Difuso): De.144 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Tipos de Atributos de la BD para cada Tipo 3 Valores FT FP1 F1 : : : FPn Fn UNKNOWN 0 NULL NULL : : : NULL NULL UNDEFINED 1 NULL NULL : : : NULL NULL NULL 2 NULL NULL : : : NULL NULL SIMPLE 3 p d : : : NULL NULL DISTR.3. Tabla 5. 4 p1 d1 : : : pn dn El valor n es el maximo numero de pares (grado posibilidad. En un valor de tipo DISTR. donde en cada una de ellas el valor de posibilidad estara en el intervalo [0. 5. En la FMB se almacenan las etiquetas.1. que tiene que ser establecido en el momento en que se declara el atributo. Se pueden usar menos de n parejas dejando el resto de campos a NULL.2: Representacion interna de Atributos Difusos Tipo 3. se podran almacenar hasta n parejas. su relacion de semejanza y el valor de n. valor) que puede representar el atributo instanciado.2 FMB (Fuzzy Metaknowledge Base. POS.

existe cierto tipo de informacion sobre los atributos descritos.  Objetos de. FMB. organiza la informacion mediante el uso de tablas o relaciones.nicion de Tablas Como hemos visto en el apartado anterior. por ello.  Clase de informacion imprecisa que recogen: De que Tipo difuso son estos atributos (Tipo 1. va a ser la encargada de organizar toda aquella informacion relacionada con la naturaleza imprecisa de estos atributos. En FIRST se contempla la Base de Metaconocimiento Difuso como una extension del Catalogo del sistema. La Base de Metaconocimiento Difuso. Los elementos del tratamiento impreciso que se almacenan en la Base de Metaconocimiento son los siguientes:  Atributos de la base de datos que reciben tratamiento impreciso. que precisa ser almacenada de una forma accesible por el sistema. 2 o 3) y la longitud maxima de las distribuciones de posibilidad para los atributos Tipo 3.

como por ejemplo cuanti.nidos en el ambito de la base de datos.

cadores difusos de consulta.  Objetos difusos de.

nidos sobre cada atributo: { Etiquetas lingusticas (para atributos difusos Tipo 1.  La descripcion de esos objetos. { El margen para valores aproximados y la distancia mnima para que 2 valores sean considerados como muy separados (para atributos difusos Tipo 1 y 2). . 2 y 3). { Relaciones de semejanza (para atributos difusos 3).

Tambien se han creado unas vistas que facilitan el acceso a determinados conjuntos de datos. FUZZY LABEL DEF FLD T. FUZZY COMPATIBLE COL FCC T. LABELS FOR OBJCOL LFOC V. IMPLEMENTACION 145 Tabla/Vista Sinonimo T. LABELS OBJCOL T3 LOCT3 V. ALL COMPATIBLES T3 ACT3 Tabla 5.1. FUZZY QUALIFIERS DEF FQD V. La organizacion de las tablas que la constituyen y la relacion entre ellas se muestran en la Figura 5. donde OBJ# es el identi.4. FUZZY NEARNESS DEF FND T. FUZZY APPROX MUCH FAM T.7. En Oracle cada atributo es asignado unvocamente a una pareja de datos (OBJ#. que es el nucleo basico de FIRST.COL#).  DE LA BDRD: FIRST 5. como se vera en el apartado 5.3: Tablas y vistas de FIRST y sus sinonimos publicos. A continuacion detallamos como FIRST implementa la FMB.1. FUZZY COL LIST FCL T. FUZZY OBJECT LIST FOL T.3.

cador de una tabla y COL# es el identi.

Nosotros en lo sucesivo nos referiremos a OBJ# como el identi.cador de la columna o atri- buto concreto dentro de esa tabla.

aunque este tambien puede ser el identi.cador de una tabla.

podremos de.cador de una vista. si tenemos una o varias tablas difusas. As.

de forma que se facilita el acceso. Para cada tabla/vista de la FMB se ha creado un sinonimo publico con las siglas de la tabla. su estructura. los permisos de acceso para cada tabla han sido concedidos sobre estos sinonimos. En la Tabla 5. Procedemos a describir como se crea cada tabla.nir una vista difusa sobre ellas. ya que los nombres de estas tablas son largos de escribir.3 se expone el conjunto de tablas y vistas de la FMB y el nombre del sinonimo publico creado para cada una. Ademas. su signi.

La tabla se crea con la siguiente sentencia: CREATE TABLE FUZZY_COL_LIST( OBJ# NUMBER NOT NULL. .cado y el de cada uno de sus atributos.COL#). CONSTRAINT LEN_TOO_LONG_IN_FUZZY_COL_LIST CHECK (LEN>=1 AND LEN<=10). F_TYPE NUMBER(1) NOT NULL. LEN NUMBER(2) NOT NULL. COM VARCHAR2(100).  Tabla FUZZY COL LIST Esta tabla contiene una descripcion de aquellos atributos de la base de datos que son susceptibles de tratamiento difuso. COL# NUMBER NOT NULL. Esta descripcion se realiza en terminos analogos a los empleados por Oracle. PRIMARY KEY (OBJ#.

.7: Esquema de la Base de Metaconocimiento Difuso (FMB).146 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL FUZZY_COL_LIST (FCL) OBJ# COL# F_TYPE LEN COM FUZZY_APPROX_MUCH (FAM) OBJ# COL# MARGEN MUCH OBJ#1 COL#1 OBJ#2 COL#2 FUZZY_COMPATIBLE_COL (FCC) FUZZY_OBJECT_LIST (FOL) OBJ# COL# FUZZY_ID FUZZY_NAME FUZZY_TYPE FUZZY_LABEL_DEF (FLD) OBJ# COL# FUZZY_ID ALFA BETA GAMMA DELTA FUZZY_NEARNESS_DEF (FND) OBJ# COL# FUZZY_ID1 FUZZY_ID2 DEGREE FUZZY_QUALIFIERS_DEF (FQD) OBJ# COL# FUZZY_ID QUALIFIER Figura 5.

1. Los atributos de esta tabla tienen el siguiente signi.  DE LA BDRD: FIRST 5. IMPLEMENTACION 147 CONSTRAINT FUZZY_TYPE_MUST_BE_1_2_o_3 CHECK (F_TYPE=1 OR F_TYPE=2 OR F_TYPE=3)).

cado cada uno: .COL#: Almacena el numero de columna dentro de la tabla que admitira un tratamiento difuso.F TYPE: Almacena el Tipo de atributo difuso de la columna identi. . OBJ#:Almacena el numero de objeto de la tabla (o vista) que tiene un atributo difuso. .

Este Tipo puede tomar el valor 1. el nombre de la tabla y el atributo.  Tabla FUZZY OBJECT LIST Esta tabla contiene una lista de los objetos de tipo difuso que hay de.e.COM: Almacena un comentario opcional sobre el atributo. el numero maximo de parejas (valor de posibilidad.LEN: Almacena la longitud (length ) m axima de una distribucion de posibilidad en atri- butos Tipo 3.etiqueta ) que admite una distribucion de posibilidad en este atributo. En general es util para poner. de forma que sea facil descubrir que Tipo difuso tiene un atributo particular. i.COL#). . y ello es comprobado por la restriccion FUZZY TYPE MUST BE 1 2 o 3 . sin tener que saber su pareja de numeros (OBJ#. Por necesidades del Ser- vidor FSQL suponemos que no hay mas de 10 datos y 1 como mnimo (restriccion LEN TOO LONG IN FUZZY COL LIST).cada por (OBJ#.COL#). El tratamiento de un atributo depende fundamentalmente del campo F TYPE y segun el valor de este es distinto lo que almacenaremos en la FMB. por ejemplo. 2 o 3.. como veremos mas adelante.

re eja una clasi. Ademas.nidos en las columnas de la base de datos.

No m as de 1000 objetos por cada atributo FUZZY_NAME VARCHAR2(30) NOT NULL. Los atributos de esta tabla tienen el siguiente signi. COL# NUMBER NOT NULL. CONSTRAINT FK_OBJ#_COL#_FOL FOREIGN KEY (OBJ#. FUZZY_ID NUMBER(3) NOT NULL. FUZZY_TYPE NUMBER(1) NOT NULL. CREATE TABLE FUZZY_OBJECT_LIST( OBJ# NUMBER NOT NULL.FUZZY_ID). -. PRIMARY KEY (OBJ#.COL#. CONSTRAINT NO_SPACES_IN_FUZZY_NAME CHECK (FUZZY_NAME NOT LIKE '% %')).cacion de estos objetos mediante el campo FUZZY TYPE.COL#) REFERENCES FUZZY_COL_LIST (OBJ#.COL#) ON DELETE CASCADE.

(OBJ#.COL#): Almacena el identi.cado: .

cador del atributo al que pertenece el objeto. . Es una llave externa a la anterior tabla (restriccion FK OBJ# COL# FOL).

FUZZY ID: Identi.148 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL .

cador del objeto difuso. FUZZY NAME: Nombre del objeto sin espacios (restriccion NO SPACES IN FUZZY NAME). Llave externa a las tablas FUZZY LABEL DEF y FUZZY NEARNESS DEF. FUZZY TYPE: Tipo del objeto. . Puede ser uno de los siguientes  0 para etiquetas lingusticas de tipo trapezoidal de. .

nida en la tabla FUZZY LABEL DEF.  1 para escalares sujetos a tratamiento mediante una relacion de semejanza de.

nida en FUZZY NEARNESS DEF.  2 para cuali.

cadores de.

nidos sobre el ndice de cumplimiento en la consulta (um- bral) y almacenados en la tabla FUZZY QUALIFIERS DEF.  3 para etiquetas lingusticas de.

nidas sobre cuanti.

1] (ver apartado 2.cadores relativos y almacenadas en la tabla FUZZY LABEL DEF con ALFA. BETA.2).  4 para etiquetas lingusticas de. DELTA 2 [0. GAMMA.9.

nidas sobre cuanti.

2). 3 y 4 del atributo FUZZY TYPE de la tabla FUZZY OBJECT LIST. El signi. BETA.  Tabla FUZZY LABEL DEF Esta tabla contiene los puntos que determinan la distribucion de posibilidad trapezoi- dal correspondientes a los tipos de objetos 0.9. DELTA  0 (ver apartado 2.cadores absolutos y almacena- das en la tabla FUZZY LABEL DEF con ALFA. GAMMA.

DELTA NUMBER NOT NULL.COL#.FUZZY_ID) ON DELETE CASCADE. BETA NUMBER NOT NULL. Los campos de esta tabla tienen el siguiente signi. -. PRIMARY KEY (OBJ#. CONSTRAINT MUST_BE_ORDERED CHECK (ALFA<=BETA AND BETA<=GAMMA AND GAMMA<=DELTA)). GAMMA NUMBER NOT NULL.COL#.FUZZY_ID).cado de esa distribuci on depende.COL#. CONSTRAINT FK_OBJ#_COL#_FUZZY_ID_FLD FOREIGN KEY (OBJ#. COL# NUMBER NOT NULL. FUZZY_ID NUMBER(3) NOT NULL.FUZZY_ID%TYPE ALFA NUMBER NOT NULL. naturalmente.FUZZY_OBJECT_LIST.FUZZY_ID) REFERENCES FUZZY_OBJECT_LIST (OBJ#. de ese tipo. CREATE TABLE FUZZY_LABEL_DEF( OBJ# NUMBER NOT NULL.

ALFA. . GAMMA y DELTA: De.(OBJ#.FUZZY ID): Estos 3 campos son la llave primaria de esta tabla y llave externa a la tabla FUZZY OBJECT LIST (restriccion FK OBJ# COL# FUZZY ID FLD). BETA.cado: .COL#.

nen una distribuci on de posibilidad trapezoidal del tipo de la Figura 5.2 (pagina 136): .

 DE LA BDRD: FIRST 5. IMPLEMENTACION 149 = inf fx : x 2 support(label)g (5.1) .1.

4) donde support es el conjunto soporte de la etiqueta label (conjunto de valores que son distintos de cero) y kernel es el nucleo de la etiqueta label (conjunto de valores que tienen su grado de posibilidad igual a 1).3)  = supfx : x 2 support(label)g (5. = inf fx : x 2 kernel(label)g (5.2) = supfx : x 2 kernel(label)g (5. Estos 4 campos tienen la obligacion de cumplir la condicion que le impone la restriccion MUST BE ORDERED: .

Sus campos tienen el siguiente signi. MUCH NUMBER NOT NULL.COL#) REFERENCES FUZZY_COL_LIST (OBJ#. CONSTRAINT MARGEN_LESS_THAN_MUCH_IN_FAM CHECK (MARGEN<MUCH)). CONSTRAINT FK_OBJ#_COL#_FAM FOREIGN KEY (OBJ#. MARGEN NUMBER NOT NULL. CREATE TABLE FUZZY_APPROX_MUCH( OBJ# NUMBER NOT NULL.   Tabla FUZZY APPROX MUCH Esta tabla almacena datos que son utilizados cuando se trabaja con atributos difusos Tipos 1 o 2. PRIMARY KEY (OBJ#.COL#). COL# NUMBER NOT NULL.COL#) ON DELETE CASCADE.

(OBJ#.COL#): Almacena el identi.cado: .

. Es la llave primaria de la tabla y llave externa a la tabla FUZZY COL LIST (restriccion FK OBJ# COL# FAM). en los comparadores difusos MGT. . Es utilizado.MUCH: Es el valor que indica la distancia mnima para que 2 valores de este atributo sean considerados como muy separados. NMGT. Ver Figura 5.cador del atributo al que pertenece el objeto.MARGEN: Es el margen utilizado en las etiquetas triangulares de valores \aproximados". como se explica mas adelante. . Estas funciones de pertenencia son de tipo triangular.4 (pagina 138). con valor de pertenencia 1 para el valor sobre el que se considera la aproximacion y estan caracterizadas por este valor que ha de ser aportado en la consulta y por la anchura de lo que podramos considerar la base del triangulo. MLT y NMLT.

COL# NUMBER NOT NULL.FUZZY_OBJECT_LIST. CONSTRAINT FUZZY_ID1_IGUAL_QUE_FUZZY_ID2 CHECK (FUZZY_ID1<>FUZZY_ID2).FUZZY_ID) ON DELETE CASCADE.FUZZY_ID1) REFERENCES FUZZY_OBJECT_LIST (OBJ#. -. PRIMARY KEY (OBJ#. CONSTRAINT FUZZY_ID1_MAYOR_QUE_FUZZY_ID2 CHECK (FUZZY_ID1<FUZZY_ID2). CONSTRAINT FK_OBJ#_COL#_FUZZY_ID1_FND FOREIGN KEY (OBJ#. FUZZY_ID1 NUMBER(3) NOT NULL.150 CAPITULO 5. CREATE TABLE FUZZY_NEARNESS_DEF( OBJ# NUMBER NOT NULL.  Tabla FUZZY NEARNESS DEF Esta tabla representa las medidas de proximidad.FUZZY_ID1.FUZZY_ID%TYPE DEGREE NUMBER (3.(OBJ#.COL#.FUZZY_OBJECT_LIST. semejanza o similitud entre los diferentes valores de dominio permitidos sobre los campos de Tipo 3.FUZZY_ID) ON DELETE CASCADE.COL#): Almacena el identi. cosa que es razonable y que evita posibles equivocaciones si se introducen los datos en un orden erroneo.FUZZY_ID%TYPE FUZZY_ID2 NUMBER(3) NOT NULL.COL#.COL#. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL En esta tabla la restriccion MARGEN LESS THAN MUCH IN FAM obliga a que el valor de MARGEN sea menor que el de MUCH. CONSTRAINT DEGREE_MUST_BE_IN_0_1_INTERVAL CHECK (DEGREE>=0 AND DEGREE<=1)). CONSTRAINT FK_OBJ#_COL#_FUZZY_ID2_FND FOREIGN KEY (OBJ#. Sus campos tienen la siguiente lectura: . -.2) NOT NULL.COL#.FUZZY_ID2) REFERENCES FUZZY_OBJECT_LIST (OBJ#.COL#.FUZZY_ID2).

cador del atributo Tipo 3 que posee la funcion de semejanza que aqu se almacena. .FUZZY ID1: Identi.

FUZZY ID1) forman una llave externa que debe existir en la tabla FUZZY OBJECT LIST (restriccion FK OBJ# COL# FUZZY ID1 FND) y en esta tabla su campo FUZZY TYPE correspondiente debe tener el valor 1.cador de un objeto etiqueta.FUZZY ID2: Identi.COL#. . Los atributos (OBJ#.

cador de otro objeto etiqueta. En datos difusos una mayor precision no es. importante.COL#.DEGREE: Grado de similitud o semejanza entre las etiquetas indicadas por los 2 atributos anteriores (FUZZY ID1 y FUZZY ID2).1] (restriccion DEGREE MUST BE IN 0 1 INTERVAL) y se admite un maximo de 2 numeros decimales. Los atributos (OBJ#. por lo que los identi.FUZZY ID2) forman una llave externa que debe existir en la tabla FUZZY OBJECT LIST (restriccion FK OBJ# COL# FUZZY ID2 FND) y en esta tabla su campo FUZZY TYPE correspondiente debe tener el valor 1. . de hecho. Este valor estara comprendido en el intervalo [0. no se alma- cenara una comparacion para un par de etiquetas iguales. Como suponemos que la relacion de semejanza cumple la propiedad re exiva.

cadores de las .

Ademas.  DE LA BDRD: FIRST 5.1. IMPLEMENTACION 151 etiquetas deben ser distintos (restriccion FUZZY ID1 IGUAL QUE FUZZY ID2). Se supone que una etiqueta es \similar" a ella misma en grado 1. por lo que solo se alma- cenara un grado de similitud por cada pareja de etiquetas distintas y se exige que los identi. la relacion de semejanza cumple la propiedad simetrica.

de forma que el identi.- cadores de las etiquetas esten ordenados.

COL#. ya que sabemos en que orden son almacenadas las parejas de etiquetas. FUZZY ID1 y FUZZY ID2. De esta forma no es necesario de.cador puesto en primer lugar sea menor que el puesto en segundo lugar (restriccion FUZZY ID1 MAYOR QUE FUZZY ID2).  Tabla FUZZY COMPATIBLE COL Indica los atributos difusos Tipo 3 que son compatibles con otros. La llave primaria de esta relacion esta formada por los atributos: OBJ#. de forma que se aceleran las consultas a esta tabla.

COL#1 NUMBER NOT NULL. esto nos permite comparar dos atributos difusos Tipo 3 entre s. Ademas.nir las etiquetas y las relaciones de similitud para cada uno de ellos. Sus campos tienen el siguiente signi. CREATE TABLE FUZZY_COMPATIBLE_COL( OBJ#1 NUMBER NOT NULL. OBJ#2 NUMBER NOT NULL.COL#1). COL#2 NUMBER NOT NULL. si son compatibles. PRIMARY KEY (OBJ#1.COL#) ON DELETE CASCADE. CONSTRAINT FK_OBJ#2_COL#2_FCC FOREIGN KEY (OBJ#2.COL#1) REFERENCES FUZZY_COL_LIST (OBJ#. CONSTRAINT FK_OBJ#1_COL#1_FCC FOREIGN KEY (OBJ#1.COL#) ON DELETE CASCADE).COL#2) REFERENCES FUZZY_COL_LIST (OBJ#. ya que esto indica que ambos atributos tienen el mismo dominio.

cado: .(OBJ#1.COL#1): Almacena el identi.

Es la llave primaria e indica que este atributo no tiene etiquetas de.cador del atributo Tipo 3 que es compatible con otro.

nidas sobre el y tomara las de.

(OBJ#2. .COL#2): Almacena el identi.nidas por el siguiente atributo. Esta pareja de atributos es llave externa a la tabla FUZZY COL LIST (restriccion FK OBJ#1 COL#1 FCC).

cador de un atributo Tipo 3 que tiene etiquetas y relaciones de semejanza de.

COL#1). Igualmente.nidas sobre el y que seran adoptadas por el atribu- to (OBJ#1.  Tabla FUZZY QUALIFIERS DEF Expresa el nivel de umbral de cumplimiento mnimo asociado al cuali. esta pareja de atributos es llave externa a la tabla FUZZY COL LIST (restricci on FK OBJ#2 COL#2 FCC).

3 esta explicado un poco mas en detalle. .cador lingustico asociado en la tabla FUZZY OBJECT LIST con FUZZY TYPE igual a 2. En el apartado 5.1.2.

152 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL CREATE TABLE FUZZY_QUALIFIERS_DEF( OBJ# NUMBER NOT NULL.COL#. Sus campos tienen el siguiente signi. PRIMARY KEY (OBJ#.FUZZY_ID).COL#.FUZZY_ID) ON DELETE CASCADE).COL#. CONSTRAINT FK_OBJ#_COL#_FUZZY_ID_FQD FOREIGN KEY (OBJ#. COL# NUMBER NOT NULL. FUZZY_ID NUMBER(3) NOT NULL.2) NOT NULL.FUZZY_ID) REFERENCES FUZZY_OBJECT_LIST (OBJ#. QUALIFIER NUMBER(3.

FUZZY ID): Estos 3 campos son la llave primaria y llave externa a la tabla FUZZY OBJECT LIST (restricci on FK OBJ# COL# FUZZY ID FQD) y tienen identicos signi- .cado: .(OBJ#.COL#.

.cados.QUALIFIER: El cuali.

que admite 2 decimales como maximo La utilidad de esta tabla y la de los cuali.1].cador asociado es un numero en el intervalo [0.

Ademas. la FMB almacena una lista con los atributos que admiten tratamiento difuso y su Tipo de atributo difuso (1. 2 o 3). por lo que no ha sido implementada aun en el Servidor FSQL.3. para cada atributo difuso se almacena distinta informacion dependiendo de su Tipo:  Atributos Difusos Tipo 1 o Tipo 2: Para poder usar atributos Tipo 1 (crisp) y atributos Tipo 2 en condiciones difusas (consultas exibles) basta con declararlos como tales (tabla FUZZY COL LIST de la FMB) y almacenar los siguientes datos en la FMB: ? Etiquetas lingusticas trapezoidales : Nombre de la etiqueta (tabla FUZZY OBJECT LIST) y los valores . 5. .1.3 Resumen del Contenido de la FMB Resumiendo.cadores sobre los umbrales de cumplimiento es mnima.

14). ? Cuali.20).17. and  (FUZZY LABEL DEF). ? Distancia mnima para que dos valores sean considerados como muy separados (campo MUCH de la tabla FUZZY APROX MUCH): Usada por los comparadores MGT/NMGT y MLT/NMLT (ver ecuaciones 5. como en la Figura 5. 5.2..1 y 5.19 y 5.18. ? Valor para el margen de los valores aproximados (campo MARGEN de la tabla FUZZY APROX MUCH): Usada cuando se emplean valores aproximados en un atributo concreto (ver Figura 5.4 y Tablas 5. 5.

cadores y Cuanti.

4 Como ya se ha dicho. esto se re. en la FMB hay que almacenar tambien: ? Longitud maxima de sus distribuciones de posibilidad 4 (tabla FUZZY COL LIST).  Atributos Difusos Tipo 3: Ademas de declararlos como tales (tabla FUZZY COL LIST).cadores (tablas FUZZY QUALIFIERS DEF y FUZZY LABEL DEF).

referencia a etiqueta) que puede tener una distribucion de posibilidad sobre el atributo difuso Tipo 3 en cuestion. para que pueda almacenarse en la base de datos. .ere al numero maximo de parejas (posibilidad.

 DE LA BDRD: FIRST 5.1. IMPLEMENTACION 153 ? Etiquetas lingusticas (escalares): Su nombre (tabla FUZZY OBJECT LIST) y la re- lacion de similitud entre ellas (tabla FUZZY NEARNESS DEF). ? Cuali. ? Compatibilidad entre atributos de este Tipo (tabla FUZZY COMPATIBLE COL).

cadores y Cuanti.

4 Vistas sobre la FMB Sobre las tablas de FIRST se han creado unas vistas que son utiles para consultar distintos aspectos de una base de datos difusa de forma clara y sencilla.cadores (tablas FUZZY QUALIFIERS DEF y FUZZY LABEL DEF). Estas vistas son las siguientes:  Vista LABELS FOR OBJCOL Sirve para obtener o consultar facilmente las etiquetas de.1. 5.3.

Beta.OBJ#=FLD. Sus campos tienen el siguiente signi. CREATE or replace view LABELS_FOR_OBJCOL AS SELECT FOL.COL# COL#. FOL. Delta FROM FOL.COL#=FLD. Gamma.nidas sobre atributos difusos Tipo 1 o 2 y los parametros del trapecio posibilstico asociado.OBJ# AND FLD.OBJ# OBJ#. FLD WHERE FOL. Alfa.COL# AND FOL. Fuzzy_Name Label.FUZZY_ID=FOL.FUZZY_ID AND FOL.FUZZY_TYPE=0.

COL#): Almacena el identi.cado: .(OBJ#.

cador del atributo sobre el que esta de.

nida la etiqueta especi.

. Gamma. . Beta.cada en los demas campos.(Alfa. Delta): Indican la de.Label: Nombre de la etiqueta lingustica.

2 (pagina 136).  Vista LABELS OBJCOL T3 Sirve para obtener o consultar facilmente las etiquetas de.nicion de la etiqueta de forma trapezoidal del tipo de la Figura 5.

OBJ# AND FOL1. FOL1.OBJ#=FND.COL#=FND.FUZZY_ID. FND.FUZZY_NAME Label_1.COL#=FOL2.FUZZY_NAME Label_2.COL# AND FOL1. FOL2.OBJ# OBJ#. DEGREE FROM FOL FOL1.FUZZY_ID AND FND.COL# COL#. as como la relacion de similitud entre ellos. FND WHERE FOL1.FUZZY_ID1=FOL1.OBJ# AND FOL1. CREATE or replace view LABELS_OBJCOL_T3 AS SELECT FND.OBJ#=FOL2. .nidas sobre atributos difusos Tipo 3.FUZZY_ID2=FOL2. FOL FOL2.FUZZY_TYPE=1 AND FOL2.COL# AND FOL1.FUZZY_TYPE=1 AND FND.

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Sus campos tienen el siguiente signi.154 CAPITULO 5.

cado: .COL#): Almacena el identi.(OBJ#.

cador del atributo sobre el que estan de.

nidas las etiquetas especi.

Label 1: Nombre de una etiqueta lingustica de. .cadas en los demas campos.

. .nida sobre el atributo anterior.DEGREE: Es el grado de similitud de.Label 2: Nombre de otra etiqueta lingustica.

 Vista ALL COMPATIBLES T3 Sirve para obtener o consultar facilmente los atributos difusos Tipo 3 que se han de.nido entre las etiquetas Label 1 y Label 2.

podemos saber que atributos difusos Tipo 3 no tienen etiquetas de.nido como compatibles a otros. De esta forma.

FCL2.COL#1 AND FCL2. CREATE or replace view ALL_COMPATIBLES_T3 AS SELECT distinct FCL1.COL#2.COM Columna_1. tambien nos muestra la longitud maxima permitida para las distribuciones de posibilidad de esos atributos difusos Tipo 3. FCL1.nidas sobre ellos y cuales s las tienen.COM Compatible_Con_Columna_2.COL#=FCC.OBJ#=FCC. FCL2. FCC WHERE FCL1.OBJ#2 AND FCL1. Ademas.OBJ#1 AND FCL2.OBJ#=FCC.LEN Length_2 FROM FCL FCL1. FCL FCL2.COL#=FCC. Sus campos tienen el siguiente signi.LEN Length_1.

no tiene de. por tanto.Columna 1: Nombre de la columna que es compatible con la siguiente y que.cado: .

Compatible Con Columna 2: Nombre de la columna que tiene de.nidas etiquetas sobre ella. .Length 1: Longitud maxima para las distribuciones de posibilidad que podremos alma- cenar en la columna anterior. .

Como vemos. la tabla EMPLEADOS tiene los siguientes atributos: .nidas las etiquetas.4. Veremos la estructura interna que adoptan los campos difusos en la base de datos y como se almacenan los datos relativos a los atributos difusos en la FMB. .Length 2: Longitud maxima para las distribuciones de posibilidad para la segunda columna. Representaremos la relacion de la Tabla 5.4 Ejemplo de Implementacion en FIRST de la BD y la FMB En este apartado vamos a ilustrar como se representan en la base de datos y en la FMB una tabla con todos los Tipos difusos vistos y algunos no difusos. A lo largo de este ejemplo vamos a ver como se implementa la informacion que recoge dicha relacion. las cuales tambien usara Columna_1. que muestra una relacion de los empleados de una determinada empresa.1. 5.

1.  DE LA BDRD: FIRST 5. IMPLEMENTACION 155 6 JOVEN MADURO MAYOR 1  A B B  A B B   A  B B   A  B B   A  B B   A  B B   A B B - 0 16 25 30 35 40 45 50 55 65 80 EDAD a) 6 BAJO MEDIO ALTO 1  B  A   B  A   B A  B A  B  A   B  A   B  A SALARIO- 0 50 65 85 95 110 130 180  1000$ b) Figura 5.8: De.

.nicion de etiquetas sobre los atributos EDAD y SALARIO.

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL NOMBRE SALARIO EDAD RENDIMIENTO N1 85000 31 Bueno N2 100000 Maduro Regular N3 90000 Joven Malo N4 21000 Mayor Excelente N5 97000 Joven Unknown N6 125000 #30 Bueno N7 105000 [30.35] Regular N8 180000 $[22.25.156 CAPITULO 5.35] Bueno N9 105000 Unknown Regular El smbolo # signi.33.

.m] es un intervalo y el valor $[ . [n.ca \aproximadamente".

tambien se pueden de. no difuso. de tipo texto.  NOMBRE: Almacena el nombre de los empleados. Tabla 5.. Es un atributo \crisp". .4: Ejemplo de para la relacion EMPLEADOS. Por supuesto. ] es un trapecio posibilstico.

este atributo mantiene informacion en la FMB. Es un atributo difuso Tipo 1. La Figura 5.. fechas. Este campo sera la clave primaria de esta tabla..  SALARIO: Almacena el salario de cada empleado. como puede observarse en la tabla.nir atributos \crisp" de cualquier otro tipo base del SGBD (numeros.8 b) muestra la de. Por tanto. Sin embargo.). como se detalla mas adelante. todos los valores que puede almacenar esa columna son de tipo \crisp".

nicion de las etiquetas lingusticas de.

 EDAD: Almacena la edad de cada empleado.8 a) muestra la de. El valor del margen para valores aproximados es de 15000 y la distancia mnima para considerar dos valores como muy separados es de 40000. por tanto. Tabla 5. Es un atributo difuso Tipo 2 y puede. Ambos valores son almacenados en FUZZY APPROX MUCH. La Figura 5.nidas sobre este atributo. almacenar todos los tipos de datos que se mostraron en la Tabla 5.1.7.

nicion de las etiquetas lingusticas de.

8 Excelente 0.1 Regular 0.7 1 0. sr (d. Tabla 5.1 0.5 0. Ambos valores son almacenados en FUZZY APPROX MUCH.5 0.5 Bueno 0.7 0.8 0.8 1 0.nidas sobre este atributo.7. d0 ) Malo Regular Bueno Excelente Malo 1 0.5 0. El valor del margen para valores aproximados es de 5 y la distancia mnima para considerar dos valores como muy separados es de 9.8 1 Tabla 5.  RENDIMIENTO: Almacena una cali.5: Relacion de Similitud sr sobre RENDIMIENTO.

Para simpli. por tanto. almacenar los tipos de datos que se mostraron en la Tabla 5.cacion del rendimiento de cada empleado. Es un atributo difuso Tipo 3 y puede.2.

car hemos supuesto que la maxima longitud de .

Las etiquetas (escalares) que tiene de.  DE LA BDRD: FIRST 5. IMPLEMENTACION 157 las distribuciones de posibilidad para este atributo es 1.1.

Las etiquetas trapezoidales registradas en esa tabla.5.nidas y su relacion de similitud estan expresadas en la Tabla 5. OBJ# COL# F TYPE LEN COM (Empleados) (Salario) 1 NULL 'EMPLEADOS.8.7: Ejemplo para la tabla FUZZY APPROX MUCH. en todas las tablas del ejemplo. En la tabla FUZZY OBJECT LIST apareceran todas las etiquetas de la Figura 5.EDAD' (Empleados) (Rendimiento) 3 1 'EMPLEADOS.RENDIMIENTO' Tabla 5.8 y de la Tabla 5.SALARIO' (Empleados) (Edad) 2 NULL 'EMPLEADOS. OBJ# COL# MARGEN MUCH (Empleados) (Salario) 15000 40000 (Empleados) (Edad) 5 9 Tabla 5.5. los numeros de los atributos OBJ# y COL# han sido sustituidos por el nombre de los objetos que representan entre parentesis.6. Con esos datos. con FUZZY TYPE=0.6: Ejemplo para la tabla FUZZY COL LIST. tenemos que la tabla FUZZY COL LIST tiene los datos expresados en la Tabla 5. estan de. Esto es mostrado en la Tabla 5. Para mayor claridad.

OBJ# COL# FUZZY ID FUZZY NAME FUZZY TYPE (Empleados) (Salario) 0 'BAJO' 0 (Empleados) (Salario) 1 'MEDIO' 0 (Empleados) (Salario) 2 'ALTO' 0 (Empleados) (Edad) 0 'JOVEN' 0 (Empleados) (Edad) 1 'MADURO' 0 (Empleados) (Edad) 2 'MAYOR' 0 (Empleados) (Rendimiento) 0 'MALO' 1 (Empleados) (Rendimiento) 1 'REGULAR' 1 (Empleados) (Rendimiento) 2 'BUENO' 1 (Empleados) (Rendimiento) 3 'EXCELENTE' 1 Tabla 5.10. Una vez hechas esas de.9.5.8: Ejemplo para la tabla FUZZY OBJECT LIST. La relacion de similitud sobre el atributo RENDIMIENTO de la Tabla 5. Tabla 5. es almacenada en la FMB en FUZZY NEARNESS DEF.nidas en FUZZY LABEL DEF. Tabla 5.

. donde hemos adoptado para los atributos EDAD y RENDIMIENTO.niciones.1 y 5.1.2 respectivamente (apartado 5. la implementacion mostrada en las Tablas 5.3. la relacion EMPLEADOS queda implementada en el SGBDR Oracle como re eja la Tabla 5.11.1).

9: Ejemplo para la tabla FUZZY LABEL DEF.5 (Empleados) (Rendimiento) 0 3 0.8 Tabla 5. . OBJ# COL# FUZZY ID1 FUZZY ID2 DEGREE (Empleados) (Rendimiento) 0 1 0.158 CAPITULO 5.10: Ejemplo para la tabla FUZZY NEARNESS DEF.7 (Empleados) (Rendimiento) 1 3 0.1 (Empleados) (Rendimiento) 1 2 0.8 (Empleados) (Rendimiento) 0 2 0. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL OBJ# COL# FUZZY ID ALFA BETA GAMMA DELTA (Empleados) (Salario) 0 50000 65000 85000 95000 (Empleados) (Salario) 1 85000 95000 110000 130000 (Empleados) (Salario) 2 110000 130000 999999 999999 (Empleados) (Edad) 0 0 16 30 40 (Empleados) (Edad) 1 25 35 45 55 (Empleados) (Edad) 2 40 50 65 80 Tabla 5.5 (Empleados) (Rendimiento) 2 3 0.

 DE LA BDRD: FIRST 5.1. IMPLEMENTACION 159 NOMBRE SALARIO EDADT EDAD1 EDAD2 EDAD3 EDAD4 : : : N1 85000 3 31 NULL NULL NULL ::: N2 100000 4 1 NULL NULL NULL ::: N3 90000 4 0 NULL NULL NULL ::: N4 21000 4 2 NULL NULL NULL ::: N5 97000 4 0 NULL NULL NULL ::: N6 125000 6 30 25 35 5 ::: N7 105000 5 30 NULL NULL 35 ::: N8 180000 7 22 25 33 35 ::: N9 105000 0 NULL NULL NULL NULL ::: : : : RENDIMIENTOT RENDIMIENTOP1 RENDIMIENTO1 ::: 3 1 2 ::: 3 1 1 ::: 3 1 0 ::: 3 1 3 ::: 0 NULL NULL ::: 3 1 2 ::: 3 1 1 ::: 3 1 2 ::: 3 1 1 Ver en la tabla FUZZY OBJECT LIST (5.8) los identi.

cadores (FUZZY ID) para las etiquetas de EDAD1 y RENDIMIENTO1. .11: Representacion interna real de la relacion de ejemplo EMPLEADOS en el SGBD con la extension FIRST. Tabla 5.

Hoy da la bibliografa sobre el lenguaje SQL es muy extensa [26. 52.2. 86] y en todos se explican los comandos basicos de este lenguaje en sus dos vertientes:  DML (Data Manipulation Language. el lenguaje SQL fue desarrollado basicamente por Cham- berlin et al. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 5.160 CAPITULO 5. [37.2 Sintaxis y Semantica del Lenguaje FSQL Como se vio en el apartado 1. 38] en la segunda mitad de los a~nos 70. Lenguaje de Manipulacion de Datos): Las sen- tencias de este lenguaje permiten la consulta y la modi.5.

DELETE y UPDATE.2.  DDL (Data De.cacion de los datos almacenados en la base de datos. Estas comandos son explicadas brevemente en el apartado 1.5. INSERT. Ejemplos de comandos del DML SQL son: SELECT.

Lenguaje de De.nition Language.

nicion de Datos): Las sentencias de este lenguaje permiten la creacion y modi.

. Ejemplos de comandos del DDL SQL son: CREATE (para crear objetos de la base de datos: tablas. ALTER (para modi. vistas.). DROP (para borrar objetos)..cacion de las estructuras en las que se almacenaran los datos.

que tiene sentido efectuarla (por ejemplo. Para expresar formalmente la sintaxis de una sentencia hemos elegido la forma de gramatica utilizando el formato de Yacc (ver Apendice B).e. 3.. Analizador Semantico: Asegura que el signi. Analizador Sintactico: Asegura que los tokens estan en un orden adecuado y que la construccion de la sentencia es correcta sintacticamente.. por un lado que la sentencia esta correctamente escrita (pertenece a nuestra gramatica) y por otro. minusculas o ambas.).car objetos). las sentencias pueden escribirse independiente- mente en mayusculas. el lenguaje FSQL no es sensible a mayusculas/minusculas. almacenamiento. Cada sentencia FSQL que se desee ejecutar debe ser previamente analizada por el sistema para asegurar. los cuales son explicados en profundidad en el apartado 5. Para ello usamos los tpicos 3 analizadores siguientes.. Algunos autores distinguen entre el DDL y el DCL (Data Control Language. dejando para este ultimo las tareas de control (de seguridad. 2. y sentencias para controles de seguridad. i. solo resumimos brevemente: 1.5 sobre la implementacion del Servidor FSQL y que ahora. agrupando los caracteres en palabras (tokens ). Lenguaje de Control de Datos). Igual que SQL. Analizador Lexico: Asegura que todos los elementos de la sentencia estan permitidos. ndices y control del al- macenamiento fsico de los datos. que usamos objetos validos).

explicando las novedades que estos incorporan en FSQL para que nos permitan manejar informacion difusa. INSERT.2. SELECT. A continuacion de. Las gramaticas utilizadas estan incluidas en el Apendice B (pagina 273). A continuacion nos centraremos en revisar la sintaxis de los comandos mas utiles e im- portantes. DELETE y UPDATE Dentro del DML la sentencia mas usual y mas compleja es la sentencia de consulta de da- tos.1 El DML de FSQL: SELECT. por tanto. 5. DELETE y UPDATE. aunque tambien son interesantes las sentencias INSERT.cado de la sentencia es correcto y que. tiene sentido efectuarla.

nimos el formato para estas sentencias en FSQL. .

2. pues lo normal es efectuar consultas mucho mas simples de lo que SELECT permite. A veces. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 161 5.1. muy facil de usar en consultas simples y no tan facil de usar en consultas complejas debido a su potencia y versatilidad. para simpli.1 Novedades en el SELECT Difuso La sentencia SELECT es una sentencia tan potente como compleja y exible.  5.2. Esta sentencia es tan potente que rara vez se llega a utilizar todo su poder expresivo para realizar una consulta.

Esto signi. El lenguaje FSQL es una autentica extension de SQL.car la escritura y el entendimiento de consultas complicadas se usan vistas intermedias que son creadas como subconsultas a la base de datos.

FSQL incorpora algunas novedades para permitir el tratamiento de informacion imprecisa. las extensiones efectua- das a esta sentencia son las siguientes:  Etiquetas Lingusticas: Si un atributo es susceptible de tratamiento difuso entonces pueden de. Basicamente. Ademas.ca que todas las senten- cias validas en SQL lo son tambien en FSQL.

por convenio.nirse etiquetas sobre el. Estas etiquetas son precedidas. por el smbolo $ para distinguirlas facilmente de otros identi.

Hay 2 tipos de etiquetas que seran usadas en diferentes tipos de atributos difusos. Etiquetas para atributos con un dominio subyacente ordenado : Cada etiqueta de este tipo tiene asociada. por ejemplo.cadores. 1. podemos de. As. en la FMB5 .2 (pagina 136). una distribucion de posibilidad trapezoidal como la de la Figura 5.

El atributo $Alto puede ser de. $Normal. Por ejemplo. $Alto y $Muy Alto sobre el atributo Altura de una persona.nir las eti- quetas $Muy Bajo. $Bajo.

.nido como una dis- tribucion de posibilidad con los siguientes valores (en centmetros) =185.

=195. =200 y =210. Etiquetas para atributos con un dominio subyacente no ordenado (como los esca- lares de los tipos 1.4): Aqu. como se muestra en la Figura 5. 2.3. puede haber una relacion de similitud de. 3 y 5 en la Tabla 2.

para un atributo que almacenara el color del pelo de una persona podramos de. El grado de similitud entre cada dos etiquetas sera un valor del intervalo [0. Por ejemplo.nida entre cada dos etiquetas del dominio y almacenada en la FMB.1].

4 (pagina 170). los comparadores de necesidad recuperan menos tuplas y estas tuplas cumpliran necesariamente con las condiciones impuestas en la consulta.6 para mas datos sobre la restrictividad de los comparadores.6.  Comparadores Difusos: Ademas de los comparadores clasicos tpicos (=.). >. FSQL incluye los comparadores difusos de la Tabla 5.2.12.. Por tanto. en el apartado 5. Como en SQL. Ver apartado 5.1.2.nir las etiquetas $Rubio y $Pelirrojo e indicar (en la relacion de similitud) que ambos valores son similares en grado 0. se expone la de. Los comparadores de posibilidad son mas generales (menos restrictivos) que los de nece- sidad. En [78] y mas adelante. los comparadores difusos pueden comparar una columna de una tabla con una constante o dos columnas del mismo tipo o de tipos compatibles.1..

Base de Metaconocimiento Difuso) es un catalogo del sistema difuso con informacion sobre los atributos difusos y fue explicada en el apartado 5.nicion de todos estos comparadores con ejemplos sobre sus resultados.2. .3. 5 La FMB (Fuzzy Metaknowledge Base.1.

162 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Comp. Difuso Signi.

cado Posibilidad FEQ Fuzzy EQual: Posiblemente Igual (sobre escalares o numeros difusos) FGT Fuzzy Greater Than: Posiblemente Mayor que FGEQ Fuzzy Greater or Equal: Posiblemente Mayor o Igual que FLT Fuzzy Less Than: Posiblemente Menor que FLEQ Fuzzy Less or Equal: Posiblemente Menor o Igual que MGT Much Greater Than: Posiblemente Mucho Mayor que MLT Much Less Than: Posiblemente Mucho Menor que Necesidad NFEQ Necessarily Fuzzy EQual: Necesariamente Igual que (o incluido en) NFGT N. Fuzzy Greater or Equal: Necesariamente Mayor o Igual que NFLT N. Fuzzy Greater Than: Necesariamente Mayor que NFGEQ N. Much Greater Than: Necesariamente Mucho Mayor que NMLT N. Much Less Than: Necesariamente Mucho Menor que Tabla 5. En atributos con dominio subyacente no ordenado (difusos Tipo 3) solo puede usarse el comparador difuso FEQ. puesto que carecen de orden. Fuzzy Less Than: Necesariamente Menor que NFLEQ N. Este comparador es de. Fuzzy Less or Equal: Necesariamente Menor o Igual que NMGT N.12: Comparadores Difusos de FSQL (Fuzzy SQL).

..  ): Para cada condicion simple se puede esta- blecer un umbral de cumplimiento (por defecto sera 1) con el formato siguiente: <Condici on simple> THOLD  indicando que la condicion debe ser satisfecha con un grado mnimo de  2 [0. 1] pa- ra que la tupla en cuestion aparezca en la relacion resultante.). La palabra reservada THOLD es opcional y puede ser sustituida por cualquier comparador crisp tradicional (=.7 (pagina 178).2.nido para este Tipo de atributos en el apartado 5. El comparador difuso de \desigualdad" o \posiblemente distinto" no se ha considerado porque puede modelarse negando una comparacion con FEQ: NOT <Atributo Difuso> FEQ <Atributo o Cte>  Umbral de Cumplimiento (threshold. modi..1.

cando as. el signi. logicamente.

La palabra THOLD es equivalente a usar el comparador crisp . como umbral puede ponerse un cuali.cado de la consulta. En lugar de un numero.

cador. que es un identi- .

cador o etiqueta que debera estar de.

por lo que no esta contemplada en la gramatica del Apendice B.8): 6 Esta opcion no esta implementada en la presente version del Servidor FSQL.1 Dame todas las personas con pelo rubio (en grado mnimo 0.nida en la FMB6 . . Ejemplo 5.5) que son posiblemente mas altas que la etiqueta $Alta (en grado mnimo 0.

CDEG(<cond2>)) <cond1> OR <cond2> max(CDEG(<cond1>).CDEG(<cond2>)) NOT <cond1> 1 { CDEG(<cond1>) Tabla 5.  5. el calculo de este grado de cumplimiento es efec- tuado usando las funciones que se indican en la Tabla 5.5 AND Altura FGT $Alta THOLD 0. tu  Funcion CDEG(<atributo>): Una llamada a la funcion CDEG (Compatibility DEGree) puede ser colocada en la lista de seleccion (expresiones tras la palabra reservada SELECT). SELECT * FROM Personas WHERE Pelo FEQ $Rubio THOLD 0. en- tonces debemos usar el comparador difuso NFGT en vez de FGT. Su argumento es un atributo y muestra una columna con el grado de compatibilidad o cumplimiento de la condicion de la consulta para el atributo que se indica. Si aparecen operadores logicos (NOT.13: Se usa la norma triangular del mnimo y del maximo.13: Operaciones usadas por defecto para el calculo de la funcion CDEG de FSQL con operadores logicos. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 163 <Condici on> (con operadores logicos) CDEG(<Condici on>) <cond1> AND <cond2> min(CDEG(<cond1>).2. AND y/o OR). pero FSQL permite modi.8 Si buscamos personas que son \necesariamente" mas altas que la etiqueta $Alta.

car las funciones a emplear. Para ello hay que modi.

y no solo uno de ellos. . La precedencia de los operadores logicos es la habitual. Obviamente. Tambien podemos usar un asterisco como argumento como se explica a continuacion. entonces calcula y muestra el grado de cumplimiento de la condicion para cada tupla. mientras que las funciones para el AND y para el OR tendran ambas dos argumentos numericos. Este calculo es efectuado co- mo se explico en el punto anterior pero teniendo en cuenta todos los atributos empleados en la condicion. AND y OR. esta funcion no es aplicable a dicho atributo.5. entonces.4..car la vista FSQL OPTIONS. Si el atributo indicado como argumento de CDEG no aparece en la condici on. Si el argumento de la funcion CDEG es un atributo. y en el apartado 5.  CDEG(*): Si esta funcion tiene un asterisco como argumento.3 se explica el tratamiento que el Servidor FSQL da a las llamadas a la funcion CDEG. entonces la funcion CDEG solo usa las condiciones que incluyen a ese atributo.1 se detalla el formato de la vista FSQL OPTIONS y como se cambian las funciones asociadas a los operadores logicos alterando su contenido. la funcion que se indique en esa vista debe estar implementada en el SGBD y el usuario debe tener acceso a la misma. i. En esta vista el usuario puede establecer las funciones a usar para cada uno de los 3 operadores logicos. de mayor a menor prece- dencia estan NOT.e. pero en vez de dar un error se procede a devolver grado 1 para todas las tuplas. En el apartado 5. La funcion para el NOT tendra un unico argumento numerico. Estas funciones pueden ser implementadas por un usuario particular para su uso per- sonal.3.

Difusa Signi.164 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Cte.

cado UNKNOWN Valor desconocido pero el atributo es aplicable (tipo 8 de la Tabla 2. UNDEFINED Atributo no aplicable o sin sentido (tipo 9 de la Tabla 2. .4).4). NULL Ignorancia total: No sabemos nada sobre eso (tipo 10 de la Tabla 2.4).

. . ] Distribucion de posibilidad trapezoidal ( .  $[ .

$label Etiqueta lingustica: Puede ser un trapecio o un escalar (de.  ): Ver Figura 5.2.

[n.m] Intervalo \Entre n y m" ( =.nidos en FMB).

#n Valor difuso \Aproximadamente n" (. =n y ==m).

su CDEG no es aplicable y por tanto no aparecera su CDEG si se usa el comodn %. como por ejemplo: Personas. Estos tipos son detallados en la Tabla 5. hubieramos querido obtener dos columnas mas con los grados de CDEG(Pelo) y CDEG(Altura). en el resultado tambien encon- traremos columnas donde la funcion CDEG esta aplicada a cada uno de los atributos que aparecen en la condicion. .2. pero este.1.14: Constantes difusas que pueden ser usadas en FSQL.1.]table.2 y los ejemplos de los apartados 5.  Constantes Difusas: En FSQL podemos usar diversos tipos de constantes difusas. esta constante sera entendida de la forma que lo haga el SGBD (si este lo permite). tambien incluye las columnas con el grado de cumplimiento de aquellos atributos relevantes. = =n y n{ ={n=margen en FMB). en el Ejemplo 5.1.1.%. { Si el atributo no es difuso y la constante de la derecha es NULL.5) NULL Observaciones sobre la condicion con IS: { Este tipo de condicion (sin NOT) sera cierta si el valor del atributo difuso de la izquierda (<Atributo Difuso>) es la constante situada a la derecha. Por supuesto. Si. al igual que el valor del margen para valores aproximados.2.10. Ver Ejemplos 5. este caracter puede ser tambien usado con el formato [[scheme.  Condicion con IS: Otra clase de condicion que podemos usar en FSQL tiene el si- guiente formato: 8 UNKNOWN < < Atributo Difuso > IS [NOT] : UNDEFINED (5. O sea. 5.8 y 5. En particular.14. Como se ha dicho anteriormente las etiquetas estan registradas en la FMB.  Caracter Comodn %: El empleo de este caracter es similar al del utilsimo caracter comodn * de SQL.]%. Si un atributo difuso no aparece en la clausula WHERE. podramos simplemente haber reemplazado el co- modn * por %. Tabla 5. ademas de incluir todas las columnas de las tablas in- dicadas en la parte FROM de la consulta.

SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 165 Oracle permite valores NULL7 como valor posible de los atributos.  5. { Si FEQ es usado en vez de IS el signi.2. aunque esto puede ser evitado estableciendo la restriccion NOT NULL en los comandos CREATE TABLE o ALTER TABLE.

2 ilustra el uso de este tipo de condicion.3) y no simplemente si el atributo es igual a la constante.  Cuanti.cado es distinto. El Ejemplo 5. Con FEQ se compara el grado de compatibilidad entre el atributo y la constante (ecuacion 4.

cadores difusos8 : Los cuanti.

cadores difusos [158. tanto absolutos como relativos pueden establecerse de la siguiente forma (similar a la de [22]). 164.9.2). 169] (apartado 2. cuyos signi. en sus dos modalidades.

cados se muestran a continuacion con unos ejemplos:  on difusa ) THOLD $Cuantificador FUZZY[ ] ( condici   $Cuantificador FUZZY[ ] ( condici on difusa1 ) ARE ( condici on difusa2 ) THOLD  donde $Cuantificador es un cuanti.

Esta precedido del smbolo $ para distinguirlo de otros identi.cador (absoluto o relativo).

cadores. algunos cuanti. Ademas.

1].  es un umbral opcional. normalmente en [0. que debe cumplir el cuanti.cadores relativos pueden llevar un argumento entre corchetes. La opcion FUZZY[] es opcional. al igual que su argumento . Igual que en comparaciones difusas simples.

tambien la palabra THOLD es opcional y tambien puede ser sustituida por cualquier comparador crisp tradicional. Aqu.cador para que la condicion sea evaluada como cierta (por defecto 1). modi.

cando el signi.

cado de la consulta. El uso de estos cuanti. La palabra THOLD es equivalente a usar el comparador crisp .

cadores y su signi.

Los comentarios pueden ser de 3 tipos: 1. de forma que ellos no seran tenidos en cuenta al analizarla y ejecutarla.2.  Comentarios: FSQL permite incorporar comentarios en las sentencias.1.cado se explicara en el apartado 5.3. Comentario hasta .

n de lnea: Con -.(dos guiones) se~nalamos que desde ese punto hasta el .

Comentario hasta . 3. Este tipo de comentarios es tambien valido en SQL y PL/SQL.nal de esa lnea es un comentario. Comentario de un bloque: Todo lo que este incluido entre las marcas /* y */ sera considerado como un comentario. 2. Este tipo de comentarios (estandar en el lenguaje C) es tambien valido en SQL y PL/SQL.

n de sentencia: Con /* se~nalamos que desde ese punto hasta el .

si no se cierra el comentario se supone que el comentario termina al . Es decir.nal de la sentencia es un comentario.

7 No debe confundirse el valor NULL del SGBD Oracle con el valor de la constante difusa NULL de la ecuacion 5. Este tipo de comentarios es propio de FSQL y generan un error si se usan en SQL o PL/SQL. siendo ignorado totalmente el resto de la sentencia. 8 Esta opcion no esta implementada en la presente version del Servidor FSQL.5 (o de la Tabla 5. Fukami et al. por lo que no esta contemplada en la gramatica del Apendice B. .14) que tiene el sentido difuso de Umano.nal. de [70] y [143].

75 (la palabra reservada THOLD no aparece porque es opcional). de forma que con este sistema aceleramos el proceso para este tipo de sentencias.350].75 AND Habitantes IS NOT UNKNOWN.200. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL  Evitar que una sentencia pase por el Servidor FSQL: En determinadas cir- cunstancias puede interesarnos que el Servidor FSQL no ejecute su funcion y se limite simplemente a operar como si no estuviera (de forma clasica). Para ello basta con incor- porar el smbolo ! (admiracion cerrada) como primer caracter de la sentencia enviada al Servidor.350. como si no estuviera.CDEG(Habitantes) FROM Poblacion WHERE Pais='Espa~na' AND Habitantes FGEQ $[200. en la tabla resultante.. con el resto de la sentencia.5 y no aparecera. en el resultado . se comportara. su grado de cumplimiento de la condicion sera 0. los valores y  del trapecio no seran usados. si el Servidor FSQL encuentra que el primer caracter de la sentencia es !.650. por tanto. ya que el Servidor FSQL no se ejecuta completamente.  Como usamos el comparador FGEQ.800] .2 Un ejemplo de consulta que muestre un grado de compatibilidad (usando CDEG). i. si el numero de Habitantes es crisp y menor o igual que 200 el grado sera cero. Esto es util si el programa Cliente FSQL no admite la posibilidad de enviar una sentencia SQL estandar. Ejemplo 5.75.e. el grado de cumplimiento de esa condicion sera 1. use una constante de tipo trapezoidal y evite los valores UNKNOWN podra ser: SELECT Ciudad.1]. As. si el numero de habitantes es crisp y excede de 350. Observaciones respecto a este ejemplo:  El umbral mnimo de cumplimiento esta establecido en 0.166 CAPITULO 5. O sea.150. Naturalmente.  Si una ciudad espa~nola tiene en el atributo difuso Habitantes la distribucion de po- sibilidad $[50. la columna CDEG(Habitantes) tendra valores en el intervalo [0.

tu Las consultas difusas reducen el riesgo de obtener respuestas vacas.75. ya que el umbral mnimo ha sido establecido en 0.nal. ya que permite utilizar una escala de discriminacion mas .

para debilitar las condiciones: 1. a veces puede ocurrir que no existan elementos que satisfagan el resultado de una consulta. Sin embargo. Es decir. pues en cada condicion simple. Umbrales: Modi.12): Existe una gran variedad y alternar el uso de comparadores entre posibilidad y necesidad puede resultar especialmente util. las consultas FSQL se muestran especialmente exibles.1g. Para solucionar ese posible problema.na: El intervalo [0. Comparadores difusos (Tabla 5. 2. podemos actuar sobre los siguientes parametros de consulta. permite recuperar tuplas en consultas que en modo crisp no se obtiene ninguna respuesta.1] en vez del conjunto f0.

.cando este valor podemos decidir el grado de importancia de las tuplas que buscamos para recuperar solo los elementos mas importantes.

 5.2. Usar comparadores clasicos en lugar de la palabra THOLD: Con esto podemos conseguir modi. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 167 3.

car el signi.

cado de la consulta. Constantes difusas (Tabla 5.14): Si la parte derecha de una condicion simple es una constante difusa esta puede ser modi. 4. podemos recuperar los elementos menos importantes usando el comparador < (o ). Tambien podemos recu- perar justo los elementos que cumplen la condicion con un determinado grado usando el comparador =. Por ejemplo.

Otra propuesta en este sentido [119] se basa en el clustering difuso de datos. O sea. como una alternativa. 6]. El debilitamiento de de consultas ha sido estudiado en [5. Este sistema aplica el algoritmo de clustering difuso C-means [16] para clasi. cuando no existen datos que satisfacen la consulta el sistema puede mostrar las clases de datos que s existen y provee la clase mas cercana a la consulta.cada para exibilizar la consulta y conseguir mejor nuestro objetivo.

car los datos en varios grupos difusos. representados por etiquetas lingusticas de.

con el comando SELECT al DML o Lenguaje de Manipulacion de Datos (igual que COMMIT y ROLLBACK) y su sintaxis es muy similar a la que tienen en SQL. 5. DELETE y UPDATE tambien pertenecen. INSERT DELETE y UPDATE Los comandos INSERT. modi.2 Otros Comandos: .2.nidas por funciones de pertenencia.1.

La gramatica asociada a cada uno de estos comandos esta tambien en el Apendice B. subconsultas difusas y condiciones difusas respectivamente. En sntesis.cando las expresiones. las modi. las subconsultas y las condicio- nes por expresiones difusas.

2. en la clausula WHERE de este comando se pueden utilizar las mismas condiciones difusas que en la clausula WHERE del comando SELECT de FSQL.5.5. tanto en los valores a insertar como en las relaciones en las que se insertan.1.  DELETE: En la clausula WHERE de este comando se pueden utilizar las mismas condiciones difusas que en la clausula WHERE del comando SELECT de FSQL.2. El comando DELETE de SQL esta explicado en el apartado 1. as como subconsultas difusas.2.  UPDATE: Los valores a actualizar podran ser expresiones difusas o subconsultas difusas. 5.2. El comando INSERT de SQL esta explicado en el apartado 1.2. explicado anteriormente.4.5. Ademas. El comando UPDATE de SQL esta explicado en el apartado 1.3 Cuanti.caciones de FSQL son las siguientes para cada uno:  INSERT:Podremos utilizar expresiones difusas como valores para la insercion.3. explicado anteriormente.

cadores en FSQL El uso de cuanti.

cadores ha sido muy estudiado.2. Aqu exponemos el uso que puede hacerse de ellos en FSQL.9. como se vio en el apartado 2. incorporando cuanti.

cadores con y sin argumentos. A traves de algunos ejemplos mostraremos la potencia de los cuanti.

Mostrar tambien el grado con el que cada equipo cumple el cuanti.75).3 Seleccionar los equipos de baloncesto que tienen muchos (con grado mnimo 0.cadores en FSQL: Ejemplo 5.5) jugadores altos y muy buenos (con umbrales 0.

cador: .

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 1 Q 1 Q 0 0 0.9: Dos cuanti.168 CAPITULO 5.75 1 a) b) Figura 5.5 0.75 1 0.25 0.

CDEG(*) FROM Jugadores GROUP BY Equipo HAVING $Muchos (Altura FEQ $Alto 0.75) THOLD 0.cadores difusos relativos.75 AND Calidad FEQ $Muy_Bueno 0. Observe que la condicion que requiere el cuanti. SELECT Equipo.5.

cador puede ser multiple y que el cuanti- .

cador muchos es un cuanti.

cador absoluto. que debera estar de.

75) ARE (Calidad FEQ $Muy_Bueno 0. tu Ejemplo 5.5) de sus jugadores altos son tambien muy buenos (con umbrales 0. Observe que CDEG(*). CDEG(*) FROM Jugadores GROUP BY Equipo HAVING $La_Mayoria (Altura FEQ $Alto 0.75) 0.4 Seleccionar los equipos de baloncesto en los que la mayora (con grado mnimo 0.nido en la FMB.5. cuando hay sentencias de grupo (GROUP BY). hace referencia a la condicion sobre el grupo (HAVING). El cuanti.75): SELECT Equipo.

cador la mayora es un cuanti.

que debera estar de.cador relativo.

por ejemplo. Observe que en este ejemplo no aparece la palabra opcional THOLD. teniendo el mismo signi.9 a).nido en la FMB con la forma. de la Figura 5.

se indica que la evaluacion del cuanti. tu La palabra reservada FUZZY es opcional y si aparece.cado que en el ejemplo anterior ().

Ejemplo 5.75): SELECT Equipo.75) 0. . sino el grado de cumplimiento de los mismos.cador es hecha sumando. CDEG(*) FROM Jugadores GROUP BY Equipo HAVING $Muchos_Mas_Que[3] (Altura FEQ $Alto 0. Con los siguientes ejemplos se aclarara este concepto.5 Seleccionar los equipos de baloncesto que tienen muchos mas que 3 (con grado mnimo 0.5) jugadores altos (con grado mnimo 0. no los elementos que cumplen la condicion.5.

SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 169 El cuanti.  5.2.

cador $Muchos_Mas_Que[3] es un cuanti.

que supondremos que esta de.cador relativo con un argumento.

4 jugadores que son altos con grado mnimo 0.75. tiene 4 jugadores que cumplen con la condicion. Si un equipo. por ejemplo. este equipo cumple con el cuanti. entonces. es decir.nido en la FMB como una funcion Q de la Figura 5.9 b).

Por tanto. dicho equipo cumple con el cuanti. Entonces.- cador en grado Q(3=4) = Q(0:75) = 0. ya que se exige 0. Supongamos otro equipo que tiene 6 jugadores que cumplen con la condicion.5 como grado mnimo. dicho equipo no aparecera en el resultado.

cador en grado Q(3=6) = Q(0:5) = 0:5. un equipo que tenga 12 jugadores que cumplan con la condicion. Por tanto. dicho equipo s aparecera en el resultado. As. cumplira con el cuanti.

si un equipo tiene n jugadores que cumplen con la condicion. su grado de cumplimiento del cuanti. tu En el ejemplo anterior.cador en grado Q(3=12) = Q(0:25) = 1.

cador no depende del grado con el que esos n jugadores cumplan la condicion.75 todos ellos tendra el mismo grado de cumplimiento del cuanti. un equipo con n jugadores altos en grado 0. O sea.

lo que es lo mismo que o son altos con grado mnimo 0. o. que la cumplen o no la cumplen. Esto puede ser conseguido en FSQL utilizando la palabra reservada FUZZY tras el cuanti. hay otro metodo [169] que considera el conjunto de los elementos que cumplen la condicion como difuso. o sea. Sin embargo.75 o no lo son.cador que un equipo con n jugadores altos en grado 1 todos ellos. en el ejemplo anterior se ha considerado que el conjunto de los jugadores que cumplen la condicion es crisp. En sntesis.

cumple el cuanti. considerando el conjunto de los jugadores que cumplen la condicion como difuso: SELECT Equipo FROM Jugadores GROUP BY Equipo HAVING $Muchos_Mas_Que[3] FUZZY (Altura FEQ $Alto 0. As. sino sumar los grados de cumplimiento de esos elementos. por ejemplo.5.75). En este metodo lo que se hace no es contar el numero de elementos que cumplen la condicion.cador.5) jugadores altos (con grado mnimo 0.6 Seleccionar los equipos de baloncesto que tienen muchos mas que 3 (con gra- do mnimo 0. un equipo con 6 jugadores que cumplen todos ellos con la condicion en grado 1. Ejemplo 5.75) 0.

75). Sea otro equipo. tambien con 6 jugadores que cumplen la condicion. de ellos 2 la cumplen en grado 1 y 4 en grado 0. En este caso. el equipo cumple el cuanti. la sumatoria de los grados de cumplimiento es 5 (2*1+4*0.cador en grado Q(3=6) = Q(0:5) = 0:5. pero.75.

cador en grado Q(3=5) = Q(0:6) = 0:3 y. no sera seleccionado en el resultado . por tanto.

al evaluar el cuanti.nal. tu Puede usarse un argumento  2 [0. de forma que FUZZY[] indique que. 1].

As.cador. tal y como se explico en el apartado 4. se tengan en cuenta ambos valores (sin la palabra FUZZY y con ella).5 (expresion 4. Un cuanti. ponderando el primero de ellos (sin FUZZY) con la importancia que indique  y el segundo valor (con FUZZY) con la importancia  1.29). poner FUZZY[0] es equivalente a poner FUZZY y poner FUZZY[1] es equivalente a no poner nada.

cador difuso del tipo $Muchos_Menos_Que[n] puede ser modelado de la misma forma que el cuanti.

donde . de forma que ahora se aplica Q al resultado de la division t=n (y no a n=t).cador del ejemplo anterior (Figura 5. pero invirtiendo los operandos de la division.9 b)).

estos cuanti. As. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL A B 1 ε 0 αA βA γA αB δA βB γB δB Figura 5. t es la suma de los elementos que cumplen la condicion.170 CAPITULO 5.10: Comparacion de dos distribuciones de posibilidad trapezoidales. la suma del grado de cumplimiento de la misma o la ponderacion de ambas usando .

cadores deberan ser identi.

para indicar al Servidor FSQL como deben ser aplicados.1. 5.2.cados segun su tipo en la FMB (en la tabla FUZZY OBJECT LIST).4 De.

entre s o con contantes (difusas o crisp). no podemos decir si el valor \Rubio" es mayor que el valor \Moreno".12) pueden usarse para comparar atributos difusos. Para atributos difusos Tipo 3 solo esta permitido usar el comparador difuso FEQ. Por ejemplo. La de. ya que no existe una relacion de orden en el dominio de estos atributos. pero si podemos medir su similitud.nicion de los Comparadores Difusos de FSQL para Atributos Difusos Tipo 1 o 2 Los comparadores difusos (Tabla 5.

2.nicion de este comparador para este Tipo de atributos difusos se explica mas adelante en el apartado 5. El caso mas general es el Trapecio Difuso. por ejemplo. As. pues este tipo de valor engloba a todos los demas. un valor aproximado #n es una distribucion de posibilidad triangular donde .14.7.1. En atributos difusos Tipo 2 podemos almacenar valores crisp {como en los Tipo 1{. pero ademas podemos almacenar valores como los expresados en la Tabla 5.

Igualmente. un valor intervalo [n.m] puede verse como un trapecio en el que =. = =n y n = n=margen y el valor para el margen es almacenado en la FMB (atributo MARGEN de la tabla FUZZY APPROX MUCH) para cada atributo de cada relacion.

=n y ==m. que es el caso mas general. Por tanto. el Servidor FSQL tiene en cuenta los tipos de distribuciones de posibili- dad que hay que comparar en cada momento para observar sus peculiaridades y aumentar la e. Como se vera mas adelante. aqu nos centraremos en el estudio de los comparadores difusos cuando com- paramos dos distribuciones de posibilidad trapezoidales.

ciencia de cada comparacion.. Supondremos que deseamos comparar dos distribuciones de posibilidad cualesquiera que denotaremos por A=$[ A .) las comparaciones seran mas rapidas que si hay muchos trapecios. si en una relacion hay muchos valores crisp (o muchos intervalos.. As.

A ] y B=$[ B .A . A .

El resultado de esta comparacion dependera.B .12) empleado. del comparador difuso (Tabla 5. naturalmente. como por ejemplo las que estan representadas en la Figura 5. B . Usaremos tambien la funcion CDEG.B ]. para expresar el grado de compatibilidad de una comparacion difusa.10. A continuacion de.

nimos cada uno de los comparadores difusos: .

p0 )2U U = sup min (A(d). B(d)) (5. en que medida son posiblemente similares.10 obtenemos que las distribuciones A y B tienen un grado de compatibilidad de ". se usa la ecuacion: CDEG(A FEQ B) = sup min (= (p. Este grado se calcula por la ecuacion: CDEG(A NFEQ B) = dinf 2U max (1 A(d). Con otros comparadores distintos de la igualdad difusa.7) d2U donde U es el dominio subyacente a ambas distribuciones de posibilidad y A(d) es el grado de posibilidad para el valor d 2 U en la distribucion de posibilidad A. Posible- mente Igual): Para comparar dos distribuciones de posibilidad A y B (trapezoidales) y obtener el Grado de Compatibilidad entre ellas. p0 ). La funcion =.2. A(p). CDEG(B NFEQ A) =0.  Comparador Difuso NFEQ (Necessarily Fuzzy EQual.6) (p.  5. Observe que este comparador difuso es el unico que posee la propiedad conmutativa. lo que es lo mismo. B(d)) (5. toma el valor 1 si sus argumentos son iguales y 0 si son diferentes.8) En el ejemplo de la Figura 5. se modi. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 171  Comparador Difuso FEQ (Fuzzy EQual. o. Necesariamente Igual Difuso): Este comparador mide el grado de necesidad (u obligatoriedad) que existe para que una distribucion sea (o este incluida en) otra. Igual Difuso. B(p0 )) (5.Possibly Equal.10 tenemos que: CDEG(A NFEQ B) =0. CDEG(A FEQ B). En el caso de la Figura 5.

tal y como se hace en la ecuacion 5.  Comparadores Difusos FGT/NFGT (possibly/Necessarily Fuzzy Greater Than. Posiblemente/Necesariamente Mayor Difuso): Para obtener el grado de compa- tibilidad con el que una distribucion de posibilidad A es posiblemente/necesariamente mayor que otra B se utilizan la siguientes ecuaciones: 81 si A  B < A B CDEG(A FGT B) = : 0( B B ) ( A A ) si A < B y A > B (5. Ademas.8.ca la distribucion de posibilidad de la parte derecha de la comparacion.11. tal y como se expresa en la Figura 5. en los comparadores difusos de necesidad se niega la distribucion de posibilidad de la parte izquierda de la comparacion.9) en otro caso (A  B ) 81 si A  B < .

A B CDEG(A NFGT B) = : 0( B B ) ( A .

A ) si A < B y .

10) en otro caso (.A > B (5.

A  B ) .

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL A 1 0 αA βA γA δA FGT A 1 0 αA βA γA δA FGEQ A 1 0 αA βA γA δA FLT A 1 0 αA βA γA δA FLEQ A 1 0 αA βA γA δA Figura 5.172 CAPITULO 5.11: Modi.

.cacion de la parte derecha de una comparacion difusa segun el comparador difuso empleado.

SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 173 A B 1 ε 0 αA βA γA αB δA βB γB δB 1-B FGT A 1 1−ε 1-B 0 αA βA γA αB δA βB γB δB Figura 5.2.12: Representacion gra.  5.

donde su grado de compa- tibilidad es 1 ". CDEG(A NFGT B) = 0 .10 obtenemos que: = 0 .12 hay un ejemplo gra. CDEG(A FGT B) = 1 . CDEG(B NFGT A) = 1 " . CDEG(B FGT A) En la Figura 5.ca de la comparacion B NFGT A. En la Figura 5.

Observese como se niega la distribucion B y se modi.co de la comparacion de necesidad B NFGT A.

 Comparadores Difusos FGEQ/NFGEQ (possibly/Necessarily Fuzzy Greater or EQual Than. Posiblemente/Necesariamente Mayor o Igual Difuso): 81 si A  .ca la distribucion A segun el comparador empleado.

B < A B CDEG(A FGEQ B) = si A < .

11) : 0(.B y A > B (5.

B B ) ( A A ) en otro caso (A  B ) 81 si A  .

B < .

A B CDEG(A NFGEQ B) = : 0(.

B B ) ( A .

A ) si A < .

B y .

A > B (5.12) en otro caso (.

CDEG(B NFGEQ A) =1.10 obtenemos que: CDEG(A FGEQ B) =". CDEG(A NFGEQ B) =0.A  B ) En la Figura 5. CDEG(B FGEQ A) =1. .

Po- siblemente/Necesariamente Menor Difuso): 81 si .174 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL  Comparadores Difusos FLT/NFLT (possibly/Necessarily Fuzzy Less Than.

A  B < A .

B CDEG(A FLT B) = : 0( B .

B ) (.

A A ) si .

A > B y A < .

B (5.13) en otro caso ( A  .

B ) 81 si A  B < A .

B CDEG(A NFLT B) = : 0( B .

B ) (A A ) si A > B y A < .

14) en otro caso ( A  .B (5.

CDEG(B NFLT A) =0. CDEG(A NFLT B) =1 ".10 obtenemos que: CDEG(A FLT B) =1.  Comparadores Difusos FLEQ/NFLEQ (possibly/Necessarily Fuzzy Less or EQual Than.B ) En la Figura 5. Posiblemente/Necesariamente Menor o Igual Difuso): 81 si . CDEG(B FLT A) =0.

A  B < B A CDEG(A FLEQ B) = si .

15) : 0(.A > B y A < B (5.

16) en otro caso ( A  B ) En la Figura 5. CDEG(B NFLEQ A) = 0 . CDEG(B FLEQ A) En los comparadores que usan la expresion \Mucho" (mucho mayor/menor que). Tambien con estos comparadores se modi. CDEG(A NFLEQ B) = 1 . A A ) ( B B ) en otro caso ( A  B ) 81 si A  B < A B CDEG(A NFLEQ B) = : 0( B B ) (A A ) si A > B y A < B (5. se usa la distancia M (almacenada en el atributo MUCH de la tabla FUZZY APPROX MUCH de la FMB).10 obtenemos que: = 1 . CDEG(A FLEQ B) = " .

Entonces. en la FMB se almacena un valor para cada atributo difuso Tipo 1 o 2 que indica la distancia mnima para que 2 valores de ese atributo sean considerados como muy separados (atributo MUCH de la tabla FUZZY APPROX MUCH).ca la distribucion de la parte derecha de la compa- racion.  Comparadores Difusos MGT/NMGT (possibly/Necessarily Much Greater Than. Sea M esta distancia.13 (donde M=M ). Posiblemente/Necesariamente Mucho Mayor difuso): Como ya hemos indicado. para obtener el grado de compatibilidad con el que A es posiblemente/necesariamente mucho mayor que B. tal y como se muestra en la Figura 5. para un atributo con dos valores cualesquiera A y B. se utilizan las siguientes ecuaciones: 81 si A  B + M < +M  CDEG(A MGT B) = : 0(  ) ( ) A B A B A B si A < B + M y A > B + M (5.17) en otro caso (A  B + M) .

M αA βA γA δA M Figura 5.13: Modi. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 175 A 1 0 αA βA γA δA MGT A 1 0 αA βA γA δA γ A+ M δ A+ M M MLT A 1 0 αA.2.M βA.  5.

.cacion de la parte derecha de una comparacion difusa segun el comparador difuso \Mucho Mayor/Menor que" empleado.

176 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 81 si A  B + M < +M .

CDEG(A NMGT B) = : 0( .

) ( ) A B A B A B si A < B + M y .

18) en otro caso (.A > B + M (5.

10. supondremos otra distribucion de po- sibilidad A'=A M= $[ A M.A  B + M) Ademas de las distribuciones de la Figura 5.

CDEG(B MGT A') = 1 . CDEG(A MGT A') = 0 . CDEG(A' NMGT B) = 0 . CDEG(A NMGT A) = 0 . se obtiene que: CDEG(A MGT B) = 0 . CDEG(B MGT A) = 0 . CDEG(A' MGT B) = 0 . CDEG(B NMGT A') = 1 ". Si comparamos con los comparadores MGT/NMGT estas 3 distribuciones de posibilidad de ejemplo. CDEG(A NMGT B) = 0 . A M. Po- siblemente/Necesariamente Mucho Menor difuso): 81 si . CDEG(B NMGT A) = 0 .A M.A M]. CDEG(A' NMGT A) = 0 .  Comparadores Difusos MLT/NMLT (possibly/Necessarily Much Less Than. CDEG(A' MGT A) = 0 .

A  B M < .

M CDEG(A MLT B) = : 0(.

) ( .

) A B A B A B si .

A > B M y A < .

19) en otro caso ( A  .B M (5.

B M) 81 si A  B M < .

B M A CDEG(A NMLT B) = : 0( A A ) ( B .

B ) si A > B M y A < .

B M (5.20) en otro caso ( A  .

B M) En el caso de la Figura 5. y con la distribucion A' de.10.

CDEG(A MLT A') = 0 .2. CDEG(B MLT A) = 0 . CDEG(A' MLT A) = 0 . CDEG(A' MLT B) = 1 .nida anteriormente. CDEG(A NMLT B) = 0 . CDEG(A' NMLT A) = 0 . CDEG(A NMLT A) = 0 .1. 5. CDEG(B MLT A') = 1 .5 Equivalencias entre Comparadores Difusos y Excepciones a sus De. CDEG(B NMLT A) = 0 . CDEG(B NMLT A') = 0 . CDEG(A' NMLT B) = 1 ". se obtiene que: CDEG(A MLT B) = 0 .

ni- ciones De las de.

Los comparadores difusos de. en modo crisp se cumple que la comparacion A>B es equivalente a la comparacion B<A.e. i..niciones de todos estos comparadores difusos podemos obtener que hay comparado- res difusos que son equivalentes entre s con solo intercambiar de orden los valores comparados. consiguen igual grado de cumplimiento. Por ejemplo.

nidos anteriormente muestran las siguientes equivalencias: .

 5.21 obtenemos que el comparador FEQ cumple la propiedad conmutativa. es el unico comparador difuso que cumple tal propiedad. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 177 A FEQ B  B FEQ A (5.25) A NMGT B  B NMLT A (5.2. De hecho.24) A NFGT B  B NFLT A (5.26) De la ecuacion 5.21) A FGT B  B NFLEQ A (5.22) A FLT B  B NFGEQ A (5.23) A FGEQ B  B FLEQ A (5. Estas equivalencias se cumplen siempre. por de.

Sin embargo. aunque en algunas comparaciones determinadas el valor a devolver debera ser 1. el Servidor FSQL incorpora unas excepciones en aras de la claridad.7 En las comparaciones siguientes. el grado de compatibilidad entre ambas cons- tantes es 1. siguiendo la de. utilizando un comparador de necesidad. Ejemplo 5.nicion. un valor con una constante difusa UNKNOWN. Estas excepciones se producen cuan- do se compara. UNDEFINED o NULL. En esos casos se devuelve siempre un grado de compa- tibilidad 0 (cero).

200] NFLT UNKNOWN 8 NFGT NULL Sin embargo. por lo que no parece logico que se recuperaran tuplas con valores como UNKNOWN en el atributo utilizado en la seleccion. tu Estas excepciones hacen que se devuelva el valor que intuitivamente uno espera obtener. al usar un comparador de necesidad se esta indicando claramente que se desean recuperar pocas e interesantes tuplas.4] NFEQ UNKNOWN [100.nicion de comparador difuso empleado: UNDEFINED NFEQ #8 $[1. Ademas. uno espera obtener un valor nulo cuando estudia la necesidad de que cualquier valor difuso sea UNKNOWN (desconocido). Por otra parte.2.3. el Servidor FSQL devuelve 0 (cero) como grado de compatibilidad de esas comparaciones. Si en la base de datos difusa hay almacenada una etiqueta que no esta de. en el segundo caso. Por ejemplo. si se desea obtener todas aquellas tuplas que posiblemente cumplen la condicion de la seleccion se debe entonces utilizar un comparador de posibilidad y no de necesidad. que es el valor que uno espera obtener.

Aparentemente.e. la condicion sera evaluada como \falsa" para esa tupla. otra posible inconsistencia es que el tipo del valor difuso que se almacena no sea correcto.. este error no debera producirse nunca pues al declarar la tabla con CREATE TABLE se debera incorporar una restriccion que chequeara (CHECK) esa condicion e impidiera la insercion de valores incorrectos. no esta entre 0 y 7 para atributos difusos Tipo 2 o no esta entre 0 y 4 para atributos difusos Tipo 3. entonces la comparacion devolvera el valor NULL (en el sentido del SGBD) y por tanto. i. Sin embargo. tal y como se de.nida en la tabla FUZZY OBJECT LIST de la FMB.

.ne en el apartado 5.2.2.

por familias. los comparadores mas restrictivos recuperaran menor o igual cantidad de tuplas y las tuplas recuperadas nunca tendran un grado de cumplimiento mayor que con los comparadores menos restrictivos. 5. O sea.1. el resultado del comparador \>=" incluye al de \>".1.2.15: Restrictividad de los comparadores difusos por familias. Por ejemplo. en modo crisp. 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Familia Comparadores difusos.178 CAPITULO 5.15 se puede ver el orden de restrictividad de los comparadores difusos.2. Observe que cualquier comparador de necesidad es mas restrictivo que su corres- pondiente comparador de posibilidad. de mayor a menor restrictividad Igual difuso NFEQ > FEQ Mayor difuso NFGT > FGT > NFGEQ > FGEQ Menor difuso NFLT > FLT > NFLEQ > FLEQ Mucho Mayor difuso NMGT > MGT Mucho Menor difuso NMLT > MLT Tabla 5.7 De. En la Tabla 5. Decimos entonces que el comparador \>" es mas restrictivo que \>=".6 Restrictividad de los Comparadores Difusos Hay comparadores cuyos resultados de comparacion incluyen unos a otros.

tengan grado de posibilidad 1.1]. 2 : : : LENX (5. Lo normal (y deseable) es que tanto los valores simples como las distribuciones de posi- bilidad sobre atributos difusos Tipo 3 esten normalizadas. ya que no existe una relacion de orden en el dominio de estos atributos. As. pero si podemos medir su similitud.nicion del Comparador Difuso FEQ para Atributos Difusos Tipo 3 Como ya hemos indicado. cuando comparamos dos valores de tipo simple entre s. asociados a dichas etiquetas respectivamente. LENF y LENX indican el . para atributos difusos Tipo 3 solo esta permitido usar el compa- rador difuso FEQ..29) siendo labelFi y labelXj etiquetas lingusticas que pertenecen al mismo atributo y por tanto se pueden comparar con su relacion de similitud. Supongamos que deseamos comparar dos distribuciones de posibilidad cualesquiera.e.. el valor devuelto es el valor almacenado en su relacion de similitud (tabla FUZZY NEARNESS DEF) suponiendo que ambos valores esten normalizados. no podemos decir si el valor \Rubio" es mayor que el valor \Moreno". sobre las etiquetas ling usticas de un atributo difuso Tipo 3: F FEQ X (5.e. en [0. Los valores FPi y XPj son los grados de posibilidad. Por ejemplo. si eso no ocurriera el Servidor FSQL lo tiene en cuenta en la comparacion. i. i. Sin embargo. 2 : : : LENF (5. tengan grado de posibilidad 1 al menos en alguna componente.28) X = fXPj =labelXj g con j = 1.27) donde F= fFPi =labelFi g con i = 1. F y X.

labelXj ) expresa el grado de similitud entre ambas etiquetas. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 179 numero de parejas fgrado. lo que es lo mismo.27. labelXj )  FPi  XPj g (5.  5.30) donde (labelFi . Entonces. viene dado por: CDEG(F FEQ X) = i=1:::LENmax F . el cual debe estar almacenado en la tabla FUZZY NEARNESS DEF de la FMB.2.etiquetag de las distribuciones de posibilidad F y X respectivamente. o. el grado de compatibilidad entre F y X. con LENF  1 y LENX  1.j =1:::LENX f(labelFi. La ecuacion anterior se simpli. el grado de cumplimiento de la condicion de la ecuacion 5.

31) Si para una pareja de etiquetas no esta de. label)  FPi g (5.ca si la comparacion es efectuada directamente sobre una etiqueta ($label=labelX1 que se supone con posibilidad XP1 =1): CDEG(F FEQ $label) = i=1max :::LENF f(labelFi.

Estas condiciones pueden ser enlazadas con otras condiciones (difusas o no) mediante los operadores logicos (NOT. podemos concluir que existen 8 tipos basicos de comparaciones o condicio- nes difusas elementales (sin expresiones aritmeticas externas). 5. Sean <fcol> y <fcol2> dos atributos difusos expresados con el formato de SQL (con su esquema y tabla o no) y <fcomp> un comparador difuso de los de. AND y OR) para formar condiciones difusas m as complejas.nido su grado de similitud en la FMB.1. Con y Sin Expresiones Aritmeticas Por todo lo visto.8 Tipos de Condiciones Difusas Elementales.2. este se supone que es cero.

12.nidos en la Tabla 5. Comparacion de un atributo difuso Tipo 1 o 2 con una distribucion de posibilidad constante de tipo trapecio $[ . los 8 tipos basicos de condiciones difusas son los siguientes: 1.4): <fcol> <fcomp> #n 2.5): <fcol> <fcomp> [n. Comparacion de un atributo difuso Tipo 1 o 2 con una distribucion de posibilidad constante de tipo intervalo [n. Comparacion de un atributo difuso Tipo 1 o 2 con una distribucion de posibilidad constante de tipo aproximado #n (como la Figura 5. Entonces.m] 3.m] (como la Figura 5.

.] (como la Figura 5.2): <fcol> <fcomp> . .

] 4. 2 o 3) con una distribucion de posibilidad constante de tipo etiqueta lingustica $label (de. .  $[ . . Comparacion de un atributo difuso de cualquier Tipo (1.

nida en la FMB): .

Ver Ejemplo 5. 8. de forma que la condicion establecida solo sera valida si su grado de cumpli- miento supera dicho umbral.9 y 5. Comparacion de un atributo difuso con una constante difusa sin argumentos variables usando el comparador difuso FEQ: 8 UNKNOWN < < fcol > FEQ : UNDEFINED NULL En este tipo de comparacion no puede emplearse otro comparador difuso distinto de FEQ y la columna <fcol> no puede ser difusa Tipo 1. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL <fcol> <fcomp> $label 5. Ver Ejem- plos 5. Comparacion de un atributo difuso de cualquier Tipo con otro que sea compatible con el primero: <fcol> <fcomp> <fcol2> La unica incompatibilidad que existe entre atributos difusos esta entre atributos de Tipo 3 con atributos de otro tipo y con otros atributos de Tipo 3 que no sean declarados explcitamente como compatibles en la tabla FUZZY COMPATIBLE COL. A todas estas condiciones difusas. menos a la ultima.180 CAPITULO 5. Las comparaciones difusas (excepto IS) pueden ir precedidas o sucedidas por expresiones aritmeticas que operan con la comparacion difusa. se le pueden poner un umbral de cumplimiento.10 expuestos a continuacion. 6. estas seran consideradas como externas a la comparacion difusa. Si el atributo de la derecha es difuso Tipo 2 o 3 y tras este aparecen operaciones aritmeticas. de forma que estas son consideradas como externas a la comparacion difusa. Comparacion de un atributo difuso con una constante difusa sin argumentos variables usando la comparacion con IS (con o sin NOT): 8 UNKNOWN < < fcol > IS [NOT] : UNDEFINED NULL Si la columna <fcol> es difusa Tipo 1 solo puede usarse la constante NULL. 7.8 expuesto a continuacion. El Servidor FSQL limita las expresiones aritmeticas despues de la comparacion difusa de forma que estas solo pueden aparecer: . que tendra el sentido que le da el SGBD y no es el NULL difuso. Comparacion de un atributo difuso Tipo 1 o 2 con una expresion constante de tipo crisp <expr crisp>: <fcol> <fcomp> <expr crisp> En la expresion crisp tambien puede incluirse una columna crisp o difusa Tipo 1 de cualquier tabla.

logicamente. toda la expresion debe ser crisp y situada a la derecha del comparador difuso. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 181 1. 2. Cuando justo tras el comparador aparece un atributo difuso Tipo 2 o 3: Entonces. Si aparece un atributo difuso Tipo 2 o 3 en una expresion aritmetica tras el comparador. La comparacion difusa se efectuara sobre toda la expresion. entonces el tratamiento para este atributo puede ser con.  5. ya que el Servidor FSQL no admite operaciones aritmeticas sobre atributos difusos Tipo 2 o 3. A la izquierda debe haber. un atributo difuso Tipo 1 o 2. Cuando queremos comparar una expresion crisp (caso 5): Entonces.2. pero este atributo no esta justo despues del comparador. las expresiones aritmeticas que sucedan a ese atributo difuso seran consideradas como externas a la comparacion.

las variaciones en el valor de Comision in uiran en el valor de .25.5 debe ser mayor o igual que el umbral 0.1. entonces. las variaciones en el valor de Tasa no in uyen ahora en el valor de . Si llamamos a ese grado de compatibilidad entonces. la comparacion es equivalente a: (0:5  )  0:25 Observe que la expresion crisp tras FGT es considerada como un unico valor crisp que es comparado con Sueldo. tu Ejemplo 5. multiplicado por 0. la siguiente comparacion difusa es correcta: 0.9 Siguiendo el ejemplo anterior y suponiendo que Sueldo es un atributo difuso Tipo 2 y Tasa es Tipo 1.25 expresa que el grado de compatibilidad con el que el atributo Sueldo (que suponemos Tipo 1 o 2) es \posiblemente mayor" que la expresion crisp que le sigue (donde Comision es un atributo numerico crisp o difuso Tipo 1). Si llamamos al grado de compatibilidad con el que Tasa es \necesariamente menor difuso que" Sueldo.8 La siguiente comparacion difusa con expresiones aritmeticas: 0. A continuacion exponemos una serie de ejemplos que muestran la gran variedad de tipos de comparaciones difusas con expresiones aritmeticas que pueden efectuarse. Si fuera de Tipo 1 sera considerada como un unico valor crisp (como en el ejemplo anterior). Por tanto.25 La expresion aritmetica tras Sueldo es considerada como externa.5 * Tasa NFLT Sueldo-5*SQRT(Tasa) THOLD 0.5 * Sueldo FGT SQRT(Comision)+3/4 THOLD 0. tal y como se explica en el apartado 5.gurado por el usuario. tu . la comparacion es equivalente a: p (0:5  5  Comision)  0:25 Observe que tanto las expresiones aritmeticas anteriores como posteriores a la comparacion difusa son consideradas como externas a ella y. Ejemplo 5. por tanto.4. ya que Sueldo es de Tipo 2.

tu Ejemplo 5.35 * SQRT(Estado) * Sueldo NFGEQ $[2.3.25 expresa que el grado de compatibilidad con el que el atributo Sueldo (que suponemos Tipo 1 o 2) es \posiblemente mayor" que \aproximadamente 5".5]. si utilizamos atributos difusos Tipo 3 de distintas tablas. tu Ejemplo 5.25.182 CAPITULO 5. igual que si se utiliza un trapecio. Si llamamos a ese grado de compatibilidad entonces.11 La siguiente comparacion difusa con expresiones aritmeticas: 0. la condicion equivalente sera p (Plus 0:5 + 0:35  Estado  ) = 35 donde aqu es el grado con el que el Sueldo es \necesariamente mayor o igual" que el trapecio $[2. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Ejemplo 5.4. Profesion. Observese que hemos cambiado la palabra reservada THOLD por el comparador crisp =.5 debe ser mayor o igual que el umbral 0.4.50 + 0. la comparaci on es equivalente a: p (0:5  5 Comision)  0:25 Observe que tanto las expresiones aritmeticas anteriores como posteriores a la comparacion difusa son consideradas como externas a ella. El signi.12 La comparacion difusa puede ser mas elaborada que en el ejemplo anterior: Plus . una etiqueta o cualquier otra constante difusa. la comparacion es equivalente a: (0:5  )  0:25 Tras la constante #5 no se pueden a~nadir operaciones aritmeticas9 . tambien es correcta la siguiente comparacion difusa: 0.0.3.10 De igual forma que en el ejemplo anterior. entonces. multiplicado por 0.5 * Empleado.25 Si llamamos al grado de compatibilidad con el que el valor de Profesion de la tabla Empleado es similar al valor de Profesion de la tabla Personas. Entonces.Profesi on-5*SQRT(Comision) THOLD 0.5] = 35 donde Estado y Plus las suponemos como columnas crisp (o difusas Tipo 1).Profesion FEQ Personas.5 * Sueldo FGT #5 THOLD 0.

tu 9 Esta limitacion podra ser subsanada en posteriores versiones del Servidor FSQL.5.cado de esta condicion es que tiene que ser igual a 35 el resultado de multiplicar . 0. Para ello.35 y la raz cuadrada del Estado y despues sumarle el valor de Plus y restarle 0. habra que modi.

car la gramatica para que admita ese tipo de expresiones. .

13 Por ejemplo. FSQL permite este tipo de comparacion. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 183 5.  5.n. cuando comparamos un atributo difuso Tipo 1 con un valor crisp mediante un com- parador difuso. pues desde cierto punto de vista no tiene sentido comparar difusamente dos valores crisp.4.2. usando comparadores difusos. o varios (>= y <=). Esto podra considerarse como erroneo.m. es decir el cuanti. utilizando un comparador difuso.5). As. lo que se hace es difuminar el valor situado a la derecha de la comparacion. dos atributos difusos Tipo 1 (crisp) o un atributo difuso Tipo 1 con una expresion de tipo crisp (incluyendo ah atributos no difusos). dandole un matiz que puede resultar muy util y que no se consigue utilizando comparadores crisp clasicos. Sin embargo. Con los comparadores del tipo \Mucho Mayor/Menor que". las siguientes dos comparaciones difusas son equivalentes: <fcol t1> FGT 6 <fcol t1> FGT #6 En el primer caso se difumina implcitamente el 6 y en el segundo explcitamente. Si no se desea que se difumine se debe emplear un comparador crisp. tambien se difumina el intervalo convirtiendose en el trapecio $[n-margen. se difumina ademas el valor crisp situado a la izquierda de la comparacion tambien a un valor aproximado con el mismo margen.2. Por eso. es obligatorio que a la izquierda del comparador difuso exista siempre un atributo difuso.m] (Figura 5.1. si <fcol_t1> es un atributo difuso Tipo 1. Si en la comparacion difusa no se desea que se difumine el valor de la derecha entonces.9 Comparacion de Valores Crisp Usando Comparadores Difusos Observese que FSQL permite comparar. utilizando el margen pa- ra valores aproximados del atributo situado a la izquierda de la comparacion.m+margen] (Figura 5. convirtiendolo a un valor aproximado. como en BETWEEN n AND m. cuando se compara un atributo difuso Tipo 1 con un intervalo [n.2). Si no se desea difuminar usar el comparador crisp > en el primer caso. Ejemplo 5. MGT/NMGT y MLT/NMLT. debiendose entonces utilizar los comparadores crisp clasicos. del tipo de la Figura 5. tu Igualmente. se debe utilizar un comparador crisp clasico y no un comparador difuso. Esto se hace as porque estos comparadores son difusos \per se ".

5 se debe a que el difuminado de ambos valores se hace con el mismo margen. i. Supongamos que tenemos una base de datos Relacional Difusa sobre jugadores de balon- cesto.1. O sea. estos comparadores no proceden de difuminar comparadores clasicos ya existentes. ahora obtienen un grado que estara en el intervalo (0. sin que exista una version clasica para ellos. al difuminar ambos valores en estos comparadores conseguimos que la compa- racion sea mas gradual.0.e. El valor 0..16.cador \Mucho" incluye un matiz difuso extra que no tienen los demas comparadores. .10 Ejemplos de Consultas en FSQL Con los siguientes ejemplos intentamos mostrar la potencia del comando SELECT con su ex- tension difusa de FSQL. con lo que la inclinacion de los lados del triangulo posibilstico es la misma en ambos casos. valores que obtendran grado cero si no se hiciera as. Una relacion de la base de datos podra ser la relacion Jugadores de la Tabla 5. Por eso. sino que son difusos por s mismos. 5.5].2.

La distancia mnima para considerar dos valores muy separados (atributo MUCH de la tabla FUZZY APPROX MUCH) es 12 para el atributo Altura y 15 para el atributo Calidad.n+10]). Ademas.16: Relacion difusa Jugadores.35. Los campos Altura (que almacena la altura del jugador) y Calidad (que mide la calidad del jugador segun el numero de puntos medio por partido).12. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL H Jugador Equipo Altura Calidad B P1 Cordoba Bajo $[30. sabemos que en la FMB esta almacenado el valor 10 para el margen de los valores aproximados del atributo Calidad (atributo MARGEN de la tabla FUZZY APPROX MUCH). Eso indica que el valor \aproximadamente n" (#n) expresa la distribucion de posibilidad triangular expresada por n10 (trapecio $[n{10.34.40.45] P2 Cordoba Muy Alto $[2.25] P19 Jaen Normal #25 Tabla 5. En este contexto no tienen sentido los valores \Unde. Nosotros.n.15] P3 Granada Normal Regular P4 Granada 192 Regular P5 Granada Alto #10 P6 Malaga 198 Malo P7 Malaga Muy Alto #35 P8 Malaga 170 $[31. para el ejemplo.38.15.7.n. la relacion Jugadores puede incluir valores \Unknown" en el caso de que desconozcamos totalmente la Altura o la Calidad de un jugador.10. Por supuesto. son atributos difusos Tipo 2.38] P9 Sevilla Bajo #15 P10 Sevilla Normal Bueno P11 Cadiz Muy Alto #25 P12 Cadiz Bajo Muy Bueno P13 Almera Alto Muy Bueno P14 Almera Muy Alto #8 P15 Almera 177 #6 P16 Huelva Alto Muy Bueno P17 Huelva Unknown Unknown P18 Jaen Unknown $[8. usaremos las etiquetas lingusticas de la Figura 5.184 CAPITULO 5.14.

17.5 el resultado es el mismo pero sin recuperar las tuplas de los jugadores P11 ni P19. tu Ejemplo 5.15 Modi.5) y que tienen una calidad posiblemente menor que buena (en grado mnimo 0.ned" o \Null".14 Dame todos los datos de los jugadores que son posiblemente altos (en grado mnimo 0. Si subimos el umbral mnimo del atributo Calidad a 0.25). La consulta FSQL y el resultado obtenido se muestran en la Tabla 5. Ejemplo 5. Recuperar los grados de compatibilidad de ambos atributos independientemente y el asociado a la condicion completa.

car los comparadores empleados en el Ejemplo 5. Es decir. .14 anterior para recu- perar aquellos jugadores que cumplen con la condicion impuesta \necesariamente".

5 0 5 10 15 20 25 30 35 40 45 Puntos/Partido Figura 5. CALIDAD Malo Regular Bueno Muy Bueno 1 0.  5.75 0.14: De.5 0 170 175 180 185 190 195 200 205 210 cm.2. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 185 ALTURA Bajo Normal Alto Muy Alto 1 0.

12. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.50 0.00 1.50 P4 Granada 192 Regular 0. SELECT Jugadores.25.50 1.00 0. .25 P14 Almera Muy Alto #8 0.00 P18 Jaen Unknown $[8.00 1.%.70 1.00 1.25] 1.00 0.00 1.00 0.00 1.00 0.10.00 0.17: Consulta FSQL y relacion resultante del Ejemplo 5.5 AND Calidad FLT $Bueno THOLD 0.70 P5 Granada Alto #10 1.7.15] 0.25 0.25 0.00 P7 Malaga Muy Alto #35 0.50 P3 Granada Normal Regular 0.nicion de etiquetas sobre los atributos Altura y Calidad.50 0.86 0.00 P6 Malaga 198 Malo 1.50 1.86 P19 Jaen Normal #25 0.25 Tabla 5.50 1.50 1.50 P10 Sevilla Normal Bueno 0.14.00 0.00 1.50 P17 Huelva Unknown Unknown 1.50 P11 Cadiz Muy Alto #25 0.50 0.50 0.15. CDEG(*) FROM Jugadores WHERE Altura FEQ $Alto THOLD 0.

00 Tabla 5.5 AND Calidad NFLT $Bueno THOLD 0.50 P3 Granada Normal Regular 0.00 1.25 Tabla 5.%. SELECT Jugadores.33 P5 Granada Alto #10 1.50 0.00 0.25] 1.15] 0.00 P14 Almera Muy Alto #8 0.25 0.25. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.%.15.12.19: Consulta FSQL y relacion resultante del Ejemplo 5.50 P6 Malaga 198 Malo 1.00 1.50 0.15.50 P18 Jaen Unknown $[8. CDEG(*) FROM Jugadores WHERE Altura NFEQ $Alto THOLD 0.33 0.16.50 0.33 0.10.5 AND Calidad NFLT $Bueno THOLD 0. modi.70 0.00 1.186 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL SELECT Jugadores.33 P5 Granada Alto #10 0.25. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P4 Granada 192 Regular 0.33 P4 Granada 192 Regular 0. CDEG(*) FROM Jugadores WHERE Altura FEQ $Alto THOLD 0.50 0.60 0.00 0.33 0.18: Consulta FSQL y relacion resultante del Ejemplo 5.50 P6 Malaga 198 Malo 1.7.67 0.50 0.70 0.00 1.50 0.

La consulta FSQL y el resultado obtenido se muestran en la Tabla 5. tu Ejemplo 5.16 Modi.18.car los comparadores de posibilidad por sus correspondientes comparadores de necesi- dad.

car los comparadores empleados en el Ejemplo 5. modi.14 para recuperar aquellos jugadores que cumplen con la condicion impuesta sobre el atributo Calidad \nece- sariamente". Es decir.

2.19.car el comparador de posibilidad FLT por su correspondiente comparador de necesidad NFLT. tu Ejemplo 5.6).18 Dame todos los datos de los jugadores que son Malos en Calidad y tambien aquellos que siendo peores o iguales que Buenos en Calidad son mayores o iguales que Altos .14. Ello es debido a la restrictividad de los comparadores difusos (apartado 5.75) son posiblemente Bajos (en grado mnimo 0. La consulta FSQL y la relacion resultante se muestra en la Tabla 5. Ejemplo 5.20.17 Dame todos los datos de los jugadores que son posiblemente Malos (en grado mnimo 0.1.16 se recuperan mas tuplas que en el Ejemplo 5. La consulta FSQL y el resultado obtenido se muestran en la Tabla 5.75) y tambien aquellos que siendo posiblemente Buenos (en grado mnimo 0.15 y menos que en el Ejemplo 5. tu Observe como en el Ejemplo 5.75).

.25).00 1.7.20: Consulta FSQL y relacion resultante del Ejemplo 5.00 P18 Jaen Unknown $[8.  5.e. La consulta FSQL y la relacion resultante se muestra en la Tabla 5. tu Ejemplo 5. Recuerde que la distancia mnima para considerar dos valores muy separados (atributo MUCH de la tabla FUZZY APPROX MUCH) es 12 para el atributo Altura y 15 para el atributo Calidad. tu Ejemplo 5.75 0. tu Ejemplo 5.34.60 0.93 P17 Huelva Unknown Unknown 1.75 0.24 y el resultado esta formado unicamente por el equipo de Almera y Huelva (este ultimo por sus valores desconocidos). Observe como hemos puesto el comparador > antes del umbral cero.78 P9 Sevilla Bajo #15 1. en Altura.35.75 AND Altura FEQ $Bajo 0.00 1.80 0. Utilizar solo comparadores de necesidad y establecer que los grados de de cum- plimiento de todas las condiciones simples sean mayor que 0.00 0.2).2.19 Dame todos los datos de los jugadores que son posiblemente mucho peores que Buenos (en grado mnimo 0. el grado de cumplimiento tendra que ser mayor o igual que cero.38] 1.75 P12 Cadiz Bajo Muy Bueno 1.75 P14 Almera Muy Alto #8 0. La consulta FSQL y la relacion resultante se muestra en la Tabla 5.15] 0.00 1.17. i.00 0.00 1.21.80 P6 Malaga 198 Malo 0.00 0. CDEG(*) FROM Jugadores WHERE Calidad FEQ $Malo 0.75 Tabla 5. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.. La consulta FSQL esta en la tabla 5. Evitar los valores Unknown (desconocidos) en la relacion resultante.93 0. al no ser una operacion directamente implementada en SQL.15. su escritura no es inmediata.23.75 OR ( Calidad FEQ $Bueno 0.80 0.12.00 P8 Malaga 170 $[31.5).00 0. Con esto indicamos que el grado de cumplimiento debe ser estrictamente mayor que cero.78 0. La consulta FSQL y la relacion resultante se muestra en la Tabla 5. Evitar los valores Unknown (desconocidos) en la relacion resultante.10.2) y posiblemente mucho mas altos que una altura Normal (en grado mnimo 0. Por defecto (sin ese comparador).%.22.80 P15 Almera 177 #6 0.21 Dame los equipos que tienen al menos un jugador que sea Muy Alto y Muy Bueno y tambien que tenga un jugador que sea Muy Bajo y Muy Malo (con todas las condicio- nes en grado mnimo 0.25) y necesariamente mucho mas altos que Bajos (en grado mnimo 0.75 ). tu La operacion de division relacional puede efectuarse tambien con FSQL aunque.25] 1. distinto de cero.00 0.20 Dame todos los datos de los jugadores que son necesariamente mucho peores que Muy Buenos (en grado mnimo 0.75 0.00 0. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 187 SELECT Jugadores.

00 1.00 0.22: Consulta FSQL y relacion resultante del Ejemplo 5.20 P5 Granada Alto #10 0.10.35 Tabla 5.20.00 1.7. SELECT Jugadores.25 0. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL SELECT Jugadores.80 Tabla 5. SELECT Jugadores.50 P6 Malaga 198 Malo 1.15] 1.00 1.18.00 0.40 0.2 AND Calidad IS NOT Unknown AND Altura IS NOT Unknown.40 P11 Cadiz Muy Alto #25 1.10.00 1.00 0.00 0. CDEG(*) FROM Jugadores WHERE Calidad MLT $Bueno 0.00 1.15] 1.00 1.25 P6 Malaga 198 Malo 0.00 1.00 1.00 P4 Granada 192 Regular 0.00 1.00 P4 Granada 192 Regular 0. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.00 1.80 0.00 0. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.7.25 AND Calidad IS NOT Unknown AND Altura IS NOT Unknown.25 AND Altura NMGT $Bajo 0.19. H Jugador Equipo Altura Calidad CDEG(Altura) CDEG(Calidad) CDEG(*) B P2 Cordoba Muy Alto $[2.2 AND Altura MGT $Normal 0.15] 1.65 0.53 P6 Malaga 198 Malo 1.50 1.00 1.%.23: Consulta FSQL y relacion resultante del Ejemplo 5.188 CAPITULO 5.70 P5 Granada Alto #10 0. CDEG(*) FROM Jugadores WHERE Calidad NFEQ $Malo > 0 OR ( Calidad NFLEQ $Bueno > 0 AND Altura NFGEQ $Alto > 0 ).00 P15 Almera 177 #6 0.00 P14 Almera Muy Alto #8 1.20 0.21: Consulta FSQL y relacion resultante del Ejemplo 5.53 0.%.45 0.7.45 P5 Granada Alto #10 0.00 P7 Malaga Muy Alto #35 1.00 0.80 0.44 P14 Almera Muy Alto #8 1.44 0. .00 0.50 0.67 0. CDEG(*) FROM Jugadores WHERE Calidad NMLT $Muy Bueno 0.10.27 Tabla 5.35 0.50 0.%.70 1.00 0.80 P14 Almera Muy Alto #8 1.

SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 189 SELECT DISTINCT Equipo FROM Jugadores P1 WHERE EXISTS (SELECT * FROM Jugadores P2 WHERE P1.Equipo AND Altura FEQ $Muy_Alto .5) AND EXISTS (SELECT * FROM Jugadores P2 WHERE P1. Tabla 5.5 AND Calidad FEQ $Malo .5). puede ser vista como una lista de \tipos" de jugadores y la division relacional es una consulta para obtener los equipos que incorporan en sus .24: Consulta FSQL para el Ejemplo 5.Equipo = P2.2. H Altura Calidad B Bajo Muy Bueno Alto Regular Tabla 5.  5. Buscados.25: Relacion difusa Buscados. La relacion del denominador.Equipo = P2.25).5 AND Calidad FEQ $Muy_Bueno . Ejemplo 5.21.16) y Buscados (Tabla 5.Equipo AND Altura FEQ $Bajo .22 Efectuar la division relacional entre las relaciones difusas Jugadores (Tabla 5.

5/Cordoba. es decir. entonces obtenemos solo los equipos que cumplen con la condicion con un grado estrictamente mayor .5/Sevilla. Los valores desconocidos pueden evitarse a~nadiendo condiciones del tipo J2. si aplicamos la division relacional difusa propuesta en el Captulo 3 a las relaciones de este ejemplo obtenemos los siguientes resultados.Altura IS NOT UNKNOWN.5.26 y el resultado esta formado unicamente por los equipos de Cordoba.las todos los \tipos" de jugadores de la tabla Buscados.5 obtenemos identicos resultados que con FSQL.5/Malaga. Puede verse que la division del tipo de este ejemplo es compatible con la division relacional difusa propuesta en el Captulo 3. Sevilla y Huelva (este ultimo por sus valores desconocidos). Supondremos que la comparacion de atributos sera efectuada con un umbral mnimo de 0. 0.5. para los valores con grado mayor que cero: f0.33/Jaeng Tomando aquellos equipos con grado mayor o igual a 0. FSQL tiene el inconveniente de que no permite obtener los grados de cumplimiento. As. Malaga. obtienen los mismos resultados si aplicamos a esta ultima una seleccion con umbral mayor o igual a 0. ya que estos grados son calculados en el SELECT mas interno y no es posible extraer esos valores y usarlos (para mostrarlos) en el SELECT mas externo. 0.5. La consulta FSQL esta en la Tabla 5.33/Cadiz. si en la consulta de la Tabla 5.26 ponemos el smbolo > delante de los umbrales 0. 0. 0. Sin embargo. Con FSQL los grados pueden ser obtenidos a base de efectuar distintas pruebas. As. 1/Huelva.

190 CAPITULO 5.Equipo AND J2. tu 5.Altura 0.5.5)).* FROM Jugadores J2 WHERE J2.26: Consulta FSQL para el Ejemplo 5. por lo que podemos deducir que los equipos de Cordoba. ALTER y DROP El DDL (Data De.5 AND J2.Divisi on Difusa: PLAYERS / SEARCH SELECT distinct Equipo FROM Jugadores J1 WHERE NOT EXISTS (SELECT Buscados.5.2.* FROM Buscados WHERE NOT EXISTS (SELECT J2.22.Equipo=J1.2 El DDL de FSQL: CREATE. que 0. Malaga y Sevilla cumplen la condicion con grado 0. Tabla 5. En ese caso obtenemos solo el equipo de Huelva.Calidad 0. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL -.Altura FEQ Buscados.Calidad FEQ Buscados.

nition Language) es el conjunto de sentencias necesarias para la creacion y modi.

.).. ALTER (para modi.cacion de las estructuras en las que se almacenaran los datos. vistas. Ejemplos de sentencias del DDL SQL son: CREATE (para crear objetos de la base de datos: tablas.

). Aqu. Este objeto es exclusivo de FSQL.  Objeto VIEW: Vistas difusas (con atributos difusos). A continuacion vamos a centrarnos en los 3 primeros tipos de sentencias del DDL y enfocados a cuatro tipos de objetos de la BDRD:  Objeto TABLE: Tablas difusas (con atributos difusos). ALTER TABLE y DROP TABLE ya existe en el DDL de SQL estandar. ndices y control del almacenamiento fsico de los datos. El grupo de sentencias formado por CREATE VIEW. ALTER VIEW y DROP VIEW ya existe en el DDL de SQL est andar. condiciones difusas. hemos ampliado la sintaxis de CREATE VIEW para permitir expresar una vista como una subconsulta difusa (atributos difusos.  Objeto LABEL: Etiquetas de atributos difusos Tipos 1 y 2. El grupo de sentencias formado por CREATE TABLE.. DROP (para borrar objetos).. hemos ampliado su sintaxis para que permitan expresar las necesidades de una BDRD. Este objeto implica la de. Aqu.car objetos). Estas son asociadas a distri- buciones de posibilidad trapezoidales.  Objeto NEARNESS: Relaciones de semejanza o similitud. y sentencias para controles de seguridad.

nicion de etiquetas para atributos difusos Tipo 3 y la relacion de similitud entre ellas. La gramatica que genera el DDL de FSQL puede verse en el Apendice B. La de. Este objeto es exclusivo de FSQL.

como son sinonimos (SYNONYM) e instantaneas (SNAPSHOT). no la hemos incluido aqu.nicion de otras clausulas para otros objetos. pues su de.

nicion es igual a la de SQL o muy similar a ella y/o a clausulas de las que se incluye su de.

nicion. .

1 Comandos del DDL de FSQL El lenguaje FSQL extiende algunos comandos ya existentes en SQL. Estas son las modi.2.2.2. pero tambien incorpora otros nuevos. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 191 5.  5.

uno para cada Tipo de atributo difuso. el dominio subyacente. sobre el que tomaran valores los valores crisp que tenga la relacion. Por comodidad en el aprendizaje. A continuaci on se puede poner opcionalmente el tipo base del atributo. por ejemplo si se de. Atributos difusos Tipo 1: Se escribe con las palabras reservadas CRISP o FTYPE1 seguido de dos n umeros entre parentesis y separados por una coma. Pueden producirse errores semanticos. que indican los valores que tendra el nuevo atributo difuso en las columnas MARGEN y MUCH de la tabla FUZZY APPROX MUCH. es decir. Por defecto se tomara NUMBER como tipo base. Estos son los tres nuevos tipos y su formato: 1. cada nuevo tipo tiene dos nombres.caciones a los comandos ya existentes y los nuevos comandos: ? CREATE TABLE: Esta es la sentencia que mas novedades incorpora: { Tipos de Datos Difusos: Se han a~nadido tres nuevos tipos de datos.

Al crear la tabla de. a continuaci on se puede poner opcionalmente el tipo base sobre el que tomaran valores las distribuciones de posibilidad que tenga la relacion. que indican los valores que tendra el nuevo atributo difuso en la tabla FUZZY APPROX MUCH.ne el tipo base como un tipo difuso. 2. Atributos difusos Tipo 2: Se escribe con las palabras reservadas POSSIBILISTIC o FTYPE2 seguido de dos numeros entre parentesis y separados por una co- ma. Igual que en los Tipo 1.

Suponemos que no hay mas de 10 datos (y 1 como mnimo y por defecto). Atributos difusos Tipo 3: Se escribe con las palabras reservadas SCALAR o FTYPE3 seguido opcionalmente de un n umero entre parentesis que indica el numero de datos maximo para los valores de dicho atributo.nitiva el campo que almacena el tipo de valor difuso debe restringirse a valores enteros entre 0 y 7 (con una restriccion de tipo CHECK). 3. es decir el numero maximo de elementos en las distribuciones de posibilidad sobre escalares (valor del atributo LEN de la tabla FUZZY COL LIST). Opcionalmente se puede a~nadir a la de.

nicion de este tipo de atributos la palabra DOMAIN seguida del nombre de un atributo (que puede ser de la misma tabla). para indicar que el atributo que estamos de.

niendo en la tabla que queremos crear sera compatible con el atributo que se indica tras DOMAIN y podra. por tanto. tomar sus valores sin tener que de.

La clausula DOMAIN hace que se inserte una .nirlos de nuevo para este atributo.

la en la tabla FUZZY COMPATIBLE COL. Al crear la tabla de.

condiciones y expresiones difusas: Cuando estos elementos forman parte de una sentencia CREATE TABLE se permite utilizar sus variantes difusas. tal y como se expusieron en el apartado 5. Por ejemplo.1. { Subconsultas.nitiva el campo que almacena el tipo de valor difuso debe restringirse a valores enteros entre 0 y 4 (con una restriccion de tipo CHECK). constantes.2. para especi.

ademas de las ya existentes para atributos clasicos: . tras la palabra reservada DEFAULT puede situarse cualquier tipo de constante. { Restricciones de columna: A una columna difusa le podemos imponer varias restricciones especiales. sea difusa (Tabla 5.car un valor constante por defecto.14) o no lo sea.

$[a. NOT UNKNOWN: Prohibe el valor UNKNOWN (aplicable a Tipos difusos 2 y 3). ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 1. $[n. NOT UNDEFINED: Prohibe el valor UNDEFINED (aplicable a Tipos difusos 2 y 3). ONLY LABEL: Indica que el atributo difuso al que se aplica s olo puede tomar valores tipo etiqueta lingustica. NOT NULL: Prohibe el valor NULL (aplicable a Tipos difusos 1. NOT INTERVAL: Prohibe valores del tipo intervalo. 2 y 3. de. 4. 5.192 CAPITULO 5.d] (aplicable s olo al Tipo difuso 2). 2.c. NOT LABEL: Prohibe valores del tipo etiqueta. NOT TRAPEZOID: Prohibe valores del tipo trapecio. NOT APPROX: Prohibe valores del tipo aproximado. 8. #n (aplicable s olo al Tipo difuso 2). 7. 3. 9. NOT CRISP: Prohibe valores del tipo crisp (aplicable s olo al Tipo difuso 2). $label (aplicable a Tipos difusos 2 y 3). 6.b. e incluso a tipos clasicos).m] (aplicable s olo al Tipo difuso 2).

10.nida en la FMB. Es como prohibir todos los demas tipos (aplicable a Tipos difusos 2 y 3). de. ONLY LABEL OR UNKNOWN: Indica que el atributo difuso al que se aplica s olo puede tomar valores tipo etiqueta lingustica.

Es como prohibir todos los demas tipos (aplicable a Tipos difusos 2 y 3). pues el valor Unknown es un valor que es bastante usual en la practica. o el valor Unknown. Esta opcion puede ser muy util.nida en la FMB. no siendo as los valores Unde.

Si la condicion es difusa es solo aplicable a los Tipos difusos (1.23 El siguiente ejemplo crea una tabla de pisos para una inmobiliaria \di- fusa" con atributos difusos de todo tipo: CREATE TABLE PISOS ( PISO# NUMBER(9) NOT NULL PRIMARY KEY. PRECIO FTYPE2 (500. 11. DUENNO# NUMBER(9) NOT NULL.25) NUMBER(4) CONSTRAINT NULL_INVALIDO_SUPERFICIE NOT NULL. ZONA FTYPE3 (3) DEFAULT UNKNOWN CONSTRAINT NULL_INVALIDO_ZONA NOT NULL CONSTRAINT UNDEFINED_INVALIDO_ZONA NOT UNDEFINED). Ejemplo 5. la cual puede ser difusa.ned y Null. donde el atributo super.3000) NUMBER(6) DEFAULT UNKNOWN CONSTRAINT NULL_INVALIDO_PRECIO NOT NULL CONSTRAINT UNDEFINED_INVALIDO_PRECIO NOT UNDEFINED. CHECK (<condici on>): Chequea que los valores de ese atributo cumplen una determinada condicion. SUPERFICIE FTYPE1 (15. DIRECCION VARCHAR2(60). 2 y 3) y si la condicion no es difusa se puede aplicar a cualquier tipo de datos (incluidos los tipos clasicos).

tu .cie se supone dado en m2 y el tipo base del precio se supone en miles de pesetas.

5 READ ONLY.1].delta. Ejemplo 5. ZONA.8 y que tienen un precio inferior a Barato con grado mnimo 0. En la vista ese grado estara comprendido en el intervalo [0.  5. CDEG(ZONA) FROM PISOS WHERE ZONA FEQ $CENTRO 0.5: CREATE VIEW PISOS_CENTRO AS SELECT PISO#.2.2. donde tras la palabra reservada VALUES se ponen forzosamente los 4 valores numericos que forman la distribucion de posibilidad asociada a la etiqueta nombre label.24 La siguiente sentencia crea una vista con los datos de los pisos que estan en el centro con un grado superior a 0. PRECIO. y sirve para habilitar etiquetas en el dominio de un atributo difuso concreto. o si el atributo ya tiene de.gamma.beta. donde el ultimo atributo indica el grado con el que cada piso pertenece a la zona centro.1).]table.8 AND PRECIO FLEQ $BARATO 0. Esta sentencia generara un error si el atributo no es difuso Tipo 1 o 2.8. Tiene dos formatos posibles: 1. tu ? CREATE LABEL: Esta es una nueva sentencia. exclusiva de FSQL. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 193 ? CREATE VIEW: Esta sentencia nos permite crear vistas con subconsultas difusas. El formato es igual que en SQL pero admitiendo subconsultas difusas (SELECT difuso visto en el apartado 5. Crear una etiqueta para un atributo difuso Tipo 1 o 2 concreto y asociarle una distribucion de posibilidad trapezoidal: CREATE LABEL nombre_label ON [schema.atributo VALUES alfa.

nida una etiqueta con el mismo nombre. 2. En el segundo caso. Copiar todas las etiquetas de. se debe usar el comando ALTER LABEL.

atributo1 FROM [schema. o ambos de Tipo 3. Cuando nos encontramos con atributos difusos Tipo 1 o 2 hay que copiar las etiquetas de la tabla FUZZY OBJECT LIST y su de. en otro atributo. atributo1. Ambos atributos deben ser difusos de Tipos 1  o 2 indistintamente.]table.nidas para un atributo.atributo2. Su formato es: CREATE LABEL * ON [schema.]table. atributo2.

nicion de FUZZY LABEL DEF y se copian todas las que tienen distinto nombre de las ya de.

Se generara un error si atributo2 no tiene de.nidas en atributo1.17). sin borrar las que este tuviera anteriormente (ver Ejemplo F.

En atributos difusos Tipo 3 en realidad no copia las etiquetas de uno a otro. sino que establece que ambos atributos son compatibles (insertando una .nida ninguna etiqueta.

. Se generara un error si atributo1 tiene ya una relacion de similitud asociada a el.la en FUZZY COMPATIBLE COL). El efecto es el mismo que si aplicamos la cl ausula DOMAIN en la sentencia CREATE TABLE que crea la tabla que contiene al atributo en cuestion.

tu ? CREATE NEARNESS: Esta es una nueva sentencia. y sirve para crear etiquetas para los atributos difusos Tipo 3.7000. exclusiva de FSQL.8000].7000. Con esta sentencia se deben de.8000.PRECIO VALUES 5000. donde la distribucion de posibilidad asociada sera $[5000. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Ejemplo 5.6000.6000.194 CAPITULO 5.25 Crear una etiqueta llamada BARATO sobre el atributo PRECIO de la tabla PISOS: CREATE LABEL BARATO ON PISOS.

nir todas las etiquetas que van a pertenecer al atributo y con ellas se va a de.

nir tambien la relacion de similitud.atributo LABEL lista_de_etiquetas VALUES lista_de_similitudes. donde lista de etiquetas es una lista de las etiquetas que vamos a de. Su formato es: CREATE NEARNESS ON [schema.]table. es decir. el grado de similitud entre cada 2 etiquetas.

n). : : : (3. Por tanto. j ) es el grado de similitud entre la etiqueta i-esima y la j -esima. e2 : : : . Por ejemplo. El orden en que se escriben las etiquetas in uye en el orden en el que se escribiran los grados de similitud. n). (1. Otra posible de. n). As. (2. 4). 3). 4). si e1 . 3). 4). ::: (n 1. tras la palabra VALUES debemos situar n2 =2 n=2 numeros (donde = representa la division entera. (2. 2). : : : (2. en es la lista con n etiquetas y (i. n). (1. entonces la lista con los grados se dara en el siguiente orden: (1.nir separadas por comas y lista de similitudes es la lista de grados de similitud entre cada 2 etiquetas. (3. con 4 etiquetas habra que poner 6 valores y con 5 etiquetas habra que escribir 10 valores. : : : (1. que trunca). si hay n etiquetas.

nicion del numero de valores.32) Al utilizar este tipo de sentencia sobre un atributo. donde: 1 si n = 2 f (n) = f (n 1) + n 1 en otro caso (n > 2) (5. se generara un error si ocurre algo de lo siguiente: { El atributo no es difuso Tipo 3: No tiene sentido de. es f (n). sabiendo el numero de etiquetas n.

.nir relaciones de similitud sobre otros tipos de atributos.

 5. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 195 { El atributo ya tiene una relacion de similitud: Para modi.2.

{ El atributo es compatible con otro Tipo 3: Entonces.car la relacion ya exis- tente se debe usar ALTER NEARNESS. se debe modi.

8.5.5. ESTE. 0. SUR. Para eliminar esa compatibilidad y poder crear as otra relacion de similitud. donde de. 0. 0. NORTE. OESTE VALUES 0. 0.5.8. { Algun valor de la lista de similitudes no pertenece al intervalo [0.5.8.26 Crear las etiquetas del atributo ZONA de la tabla PISOS: CREATE NEARNESS ON PISOS. 0.1].8. 0.car la relacion sobre el atributo con el que es compatible. 0. Ejemplo 5. { La lista de similitudes tiene un numero de elementos distinto al que debe tener segun la lista de etiquetas. 0 . 0.ZONA LABEL CENTRO. se debe usar previamente el comando DROP NEARNESS.

nimos 5 etiquetas y damos los 10 valores correspondientes a la funcion de similitud sobre estas etiquetas. tu ? ALTER TABLE: Sentencia para modi.

car una tabla ya creada. Su formato es igual al de SQL pero permitiendo de.

Su formato es identico al de SQL. como se ha explicado mas arriba en la sentencia CREATE TABLE. ? ALTER VIEW: Sentencia para recompilar una vista.nir tipos de datos difusos y restricciones difusas. ? ALTER LABEL: Sentencia exclusiva de FSQL para modi.

gamma.]table.car una etiqueta de un atributo difuso Tipo 1 o 2. Esto puede entenderse como borrarla y crearla de nuevo. Esta sentencia producira un error si la etiqueta no esta previamente de.delta.atributo VALUES alfa. Su formato es igual al de CREATE LABEL pero cambiando la palabra reservada CREATE por ALTER: ALTER LABEL nombre_label ON [schema.beta.

nida para el atributo indicado. ? ALTER NEARNESS: Sentencia exclusiva de FSQL para modi.

atributo LABEL lista_de_etiquetas VALUES lista_de_similitudes. Admite dos formatos: 1. En el sentido de borrar las etiquetas y crearlas de nuevo: As. su formato es igual al de CREATE NEARNESS pero cambiando la palabra CREATE por ALTER: ALTER NEARNESS ON [schema.]table. .car las etiquetas de un atri- buto difuso Tipo 3 y/o sus grados de similitud.

Para modi. 2.196 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Se producira un error si el atributo en cuestion no tiene asociada una relacion de similitud o no es difuso Tipo 3.

Se producira un error ocurre algo de lo siguiente: { El atributo no es difuso Tipo 3: No tiene sentido de.]table.car solo el grado de similitud o compatibilidad entre dos etiquetas (label1 y label2).atributo CDEG(label1.label2)=nuevo_grado_a_cambiar. Para esto ultimo su formato es: ALTER NEARNESS ON [schema.

{ El atributo no tiene una relacion de similitud de.nir relaciones de similitud sobre otros tipos de atributos. { Las etiquetas label1 y/o label2 no existen en la relacion de similitud sobre dicho atributo.

nida sobre el o la relacion de similitud que utiliza esta asociada directamente a otro atributo: Para modi.

car un grado en la relacion ya existente se debe efectuar directamente sobre el atributo que de.

se debe usar previamente el comando DROP NEARNESS y posteriormente CREATE NEARNESS. Para eliminar esa compatibilidad y poder crear as otra relacion de similitud. para alterar una relacion de similitud sobre un atributo.27 Para modi. O sea.ne la relacion y no sobre otros que sean compatibles a este. este atributo debe ser el propietario directo de esa relacion y no basta con ser un atributo que sea compatible con el atributo propietario. Ejemplo 5.

? DROP VIEW: Sentencia para borrar una vista (difusa o no). tu ? DROP TABLE: Sentencia para borrar una tabla (difusa o no). donde 0. Su formato es identico al de SQL.SUR) = 0.2. Su formato es identico al de SQL.ZONA CDEG(NORTE. ? DROP LABEL: Sentencia exclusiva de FSQL que sirve para borrar una o todas las etiquetas de.2 es el nuevo grado de similitud entre dichas etiquetas.car el grado de similitud entre las etiquetas NORTE y SUR del atributo ZONA de la tabla PISOS tendramos que utilizar la siguiente sentencia: ALTER NEARNESS ON PISOS.

nidas sobre un atributo difuso Tipos 1 o 2. Su formato es: DROP LABEL etiqueta ON atributo donde etiqueta es el nombre de la etiqueta que queremos eliminar. Si en lugar de poner el nombre de la etiqueta se pone el caracter comodn asterisco * se borraran todas las etiquetas de.

.nidas en la FMB para ese atributo (ver Ejemplo F.18).

entonces lo que hace es que se elimina esa compatibilidad.2. Si se aplica este formato sobre un atributo difuso Tipo 3 que es compatible con otro. este atributo debe ser el propietario directo de esa relacion y no basta con ser un atributo que sea compatible con el atributo propietario. DROP NEARNESS etiqueta ON [schema. SINTAXIS Y SEMANTICA DEL LENGUAJE FSQL 197 ? DROP NEARNESS: Sentencia exclusiva de FSQL que sirve para borrar las etiquetas de atributos difusos Tipo 3.2. 5. se producira un error.2.  5.atributo. Para borrar una unica etiqueta de un atributo. En este caso se borraran tambien los grados de similitud entre esa etiqueta y el resto de ellas.]table.atributo.]table. Tiene dos formatos posibles: 1. Si esto no se cumple. Para borrar una relacion de similitud o una etiqueta sobre un atributo. Para borrar todas las etiquetas de un atributo y su relacion de similitud: DROP NEARNESS ON [schema. 2. quedando el atributo en cuestion sin ninguna etiqueta ni relacion de similitud.2 Ejemplo de Creacion de una BDRD con Sentencias del DDL de FSQL Los siguientes ejemplos muestran como crear una BDRD con todos los Tipos de atributos difusos y de.

Para instalar esta base de datos se ha creado un script de instalacion en el . y todos los elementos necesarios. relaciones de similitud..niendo sus etiquetas..

5) DEFAULT UNKNOWN NUMBER(2) NOT NULL.10) NUMBER(3) DEFAULT UNKNOWN NOT NULL. NOMBRE CHAR(20) NOT NULL. CONSTRAINT FK_EMP#_APTITUD FOREIGN KEY (EMP#) REFERENCES PERSONAL ON DELETE CASCADE).chero FDBins. BENEFICIOS NUMBER(10) NOT NULL. CREATE TABLE DPTO( DPTO# CHAR(4) NOT NULL. SEXO CHAR(1) NOT NULL. ESTUDIOS FTYPE3(1) DEFAULT UNKNOWN NOT NULL. CREATE TABLE PUESTOS( .sql (ver Apendice E).Creaci on de la Base de Datos de Ejemplo: Crear las tablas: CREATE TABLE PERSONAL( EMP# CHAR(4) NOT NULL. -. EXPERIENCIA FTYPE2(2. EDAD FTYPE2(5. CREATE TABLE APTITUD( EMP# CHAR(4) NOT NULL. PRIMARY KEY (EMP#). CIUDAD CHAR(15) NOT NULL. PRIMARY KEY (EMP#)). NOMBRE CHAR(20) NOT NULL. PROF FTYPE3(1) DEFAULT UNKNOWN NOT NULL. PRIMARY KEY (DPTO#)). LOCALIZ CHAR(15) NOT NULL.

3.15. FOREIGN KEY (DPTO#) REFERENCES DPTO ON DELETE CASCADE.EXPERIENCIA VALUES 0.7.62.50.16.Tabla APTITUD: CREATE LABEL POCA ON APTITUD. CREATE LABEL MUCHA ON APTITUD. PRIMARY KEY (CIUDAD1.50.22.EXPERIENCIA VALUES 7.5.EDAD VALUES 25. FOREIGN KEY (PUESTO#) REFERENCES PUESTOS ON DELETE CASCADE). CREATE LABEL MADURO ON PERSONAL. FOREIGN KEY (EMP#) REFERENCES APTITUD ON DELETE CASCADE. LICENCIADO. PRIMARY KEY (EMP#. FOREIGN KEY (EMP#) REFERENCES PERSONAL ON DELETE CASCADE. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL PUESTO# CHAR(4) NOT NULL. ESTUDIOS FTYPE3(1) DOMAIN APTITUD. NOMBRE CHAR(20) NOT NULL.198 CAPITULO 5.32. . PRIMARY KEY (PUESTO#)). CREATE LABEL GRANDE ON APTITUD. .2.35.EDAD VALUES 16.10.30. CREATE NEARNESS ON APTITUD.15.8.3.ESTUDIOS NOT NULL.70. COMISION FTYPE2(5000. ESTUDIOS FTYPE3(4) DOMAIN APTITUD.5) NUMBER(2) NOT NULL.60.15000) NUMBER(7) NOT NULL.50. CREATE TABLE CIUDADES( CIUDAD1 CHAR(15) NOT NULL.4. CREATE LABEL MUY_MAYOR ON PERSONAL.EXPERIENCIA VALUES 5. DIPLOMADO. CREATE LABEL JOVEN ON PERSONAL.55.8. CREATE LABEL BASTANTE ON APTITUD.CIUDAD2)). SUELDO FTYPE1(10000.55. .12. .PROF NOT NULL.5. DPTO# CHAR(4) NOT NULL.6.20.45.100) NUMBER(5) NOT NULL.50000) NUMBER(7) NOT NULL. PRIMARY KEY (Clave)). -. DOCTOR VALUES .EDAD VALUES 18. -.1.Creaci on de Etiquetas: -.PUESTO#).EXPERIENCIA VALUES 2. CREATE LABEL MAYOR ON PERSONAL. DISTANCIA FTYPE1(25.26.20.45. CREATE TABLE EMPLEOS( EMP# CHAR(4) NOT NULL. CIUDAD2 CHAR(15) NOT NULL. .1. CREATE LABEL ALGUNA ON APTITUD. CREATE TABLE REQUISITOS( Clave INTEGER NOT NULL.ESTUDIOS NOT NULL.ESTUDIOS LABELS SECUNDARIA.Tabla PERSONAL: CREATE LABEL MUY_JOVEN ON PERSONAL. PROF FTYPE3(1) DOMAIN APTITUD.EXPERIENCIA VALUES 12.EDAD VALUES 40. PUESTO# CHAR(4) NOT NULL. RENDIMIENTO FTYPE3(1) NOT NULL.6.DPTO#. EXPERIENCIA FTYPE2(2. .EDAD VALUES 50.2.

mas lento que si se hubiera programado a bajo nivel.PROF LABELS DIRECTOR. CREATE LABEL MEDIO ON EMPLEOS. CREATE LABEL REDUCIDA ON EMPLEOS.EXPERIENCIA VALUES 2.1.2.50000.0.SUELDO VALUES 50000.15.17000.7.200. CREATE LABEL GRANDE ON PUESTOS.DISTANCIA VALUES 1000. CREATE LABEL MUY_ALTO ON EMPLEOS.10000.90000. CREATE LABEL BASTANTE ON PUESTOS.DISTANCIA VALUES 70.3. 5. . .COMISION VALUES 15000. . . BUENO.99999.8.200. CREATE LABEL ELEVADA ON EMPLEOS.EXPERIENCIA VALUES 0.4.50.250.80000. quizas.DISTANCIA VALUES 150. CREATE LABEL LARGA ON CIUDADES.32000. . . .6.SUELDO VALUES 70000. CREATE LABEL LA_MAYOR ON CIUDADES.15000. .Tabla PUESTOS: No se definen etiquetas para los atributos ESTUDIOS y PROF -. -.150. . 99.120000. porque se toman de los atributos hom onimos de la tabla APTITUD.1. 77.6. CREATE NEARNESS ON EMPLEOS.8.DISTANCIA VALUES 0.1000000.150. 78] han sido im- plementados. usando un SGBD ya existente.200000.COMISION VALUES 40000. -.5.7. La tarea de implementacion se hace mas simple ya que no necesitamos programar el SGBD. TECNICO.200000.6.250000.SUELDO VALUES 200000.400.7.100.1500.SUELDO VALUES 160000. CREATE LABEL ALTA ON EMPLEOS.180000.COMISION VALUES 20000. esto implica tres consecuencias: 1.30000. .5. CREATE LABEL NORMAL ON EMPLEOS. CREATE LABEL BAJA ON EMPLEOS.15.EXPERIENCIA VALUES 7. El sistema sera.6.COMISION VALUES 0.8.20.7. -. .2.2.300000.99999.1000.30000. EXCELENTE VALUES .EXPERIENCIA VALUES 12.8.5. CREATE LABEL MEDIA ON CIUDADES.450. VENDEDOR VALUES . .55000. Basicamente.2. CREATE LABEL ALTO ON EMPLEOS. ARQUITECTURA DEL SERVIDOR FSQL 199 CREATE NEARNESS ON APTITUD. .20000.40000.300000.COMISION VALUES 11000.5.3.70. CREATE LABEL MUY_LARGA ON CIUDADES. como ya se ha dicho.8.3 Arquitectura del Servidor FSQL La Base de Datos Relacional Difusa (BDRD) y el Servidor FSQL [75.100. .Tabla EMPLEOS: CREATE LABEL BAJO ON EMPLEOS.DISTANCIA VALUES 300. SECRETARIO.1000000.60000. CREATE LABEL ALGUNA ON PUESTOS.1500. .600. .15000.6. 116.170000. ADMINISTRATIVO.12.50.EXPERIENCIA VALUES 5.5.50000. 2.Tabla CIUDADES: CREATE LABEL MUY_CORTA ON CIUDADES.DISTANCIA VALUES 100. .240000. Oracle [92. CREATE LABEL POCA ON PUESTOS. . CREATE LABEL MUCHA ON PUESTOS. 117]. REGULAR.10. INGENIERO. CREATE LABEL CORTA ON CIUDADES.RENDIMIENTO LABELS MALO.4. .4. .8.300.5000.

Obtenemos todas las ventajas del SGBD an.200 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL 3.

e.trion (seguridad.

PL/SQL [82. 99. su popularidad (esta implantado en multitud de empresas y entidades) y por la posibilidad que ofrece para crear paquetes (con procedimientos y funciones) internos al sistema. El SGBD elegido fue Oracle por su gran versatilidad.) sin que tengamos que tener en cuenta esos importantes detalles. 116. 146]. 118..ciencia. Estos paquetes son creados en un lenguaje propio.. que es muy e.

La arquitectura de la BDRD con el Servidor FSQL esta compuesta por: 1. 2.1 Datos: Base de Datos Tradicional y FMB Los datos pueden ser clasi. como Pro*C.ciente en accesos a la base de datos (mas que otros que hemos probado. FMB (Fuzzy Meta-knowledge Base ). Cliente FSQL: Encargado de hacer de interfaz entre el usuario y el Servidor FSQL.). Servidor FSQL (version 1. Datos: Base de datos tradicional y Base de Metaconocimiento Difuso. esta arquitectura puede ser implementada en otros SGBD. Por supuesto..3.. Sera explicado en detalle en el Captulo 6. A continuacion explicamos cada uno de estos componentes: 5.2): Encargado de ocultar el procesamiendo difuso al usuario. 3.

2 Servidor FSQL Como ya se ha dicho.cados en dos categoras: La base de datos tradicional y la base de metaconocimiento difuso o FMB. generara una tabla con todos los errores encontrados. evitando as el crptico formato interno de estos atributos. 2 o 3). como se explico en el apartado 5. La sentencia resultante en SQL podra incluir llamadas a los siguientes tipos de funciones. sintactico y semantico de la consulta FSQL. En la FMB se almacena una lista con los atributos que admiten tratamiento difuso su Tipo de atributo difuso (1.1. . La base de datos tradicional esta compuesta por los datos de nuestras relaciones con un formato especial para almacenar atributos difusos. 5.2.1. efectua un analisis lexico. e incluye tres tipos de funciones:  Funcion de Traduccion (FSQL2SQL): Esta funcion. tal y como se explico en el apartado 5.1. FMB (Fuzzy Meta-knowledge Base ) almacena infor- macion sobre la BDRD en un formato relacional. incluida en el paquete FSQL PKG.3 puede leerse un resumen de la informacion que se guarda en la FMB.3. para cada atributo difuso se almacena distinta informacion dependiendo de su Tipo difuso.  Funciones de Representacion: Estas funciones son utilizadas para mostrar los atri- butos difusos de manera que sean comprensibles por el usuario.3.1.3. la consulta FSQL es traducida a una sentencia en SQL (ver ejemplos en el Apendice F). ha sido programado ntegramente en PL/SQL. Si no hay errores.3. Si encuentra errores de cualquier naturaleza. En el apartado 5. La base de metaconocimiento difuso. Ademas.

las condiciones difusas por llamadas a las funcio- nes de Comparacion Difusa y reemplazar las llamadas a la funcion CDEG por llamadas a las funciones de Comparacion Difusa y otras funciones si existen operadores logicos involucrados en la condicion del atributo argumento de CDEG. ARQUITECTURA DEL SERVIDOR FSQL 201  Funciones de Comparacion Difusa: Se utilizan para comparar atributos y valores difusos y para calcular los grados de compatibilidad que devuelve la funcion CDEG. logicamente.4. 5.3. La principal funcion que usara directamente el Cliente sera la funcion de Traduccion del Servidor FSQL.3 Cliente FSQL Es un programa independiente que sirve de interfaz entre el usuario y el Servidor FSQL. Resumiendo.5. 5. para una consulta FSQL se ejecutan los siguientes pasos: 1. Si en el paso 2 el Servidor FSQL encontro errores. El usuario introduce la consulta FSQL (de forma directa o indirecta) y el programa Cliente se comunica con el Servidor y con la base de datos para obtener los resultados deseados.1. del programa Cliente FSQL empleado. llamado FQ (Fuzzy Queries). El programa Cliente enviara la consulta SQL a cualquier base de datos que sea coherente con la FMB. Para la ejecucion de esta consulta podran usarse diversas funciones del Servidor FSQL (de Representacion y Comparacion Difusa). Sin embargo. El programa Cliente FSQL enva la consulta FSQL al Servidor FSQL. es reemplazar los atributos difusos del SELECT por llamadas a las funciones de Representacion. 3. .15.13 y pueden ser cambiadas por otras. El formato de presentacion dependera. En este paso el Servidor FSQL usa la informacion de la FMB. el programa Cliente leera dicha consulta. si es correcta. Las funciones por defecto para los distintos operadores logicos se muestran en la Tabla 5. en el paquete FSQL PKG existen otras funciones utiles que pueden ser tambien usadas por el Cliente FSQL.3. pero eso es trasparente al usuario. para ser mostrados al usuario. genera una sentencia SQL a partir de la consulta original en FSQL. La implementacion del Servidor FSQL sera explicada ampliamente en el apartado 5. 2. Finalmente. El Servidor FSQL analiza la consulta y. En el apartado 6. Una vez ha sido generada la consulta en SQL. Lo que hace la funcion de Traduccion. entonces. 4. tal y como se indica en el apartado 5. Nosotros hemos desarrollado un Cliente FSQL para Windows 95/98/NT. el Cliente recibira los datos resultantes y los mostrara al usuario.5.3. En el Apendice D se listan y describen las funciones de FSQL PKG.4 Funcionamiento del Servidor FSQL El proceso de llamada del Servidor FSQL esta esquematizado en la Figura 5. La estructura de un programa Cliente FSQL y todo lo relacionado con el sera explicado en detalle en el Captulo 6.3 se incluyen algunas nociones sobre su implementacion y en el Apendice G se incluye un manual de usuario. 5. en este paso se leeran dichos errores.

Results Traditional 2.15: Arquitectura basica para la BDRD con el Servidor FSQL.202 CAPITULO 5. SQL Query 4. FSQL Query 3. SQL Query 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL FSQL Client 1. Los pasos 3 y 4 podran haber sido eliminados para incrementar la e. Fuzzy Meta-knowledge FMB FSQL Server Database Database Figura 5.

2 y 3) y la fase de Consulta (pasos 4 y 5). la base de datos remota podra no tener instalada la funcion de Traduccion. evitando as sobrecargar la red de comunicaciones con mensajes de error. de esta forma conseguimos una independencia entre la fase de Traduccion (pasos 1. as como las pautas a seguir para su instalacion. podemos usar una base de datos local con el Servidor FSQL y la FMB para traducir nuestras sentencias localmente y depurar los errores.1 Informacion y Opciones de Con. y enviar las consultas traducidas a una base de datos remota..ciencia pero..4. a continuacion ex- plicamos algunas caractersticas del Servidor FSQL. 5. aunque si requerira tener instaladas las funciones de representacion y comparacion difusa. consultas traducidas. 5. De esta forma. As.4 El Servidor FSQL Vista la arquitectura que presenta el modelo Cliente/Servidor empleado.

FSQL ALL INFO. en la que se almacena informacion general sobre el Servidor FSQL y sobre diversas opciones que puede con.guracion del Servidor FSQL El Servidor FSQL dispone de una tabla.

VALOR VARCHAR2(100).gurar cada usuario. PRIMARY KEY (OWNER. OPCION VARCHAR2(30).OPCION)). . Esta tabla esta creada de la siguiente forma: CREATE TABLE FSQL_ALL_INFO ( OWNER VARCHAR2(30).

27: Informacion disponible en la vista FSQL INFO.4. EL SERVIDOR FSQL 203 OPCION Contenido del campo VALOR VERSION SFSQL Version del actual Servidor FSQL FECHA INSTALACION Fecha de instalacion del Servidor FSQL FECHA ULTIMO USO Fecha del ultimo uso del Servidor FSQL (como traductor) FECHA ULTIMO FIN Fecha del ultimo uso de la funcion FSQL FIN (paquete FSQL PKG) DBA INSTALLER Superusuario DBA que instala el Servidor FSQL Tabla 5.5. Los campos de esta tabla tienen el siguiente signi.

cado general para cada uno: . OWNER: Almacena el identi.

cador del USUARIO que tiene activada esa opcion de con- .

VALOR FROM FSQL_ALL_INFO WHERE OWNER='FSQL SERVER'. sino que existen dos vistas sobre esta tabla que nos permiten acceder a sus datos: 1. OPCION: Opcion que se establece al valor VALOR. VALOR: Valor para la opcion OPCION. . Este campo tiene reservado el valor 'FSQL SERVER' para las opciones que contienen informacion sobre el Servidor FSQL para todos los usuarios. La informacion que contiene y que todos los usuarios pueden consultar (pero no modi- . Esta vista tiene permisos de acceso publicos solo de lectura y esta creada con la sentencia: CREATE or replace view FSQL_INFO AS SELECT OPCION.guracion. Esta tabla no es accesible por los usuarios de forma directa. . Vista FSQL INFO. de informacion: Contiene informacion general sobre el Servidor FSQL.

27.car) esta expresada en la Tabla 5. de opciones de con. Vista FSQL OPTIONS. 2.

guracion: Contiene diversas opciones de con.

de forma que cada usuario puede modi.guracion e informacion. independientes para cada usuario. sobre el comportamiento del Servidor FSQL. Esta vista tiene permisos de acceso publicos de lectura y escritura.

La sentencia que crea esta vista es la siguiente: CREATE or replace view FSQL_OPTIONS AS SELECT * FROM FSQL_ALL_INFO WHERE OWNER=USER. cada usuario puede acceder solamente a las opciones de con.car sus valores. As.

guracion propias y no a las de otros usuarios. El campo OPCION contiene el tipo de informacion u opcion de con.

Segun esto.guracion y el campo VALOR contiene el valor asignado para esa OPCION. el campo OPCION puede contener los siguientes valores: .

AND indica que en el campo VALOR se almacena la funci on que se aplica. separados por pun- tos: [[owner. En el texto del campo VALOR puede incluirse el nombre del pro- pietario y del paquete en el que esta incluida la funcion. cuando estos estan fuera de los lugares normales (la lista de seleccion.204 CAPITULO 5. OR indica que en el campo VALOR se almacena la funci on que se aplica.]package. cuando apa- rece el operador NOT. separados por puntos: [[owner. para calcular el grado de cumplimiento de una funcion CDEG. para calcular el grado de cumplimiento de una funcion CDEG. En el texto del campo VALOR puede incluirse el nombre del propie- tario y del paquete en el que esta incluida la funcion. cuando apare- ce el operador OR. separados por pun- tos: [[owner. cuando apa- rece el operador AND.]function. La funci on debe existir y el usuario en cuestion debe tener privilegios pa- ra ejecutarla. Esta funcion debe tener un unico argumento numerico. para calcular el grado de cumplimiento de una funcion CDEG. Esta funcion debe tener dos argumentos numericos. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL NOT indica que en el campo VALOR se almacena la funcion que se aplica.]package. argumento de CDEG o en condiciones). La funci on debe existir y el usuario en cuestion debe tener privilegios pa- ra ejecutarla.]function. En el texto del campo VALOR puede incluirse el nombre del pro- pietario y del paquete en el que esta incluida la funcion.]package. Esta funci on debe tener dos argumentos numericos. TRATA FUZZY ATRIB indica el tipo de tratamiento que se le da a los atributos difusos Tipo 2 o 3.]function. La funcion debe existir y el usuario en cuestion debe tener privilegios para eje- cutarla. El usuario puede especi.

ni estar situados en la posicion en la que se produce el error. ni ser argumento de funciones (excepto CDEG). por ejemplo. el atributo VALOR puede tomar 3 valores: (a) ERROR: Este valor indica que el Servidor FSQL generara un ERROR. Para esta opcion. ni estar en la lista de ordenacion de la clausula ORDER BY. (b) TIPO VALOR: Indica que se debe utilizar el Tipo del valor difuso como sustituto del atributo en s. considerar que el valor del atributo al que se re. O sea. aparece un atributo difuso Tipo 2 o 3 en una clausula ORDER BY. o como argumento de una funcion distinta de CDEG. indican- do que el atributo esta mal situado porque los atributos difusos no admiten operaciones aritmeticas.car aqu que tipo de tratamiento desea dar cuando.

se utiliza un atributo difuso Tipo 2 en la lista de ordenacion de la clausula ORDER BY.2). a~nadir al nombre del atributo una 'T' haciendo as referencia al valor de la columna del tipo (ver Tablas 5.1 y 5.ere es el tipo de valor de cada tupla. entonces el resultado apare- cera ordenado por tipo de valor difuso de dicho atributo: Primero los valores Unknown. luego los Unde. si. Con esta opcion. es decir. por ejemplo.

valores aproximados y valores trapecio. valores crisp. (c) REPRESENT: Indica que se debe utilizar la representacion gra. sucesivamente. etiquetas.ned y. los valores Null. intervalos.

entonces el resultado aparecera ordenado . tratar el atributo como si estuviera en la lista de seleccion y sustituirla por una llamada a la funcion de representacion que le corresponda.ca del atributo. por ejemplo. se utiliza un atributo difuso Tipo 2 en la lista de ordenacion de la clausula ORDER BY. Con esta opcion. Es decir. si.

Por defecto LEAST(a. EL SERVIDOR FSQL 205 OPCION VALOR NOT Funcion que aplica CDEG en NOT a. TIPO VALOR o REPRESENT NUM ERRORES N errores FSQL encontrados en la ultima traduccion del usuario TIEMPO TRADUCCION Tiempo empleado en la ultima traduccion del usuario Tabla 5.4.28: Opciones de con. Por defecto GREATEST(a.b) TRATA FUZZY ATRIB Atributos en posiciones inusuales: ERROR.b) OR Funcion que aplica CDEG en a OR b.5. Por defecto 1-a AND Funcion que aplica CDEG en a AND b.

34 para atributos difusos Tipo 2 (Tabla 5. Con esta con.35 para atributos difusos Tipo 3).guracion disponibles en la vista FSQL OPTIONS para el usuario que indique la columna OWNER. alfabeticamente por la representacion de este atributo. tal y como se muestra en la Tabla 5.

el atributo debe ser tratado como una cadena de carac- teres (tipo VARCHAR2) para que el SGBD no produzca un error (ORA-0172210 . ORA-0185811 ).guracion. Esta es la con.

el usuario puede con.guracion por defecto y es la mas logica. Sin embargo. pues dar un error puede ser contraproducente y la segunda opcion puede conseguirse facilmente a~nadiendo la 'T' directamente.

otra opcion. que podra ser includa en proximas versiones. NUM ERRORES indica el n umero de errores encontrados por el Servidor FSQL en la ultima traduccion que el usuario OWNER efectuo. Cuando se utiliza un atributo difuso Tipo 2 en la clausula ORDER BY. Este valor es actualizado automaticamente y no tiene sentido ni efecto que el usuario lo modi.gurar el Servidor FSQL para que este utilice la opcion que mas le convenga. tratara de realizar una ordenacion segun algun criterio basado en el orden que subyace a este Tipo de atributos difusos.

Este tiempo dependera. TIEMPO TRADUCCION indica el tiempo empleado por el Servidor FSQL en la u ltima tra- duccion que el usuario OWNER efectuo. del numero de errores que se produzcan (NUM ERRORES). El tiempo indicado comienza justo en la primera instruccion que ejecuta el Servidor FSQL y termina justo antes de devol- ver el numero de errores encontrados.que. no incluye los tiempos em- pleados en las comunicaciones entre el Servidor y el Cliente FSQL. entre otras cosas. es actualizado automaticamente y no tiene sentido ni efecto que el usuario lo modi.

13 (pagina 163).que. AND y OR fueron mostradas en la Tabla 5. Las funciones utilizadas por defecto para las opciones NOT. Las opciones de con.

Ejemplo 5.guracion estan resumidas en la Tabla 5.28 Si el usuario PPGG desea utilizar unas funciones espec.28.

podra insertar los siguientes valores: 10 ORA-01722: Invalid number. en un paquete llamado PKG. . 11 ORA-01858: A non-numeric character found where a digit was expected.cas que el ha creado. como funciones de los operadores logicos NOT y AND.

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL INSERT INTO FSQL_OPTIONS values (USER.PKG.206 CAPITULO 5.'PPGG. Como el operador logico OR no ha sido modi. INSERT INTO FSQL_OPTIONS values (USER.'NOT'.'PPGG.LukaAND').PKG.LukaNOT').'AND'.

aunque el administrador del Ser- vidor FSQL puede decidir eliminar este acceso. El formato de la tabla es el siguiente: CREATE TABLE FSQL_STATS ( EVENTO VARCHAR2(30) PRIMARY KEY. Los campos de esta tabla tienen el siguiente signi. Por defecto. NUM NUMBER (38) NOT NULL).2 Estadsticas y Controles de Acceso del Servidor FSQL La tabla FSQL STATS del Servidor FSQL es utilizada para controlar los accesos que se efectuen al Servidor y poder efectuar estadsticas sobre esos datos. tu 5.cado. esta tabla se instala con permisos de lectura (SELECT) para todos los usuarios. este seguira usando la misma funcion que antes de esas inserciones.4. quedando estos datos ocultos para los demas usuarios.

que almacena el numero de veces que ha ocurrido el evento especi.cado general para cada uno: . EVENTO: Indica el suceso del que guarda informacion. NUM: Es un campo entero de tama~ no maximo en Oracle. Los eventos actuales se indican a continuacion. .

Simplemente suma 1 al campo NUM cada vez que se ejecuta la funcion de traduccion FSQL2SQL. estableciendo. 12 ORA-01438: When inserting or updating records. El administrador del Servidor FSQL puede controlar los valores de este campo e inicializarlos cuando lo desee. El Servidor FSQL controla si se produce desbordamiento (ORA-0143812 ) en este campo para algun evento concreto. el valor de NUM de ese evento a cero. aunque esta no se haya efectuado por haberse encontrando algun error en la sentencia. TOTAL ERRORES COMETIDOS indica el numero total de errores encontrados por el Servidor FSQL en todas las consultas que se han intentado traducir. Los eventos que actualmente gestiona el Servidor FSQL son los siguientes. en ese caso.cado en el campo anterior o el valor asociado a dicho evento. aunque esta lista es susceptible de variar facilmente: ACCESOS PARA TRADUCCIONES indica el numero de veces que el Servidor FSQL ha sido invo- cado para efectuar alguna traduccion. ACCESOS SIN ERRORES indica el numero de veces que el Servidor FSQL ha sido invocado para efectuar alguna traduccion y esta se ha efectuado sin que el Servidor FSQL encontrara ningun error en la sentencia FSQL. a numeric value was entered that exceeded the precision de.

ned for the column. .

en segundos. Esta ultima traduccion es independiente del usuario que la realiza. TIEMPO ULTIMA TRADUCCION indica el tiempo. as como otros datos de interes. CAMBIOS DE SESSIONID indica el numero de veces que cambia el numero de sesion entre dos accesos consecutivos al Servidor FSQL. La razon de este requisito radica en que durante la ejecucion de algunas fases del Servidor se accede a una tabla que solo es accesible por este: DBA TAB COLUMNS. ULTIMO SESSIONID indica el numero de la ultima sesion que accedio al Servidor FSQL. empleado en responder a todas las peticiones recibidas (con o sin errores).5. empleado en responder a la ultima peticion que tuvo el Servidor FSQL. En el Apendice E existe una relacion de todos los . sin tener en cuenta las distintas consultas efectuadas durante una misma sesion. en segundos. Esta ultima traduccion es independiente del usuario que la realiza. EL SERVIDOR FSQL 207 TIEMPO TOTAL ACCESOS indica el tiempo.3 Instalacion/Desinstalacion del Servidor FSQL La instalacion del Servidor FSQL requiere ser efectuada por un administrador de la base de datos (DBA). 5.4. Nosotros hemos utilizado siempre el administrador SYS. El SGBD Oracle no permite acceder a una unidad de tiempo menor que el segundo. por lo que en ordenadores rapidos13 no es extra~no encontrar que algunas traducciones tardan cero segundos. TOTAL PAQUETE FSQL PKG indica el numero de veces que se ha cargado el paquete FSQL PKG. Con esta informacion puede calcularse facilmente el tiempo de traduccion medio global y el tiempo de traduccion medio de las consultas en las que no se encontraron errores. Este acceso es siempre exclusivamente de lectura. empleado en responder a todas las peticiones recibidas en las que el Servidor FSQL no encontro errores. EJECUCIONES FSQL FIN indica el numero de veces que se ha ejecutado el procedimiento FSQL FIN del paquete FSQL PKG (ver Apendice D). TIEMPO ACCESOS SIN ERRORES indica el tiempo. en segundos.4. Esto hace referencia al numero de veces que se ha usado el Servidor FSQL. ERRORES ULTIMA TRADUCCION indica el numero de errores encontrados por el Servidor FSQL en la ultima peticion que tuvo.

Los .cheros generados en esta memoria con su contenido y utilidad.

cheros de instalacion son .

cheros de texto con ordenes para Oracle (scripts ) que pueden ser ejecutados desde SQL*Plus con tan solo anteponer el smbolo @ (arroba) al nombre del .

. o mejores.chero: @[<ruta>]<nombre fichero> 13 Ordenadores PC con procesadores Pentium II a 266 Mhz.

208 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL donde <ruta> es el camino14 (path) donde esta el .

chero (es opcional) y <nombre_fichero> es el nombre del .

chero a ejecutar. Si el .

Instalar FIRST (si no lo esta): Para ello se debe ejecutar el . siendo superusuario (SYS): 1. Para instalar el Servidor FSQL hay que seguir los siguientes pasos.chero tiene la extension .sql entonces no es necesario escribirla.

Este .chero FIRSTins.sql.

chero crea las tablas de la FMB. Instalar Servidor FSQL: Para ello se debe ejecutar el . 2.. inserta comentarios sobre los objetos creados (comando comment). crea algunos alias y algunas vista utiles.. concede los privilegios necesarios.

sql. Este .chero SFSQLins.

29). crea algunos sinonimos y vistas..31) e inserta los valores de aquellas que son constantes. Instalar Cliente FSQL: Esto es indispensable para poder utilizar el Servidor. Durante la ejecucion de esos .. El Cliente FSQL que se presenta en esta memoria es FQ (Fuzzy Queries) para Windows 95/98/NT (ver Captulo 6 y Apendice G). instala los paquetes del Servidor (ver Tabla 5.chero crea las tablas del Servidor (ver Tabla 5. inserta comentarios sobre los objetos creados (comando comment). 3.

ALL COL COMMENTS. Para desinstalar el Servidor FSQL hay que seguir los siguientes pasos. por lo que si se produjera otro tipo de error se debera revisar el codigo del error y el lugar donde ha ocurrido para subsanarlo. Tras una instalacion correcta se puede proceder a instalar o crear un base de datos difusa.. Desinstalar Servidor FSQL: Para ello se debe ejecutar el . etiquetas..cheros se va mostrando en pantalla las distintas fases por las que atraviesa dicha ejecucion.. antes de crear alguna tabla la borra pre- viamente. por lo que se pueden producir algunos errores al intentar borrar algo que no existe (ORA-0094215 y ORA-0143216 ). USER TAB COMMENTS. con sus tablas.. siendo superu- suario (SYS): 1. Los comentarios insertados con el comando comment pueden ser consultados en las vistas ALL TAB COMMENTS. Durante la instalacion de FIRST y del Servidor. vistas. Puede asegurarse que los objetos se han creado correctamente mirando que el campo STATUS de la tabla DBA OBJECTS valga 'VALID'. Cualquier otro error podra impedir la correcta ejecucion del Servidor FSQL. as como los mensajes de error (si los hay). relaciones de similitud.

chero SFSQLdes. 2. Desinstalar FIRST: Para ello se debe ejecutar el .sql.

3.chero FIRSTdes. Desinstalar el Cliente FSQL: Igualmente. sin abrir ningun . este paso se puede omitir si necesitamos el cliente para otras utilidades que incorpore (como acceso a bases de datos a traves de SQL normal). ya que pueden existir otros sistemas que lo esten utilizando. En realidad no es necesario desinstalar FIRST.sql. 14 En SQL*Plus puede establecerse el camino por defecto escogiendo el directorio deseado con la opcion Open (Abrir) del menu File (Archivo) y pulsando en el boton \Cancel" (Cancelar).

16 ORA-01432: Public synonym to be dropped does not exist. .chero. 15 ORA-00942: Table or view does not exist.

Se desinstala con el .sql Funciones de representacion y comparacion difusa FSQL FUNCTIONS2 FSQL F2..sql Mas funciones de comparacion difusa Tabla 5.sql Funciones utiles para el Servidor FSQL FUNCTIONS FSQL F.4. Fichero FDBins. por defecto).29: Paquetes PL/SQL del Servidor FSQL y resumen de su contenido.5.2. IMPLEMENTACION 209 Nombre Paquete Fichero Contenido FSQL PKG FSQL PKG.sql Analizador Lexico y Sintactico y otras funciones utiles: FSQL2SQL.sql Analizador Semantico y conversor del Servidor FSQL FSQL AUX FSQL AUX.4 Instalacion/Desinstalacion de una Base de Datos de Ejemplo Para instalar las bases de datos difusas no es preciso que este instalado el Servidor FSQL pero s es preciso que este instalado FIRST. En esta memoria se incluyen dos bases de datos de ejemplo: 1. 5.sql: Instala la base de datos de ejemplo del apartado 5.2. La instalacion de una base de datos no es necesario que sea efectuada por un administrador y puede ser instalada o creada por cualquier usuario que tenga acceso a FIRST (todos. la cual es una base de datos general con varias tablas que abarcan todos los casos posibles.2.  DEL SERVIDOR FSQL 5.. (ver Apendice D) FSQL SEMANTIC FSQL SEM. FSQL FIN.

1.sql.sql: Instala una base de datos sobre jugadores de baloncesto.2.10. Fichero Basketin. como la del ejemplo de apartado 5.chero FDBdes. Se desinstala con el . 2.

sql. El .chero Baskedes.

99. Analizador Sintactico: Analiza si la sentencia es correcta sintacticamente.5 Implementacion del Servidor FSQL El objetivo del Servidor FSQL es conseguir traducir una sentencia FSQL a una sentencia en SQL. El paquete FSQL PKG es el unico que contiene funciones utilizables por el usuario o por el programa Cliente FSQL. Para ello utiliza una gramatica que genera sentencias que admiten las extensiones de FSQL que se vieron en el apartado 5. Analizador Lexico: Se encarga de analizar si la sentencia FSQL es correcta lexicamente.sql contiene otros valores para la tabla de la base de datos de baloncesto.2. 118.2 estan formados por cerca de 8000 lneas de codigo. 2. habra que a~nadir las lneas para la creacion de las tablas y la insercion de datos que estos paquetes necesitan (mas de 3000 lneas).chero Basketi2. A esto. 146] de forma que cada parte del Servidor esta en un paquete distinto. desde un punto de vista conceptual el Servidor FSQL consta de los siguientes modulos: 1. . comentaremos que solo los paquetes del Servidor FSQL version 1. generando una lista con los tokens (palabras) de la sentencia. En la Tabla 5. Para ello. Como curiosidad. se han creado distintos paquetes PL/SQL [82. mediante llamadas a funciones del Servidor.29 puede verse una lista de los paquetes del Servidor FSQL y un resumen de su contenido y utilidad. 116. 5. Basicamente. En el Apendice D se enumeran y explican las funciones de este paquete PL/SQL.

PRODUCCIONES Producciones de la Gramatica para el Analizador Sintactico V.16) T. FSQL QUERY Consultas FSQL y su traduccion SQL del usuario particular T. FSQL ALL ERRORS Mensajes de Error FSQL de todos los usuarios (Apendice C) V. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Nombre Tabla/Vista Contenido T. FSQL ERRORS Mensajes de Error FSQL del usuario particular T. ACCESSIBLE TABLES Tablas y Vistas accesibles por el usuario T. TABLA SINTAX Transiciones de la Gramatica LL(1) para el Analizador Sintactico T. FSQL ALL QUERIES Consultas FSQL y su traduccion SQL de todos los usuarios V. T TRANSI Transiciones del Automata del Analizador Lexico (Figura 5. FSQL ALL INFO Informacion y opciones de con.210 CAPITULO 5. RESERVADAS Palabras Reservadas del lenguaje FSQL (Apendice A) T.

FSQL OPTIONS Opciones de con. FSQL INFO Informacion sobre el Servidor FSQL para todos los usuarios V.guracion de todos los usuarios V.

guracion modi.

a traves de su vista FSQL ERRORS.FSQL2SQL.Indice)). CREATE or replace view FSQL_ERRORS AS SELECT * FROM FSQL_ALL_ERRORS WHERE SESSIONID=USERENV('SESSIONID').31. -. FSQL STATS Control de accesos para estadsticas Tabla 5. a la vez. va generando la sentencia SQL equivalente.Id. La funcion encargada de lanzar el proceso global es la funcion FSQL PKG. Estos objetos son creados de la siguiente forma: CREATE TABLE FSQL_ALL_ERRORS ( Sessionid NUMBER NOT NULL.N umero de orden del error Msg_error VARCHAR2(2000) NOT NULL.30 y 5. -. Funciones de Representacion y Comparacion Difusa: Estas funciones son utiliza- das para mostrar los atributos difusos de manera que sean comprensibles por el usuario.30: Tablas y Vistas del Servidor FSQL y resumen de su contenido. 3. Analizador Semantico y Conversor: Analiza si la sentencia es correcta desde el punto de vista semantico y.cables por cada usuario T. Una lista de estas tablas con un resumen de su utilidad y de sus caractersticas puede verse en las Tablas 5. Para llevar a cabo todas estas tareas el Servidor FSQL utiliza unas tablas que son creadas al instalar el Servidor. Los errores que se van encontrando se van insertando en la tabla FSQL ALL ERRORS. para comparar atributos y valores difusos y para calcular los grados de compatibilidad que devuelve la funcion CDEG. de sesi on: USERENV('SESSIONID') Indice NUMBER(2) NOT NULL. -. 4. El signi.Mensaje del error PRIMARY KEY (Sessionid.

cado de sus atributos es el siguiente:  Sessionid: Es el numero identi.

. cada usuario puede estar ejecutando el Servidor en paralelo en distintas sesiones. lo que hace la Servidor FSQL ser multiusuario. De esta forma.cativo de la sesion en la que se esta ejecutando el Servidor FSQL.

IMPLEMENTACION 211 Consultable Modi.5.  DEL SERVIDOR FSQL 5.

FSQL QUERY Sint. CREATE or replace view FSQL_QUERY AS SELECT * FROM FSQL_ALL_QUERIES WHERE sessionid=USERENV('SESSIONID'). El signi. RESERVADAS A.Id. FSQL STATS DBA/USER/Cliente Servidor FSQL S No Tabla 5.cable por el por el Nombre Tabla/Vista Leda por Escrita por Usuario Usuario T.Posicion del final del token Nombre VARCHAR2(30)NOT NULL. de sesi on: USERENV('SESSIONID') Indice NUMBER (10) NOT NULL. Si es cadena/texto podr a tener hasta -. S S T. La sentencia FSQL es almacenada token a token en la tabla FSQL ALL QUERIES a traves de su vista FSQL QUERY. FSQL ALL QUERIES { { No No V. Lexico Constante No No T. ACCESSIBLE TABLES A./Sint./Sem. FSQL ALL ERRORS { { No No V. -. Semant.  Msg error: Contiene el mensaje del error cometido. T TRANSI A. -.Indice))./Sint. Estos objetos son creados de la siguiente forma: CREATE TABLE FSQL_ALL_QUERIES ( Sessionid NUMBER NOT NULL.N umero de token (empezando por el 0) Posicion NUMBER (10) NOT NULL. TABLA SINTAX A.  Indice: Simplemente numera los errores por orden de aparicion. -. PRODUCCIONES A. En el Ap endice C se muestran una lista con los errores que genera el Servidor FSQL y su posible solucion./Cliente Sistema S No T./Sem. S S T. En esta vista es donde el conversor ira traduciendo parte a parte la sentencia FSQL en su sentencia SQL equivalente.Nombre del token Atributo VARCHAR2(2000)./USER/Cliente USER/Cliente S S T. FSQL ERRORS Cliente FSQL Lex. Sintactico Constante No No T.Token le do de la entrada. FSQL INFO USER/Cliente Servidor FSQL S No V. FSQL ALL INFO { { No No V. -./Sem./Cliente Lex. Sintactico Constante No No V.31: Caractersticas de las Tablas y Vistas del Servidor FSQL.2000 caracteres (max long aceptada en una columna VARCHAR2 SQL) PRIMARY KEY (Sessionid. Lexico Constante S No T. -. FSQL OPTIONS Sem.

cada usuario puede estar ejecutando el Servidor en paralelo en distintas sesiones.cado de sus atributos es el siguiente:  Sessionid: Es el numero de sesion en la que se esta ejecutando el Servidor FSQL. . De esta forma.

de forma que se ayuda al usuario a localizar y corregir el error cometido. Cada token tiene un nombre que lo identi.  Nombre: Indica el nombre del token. As.  Posicion: Contiene la posici on de cada token y es utilizado para generar el mensaje de error.212 CAPITULO 5. cada mensaje de error indicara la posicion donde este se produce. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL  Indice: Simplemente numera los tokens por orden de aparicion en la sentencia FSQL.

ca. como por ejemplo ID para un identi.

 Atributo: Almacena el token encontrado o la modi. GT para el smbolo >.cador.. EQ para el smbolo =. LT para el smbolo <.. GEQ para el smbolo >=.

comprension y modi. No obstante. A continuacion explicamos un poco mas en detalle cada uno de los modulos que contiene el Servidor FSQL.cacion efectuada por el conversor. durante el proceso de desarrollo de todos los modulos del Servidor FSQL se han introducido multitud de comentarios explicativos en el codigo fuente que facilitan su lectura.

FSQL LEXICO y es llamada por la funcion FSQL2SQL y devuelve el numero de errores lexicos encontrados por el analizador en la sentencia FSQL (ver Apendice C). sintactico y semantico puede encontrarse en [3].1 Analizador Lexico La funcion encargada del analisis lexico es FSQL PKG.5. Un estudio mas exhaustivo y general de los analizadores lexico. 5. llamadas tokens. agrupando los caracteres en palabras. que son los smbolos terminales de la gramatica. Los tokens son obtenidos leyendo la sentencia caracter a caracter y aplicando sobre la marcha el automata . El analizador lexico asegura que todos los elementos de la sentencia estan permitidos.cacion.

nito determinista de la Figura 5. sus estados terminales son representados con un crculo doble y tienen los signi.16. donde su estado inicial es el cero.

32. Para simpli.cados dados en la Tabla 5.

car el automata se ha utilizado una lista de palabras reservadas que son identi.

cadores con un signi.

En el Apendice A se muestra la lista de todas las palabras reservadas consideradas por el Servidor FSQL. INSERT. leyendo caracteres va cambiando de estado hasta que llegamos a un estado en el que no existe transicion para el caracter ledo. si el estado es terminal (. NFEQ.cado especial y que estan reservados para un uso concreto. Para hallar los tokens. As.. suponemos que el automata esta situado en el estado cero. Ejemplos de palabras reservadas son SELECT. se lee un caracter de la sentencia de entrada y dependiendo de este se pasa a otro estado. FROM. En ese caso. CDEG. FEQ..

Si el token es un identi.nal) ya tenemos un token y si el estado es no terminal entonces obtenemos un error lexico.

Al igual que la tabla RESERVADAS. sus datos son introducidos durante la instalacion del Servidor y permanecen siempre constantes: . La tabla T TRANSI contiene la tabla de transiciones para el automata empleado. por si estos desean consultarla en algun momento. las cuales estan contenidas en la tabla RESERVADAS (ver Apendice A). y esta creada con la siguiente sentencia: CREATE TABLE RESERVADAS( Palabra varchar(20) NOT NULL. PRIMARY KEY (Palabra)).cador (estado 15) se debera comprobar si pertenece a la lista de palabras reservadas. Esta tabla tiene permiso de lectura para todos los usuarios.

IMPLEMENTACION 213 Estado Token 1 Suma 2 Resta 3 Producto 4 Division 5 Parentesis izquierdo 6 Parentesis derecho 7 Coma 8 Punto 9 Comparador Mayor que 10 Dolar (comienzo de etiqueta o trapecio) 11 Comparador Menor que 12 Comparador Igual que 13 Numero Entero 14 Numero Real en notacion Fija 15 Identi.  DEL SERVIDOR FSQL 5.5.

no se distingue entre mayusculas y minusculas (excepto en los estados 24 y 26).32: Signi. 17.  Como en SQL. 19 y 36 admiten espacios entre sus caracteres.cador o Palabra Reservada 16 Comparador Mayor o Igual que 17 Comparador Menor o Igual que 19 Comparador Distinto a (4 formas) 20 Corchete izquierdo 21 Corchete derecho 22 Punto y coma 24 Cadena (con comillas dobles) 26 Texto (con comillas simples) 27 Sostenido (Smbolo de Aproximadamente) 28 Tanto por ciento (Caracter comodn) 29 Llave izquierda 30 Llave derecha 33 Numero Real en notacion Exponencial 36 Operador Concatenar 38 Comentario (3 formas)  Los tokens 16. Tabla 5.

2.Caracter)). -. -.cado de los Estados Terminales del automata de la Figura 5. CREATE TABLE T_TRANSI ( Estado NUMBER(2) NOT NULL.Estado siguiente leyendo ese car acter PRIMARY KEY (Estado.16. El formato de los comentarios se ha explicado en el apartado 5. Tras el analisis lexico.Car acter le do Sig_estado NUMBER(2) NOT NULL. Si encuentra un error. . todas las \palabras" de la sentencia estaran introducidas en esta vista de forma ordenada. -. Ademas. El analizador lexico inserta en la vista FSQL QUERY una lista con todos los tokens de la sentencia de entrada (ordenados por el atributo INDICE). inserta el texto del error en la vista FSQL ERRORS y continua el analisis en busca de mas errores. el analizador lexico elimina los comentarios que hubiera en el comando de entra- da.1.Estado actual Caracter NUMBER(3) NOT NULL.

] 8 21 {0.9} * * * % 39 40 28 ASCII-{*.#} ( < = 5 11 17 b > ) {!.¬} = 6 18 19 b . Estados No Terminales.Z} 4 15 {A..9.Z..9} ASCII-{’} 33 32 # 27 {0.$.^. Estados Terminales (finales). Figura 5.16: Automata .9} . Estado Inicial + $ 1 0 10 214 .-} 25 26 {0... {0.9} 23 24 14 E 31 ’ ’ {0. /} {EOS. " " {0./} { ASCII-{*} EOS 29 - 37 38 } 30 ASCII-{ } EOS (End Of Sentence) es el b Fin de Sentencia.. representa el retorno de carro (RETURN): Caracteres 10 o 13. [ 7 20 .9} {+. > = 2 9 16 b * = 3 12 / {A..9} 13 22 E ASCII-{"} . b representa al espacio en blanco. 35 36 ASCII es el conjunto de todos los caracteres..9} {0.0.._...

.nito determinista usado por el Analizador Lexico de FSQL.

P g.5. las palabras (tokens ) que son utilizados para formar una sentencia . es decir. Una gramatica G esta formada por 4 conjuntos de datos: G = fT. N.  DEL SERVIDOR FSQL 5.2 Analizador Sintactico La funcion FSQL PKG. donde:  T es una lista de smbolos Terminales de la gramatica. El Apendice B contiene la gramatica empleada por el Servidor FSQL. El analizador Sintactico asegura que los tokens estan en un orden adecuado y que la construccion de la sentencia es correcta sintacticamente. S. IMPLEMENTACION 215 5. incluyendo lexicos y sintacticos (ver Apendice C).5.FSQL SINTACTICO es la encargada de este analisis y es llamada por la funcion FSQL2SQL tras el analizador lexico y devuelve el numero de errores encontrados por la sentencia FSQL. Para expresar la sintaxis de una sentencia hemos elegido la forma de gramatica utilizando el formato de Yacc.

que son smbolos temporales utilizados para generar sentencias validas de nuestra gramatica. Si se llega a un punto en el que no existe una produccion valida para construir la sentencia.  N es una lista de smbolos No Terminales. Las producciones son aplicadas hasta que no hay smbolos de N . a partir del cual se derivan todas las sentencias validas de nuestra gramatica aplicando las producciones. En nuestra gramatica (Apendice B) hemos tomado la convencion de escribirlos con todas las letras en mayuscula. La parte derecha de una produccion puede ser la cadena vaca (nada). llamado Smbolo Inicial. Ese caso indica que el smbolo de la parte izquierda puede ser sustituido por cualquiera de esas partes derechas. Si varias producciones tienen el mismo smbolo de la izquierda se pueden escribir separando las distintas partes derechas por las que puede ser sustituido por el caracter `|'. la sentencia sera erronea sintacticamente. La generacion de sentencias de una gramatica es simple. En nuestra gramatica son escritos con todas las letras en minuscula.  S es un smbolo No Terminal. Una produccion tiene dos partes: Izquierda y Derecha (separadas por dos puntos). decimos que la sentencia generada es correcta sintacticamente.  P es un conjunto de Producciones a partir de las cuales y empezando por el Smbolo Inicial se obtienen las sentencias. La parte izquierda es un smbolo de N y la parte derecha es una lista de smbolos de N y/o T en un orden concreto. empezando por S sustituir cada smbolo de N por una de las posibilidades que ofrece en el conjunto de producciones P . El smbolo de la parte izquierda puede ser sustituido por todos los smbolos de la parte derecha. que indica que el smbolo No Terminal de la izquierda puede ser eliminado sin ser sustituido por nada.nal valida. Para ello. utiliza las tablas PRODUCCIONES y TABLA SINTAX creadas de la siguiente forma y con el siguiente signi. En ese caso. pues se trata de.

Terminal_der CHAR NOT NULL. Parte_der VARCHAR2(20).cado para sus atributos: CREATE TABLE PRODUCCIONES ( Num_prod NUMBER(3) NOT NULL. . Posicion NUMBER(1) NOT NULL. PRIMARY KEY (Num_prod.Posicion)).

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Esta tabla contiene la lista de producciones de la gramatica.216 CAPITULO 5. Una produccion utiliza tantas .

Sus atributos tienen el siguiente signi.las como smbolos tenga en la parte derecha de la produccion.

La parte derecha de una produccion puede tener n smbolos.cado:  Num prod: Indica el numero de produccion a la que pertenece. con n  1. para cada uno de esos n smbolos hay que incluir una .  Posicion: Posicion que ocupa el smbolo del atributo Parte der en esa produccion. Por tanto. Todas las producciones de nuestra gramatica estan numeradas.

 Terminal der: Indica si el smbolo de Parte der es Terminal ('T') o No Terminal ('N'). se inserta 'VACIO' (como smbolo No Terminal). Aprovechando que la gramatica es LL(1). Si como parte derecha de la produccion aparece la cadena vaca. segun la gramatica LL(1) usada. se simpli. Por convenio hemos notado en mayusculas los smbolos terminales y en minusculas los smbolos no terminales. La tabla TABLA SINTAX contiene las transiciones del analizador sintactico.la en esta tabla.  Parte der: Smbolo (No Terminal o Terminal) de la derecha que esta en esa Posicion dentro de la parte derecha de la produccion.

7. para empezar el analisis. 4. Si el smbolo de la Pila es el smbolo de FIN. i. la tabla TABLA SINTAX es fundamental en este analisis. Si el smbolo de la Pila es no terminal. Se lee un token de la entrada. de la vista FSQL QUERY ordenadamente por el campo Indice. entonces para dicho smbolo no terminal y para el token ledo existira una unica produccion a aplicar.posicion). 5. Si el smbolo de la Pila es terminal y coincide con el de la entrada se acepta el token y se vuelve al paso 3. seguimos el siguiente algoritmo: 1. 8. Introducir el Smbolo Inicial de la gramatica en la Pila. Como vemos. termina el analisis: Si. la sentencia sera correcta sintacticamente. Introducir un smbolo de FIN en la Pila. Ir al paso 4. implementada a traves de tablas PL/SQL (tipo TPILA). entonces se genera un error.ca el desarrollo del anali- zador sintactico. entonces se genera un error del tipo \en- contrado en la entrada un token cuando esperaba el FIN de la sentencia". utilizamos una estructura tipo pila. 3. Si. Entonces. Eso es averiguado leyendo en la tabla TABLA SINTAX. quedan smbolos sin analizar en la entrada.e. La parte derecha de dicha producci on es introducida smbolo a smbolo en la Pila en orden inverso (orden decreciente del atributo PRODUCCIONES. 6. en ese momento. Si no coinciden ambos valores. 2. pues nos permite averiguar el numero de la produccion a aplicar. por el contrario. Esta tabla tiene el siguiente formato: . para que nos indique cuando hemos terminado el analisis.. no quedan smbolos sin analizar. As. Se lee un smbolo de la Pila.

simbolo_T)). Simbolo_T VARCHAR2(20) NOT NULL. PRIMARY KEY (simbolo_NT.5. IMPLEMENTACION 217 CREATE TABLE TABLA_SINTAX ( Simbolo_NT VARCHAR2(20) NOT NULL. Y sus atributos tienen el siguiente signi. Num_prod NUMBER(3) NOT NULL.  DEL SERVIDOR FSQL 5.

 Num prod: Numero de produccion a aplicar en el caso de que encontremos ese Simbolo NT en la Pila y ese Simbolo T en la entrada.33) hay que insertar en TABLA SINTAX tuplas con I en el primer atributo. Si D1 D2 : : : Dn s es anulable: Iniciales(D1D2 : : : Dn ) [ Seguidores(I ). 2. el numero de esa produccion en el tercer atributo y un smbolo terminal incluido en los Smbolos Directores en el segundo atributo.  Simbolo T: Smbolo Terminal (token ) ledo de la consulta de entrada. Si D1 D2 : : : Dn no es anulable: Iniciales(D1D2 : : : Dn ). O sea.cado:  Simbolo NT: Smbolo No Terminal encontrado en la Pila. Los valores de esta tabla son introducidos de la siguiente forma: Para cada produccion del tipo I ! D1 D2 : : : Dn (5. Durante el analisis sintactico se va modi. para cada produccion se introducen en esta tabla tantas tuplas como Smbolos Directores existan. Los Smbolos Directores se calculan de la siguiente forma: 1.

cando el atributo FSQL QUERY. de forma que los identi.nombre de algunos tokens.

camos mas exactamente para facilitar esta identi.

cacion al analizador semantico. Esto se efectua principalmente para localizar el signi.

cado de los identi.

5... esta funcion devuelve el numero de errores encontrados en la sentencia FSQL (ver Apendice C). comparadores. Igual que en los anteriores analizadores. Este analizador se asegura que la sentencia no tiene errores semanticos en general y. El analizador semantico solo es ejecutado. El analizador semantico es el modulo mas complejo de todo el Servidor. el mas largo.3 Analizador Semantico y Conversor La funcion FSQL SEMANTIC. mas en particular.semantico es la encargada de este analisis y es llamada por la funcion FSQL2SQL tras el analizador lexico y sintactico si en estos no se han encontrado errores. De esta forma. en lo relativo a la extension difusa de FSQL. si la sentencia no contiene errores lexicos ni sintacticos. numeros de umbral. conseguimos que el analizador semantico no sea ejecutado innecesariamente. Ademas. a la vez que analiza semanticamente la sentencia va convirtiendola en una sen- tencia de SQL. de forma que va sustituyendo las clausulas propias de FSQL por clausulas .cadores. el que mas tiempo de ejecucion necesita y el que mas accesos a la base de datos realiza. 5. por tanto.

En caso contrario. como el tanto por ciento %.* <esquema>. En el Apendice F se exponen algunos ejemplos de sentencias FSQL traducidas a SQL. como se expone en las Tablas 5. 5. Por tanto. Si el atributo es difuso Tipo 2 o 3 se incluye la llamada a la funcion que representa su valor.* o <esquema>.4).3.218 CAPITULO 5. la sentencia SQL resultante se obtiene concatenando todos los campos Atributo de esa vista. siendo tratados as como un CDEG normal posteriormente (por el procedimiento calcula CDEG). incluyen. principalmente.<tabla>. poniendo su posicion a cero. si los hay. apartado 5. el tratamiento de los atributos difusos. en esta fase se localizan los atributos y para cada uno de ellos se realiza un tratamiento especial si es difuso (en el procedimiento trata fuzzy column).<tabla>.2 Fase de Tratamiento de Atributos Difusos Despues del proceso anterior se pasa a la parte mas importante del desarrollo. de forma que una vez terminado el analisis sin errores.5. si las tablas involucradas no contienen atributos difusos Tipo 2 o 3 se dejan los comodines.5. se soluciona el problema que pueden plantear los comodines. ya que ambos pueden incluir atributos que requieran un tratamiento especial por ser difusos Tipo 2 o 3. ordenados por el campo Posicion.% <esquema>. Suponemos que los atributos difusos Tipo 2 o 3 tienen en orden sus columnas: Primero el tipo (terminado en T) y luego el resto de atributos (ordenados por su numero). ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL propias de SQL utilizando. el analizador utiliza la vista FSQL QUERY alterando el contenido de la columna Atributo. si las tablas no tienen atributos con ictivos (difusos Tipos 2 o 3) se cambian por <tabla>. columna por columna de la tabla se incluye en la lista de seleccion (en la posicion que tena el comodn).1 y 5. sus Alias y los Comodines En una primera fase este analizador estudia los alias de las tablas y si las tablas situadas en la parte FROM de la sentencia son o no accesibles por el usuario.2 segun sea su Tipo difuso 2 o 3 respectivamente. Las llamadas a CDEG son incluidas en la vista FSQL QUERY como si hubiesen sido escritos en la consulta inicial. Esa concatenacion debera ser efectuada por el programa Cliente FSQL (ver Captulo 6). tanto el asterisco *. Resumiendo.<tabla>. forzosamente un atributo difuso. En este tratamiento se tiene en cuenta que un atributo difuso puede aparecer en los siguientes lugares: . Durante todo el proceso.3.% Con el comodn *.5.1 Fase preliminar: Las Tablas. Si un atributo difuso no aparece en la clausula WHERE. Tras esto. llamadas a funciones (sobretodo a las Funciones de Representacion y Comparacion difusa. La inclusion de comodines puede ser efectuada en los 6 siguientes formatos: * <tabla>. Los atributos difusos Tipo 1 no requieren un tratamiento especial. este analisis se compone de las siguientes tres grandes fases: 5.* % <tabla>. su CDEG no es aplicable y por tanto no aparecera su CDEG si se usa el comodn % (que ser a eliminado en calcula CDEG). Con el comodn %.* y se incluyen las llamadas a la funcion CDEG de los Tipos 1. En caso negativo se genera un error. Todas las expresiones que necesitan un tratamiento especial por ser extensiones de FSQL y que no pueden ser tratadas normalmente.

En la lista de seleccion del SELECT como columna solitaria y no en expresiones17: En este caso se modi.5. IMPLEMENTACION 219 1.  DEL SERVIDOR FSQL 5.

). (c) A la izquierda de una condicion con IS. En cualquier otro lugar (en operaciones aritmeticas.3 Fase de Tratamiento de la Funcion CDEG Primero se calculan las funciones que se usaran como normas para el tratamiento de los operadores logicos que aparecen en la condicion.1. En su lugar se pone una llamada a la funcion correspondiente para mostrar ese atributo difuso de forma coherente (funciones fshow2 y fshow3 respectivamente).12 (FEQ.8 y en las que un atributo difuso puede aparecer en las siguientes posiciones: (a) A la izquierda de cualquier comparador difuso. el tratamiento de dicho atributo con esta funcion se realiza en la fase posterior..1. En la Tabla 5. como se vio en el apartado 5. 4.atributo de las columnas difusas Tipo 2 o 3.): Si el atributo difuso es Tipo 1. Como argumento de la funcion CDEG: En este lugar..4. tal y como se indico en el apartado 5.ca (a traves del procedimiento llamado fuzzy column en sl) el campo FSQL QUERY.13.3. 2. NFEQ.4. teniendo en cuenta el tipo de condicion difusa elemental que sea..5. en la clausula ORDER BY. Si en la vista FSQL OPTIONS no esta de. FGT.1. En una condicion difusa (clausula WHERE): En este caso se sustituye cada condicion difusa elemental por una funcion de comparacion difusa. 5. tal y como se explico en el apartado 5. Estas funciones estan almacenadas en la vista FSQL OPTIONS. Por defecto se usan las funciones que se indicaron en la Tabla 5. no hay problema y no se hace ningun tratamiento especial.33 se ven las funciones empleadas para sustituir un CDEG donde su atributo este involucrado en una <Condicion> con operadores logicos. y cada usuario puede escoger el tipo de tratamiento que desea efectuar en cada momento.2. Si el atributo difuso es Tipo 2 o 3. (b) A la derecha de cualquier comparador difuso si hay otra columna a la izquierda de tipos compatibles18 . expresados en la Tabla 5. como argumento de funciones. 3. pueden hacerse 3 tratamientos distintos..

Una vez ledas las funciones anteriores se pasa al tratamiento particular de cada llamada a esta funcion particular de FSQL (procedimiento calcula CDEG). 17 La inclusion de atributos difusos (sobretodo los Tipo 2) y constantes difusas en expresiones aritmeticas no esta contemplada en esta version y debera ser tenida en cuenta en versiones posteriores. . En general. por el contrario. donde LEAST y GREATEST son funciones para el mnimo y el maximo respectivamente que estan ya implementadas en Oracle. se utilizaran las funciones por defecto. solo se tendran en cuenta las condiciones elementales donde este involucrado dicho atributo. el argumento es un atributo. La solucion a este inconveniente es tan facil como intercambiar el orden de los argumentos del comparador. aunque s aparezcan a la derecha. es mas util utilizar el * pues nos da el grado de cumplimiento de toda la condicion impuesta en la consulta para cada tupla.nida la funcion a emplear para algun operador. Si el argumento es * se tienen en cuenta todas las condiciones elementales de la condicion de la clausula WHERE y si. 18 En esta version no se consideran validas comparaciones sin atributos difusos a la izquierda de un compa- rador difuso.

CDEG(<c2>)) NOT <c1> 1 .220 CAPITULO 5. En la sentencia SQL traducida de una FSQL.CDEG(<c2>)) F OR(CDEG(<c1>).4 Funciones de Representacion y Comparacion Difusa Estas funciones no son ejecutadas por el Servidor FSQL.RNPS).33: Funciones usadas para el calculo de la funcion CDEG con operadores logicos. Si en la lista de condiciones elementales aparece una condicion clasica (crisp). 5. aunque forman parte de este. se utilizara una llamada a la funcion FSQL FUNCTIONS.5. logicos) por defecto (FSQL OPTIONS vaco) estas funciones en FSQL OPTIONS <c1> AND <c2> LEAST(CDEG(<c1>). Para que una funcion pueda ser empleada de esta forma debe ser declarada como restrin- gida (restricted ) de la siguiente forma: PRAGMA RESTRICT_REFERENCES (<nombre_funci on>.CompCrisp que devuelve 1 si la condicion es verdad y 0 si la condicion es falsa. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL <Condici on> Funciones para CDEG(<Condicion>) F. WNDS (Write No Database State ) no permite que se modi. donde <nombre_funcion> es el nombre de la funcion.CDEG(<c1>) F NOT(CDEG(<c1>)) Tabla 5.CDEG(<c2>)) F AND(CDEG(<c1>). estas funciones son ejecutadas cuando se ejecuta la sentencia SQL resultante de la traduccion de una sentencia FSQL usando el Servidor FSQL.WNDS.CDEG(<c2>)) <c1> OR <c2> GREATEST(CDEG(<c1>). se incluyen llamadas a algunas de estas funciones. De esta forma. para CDEG(<Condicion>) con (con op.WNPS.

Para el correcto funcionamiento de estas funciones es imprescindible que las tablas y atributos de FIRST esten correctamente de. WNPS (Write No Package State ) no permite escribir variables de ningun paquete y RNPS (Read No Package State ) no permite leer variables de ningun paquete.que la base de datos desde la funcion.

as como que todos los objetos utilizados para los atributos difusos esten correctamente introducidos en dichas tablas. si en una relacion se almacena una etiqueta lingustica para un determinado atributo difuso Tipo 2 y dicha etiqueta no esta de. Por ejemplo.nidos.

nida correctamente (en FUZZY OBJECT LIST y/o FUZZY LABEL DEF) se producira un error en tiempo de ejecucion cuando se intente acceder a esa etiqueta. Algunos de estos errores podran ser detectados y evitados de.

5.1 Funciones de Representacion Las Funciones de Representacion estan incluidas en el paquete FSQL FUNCTIONS y tienen por objetivo representar gra.5. tanto en la base de datos como en la FMB.4.niendo algunos triggers (disparadores) en el SGBD que ayuden a mantener la integridad de los atributos difusos y de los valores de la FMB. La mision de estos triggers sera producir un error cuando se intente insertar algun valor incorrecto.

i.camente aquellos atributos difusos que tienen una representacion interna distinta de la habitual. y su cabecera. con sus argumentos. Existen tres tipos de estas funciones: 1. los atributos difusos Tipo 2 y 3. es la siguiente: .e. Funcion fshow2: Esta funcion se utiliza para representar atributos difusos Tipo 2..

 DEL SERVIDOR FSQL 5.34: Representacion Gra.21.26] 6 (aproximado) F1F4 2210 7 (trapecio) $[F1.F4] [21.5.28] Tabla 5.26.F3+F4. IMPLEMENTACION 221 F_TYPE Representacion Ejemplos 0 UNKNOWN UNKNOWN 1 UNDEFINED UNDEFINED 2 NULL NULL 3 (crisp) F1 25 4 (etiqueta) label Joven 5 (intervalo) [F1.F4] $[18.F1+F2.

F2 IN NUMBER.COL) son los numeros identi. F_TYPE IN FUZZY_COL_LIST.F_TYPE%TYPE. F1 IN NUMBER. FUNCTION fshow2 ( OBJ IN FUZZY_LABEL_DEF. F4 IN NUMBER) RETURN VARCHAR2.ca de Atributos difusos Tipo 2.OBJ#%TYPE. donde (OBJ. F3 IN NUMBER.OBJ#%TYPE. COL IN FUZZY_LABEL_DEF.

F_TYPE IN FUZZY_COL_LIST. F2 IN FUZZY_OBJECT_LIST. FP8 IN NUMBER.OBJ#%TYPE.FUZZY_ID%TYPE) RETURN VARCHAR2. F4 IN FUZZY_OBJECT_LIST. F7 IN FUZZY_OBJECT_LIST. con sus argumentos. 2. FP10 IN NUMBER.FUZZY_ID%TYPE. En la Tabla 5.FUZZY_ID%TYPE. tal y como se representan los atributos difusos Tipo 2 en formato relacional (Tabla 5. FP5 IN NUMBER. Funcion fshow3: Esta funcion se utiliza para representar atributos difusos Tipo 3. y su cabecera. F9 IN FUZZY_OBJECT_LIST.LEN%TYPE.FUZZY_ID%TYPE. F6 IN FUZZY_OBJECT_LIST. es la siguiente: FUNCTION fshow3 ( OBJ IN FUZZY_LABEL_DEF.F10 IN FUZZY_OBJECT_LIST.FUZZY_ID%TYPE. FP6 IN NUMBER. FP1 IN NUMBER. F3 y F4 son el resto de argumentos del atributo.FUZZY_ID%TYPE.F_TYPE%TYPE. donde (OBJ. F2.OBJ#%TYPE. FP2 IN NUMBER. que es el dato mostrado.FUZZY_ID%TYPE. La funcion devuelve un dato de tipo cadena de caracteres (VARCHAR2).34 se muestra como se representa cada tipo de valor en un atributo difuso Tipo 2.FUZZY_ID%TYPE. FP9 IN NUMBER. F5 IN FUZZY_OBJECT_LIST.COL) son los numeros identi.1). FP7 IN NUMBER.cativos de la tabla y columna del atributo que se desea representar. con un ejemplo para cada uno. F3 IN FUZZY_OBJECT_LIST. FP3 IN NUMBER. F_TYPE es el tipo del valor de dicho atributo y F1.FUZZY_ID%TYPE.FUZZY_ID%TYPE. FP4 IN NUMBER. COL IN FUZZY_LABEL_DEF. F1 IN FUZZY_OBJECT_LIST. LEN IN FUZZY_COL_LIST. F8 IN FUZZY_OBJECT_LIST.

F_TYPE es el tipo del valor de dicho atributo.cativos de la tabla y columna del atributo que se desea representar. LEN es el numero .

222 CAPITULO 5. 0. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL F_TYPE Representacion Ejemplos 0 UNKNOWN UNKNOWN 1 UNDEFINED UNDEFINED 2 NULL NULL 3 (simple) FP1/label Moreno (si FP1=1 se quita el 1/) 4 (dist. 1/Moreno (LEN=3) Tabla 5.2/Rubio.8/Casta~no. pos) FP1/label1: : : FPLEN /labelLEN 0.35: Representacion Gra.

Como puede observarse. En la Tabla 5. Funcion fshow3 len1: Esta funcion es similar a la funcion anterior pero en esta supone- mos que el argumento LEN vale 1. de campos maximo del atributo en cuestion y (FPi. que es el dato mostrado. por lo que usando esta funcion de representacion incrementamos la e. pensamos que los atributos difusos Tipo 3 son. En realidad. De todas formas. con un ejemplo para cada uno.ca de Atributos difusos Tipo 3. tal y como se representan los atributos difusos Tipo 3 en formato relacional (Tabla 5. en la mayora de los casos utilizados como distribuciones de posibilidad con un unico elemento. por lo que se reduce mucho el numero de argumentos.2).Fi) son el resto de argumentos del atributo. 3. el Servidor FSQL no esta preparado para represen- tar distribuciones de posibilidad sobre atributos difusos Tipo 3 con mas de 10 elementos de longitud. nos parece que las distribuciones de posibilidad de este tipo con una longitud mayor de 10 elementos son excesivamente raras y no muy utiles en la mayora de los casos.35 se muestra como se representa cada tipo de valor en un atributo difuso Tipo 3. La funcion devuelve un dato de tipo cadena de caracteres (VARCHAR2).

COL IN FUZZY_LABEL_DEF.FUZZY_ID%TYPE) RETURN VARCHAR2. FP1 IN NUMBER. F_TYPE IN FUZZY_COL_LIST. Su cabecera es la siguiente y sus argumentos no necesitan ya explicacion.F_TYPE%TYPE. Estas funciones pueden detectar algunos errores en la representacion de valores difusos en las tablas. en tiempo de ejecucion:  Si una determinada etiqueta no existe en FUZZY OBJECT LIST su representacion no puede ser leda y mostrara el mensaje \ERROR: Etiqueta no de.OBJ#%TYPE. FUNCTION fshow3_len1 ( OBJ IN FUZZY_LABEL_DEF. F1 IN FUZZY_OBJECT_LIST.ciencia en la mayora de los casos.OBJ#%TYPE.

una restriccion en las columnas del tipo de valores difusos: De 0 a 7 para los atributos difusos Tipo 2 (Tabla 5.. . i. no esta entre 0 y 7 para atributos difusos Tipo 2 o no esta entre 0 y 4 para atributos difusos Tipo 3.  Si el tipo de valor difuso no es correcto.nida". al crear la tabla.1) y de 0 a 4 para los Tipo 3 (Tabla 5.2). entonces el mensaje mostrado sera: \Error en Tipo Fuzzy".e. Este error puede ser evitado facilmente estableciendo.

4. El resto. el Servidor FSQL tiene en cuenta el tipo de los valores a comparar.. de forma que se utilice la funcion mas apropiada para cada tipo.Y] FFF_crisp_finter 2 fcol_t1 FFF #Aprox FFF_crisp_aprox 3 fcol_t1 FFF $label FFF_crisp_trape 4 fcol_t1 FFF $[a.36: Funciones de comparacion difusa empleadas con atributos difusos Tipo 1. por ahora. ganando el sistema en e. IMPLEMENTACION 223 Formato de la comparacion Funcion empleada N con el comparador difuso generico FFF en la traduccion 1 fcol_t1 FFF [X.e.  DEL SERVIDOR FSQL 5. clasica: NULL del SGBD (no difuso) Tabla 5. solo las funciones de comparacion de los comparadores \Mucho Mayor/Menor que".d] FFF_crisp_trape 5 fcol_t1 FFF crisp FFF_t1_t1 6 fcol_t1 FFF expr_crisp FFF_t1_t1 7 fcol_t1 FFF fcol_t1 FFF_t1_t1 8 fcol_t1 FFF fcol_t2 FFF_t1_t2 9 fcol_t1 FFF (UNKNOWN|UNDEFINED|NULL) Error 10 fcol_t1 IS [NOT] (UNKNOWN|UNDEFINED) Error 11 fcol_t1 IS [NOT] NULL Comp. i.2 Funciones de Comparacion Difusa Las Funciones de Comparacion difusa estan incluidas en los paquetes FSQL FUNCTIONS y FSQL FUNCTIONS2. estan en el primer paquete. MGT/NMGT y MLT/NMLT. En el segundo estan.5. Como ya se ha dicho anteriormente.b.c.5. 5.

ciencia. de forma que en cada caso se utilice la funcion apropiada. Por eso. As. se ha programado una funcion independiente para cada tipo de comparacion posible. pero esto sera poco e. Se podra haber programado solo una funcion general que sirviera para todos los tipos. si en una comparacion sabemos que un elemento es un valor crisp. la comparacion es mas simple que si es un trapecio o que si puede ser cualquier tipo de valor representado por el nombre de un atributo difuso.

6 y 7 la parte derecha . destacar el hecho de que no pueden usarse las constantes difusas UNKNOWN. En las Tablas 5. Para atributos difusos Tipo 2. Los atributos difusos Tipo 1 son considerados como valores crisp y los atributos difusos Tipo 2 y 3 tienen funciones separadas por su incompatibilidad. Con respecto a la Tabla 5. Fukami et al.37 se muestran las funciones empleadas cuando se utiliza respec- tivamente un atributo difuso Tipo 1.ciente cuando ya sabemos el tipo de una o ambas partes de la comparacion. excepto NULL con el operador IS (caso 11) en el que NULL es entendido en el sentido que le da el SGBD y no en el sentido difuso de Umano. NFGT.. En este caso.36. no se le puede poner umbral de cumplimiento. <fcol_t2>. las funciones generales. UNDEFINED y NULL con atributos difusos Tipo 1. <fcol_t1>. que sirven para cualquier tipo. FGT. 5.. con un comparador difuso generico que llamaremos FFF. As. NFEQ. han sido programadas con el nombre del comparador al que implementan y son utilizadas exclusivamente cuando a ambos lados del comparador aparecen sendos atributos difusos Tipo 2. y Tipo 2. que en los casos 1. existen las siguientes funciones de comparacion entre dos atributos difusos Tipo 2: FEQ.36 y 5. de [70] y [143]. Recordemos ademas.

1 se explica como conseguir esto.4. Para conseguir la repre- sentacion del atributo difuso se usa. 10 y 11: Las comparaciones con estas constantes difusas solo pueden efectuarse con el comparador FEQ. Por tanto.4.1).37: Funciones de comparacion difusa empleadas con atributos difusos Tipo 2.d] FFF_trape 5 fcol_t2 FFF crisp FFF_crisp 6 fcol_t2 FFF expr_crisp FFF_crisp 7 fcol_t2 FFF fcol_t1 FFF_crisp 8 fcol_t2 FFF fcol_t2 FFF 9 fcol_t2 FEQ UNKNOWN FEQ_UNKNOWN 10 fcol_t2 FEQ UNDEFINED FEQ_UNDEFINED 11 fcol_t2 FEQ NULL FEQ_NULL 12 fcol_t2 IS [NOT] (UNKNOWN|UNDEFINED|NULL) Comp.1. Si la parte izquierda de una comparacion es crisp (caso de la Tabla 5. queremos hacer las siguientes aclaraciones en algunos de sus casos:  Casos 9.Y] FFF_inter 2 fcol_t2 FFF #Aprox FFF_aprox 3 fcol_t2 FFF $label FFF_trape 4 fcol_t2 FFF $[a. de la comparacion es difuminada tal y como se explica en el apartado 5. 1 o 2. con los que solo se puede usar el comparador FEQ.) y funciones (ABS. <fcol_t3>. *.  Caso 13: En este tipo de comparaciones no difusas.37.9. clasica del F_TYPE 13 fcol_t2 = 'CADENA' o fcol_t2 [NOT] LIKE 'CADENA' Comp..5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL Formato de la comparacion con el Funcion empleada N comparador difuso generico FFF o FEQ (si es requerido) en la traduccion 1 fcol_t2 FFF [X.. -. por lo que el Servidor FSQL solo implementa estos ultimos. UNDEFINED o NULL. que es visto como una cadena de caracteres (tipo VARCHAR2) que debe compararse con la 'CADENA' indicada. no se le puede poner umbral de cumplimiento. clasica: fshow2 Tabla 5. del Tipo 2. En el caso 6 la expresion crisp puede contener cualquier tipo de operador aritmetico (+.36) entonces los comparadores de Necesidad obtienen identicos valores que sus homonimos de Posibilidad. LEAST. se ha programado la funcion FEQ3 y algunas asociadas.34.224 CAPITULO 5. Con respecto a la Tabla 5. como ya hemos indicado arriba (apartado 5.. En el apartado 5. la funcion fshow2 obteniendo los resultados de representacion de la Tabla 5.c.  Caso 12: Es una comparacion clasica en la que se compara si el valor del Tipo del atributo difuso es 0. respectivamente para UNKNOWN. SQRT.. De esta tabla queremos matizar lo siguiente:  Caso 1: Se utilizara una u otra funcion dependiendo de la longitud maxima de las distribuciones de posibilidad sobre el atributo involucrado: Atributo LEN de la tabla .).2.b. con el comparador difuso FEQ.38 se muestran las funciones empleadas cuando se utiliza un atributo difuso Tipo 3. Para los atributos difusos Tipo 3. lo que se pretende comparar es la representacion del atributo difuso. En la Tabla 5.

5. En el apartado 5. lo que se pretende comparar es la representacion del atributo difuso.5 Como Introducir Nuevos Comparadores Difusos en FSQL y su Ser- vidor Introducir nuevos comparadores difusos que funcionen en el Servidor FSQL no es una opera- cion extremadamente complicada pero tampoco es trivial.  DEL SERVIDOR FSQL 5.35. UNDEFINED o NULL. respectivamente para UNKNOWN. que es visto como una cadena de caracteres (tipo VARCHAR2) que debe compararse con la 'CADENA' indicada. Para conseguir la repre- sentacion del atributo difuso se usa.  Caso 6: En este tipo de comparaciones no difusas.1).5. caso que suponemos muy usual en este Tipo de atributos difusos.  Caso 5: Es una comparacion clasica en la que se compara si el valor del Tipo del valor difuso es 0. como ya hemos indicado arriba (apartado 5. Hay que modi. Por tanto. FUZZY COL LIST. clasica: fshow3 fshow3 LEN1 Tabla 5.5.1 se explica como conseguir esto.38: Funciones de comparacion difusa empleadas con atributos difusos Tipo 3. la funcion fshow3 o fshow3_LEN1 (segun el valor de LEN) obteniendo los resultados de representacion de la Tabla 5. 1 o 2.4.4.  Caso 4: Se utiliza la misma funcion que para Tipo 2 (FEQ_UNDEFINED). IMPLEMENTACION 225 Formato de la comparacion Funcion empleada N con el comparador difuso FEQ en  la traduccion 1 fcol_t3 FEQ $label FEQ3 label LEN1 si LEN = 1 FEQ3 label otro caso 2 fcol_t3 FEQ fcol_t3 FEQ3 3 fcol_t3 FEQ (UNKNOWN|NULL) FEQ3_UNKNOWN_NULL 4 fcol_t3 FEQ UNDEFINED FEQ_UNDEFINED 5 fcol_t3 IS [NOT] (UNKNOWN|UNDEFINED|NULL) Comparacion clasica del F_TYPE fcol_t3 = 'CADENA' o tambien 6 fcol_t3 [NOT] LIKE 'CADENA' Comp. no se le puede poner umbral de cumplimiento. 5. La funci on FEQ3_label_LEN1 solo existe para acelerar la comparacion cuando todos los valores del atributo difuso son simples. ya que tiene identico sentido.

los pasos a seguir para introducir un nuevo comparador difuso son los siguien- tes: 1. incluida en el Apendice B: (a) Introducirlo como palabra reservada. .car algunos paque- tes y tablas del Servidor FSQL y probablemente tengamos que crear un nuevo paquete para las funciones de comparacion difusa del nuevo comparador. (b) Introducir una produccion como las producciones de los otros comparadores difu- sos: Producciones 232 a 238 y 501 a 507 de nuestra gramatica. En sntesis. Cambiar la gramatica.

226 CAPITULO 5. ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL La gramatica utilizada se facilita en dos .

cheros con diferentes formatos: El .

tal y como aparece en el Apendice B y el .chero consulta.y. que contiene la gram atica en formato Yacc.

Analizador de Gramaticas19 . 2. 3.chero consulta. Comprobar si es LL(1): Esto se puede hacer facilmente con el programa ag.ag con formato del programa ag. Modi.

'<F_comp>'.car las tablas siguientes del Servidor FSQL: (a) Introducir el nombre del comparador en la tabla RESERVADAS. 215) 4. Tenga en cuenta que si un paquete es excesivamente largo puede dar problemas al instalarlo en el Servidor Oracle. 70) ('resto_fcond'. 64) ('resto_col2'. '<F_comp>'. '<F_comp>'. tal y como estan introducidas las otras producciones ya mencionadas. 50) ('resto_col'. (b) A~nadir la produccion a la tabla PRODUCCIONES. A~nadir todas las funciones pertinentes al paquete FSQL FUNCTIONS2 o a otro paquete. '<F_comp>'. donde <F_comp> es el nuevo comparador difuso y <N_prod> es el numero de produccion del nuevo comparador: ('fcomparador'. 5. 218) ('resto_cond_elemental'. '<F_comp>'. <N_prod>) ('resto_expr'. Modi. (c) A~nadir a la tabla TABLA SINTAX las siguientes tuplas. '<F_comp>'. tal y como estan los otros comparadores difusos.

car el analizador semantico para incluir el nuevo operador: Esta es la fase mas delicada y complicada de la operacion. Hay que modi.

conviene destacar los siguientes tipos de comparadores difusos:  Comparadores para atributos difusos Tipo 3: En la actualidad este Tipo de atri- butos solo aceptan el comparador difuso FEQ y por eso. en un . 19 El programa ag (Analizador de Gramaticas) es un programa util para analizar gramaticas.car el paquete FSQL SEMANTIC (sobretodo el procedimiento trata fuzzy column) cuidadosamente para no alterar el funcionamiento de todo lo anterior. reciben un tratamiento especial. Para esto. pues son muy parecidos entre s. indicando si la gramatica que lee. con algunas salvedades ya indicadas anteriormente.  El resto de comparadores son tratados a parte.  Comparadores del tipo \Mucho Mayor/Menor que" (en su version de posibilidad y necesidad): Estos comparadores necesitan la distancia del atributo MUCH de la tabla FUZZY APPROX MUCH (M) por lo que en cada apartado son tratados indepen- dientemente.

puede generar los Iniciales y los Seguidores de cada smbolo no terminal. profesor del Dpto. de Lenguajes y Sistemas Informaticos de la Universidad de Granada. El programa ha sido desarrollado por Carlos Ure~na.chero .ag. Ademas. es LL(1). al cual le agradecemos desde estas paginas su amabilidad al facilitarnos este programa. .

5. como en cualquier otro programa.6. todas las modi. Entre esos aspectos. enumeramos una serie de mejoras que deberan tenerse en cuenta para mejorar el Lenguaje FSQL.6. Por supuesto. Tanto unas como otras deberan ser tenidas en cuenta en sucesivas versiones del Servidor FSQL. No obstante.6 Mejoras Posibles al Sistema FSQL El Servidor FSQL y el lenguaje en el que se basa disponen de una funcionalidad importante. sepa- rando entre mejoras al Lenguaje FSQL y mejoras al Servidor FSQL. 5.1 Mejoras al Lenguaje FSQL A continuacion. MEJORAS POSIBLES AL SISTEMA FSQL 227 5. existen diversos aspectos en los que puede mejorarse y/o ampliar su funcionalidad. destacan los siguientes.

caciones a este lenguaje requieren modi.

car tambien el Servidor FSQL para que este pueda trabajar con dichas modi.

caciones. por ejemplo.5.5. el area en comun que tengan las distribuciones de posibilidad. con el signi.5.  Ampliar el lenguaje FSQL para que admita expresiones difusas para valores aproxima- dos.4 y 5. Ver apartados 5.  Introducir nuevos comparadores difusos que operen con las distribuciones de posibili- dad desde otros puntos de vista como.

operaciones y funciones aritmeticas. de acuerdo con el siguiente formato: #<expr> donde <expr> no tiene por que ser forzosamente un numero.  Ampliar el lenguaje FSQL para que admita expresiones difusas para valores aproxima- dos. parentesis. con el signi. incluyendo atributos crisp.cado de la Figura 5. atributos difusos Tipo 1.4 (pagina 138)... sino que puede ser cual- quier expresion crisp.

atributos difusos Tipo 1.<expr2> donde <expr1> y <expr2> no tienen por que ser forzosamente numeros. parentesis. pero con un margen distinto del almacenado en la FMB y expresado con <expr2>. de acuerdo con el siguiente formato: #<expr1> +.  Ampliar el lenguaje FSQL para que admita expresiones para intervalos. sino que pue- den ser cualquier expresion crisp. con el signi..4 (pagina 138). incluyendo atributos crisp.. operaciones y funciones aritmeticas.cado de la Figura 5.

 Ampliar el lenguaje FSQL para que admita expresiones difusas para trapecios. operaciones y funciones aritmeticas.5 (pagina 138). con el signi. parentesis. sino que pue- den ser cualquier expresion crisp. incluyendo atributos crisp. de acuerdo con el siguiente formato: [<expr1>. atributos difusos Tipo 1..cado de la Figura 5.<expr2>] donde <expr1> y <expr2> no tienen por que ser forzosamente numeros..

cado de la Figura 5. de acuerdo con el siguiente formato: .2 (pagina 136).

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL $[<expr1>.  Ampliar el lenguaje FSQL para que permita utilizar valores distintos de los especi. <expr3> y <expr4> no tienen por que ser forzosamente numeros.228 CAPITULO 5.<expr3>. parentesis.<expr4>] donde <expr1>. incluyendo atributos crisp. <expr2>..<expr2>. funciones aritmeticas. atributos difusos Tipo 1. sino que pueden ser cualquier expresion crisp.. operaciones.

Su sintaxis podra ser: { Comparadores que solo utilicen el MARGEN: Especi.cados en la tabla FUZZY APPROX MUCH para los valores MARGEN y MUCH.

66] { En comparadores MGT/NMGT y MLT/NMLT.55. se deberan especi.car el valor MARGEN tras el com- parador. Ejemplo: Distancia FEQ(35) $[11.34. entre parentesis.

opcionalmente el valor para MUCH. primero el valor para MARGEN y luego.car ambos valores sepa- rados por comas. Si solo se desea especi.

estas expresiones podran utilizarse en comparaciones que involucren comparadores difusos. Ver apartados 1. el formato general. Ademas.88) #888 Distancia MGT(.3. pudiendose expresar el siguiente tipo de condiciones difusas: Color Pelo FEQ f0. se puede dejar el primero en blanco. tras el comparador difuso sera: ([MARGEN][. O sea. excepto con los atributos difusos Tipo 3 y sus etiquetas. 1/$Moreno g THOLD 0.88) #888  Permitir efectuar comparaciones difusas sobre atributos \crisp".3.2. Por ejemplo.MUCH]).4. podran ponerse entre llaves. Naturalmente. Ejemplos: Distancia MGT(35) #888 Distancia MGT(35.5.  Que se permita la inclusion de atributos y constantes difusas en expresiones aritmeticas.  Que se puedan expresar constantes del tipo distribuciones de posibilidad sobre las etique- tas de un atributo difuso Tipo 3. que ni siquiera han sido declarados como difusos Tipo 1.75  Que se permita el uso de modi.8/$Casta~no. en este caso no podran utilizarse o declararse etiquetas y se debe usar la sintaxis dada en el punto anterior si la comparacion requiere los valores del MARGEN y/o del MUCH.car este ultimo.1 y 5.

cadores lingusticos (linguistic hedges ) como \muy" o \poco". alterando as la distribucion de posibilidad que se indique tras el modi.

3.3 y 2. Por ejemplo: Salario FEQ $Muy $Normal THOLD 0. la siguiente consulta selecciona solo las 11 tuplas (como maximo) que mejor satisfacen la condicion impuesta (por eso el umbral es cero): .9.cador.1).75  Permitir establecer un valor N indicando que se recuperen las N mejores tuplas. limitar las tuplas del resultado por cantidad y no por un umbral de cumplimiento. Es decir. tal y como se indica en los apartados 1. Por ejemplo. Esta caracterstica es incorporada por el lenguaje SQLf [22] (apartado 2.9.

CDEG(*) FROM Equipos_Futbol WHERE Num_Goles NFEQ $Muy_Alto 0. Poniendo el umbral a cero en este tipo de consultas. Si se establece un umbral distinto de cero.5.  Incluir en FSQL una sintaxis especial para especi.6. MEJORAS POSIBLES AL SISTEMA FSQL 229 SELECT[11] Jugador. nos aseguramos que si no se obtienen 11 tuplas es que no hay mas tuplas interesantes. por lo que es mas facil que se recuperen menos de 11 tuplas. la condicion es mas restrictiva.

Sin embargo. ese mecanismo no permite aplicar cuanti.car la division relacional difusa entre dos relaciones difusas. ya que esos grados son obtenidos en un SELECT interno (subconsulta).22. con ese mecanismo no podemos obtener el grado con el que cada tupla cumple las condiciones de la division. Ademas. Actualmente FSQL incorpora el mismo mecanismo que SQL para aplicar la division relacional y este fue visto en el Ejemplo 5.

cadores difusos a la division relacional. En el Captulo 3 se hace un estudio en profundidad de la division relacional difusa en BDRD. proponiendo un sistema para efectuarla que incluye el uso de cualquier tipo de cuanti.

5.  Incorporar un mecanismo para expresar la compatibilidad entre atributos difusos Tipo 1 o 2.2) para. con otros atributos difusos Tipo 1 o 2 (indistintamente). de similar forma a como ya se hace con atributos difusos Tipo 3 con la tabla FUZZY COMPATIBLE COL. as como las restantes sentencias del DML de FSQL (apartado 5.4. por ejemplo.4.2 Mejoras al Servidor FSQL El siguiente elenco de caractersticas son mejoras que deberan incorporarse en el Servidor FSQL.1 y 5.2 y Apendice B). sino a la forma en que actual- mente el Servidor FSQL trabaja y a algunas caractersticas del lenguaje FSQL que no han sido implementadas aun.cador difuso. Con esto. Con atributos difusos Tipo 3 esa tabla era necesaria para poder compararlos entre s y para evitar tener que rede. se pueden incorporar nuevos valores en las tablas FSQL_ALL_INFO y FSQL_STATS (apartados 5. Estas caractersticas no afectan al lenguaje FSQL en s.6.  Incorporar las sentencias del DDL de FSQL. obtener estadsticas sobre el uso de cada sentencia.

pues ambos Tipos de atributos difusos son siempre comparables entre s sin necesidad de especi.nir las etiquetas para distintos atributos con igual dominio. En el caso de atributos difusos Tipo 1 o 2 la utilidad de esa tabla queda restringida a la segunda utilidad.

hay que copiar para esa vista todas las etiquetas que tienen los atributos difusos de la tabla de la que proceden. pues sin esto. Esto es muy util en la creacion de vistas con atributos difusos.carlo.  Permitir el uso de cuali. al crear una vista.

cadores sobre el umbral de cumplimiento de una condicion difusa y tambien el uso de cuanti.

Ver apartados 5.2.3 y 2.1.2.cadores difusos (absolutos y relativos).9. Ambas opciones estan de.

aunque. no estan contempladas en la gramatica del Apendice B. . como no han sido implementadas en el Servidor FSQL.1.2.nidas en el apartado 5.1.

ARQUITECTURA DE LA BDRD: EL SERVIDOR FSQL  Programar nuevas normas para ser utilizadas en el calculo de la funcion CDEG cuando intervienen operadores logicos. para utilizarlas. de forma que un usuario no tenga que programar las nor- mas mas usuales y que. solo tenga que modi.230 CAPITULO 5.

como en el Ejemplo 5.1.  Incluir algun metodo de ordenacion de atributos difusos Tipo 2.  Que la funcion CDEG se pueda emplear en cualquier posicion como una expresion cual- quiera. para cuando se utiliza un atributo difuso de este Tipo en la clausula ORDER BY. Ademas. y no exclusivamente en la lista de seleccion.4.1 y 5.5.4.5. sera deseable que se permitiera utilizar comparadores difusos entre expresiones difusas (o no).28. como se ha explicado en el apartado anterior. Ver apartado 5.3.3.3. Ver apartados 5.  Permitir la escritura de condiciones difusas sin atributos difusos a la izquierda del com- parador difuso. Ver apartado 5.  De. tras SELECT.2.car la vista FSQL OPTIONS.

esto evitara inserciones de valores incorrectos en la base de datos.4.5.  Incorporar medidas de seguridad en las tablas de FIRST y del Servidor FSQL de forma que un usuario no pueda consultar ni modi.nir algunos triggers en el SGBD que ayuden a mantener la integridad de los atributos difusos y de los valores de la FMB. Como se dijo en el apartado 5. en la FMB y en las tablas del Servidor FSQL (principalmente FSQL OPTIONS).

caractersticas u opcio- nes de con.car los objetos.

ya que Oracle 8i incorpora una maquina virtual Java y permite la programacion tanto en PL/SQL como en Java de cualquier objeto. Tambien incluye la sintaxis SQLJ para incluir codigo SQL en el codigo Java. Esto facilita la tarea de utilizar el Servidor FSQL en otras bases de datos distintas de Oracle20 . incluyendo triggers (disparadores).guracion declaradas por otro usuario.  Estudiar la migracion de todo o parte del Servidor FSQL del lenguaje PL/SQL a Java.  Estudiar las ventajas y posibilidades que podra abrir el uso de objetos para de. Actualmente FIRST no almacena informacion sobre propietario de cada objeto ni sobre permisos de acceso a ellos.

todava no esta muy depurado y falta mucho por hacer.0 para anglofonos y para el lenguaje SQL. No obstante. aprovechando que la reciente version Oracle 8 permite crear bases de datos orientadas a objetos.nir los Tipos difusos y resolver consultas difusas en FSQL. el sistema que incluyen. Oracle 8 incorpora un asistente para migrar facilmente a Oracle 8 bases de datos que no sean Oracle (como Access. aunque util. al igual que ya incluye Microsoft SQL Server 7. Esta utilidad puede ser muy util para aquellas empresas que disponen de una peque~na base de datos y que ven que su SGBD se les queda peque~no y/o que deseen utilizar alguna de las aplicaciones que Oracle incorpora o que han sido programadas para Oracle (como el Servidor FSQL) . por ejemplo) o que sean de versiones anteriores de Oracle. 20 Por otra parte. en lenguaje natural (ingles y/o espa~nol).  Incluir la posibilidad de efectuar consultas (aunque sean simples).

obtendra la respuesta y efectuara las acciones oportunas con los resultados. enviara la sen- tencia SQL al SGBD y. Posteriormente. llamado FQ. i. asigna un numero de sesion a la conexion efectuada. si se consigue. es decir. el usuario no tiene que conocer nada acerca del Servidor FSQL. empleando cualquier lenguaje que permita acceso a bases de datos Oracle u ODBC (Open DataBase Connectivity. entonces el Cliente debe obtener del Servidor dicha sentencia FSQL traducida a una sentencia SQL equivalente. Tras esto. En el Apendice G se incluye un manual de usuario de este programa.3. En la ultima seccion se incluyen unos breves comentarios acerca de como esta construido el \esqueleto" del programa FQ. Conexion al SGBD: En esta operacion el programa Cliente debe solicitar del usuario su nombre de conexion (login ) y su clave de acceso (password ).e. Este programa puede ser muy simple. Conectividad Abierta de Bases de Datos). el programa Cliente FSQL es el encargado de hacer de interfaz entre el usuario y el Servidor FSQL. Cada consulta mandada al Servidor FSQL esta identi.1 Objetivo y Funcionamiento El programa Cliente FSQL es el encargado de enviar la sentencia en lenguaje FSQL al Ser- vidor FSQL y obtener de este los errores que contenga dicha sentencia (usando la funcion FSQL2SQL). veremos con detalle como puede programarse un Cliente FSQL de forma facil.Captulo 6 El Cliente FSQL Como se indico en el apartado 5. las partes mas importantes y fundamentales del mismo. en su caso. Nosotros hemos construido un Cliente FSQL para Windows 95/98/NT. Las operaciones fundamentales que debera ejecutar el Cliente FSQL son: 1. pero es muy importante pues va a permitir al usuario ejecutar sentencias difusas en FSQL (sin que el usuario tenga por que saber como se accede al Servidor). La relacion del programa Cliente FSQL con el Servidor FSQL es efectuada de forma transparente al usuario. Si la sentencia no contiene errores. En este captulo veremos inicialmente cual es el objetivo basico y los posibles modos de funcionamiento de un programa Cliente. 6. Hecho esto. intenta abrir una sesion en el SGBD y.

El numero de sesion puede calcularse facilmente en Oracle usando la expresion: 231 .cada por el numero de sesion por lo que cada usuario puede establecer varias sesiones (conexiones) con el SGBD y en todas ellas podra utilizar el Servidor FSQL.

Ambos. Tambien. 2.2.2. Edicion de la sentencia en FSQL: Este apartado puede variar enormemente de un programa Cliente a otro.5. Por supuesto.5. estableciendo una conexion con cada una de ellas. los datos necesarios para la edicion de la sentencia. EL CLIENTE FSQL USERENV('SESSIONID') La caracterstica multiusuario del Servidor FSQL posibilita que el programa Cliente FSQL pueda permitir el establecimiento de varias conexiones o que el mismo programa pueda ejecutarse varias veces. as como la gramatica expuesta en el Apendice B.3) tambien puede ser includo en el Cliente aunque esto ya no resulta ni e. en determinados casos el programa Cliente podra tambien tener una o varias sentencias \tipo" en las que solo tendra que pedir algunos datos al usuario. el programa Cliente puede incluir formularios para realizar consultas del tipo QBE (Query By Example ) de [173] o a traves de asistentes que van solicitando paulatinamente. y de forma visual.5. Por supuesto. 5. son bastante faciles de implementar. Obtener y mostrar los errores (si los hay): Los errores encontrados son introducidos por el Servidor FSQL en la vista FSQL ERRORS. Por supuesto. El analizador semantico (apartado 5. con lo que el usuario debera conocer el lenguaje SQL y su extension a FSQL. de forma que no enve al Servidor FSQL sentencias erroneas lexica o sintacticamente.232 CAPITULO 6. En el modo mas inmediato el usuario escribira la sentencia en modo texto. cada conexion puede establecerse con distinto o igual nombre de usuario. 3. Esta vista mantiene separados los errores que se produzcan en cada sesion.1 y 5. el programa Cliente puede efectuar \o - line " un chequeo de la sentencia para ver si tiene errores lexicos o sintacticos. teniendo en cuenta lo que se ha explicado en los apartados 5. Para ello el Cliente debera incorporar el analizador lexico y el sintactico.

mostrarlos u operar con ellos: Una vez que se han obtenido los resultados en el caso de una consulta... ni tan facil de implementar como los dos anteriores. igualmente. el programa Cliente debera operar con ellos de alguna forma (grabarlos en disco. si se incluye.ciente por los accesos a la base de datos. Obtener resultados.). debera poder ser desactivado ya que el Servidor FSQL puede cambiar para acoger nuevos cambios del lenguaje FSQL y esto no debera inutilizar el programa Cliente para utilizar las nuevas mejoras introducidas. aunque deseable para reducir los accesos al SGBD. utilizarlos en otros calculos. no solo no es indispensable sino que. Este analisis \o -line ". esta puede efectuarse de varias formas. siendo las mas basicas las siguientes:  Modo Fila: Cada . mostrarlos en pantalla. Quizas la mas habitual sea mostrar los datos en pantalla e. 4.

\Ver ultimo". modi..  Modo Tabla: Se muestra una tabla con los resultados de forma que caba columna corresponde a un atributo de la consulta original.la de la tabla resultante es mostrada en una ventana indepen- diente con sus datos distribuidos en el espacio de esta.. \Ver primero". En este modo se contara con las opciones tpicas de \Ver siguiente". En este modo es util contar con un \scroll " (o barra de desplazamiento) tanto horizontal como vertical. que nos permita \movernos" por los datos de la tabla. \Ver anterior".

Este modo es el empleado en FQ que. agrupar .cando la porcion de tabla que es visualizada en cada momento. incluye multitud de opciones para ordenar por columnas. como se explica en su manual de usuario del Apendice G.

las o columnas con igual valor. cambiar el .

 DE CLIENTES FSQL: OPERACIONES BASICAS 6. PROGRAMACION  233 tama~no de .2.

Si el programa Cliente puede seguir usandose sin conexion esta desconexion puede signi... bastara con cerrar el programa Cliente.las y columnas. Desconexion del SGBD: Esta operacion supone que no se van a efectuar mas ope- raciones con el SGBD. 5. habilitar y deshabilitar la particion de palabras en cada celda de la tabla. En realidad esta operacion no es estrictamente necesaria y en general.

. Llamar a la funcion FSQL2SQL del paquete FSQL PKG. Esto se puede hacer a traves de ODBC o usando algunos de los sistemas que Oracle proporciona. En este apartado veremos mas a bajo nivel como se obtienen los resultados a partir de una consulta FSQL correcta o los errores si es incorrecta. 2. En el Apendice D se encuentran una lista de las funciones que vamos a utilizar a conti- nuacion.. como son los Oracle Objects (para Visual Basic. Excell. que esta enfocada a crear aplicaciones de Bases de Datos y que permite crear.FSQL2SQL(sentencia). todas ellas incluidas en el paquete FSQL PKG y pertenecientes al Servidor FSQL. Si encontramos errores (Num Errores>0) los mensajes de error correspondientes se en- cuentran en la campo Msg error de la vista FSQL ERRORS. 6. En el Apendice C hay una lista con todos los posibles mensajes de error. sus posibles causas y sus posibles soluciones. 1 Como se ha indicado. El programa Cliente puede tambien implementar una desconexion temporal. uno tras otro ordenados por el campo Indice en orden de aparicion. suponiendo que ya hayamos establecido la conexion con el SGBD y que ya tenemos la sentencia en FSQL en una variable de tipo cadena de caracteres1 (string ) denominada sentencia: 1..2 Programacion de Clientes FSQL: Operaciones Basicas A grandes rasgos ya se han visto en el apartado anterior los pasos que deben programarse en un programa Cliente FSQL. entre otras opciones. Tambien veremos otras operaciones utiles para el usuario que utiliza una BDRD. los unicos requisitos que debe tener un lenguaje de programacion para poder programar un Cliente FSQL en el son. que permita efectuar consultas en SQL sobre la base de datos clasica y que permita ejecutar procedimientos almacenados en el SGBD. 6. todas en la misma variable de tipo cadena. una sentencia FSQL puede incluir comentarios dentro de la sentencia y puede estar formada por varias lneas. A grandes rasgos. codigo para Windows o codigo en Java para ser utilizado en las paginas web (WWW) de Internet. Developer 2000. Oracle tambien proporciona una herramienta de programacion. Para esto lo unico que se necesita es que el lenguaje de programacion elegido incorpore formas de efectuar consultas en FSQL y llamadas a procedimientos almacenados.car simplemente inhabilitar el uso del SGBD hasta que se ordene una nueva conexion. C++.).2. de forma que impida el uso del programa hasta que no se introduzca la clave del usuario que inicio su ejecucion.1 Ejecucion de Sentencias FSQL Basicamente. para descubrir el numero de errores de la sentencia: Num Errores := FSQL PKG. el algoritmo a seguir es el siguiente.

'. borrando los datos temporales que ya no son u tiles. al . Si la sentencia es una consulta.'. la sentencia SQL resultante estara almacenada en la vista FSQL QUERY y sera obtenida concatenando el campo Atributo en el orden que indique el campo Indice. `>'. pero puede convenir hacerlo para ahorrar espacio (en grandes sentencias) y sobretodo para que la sentencia resultante quede mejor formateada si va a ser mostrada. Aunque no es necesario. Eliminar ese espacio cuando sea posible no es obligatorio. por delante y por detras. Este procedimiento no tiene argumentos ni devuelve ningun dato. En caso de que no haya errores. `(' y `)'. por lo que esta limitada a la longitud maxima que le asigne Oracle (32767 caracteres) y si supera esa longitud la funcion devuelve NULL. Esa funcion devuelve una cadena del tipo VARCHAR2 de Oracle. el Cliente FSQL debera enviar esta sentencia al SGBD como si se tratara de una sentencia normal en SQL. Al concatenar se debe incorporar un espacio en blanco entre cada dos valores consecutivos del campo Atributo. Una vez obtenida la sentencia SQL resultante. cuando el campo Atributo tiene longitud 1 y este caracter vale uno de los siguientes caracteres: `+'. se deberan recuperar los resultados de la misma. `. EL CLIENTE FSQL 3. `-'. Esto supone un problema si la sentencia SQL resultante supera esa longitud maxima.FSQL concat. Esta operacion no hay que efectuarla tras cada sentencia FSQL sino una unica vez. `*'. 5. Cuando se ha terminado de ejecutar sentencias FSQL se debe llamar al procedimiento FSQL FIN. 4. `. `<'. Esta concatenacion para obtener la sentencia SQL puede ser efectuada directamen- te por el programa Cliente FSQL o puede tambien efectuarse a traves de la funcion FSQL concat del Servidor FSQL: Sentencia SQL := FSQL PKG. `='.234 CAPITULO 6. `. este espacio se puede omitir. `/'.'.

nal.2 Ver las Etiquetas De. Puede resultar util que el programa Cliente FSQL incorpore opciones para ver la consulta SQL resultante. 6. para mandar consultas SQL sin pasar por el Servidor FSQL o para ver la consulta FSQL si esta fue formada de forma visual o semiautomatica.2.

podemos ver que etiquetas hay de.nidas para un Atributo Difuso Dado un atributo difuso con su esquema o propietario SCH. el nombre de la tabla a la que pertenece TBL y su nombre de columna COL.

nidas para dicho atributo y su de.

2. siguiendo el siguiente algoritmo: 1.nicion.TBL. .TBL). Calcular el numero de la columna: Puede usarse la funcion FSQL COL: NCOL# := FSQL PKG.FSQL COL (SCH. Calcular el numero de Objeto de la tabla: Puede usarse la funcion FSQL OBJ y asegurarse de que es distinto de cero (objeto no existe): NOBJ# := FSQL PKG.COL).FSQL OBJ (SCH.

Si vuelve a salir cero entonces. esa columna no es ni crisp ni difusa Tipo 1.2. pasaremos a comprobar si es difusa Tipo 2 o 3 comprobando si existe a~nadiendo una 'T' al nombre de la columna. o sea.  DE CLIENTES FSQL: OPERACIONES BASICAS 6. PROGRAMACION  235 3. Si NCOL#=0 quiere decir que dicha columna no existe con ese nombre. Entonces. de.

COL||'T'). 4. dicha columna no existe en la tabla: NCOL# := FSQL PKG.FSQL COL (SCH.TBL.nitivamente. Calcular el Tipo difuso del atributo: Una vez calculados los numeros identi.

cativos de la tabla y el atributo.FSQL FTYPE (NOBJ#. lo cual puede hacerse usando la funcion FSQL FTYPE: F TYPE := FSQL PKG.NCOL#). hay que calcular el Tipo difuso de este. Si F TYPE=0 indica que la columna no es difusa por lo que no puede tener etiquetas de. 5.

Alfa. 6. Obtener las etiquetas segun su Tipo difuso:  Tipos 1 o 2 (F TYPE=1 OR F TYPE=2): Se puede obtener una tabla con los datos buscados usando la vista LABELS FOR OBJCOL a traves de su sinonimo publico LFOC: SELECT Label. donde Label es el nombre de la etiqueta y el resto de las columnas seleccionadas corresponden a los valores de. Delta FROM LFOC WHERE OBJ# = NOBJ# AND COL# = NCOL#. Gamma.nidas sobre su dominio. Beta.

nidos para el trapecio de esa etiqueta: $[ .

]. . .  Tipo 3 (F TYPE=3): Se puede obtener una tabla con todas las etiquetas de.

6.2. Label_2. usando la vista LABELS OBJCOL T3 a traves de su sinonimo publico LOCT3: SELECT Label_1. Degree FROM LOCT3 WHERE OBJ# = NOBJ# AND COL# = NCOL#.3 Ver el MARGEN y la Distancia MUCH Estos datos son directamente consultables utilizando la tabla FUZZY APPROX MUCH a traves de su sinonimo publico FAM.nidas para un atributo difuso Tipo 3 y el grado de similitud entre cada par de ellas. donde Label 1 y Label 2 son los nombres de sendas etiquetas y Degree es el grado de similitud entre ellas. Previamente hay que hallar los numeros identi.

NCOL#). tal y como hemos hecho en el apartado anterior y luego utilizar la siguiente consulta: .cativos de la tabla y el atributo (NOBJ#.

MUCH FROM FAM WHERE OBJ# = NOBJ# AND COL# = NCOL#. 6.4 Ver Atributos Difusos Tipo 3 Compatibles y sus Longitudes Para ver esta informacion de forma clara se puede usar la vista ALL COMPATIBLES T3 a traves de su sinonimo publico ACT3. EL CLIENTE FSQL SELECT MARGEN.2. por tanto. la cual tiene las siguientes columnas:  Columna_1: Nombre de la columna que es compatible con la siguiente y que. no tiene de.236 CAPITULO 6.

 Length_1: Longitud maxima para las distribuciones de posibilidad que podremos al- macenar en la columna anterior.  Compatible_Con_Columna_2: Nombre de la columna que tiene de.nidas etiquetas sobre ella.

Los paquetes del Servidor FSQL pueden verse en la Tabla 5. En general. correspondientes a cada operador logico: SELECT FUNCTION FROM FSQL_OPTIONS WHERE OPCION = 'NOT' SELECT FUNCTION FROM FSQL_OPTIONS WHERE OPCION = 'AND' SELECT FUNCTION FROM FSQL_OPTIONS WHERE OPCION = 'OR' Si alguna de las anteriores consultas no obtiene ninguna tupla. debe comprobarse que el estado (Status) del paquete en cuestion es 'VALID'. 6. .13 y 5. Despues. el Servidor FSQL esta formado por otros elementos. Si <Nombre_Pkg> es el nombre de uno de los paquetes.nidas las etiquetas.6 Ver Funciones que Aplica CDEG para los Operadores Logicos Esta operacion es tan simple como efectuar las siguientes 3 consultas.  Length_2: Longitud maxima para las distribuciones de posibilidad para la segunda columna.33. expuestas en las Tablas 5.2. para ver si esta o no instalado hay que efectuar la siguiente consulta para leer el estado del paquete: SELECT Status FROM ALL_OBJECTS WHERE Object_Name='<Nombre_Pkg>' AND Object_Type='PACKAGE'. 6. puede suponerse que si estan instalados los paquetes. aparte de los paquetes.2. como se ha visto. ya que.5 Ver si estan Instalados los Paquetes del Servidor FSQL Esta operacion puede ser util para ver si esta instalado el Servidor FSQL. esta instalado todo lo demas. se aplicaran las funciones por defecto.29. aunque. en el proceso de desistalacion se borran todos los elementos del Servidor y no solo los paquetes. las cuales tambien usara Columna_1.

 DE FQ. UN CLIENTE FSQL 6. Estadsticas y otras Opciones de Con.3.2.7 Acceso a Informacion sobre el Servidor FSQL. PROGRAMACION 237 6.

guracion Esto se hace accediendo normalmente a la tabla FSQL STATS. del Servidor FSQL. y a las vistas FSQL INFO y FSQL OPTIONS. esta ultima vista puede ser tambien modi. Ademas.

cada por el usuario para alterar algunas opciones de con.

2 se explican esos objetos y la informacion que contienen. Observese que los comentarios en ese lenguaje empiezan por un apostrofe ('). en el que se incluye un manual de usuario del programa FQ.3 Programacion de FQ (Fuzzy Queries). un Cliente FSQL Como complemento del Apendice G.4.0 de Microsoft [18. a nivel de programacion. El Cliente FQ ha sido programado en Visual Basic 5. En los apartados 5. 124] y por tanto los fragmentos de codigo que exponemos en este apartado estan en este lenguaje2 . 6. aqu vamos a esbozar unas nociones sobre como esta construido este programa.1 y 5. 48. en sus operaciones mas importantes. FQ accede a Oracle a traves de los Oracle Objects para OLE (Objects Linking and Em- beding ). que son una coleccion de objetos programables que simpli.guracion.4.

Entre los objetos que dispone se encuentran los siguientes:  OraClient: Este objeto de.can el desarrollo de apli- caciones que necesitan comunicarse con Oracle.

ne un Cliente de Oracle y gestiona un conjunto de objetos OraSession.  OraSession: Este objeto de.

ne una sesion de trabajo con Oracle y gestiona un conjunto de objetos OraDatabase. Tras la llamada hay que eliminarlos (Remove). Antes de efectuar la llamada a DbExecuteSQL hay que a~nadir (Add) los parametros del procedimiento a ejecutar a la lista de parametros de este objeto (propiedad Parameters) indicando su valor y si son de entrada o salida. Contiene el metodo DbExecuteSQL que es el que hay que usar para ejecutar un procedimiento almacenado en el SGBD.  OraDatabase: Este objeto representa una unica conexion (login ) a una base de datos Oracle.  OraDynaset: Este objeto representa las .

Para cada consulta hay que crear un objeto de este tipo con la funcion DbCreateDynaset. Su propiedad Fields devuelve la colecci on de campos para la .las y columnas que devuelve una consul- ta SELECT.

Un objeto OraDynaset tiene un conjunto de metodos para \moverse" por la tabla recuperada y establecer en cada momento la .- la actual (empezando por la primera).

entre comillas dobles. MoveLast o DbMoveLast. La propiedad Parameters 2 Dentro de esos fragmentos de codigo. MoveTo. MoveRel.la actual que se desee (MoveFirst o DbMoveFirst..). MovePreviousn. . MoveNext o DbMoveNext. MoveNextn.. Esto pudiera causar errores de compilacion si estos fragmentos se prueban tal y como son mostrados. Para evitar esos errores basta con eliminar los retornos de carro en las cadenas de caracteres. han sido partidas en varias lneas por motivos de claridad. algunas cadenas de caracteres.  OraParameter: Este objeto representa una variable de una sentencia SQL o de un bloque PL/SQL que esta ligada a una variable del programa. MovePrevious o DbMovePrevious.

 OraField: Este objeto representa una columna independiente dentro de una .238 CAPITULO 6. EL CLIENTE FSQL del objeto OraDatabase es una coleccion de objetos de este tipo y cuenta con los metodos Add y Remove para a~ nadir y borrar parametros respectivamente.

ConsultaFSQL.") 'Capturar valor de salida Num_Errores = OraDatabase.2.Remove "SELECT_CMD" . teniendo en cuenta que en FQ la consulta FSQL es introducida directamente por el usuario en un recuadro de texto (objeto RichTextBox). 2 OraDatabase. Llamar a la funcion FSQL2SQL para descubrir el numero de errores de la consulta (va- riable Num_Errores): 'A~ nadir par ametros: NUMERRORES (de salida: 2) y SELECT_CMD (de entrada: 1) OraDatabase.la de un objeto OraDynaset. 1.Parameters. Begin :NUMERRORES:=FSQL_PKG.Parameters.Add "SELECT_CMD".Parameters("NUMERRORES"). OracleInProcServer es el nombre de la aplicaci on que produce el objeto a crear.1 y 6. XoraSession es el tipo de objeto dentro de la aplicaci on que lo produce. Puede usarse la cadena 2: para referirse a la base de datos local. 2. Conexion al SGBD: En la conexion se crean los objetos necesarios para el resto de operaciones con Oracle: Set OraSession = CreateObject("OracleInProcServer.Remove "NUMERRORES" OraDatabase. Con estos objetos.XOraSession") Set OraDatabase = OraSession.DbExecuteSQL ( "declare NUMERRORES number(4).FSQL2SQL (:SELECT_CMD).Parameters("SELECT_CMD").Parameters. 1 OraDatabase.DbOpenDatabase(DatabaseName. separados por un punto. 0. 0&) donde: CreateObject es una funcion para crear objetos OLE donde su argumento es una cadena de caracteres en la que se introduce la aplicacion que produce el objeto y el tipo de objeto a crear.Add "NUMERRORES".ServerType = ORATYPE_NUMBER OraDatabase. Connect$.Parameters("NUMERRORES") 'Eliminar par ametros OraDatabase.ServerType = ORATYPE_VARCHAR2 'Ejecutar la funci on OraDatabase. Connect$ es la cadena de conexi on formada por el nombre de usuario (login ) y su clave de acceso (password ) separados por el caracter /. podemos efectuar las operaciones basicas que vimos en los apartados 6. DatabaseName es el nombre de la base de datos y debe ser introducida por el usuario al igual que su nombre y clave.Parameters. end.

que devuelve un valor de tipo VARCHAR2. como ya se ha dicho. debido a las limitaciones del tipo de datos VARCHAR2.Value ch1 = Left(valor.  DE FQ.EOF <> True valor = SQLDynaset. esta operacion solo sera valida si la sentencia SQL resultante tiene menos de 32767 caracteres (caso normal). PROGRAMACION 239 3. Esta funcion puede emplearse tras una llamada a FSQL2SQL sin que se detecten errores. Sin embargo.Value SQLDynaset. 'Componer resultado de la tabla FSQL_QUERY Set SQLDynaset = OraDatabase." Or ch1 = "-" Or ch1 = "+" Or _ ch1 = "(" Or ch1 = ")" Or _ ch1 = "/" Or ch1 = "*" Or _ ch1 = ">" Or ch1 = "<")) Then consultaSQL = consultaSQL & valor anterior_sin_esp = Not anterior_sin_esp Else consultaSQL = consultaSQL & " " & valor End If SQLDynaset.DbMoveNext Loop La concatenacion para formar la sentencia SQL resultante puede ser efectuada por la funcion FSQL concat. Si hubo errores se pueden calcular con la siguiente consulta. FQ forma siempre la sentencia internamente. tal y como se ha visto. 4.. Si no hubo errores hay que componer el resultado de la traduccion. accediendo a cada . 1) 'Tomamos el primer caracter If anterior_sin_esp Or _ (Len(valor) = 1 And _ (ch1 = "." Or ch1 = "=" Or _ ch1 = ". El programa Cliente FSQL debera comprobar ese caso para formar el mismo la sentencia. En caso de que la sentencia SQL sea de una longitud mayor se devuelve el valor NULL. lo cual se hace en la variable ConsultaSQL: Dim consultaSQL As String Dim valor As String Dim anterior_sin_esp As Boolean ..DbMoveNext ' No meter espacios ni antes ni despu es de determinados caracteres anterior_sin_esp = False Do While SQLDynaset. ORADYN_READONLY) consultaSQL = SQLDynaset. Para eliminar esa comprobacion.DbCreateDynaset( _ "SELECT ATRIBUTO FROM FSQL_QUERY WHERE ATRIBUTO IS NOT NULL AND SESSIONID=USERENV('SESSIONID') ORDER BY INDICE".Fields("atributo").3.Fields("atributo"). UN CLIENTE FSQL 6." Or ch1 = ".

utilizando la propiedad Fields y los metodos para cambiar la . igual que en la consulta anterior.la.

la actual: .

Para .240 CAPITULO 6. parrilla). 0&) 5. Una vez obtenida la consulta SQL.DbCreateDynaset(consultaSQL.DbCreateDynaset( "SELECT INDICE. 6. EL CLIENTE FSQL Set ErrorDynaset = OraDatabase. que es un objeto de tipo tabla de datos (grid.MSG_ERROR FROM FSQL_ERRORS WHERE SESSIONID=USERENV('SESSIONID') ORDER BY INDICE". creando de nuevo un objeto de tipo OraDynaset: Set SQLDynaset = OraDatabase. FQ la enva al SGBD como si se tratara de una consulta normal en SQL. ORADYN_READONLY) Los resultados de esta consulta son cargados en un objeto de tipo MSFlexGrid.

4 Cliente FSQL Visual en Java Actualmente se esta desarrollando un programa Cliente FSQL en Java.: OraDatabase. Si estos errores se producen en una operacion con el SGBD entonces. Ambos atributos pertenecen a los objetos OraSession y OraDatabase. 6. para poder editar consultas visualmente.FSQL_FIN. en el atributo LastServer- ErrText tendremos el texto del error cometido y en el atributo LastServerErr el numero de dicho error. end.DbExecuteSQL ("Begin FSQL_PKG.nalizar la sesion se ejecuta FSQL FIN.") En todo momento se hace una gestion de los posibles errores que puedan cometerse. El programa se esta desarrollando. en calidad de proyecto .

Por supuesto. siempre que se disponga de una \maquina virtual Java". siendo as el programa independiente de cualquier plataforma (Windows. por el alumno R. en este modo de ejecucion no se tienen las limitaciones en cuanto a seguridad que impone la utilizacion de applets. Que el programa pueda ser ejecutado a traves de Internet o cualquier Intranet empresa- rial. el programa permitira la ejecucion de sentencias escritas directamente en estos lenguajes.F. Oliva. El objetivo de este programa es triple: 1. se han utilizado los drivers \oci8" para la aplicacion independiente y \thin" para los applets Java.n de carrera de la Ingeniera Superior en Informatica de la Universidad de Malaga. sin que el usuario necesite conocer ni el lenguaje SQL ni su extension FSQL.). . Unix. As. Que el programa pueda ser ejecutado como una aplicacion independiente. siendo el Director de dicho proyecto el autor de esta memoria. Se han utilizado las bibliotecas JDBC de Java para acceso a Oracle. En concreto. Por este objetivo es por lo que se ha optado por Java como lenguaje de programa- cion. 2... 3. Que pueda consultarse una base de datos (tradicional o difusa) a traves de consultas (tradicionales o difusas).

1) en la que indicaremos los datos que queremos que aparezcan en la relacion de salida.1: Ventana asistente de un Cliente FSQL Visual. Elegir la tabla (o vista) de las que se van a obtener los datos de la consulta. Elegir los atributos de la misma que van a a~nadirse a la lista de seleccion.4. 2. Todo esto se hace de forma que el usuario no necesite escribir nada. CLIENTE FSQL VISUAL EN JAVA 241 Figura 6. A grandes rasgos el procedimiento es como sigue: 1. los que apareceran en la consulta . Al elegir la opcion para la creacion de una nueva consulta a traves del \Asistente Visual FSQL" se mostrara una ventana (Figura 6.6. sino simplemente a base de \clicks" de raton. o sea.

que introduce la expresion formada en la lista de valores a mostrar. 3. Las expresiones mas complicadas que la simple aplicacion de una funcion se dispone de un recuadro de texto donde se forma la expresion hasta que se pulsa un boton \A~nadir a Seleccion". Estos atributos pueden aparecer con o sin expre- siones con constantes y/o atributos. incluyendo llamadas a funciones (como CDEG). . Repetir los pasos anteriores con todas las tablas que contengan datos que deseemos consultar.nal.

Esto se hace marcando las expresiones de las que se desee alterar su posicion y pulsando a continuacion los botones para \Subir" o \Bajar". Esta aplicacion tambien dispone de todas las opciones que tiene el programa FQ (Apendice G). Esta ultima opcion nos lleva a otra ventana para formar las condiciones (clausula WHERE) de la consulta actual. Pulsar el boton adecuado dependiendo de lo que deseemos hacer a continuacion: Mandar consulta como FSQL o como SQL. tambien de forma visual. Ordenar las expresiones de la lista de seleccion en el orden en el que queramos que aparezcan.242 CAPITULO 6. 5. Cancelar la consulta o seguir formando la consulta. para consulta de etiquetas. informacion sobre la conexion y sobre las opciones de con. ver relaciones de similitud. EL CLIENTE FSQL 4. compatibilidad entre atributos.

permite tener \abiertas" varias consultas a la vez para comparar resultados o copiar datos de una a otra..guracion del Servidor FSQL. . ar- chivar el resultado de una consulta.. Asimismo.

1 Clasi.Captulo 7 Algunas Aplicaciones del lenguaje FSQL 7.

cacion Difusa de Imagenes de una Base de Datos En [8] se mostraron algunos resultados sobre la clasi.

es posible realizar la clasi. la cual es obtenida a partir de una imagen 2D del mismo. almacenadas en una base de datos. a partir de aqu.cacion exible y automatica de un objeto segun su forma. El objeto es repre- sentado usando un conjunto de caractersticas obtenidas a partir de la curva de curvaturas del contorno del objeto. Estas caractersticas. pueden ser tratadas como difusas o crisp y.

Las de.cacion usando el lenguaje de consulta difuso FSQL (Fuzzy SQL) visto anteriormente (apartado 5.2).

7.1 Introduccion al Problema En la industria es frecuente encontrar procesos en los que es conveniente poder clasi.niciones de las posibles clases pueden estar tambien almacenadas en una BDRD.1.

car distintos objetos a partir de una imagen captada. por ejemplo. con una camara fotogra.

Para realizar esta clasi.ca o de vdeo.

cacion utilizamos una representacion del objeto que se basa ex- clusivamente en la informacion del contorno del mismo. La caracterizacion . es decir en su forma exterior. la cual es una de las caractersticas principales de todo objeto.

nal se consigue de.

niendo un conjunto de atributos que pueden tomar valores difusos y extrayendo las ca- ractersticas concretas para cada .

gura. Por caracterstica difusa entendemos aquellas que denotan imprecision y que pueden tener signi.

Ademas de permitir realizar una clasi. mediano. como por ejemplo. peque~no..cados no exactos para el ser humano.. el tama~no de un objeto puede ser grande.

la representacion que proponemos reduce la dimensionali- dad de la caracterizacion con lo que el metodo puede ser util en aplicaciones donde existen restricciones de tiempo.cacion exible. Este metodo de clasi.

cacion es valido en entornos donde los objetos son claramente iden- ti.

cables por su forma. Por ejemplo. puede ser usado para la clasi.

cacion en tiempo real de objetos que circulan en una cinta transportadora y que son visualizados desde una camara situada en una posicion .

Tambien se puede aplicar en la clasi.ja.

cacion de objetos en una base de datos en la que contamos con una imagen de cada uno de ellos. Esta clasi.

cacion puede orientarse en dos sentidos: 243 .

244 CAPITULO 7. ALGUNAS APLICACIONES DEL LENGUAJE FSQL  Clasi.

por ejemplo. los distintos tipos de se~nales de tra.car los objetos atendiendo a su forma general: Es aplicable a distinguir.

 Clasi.co para conduccion automatica.

car los objetos en varias clases propias y particulares al sistema: Este sen- tido es mas general pero requiere una fase de aprendizaje despues de la cual es sistema conozca el conjunto de clases posibles en las que poder clasi.

La repre- sentacion de cada clase se realiza tambien de.car cada objeto.

niendo un conjunto de atributos difusos a partir de una forma generica. La clasi.

cacion es llevada a cabo a traves de consultas difusas en FSQL teniendo las caractersticas de las clases almacenadas en una base de datos. entre las que podemos destacar la automatizacion industrial (identi. puede efectuarse \on-line". Las aplicaciones de este metodo pueden ser diversas. El almacenamiento de estas caractersticas de un objeto determinado. en la base de datos.

cacion de piezas en lneas de ensamblado..) o clasi. inspeccion de piezas defectuosas o con fallos..

A continuacion explicamos en detalle el proceso en los siguientes apartados: En primer lugar damos una idea del metodo para la representacion de la forma de un objeto. a partir de esa forma obtenemos caractersticas que pueden representarse como atributos difusos de la BDRD y con esos atributos podremos realizar la clasi. Luego.cacion de imagenes en una base de datos.

cacion .

2 Representacion de la Forma de un Objeto El primer paso importante es el de aislar el objeto que se pretende caracterizar dentro de una imagen generica 2D de niveles de gris1 . Por ejemplo.1. la eleccion del metodo depende de la naturaleza de las imagenes con las que se trabaje.nal. Nosotros vamos a suponer que la imagen de entrada ya contiene un unico objeto que es el que vamos a representar. En general. si se toman imagenes de los objetos que pasan por una cadena de montaje (con fondo liso) o si se tienen almacenadas en una base de datos y se pretenden clasi. El proceso de segmentacion para conseguir subdividir la imagen en sus partes constituyentes es una tarea compleja dentro del procesamiento de imagenes [91]. 7.

2. 7.1 La Curva de Curvaturas a la Escala Mas Signi.1.car.

cativa Para representar el objeto presente en la imagen asumimos que toda la informacion necesaria para ello esta en la curva que de.

De este modo. en un primer paso la .ne su contorno.

gura va a ser caracterizada utilizando una funcion o curva de curvatura calculada sobre el contorno digital del objeto. El contorno digital es una secuencia de puntos adyacentes consecutivos que no se intersectan y que de.

Se calcula conectando los puntos frontera obtenidos con un algoritmo de extraccion de bordes (metodos basados en el gradiente [91] o metodos basados en la energa local [112. De esta forma se usan dos funciones x(t) e y(t) para especi.nen la frontera de un objeto. y(t)) para un parametro t que indica la posicion del punto dentro del contorno. 113]). El contorno de un objeto va a ser representado usando su forma parametrica (p(t) = (x(t).

car cada punto a lo largo de la curva desde el punto inicial hasta el punto .

en este caso. . Los valores de la curva de curvaturas K 1 Se opta por imagenes en niveles de gris pues reduce la complejidad del problema y.nal. ya que nos basamos en su forma exclusivamente. Sea K = fk(t)jt = 1. : : : . la informacion de color no es necesaria. ng. y(t))jt = 1. ng la curva de valores de curvatura calculada a partir del contorno digital C = f(x(t). : : : .

 DIFUSA DE IMAGENES 7. Se se~nalan los puntos caractersticos en el orden en que se calcula la curvatura.4 0.1 0 100 200 300 400 500 600 700 800 (a) (b) Figura 7.3 0.8 0.2 0. CLASIFICACION  DE UNA BASE DE DATOS 245 0.5 0.1: (a) Contorno de un nematodo.1.7 0.1 0 -0. (b) Curva de curvatura a la escala mas signi.9 0.6 0.

Mostramos en 7. La Figura 7. Esta se~nal unidimensional constituye un descriptor util para la extraccion de la forma de un contorno.1(b) la curva de curvaturas suavizada a la escala mas signi. El signo del valor de la curvatura indica el sentido de la curva (concava o convexa). En [8.cativa. 66. El pico mas pronunciado corresponde al punto 4 de (a) y el mas a la izquierda al punto 1.1(a) muestra el contorno de un objeto. en este caso particular representa el contorno de un nematodo2 . la curvatura sera mayor (en valor absoluto) cuanto mas peque~no sea el radio de esa curva. 67. 81. 110] pueden verse mas detalles sobre el calculo de la curvatura. de forma que en los puntos de una parte recta de un contorno la curvatura es nula y en una parte curva del contorno. determinan una representacion unidimensional de una curva plana.

La escala mas signi.cativa.

cativa para una curvatura es el \nivel" de suavizado con el que se obtiene con menor ruido de cuantizacion. debido a que el angulo entre pxeles vecinos solo puede variar en incrementos de 45o . que la gra. sino que es un contorno digital. De ah. Este ruido deriva de que un contorno de una imagen digital no puede ser continuo.

ca 7. aunque. con la escala signi.1(b) sea tan ondulante.

cativa.3 Deteccion de Caractersticas Propias La curva de curvaturas va a ser utilizada para detectar las caractersticas propias de la . 7. se reduce mucho ese \ruido".1.

- gura y as conseguir la representacion de.

Se pretende que estas caractersticas nos permitan representarla para posteriormente identi.nitiva.

carla o clasi.

Para ello seleccionamos un conjunto de puntos importantes del contorno. que son aquellos puntos con valores de curvatura. a los que llama- mos puntos caractersticos. tanto positivos como negativos.carla dentro de un conjunto determinado. En nuestro caso siempre se calcula el contorno a partir del punto mas alto de la . El signo indica si el punto pertenece a una parte concava o convexa del contorno y depende del sentido en el que este ha sido calculado. que sobresalen de los demas.

gura en la imagen 2D y siguiendo el contorno en sentido contrario a las agujas de un reloj. N (0. 2 ). La varianza muestral se calcula: 2 Gusano de cuerpo . la curvatura tambien esta calculada en este orden para cada punto del contorno. Por tanto. Suponemos que los valores de curvatura siguen una distribucion Normal de media cero y varianza 2 .

liforme o cilndrico. no segmentado. . desprovisto de apendices locomotores y general- mente parasito. como la lombriz intestinal.

un punto pi es considerado un punto caracterstico del contorno bajo consideracion si el valor de su curvatura ki veri. Es decir. ALGUNAS APLICACIONES DEL LENGUAJE FSQL X N 2 = N1 (ki km )2 (7. los puntos caractersticos. van a ser puntos outliers de la anterior distribucion. Los puntos que vamos a considerar importantes para la caracterizacion de la forma.246 CAPITULO 7.1) i=1 P donde km es la media de los valores de curvatura (km = N1 Ni=1 ki ) y N es el numero de puntos del contorno.

+) (7.2) donde  va a ser usada para de.ca que ki 62 ( .

As.nir el grado de curvatura de un determinado punto.  indicara como de grande es la curvatura y esa informacion puede codi. sino su comparacion con el resto de puntos. lo importante no es el valor de curvatura exacto de esos puntos. O sea.

Estas etiquetas son importantes para un posterior tratamiento ya que permiten exibilizar la clasi.carse en distintas etiquetas lingusticas difusas: Por ejemplo. Alto. pero este numero puede variar para adaptarse a cada aplicacion particular. Medio o Bajo grado de curvatura. Hemos considerado solo tres etiquetas posibles. Estas etiquetas estan asociadas a distribuciones de posibilidad como muestra la Figura 5.2.

cacion y deben de.

La distribucion de estos puntos va a identi. Solo se considera punto caracterstico el maximo local de cada subgrupo de puntos outliers de la distribucion.nirse cuidadosamente. Generalmente los puntos que forman parte del entorno de un punto caracterstico tambien tienen un alto valor de curvatura.

car el tipo de contorno. por ejemplo. De esta manera podemos distinguir. Tambien se tiene en cuenta la distancia relativa entre cada dos puntos caractersticos. . calculada como el numero de puntos del contorno que hay entre dos de ellos con respecto al numero total de puntos del contorno.

guras de forma cuadrada de .

2(e)). como se ha mencionado antes. pentagonal irregular (Figura 7. En el triangulo esto no ocurre porque al calcular la curvatura se ha suavizado mas el contorno. Esto es debido. el grado de curvatura (relativo al valor absoluto de la misma como se ha descrito anteriormente) y la distancia del punto anterior a ese punto. 90o . Por tanto. al ruido de cuantizacion. ya que se tiene que representar el angulo continuo entre puntos vecinos como un angulo discreto (0o .. tu . Se puede observar que para el contorno pentagonal los puntos de la lnea recta inferior tienen una curvatura constante pero los otros dos lados tienen mucha variacion en su curvatura a pesar de tratarse tambien de lneas rectas. En la Figura 7.). 45o .2 (b). Para el primero la distancia sera tomada con respecto al ultimo (un objeto siempre tiene un contorno cerrado).guras de forma rectangular.2(a)). la forma del objeto es representada como un conjunto de puntos caractersticos. Estos contornos simples muestran claramente el calculo de los puntos caractersticos. Ejemplo 7.2(c)) o triangular (Figura 7. Cada uno de ellos mantiene informacion sobre el signo de la curvatura.1 Consideremos unos objetos cuya forma del contorno es cuadrada (Figura 7. (d) y (f) se muestran las curvas de curvaturas calculadas como en [8]..

15 0.15 0.25 (b) 0.3 (d) 0.2: Contornos de .1 0.  DIFUSA DE IMAGENES 7.1 0.05 0 50 100 150 200 250 300 350 400 450 (c) 0.25 0.05 0 -0.15 0.1 0.2 0.25 0.05 0 100 200 300 400 500 600 700 (a) 0.1.05 0 -0.05 0 -0.2 0.05 0 50 100 150 200 250 300 350 400 (e) (f) Figura 7.2 0. CLASIFICACION  DE UNA BASE DE DATOS 247 0.

guras y curvas de curvatura asociadas. a la escala mas signi.

.cativa para cada contorno.

4 Clasi. ALGUNAS APLICACIONES DEL LENGUAJE FSQL 7.248 CAPITULO 7.1.

segun las Caractersticas de cada Imagen Una vez extrado el conjunto de puntos caractersticos a partir del contorno digital de la imagen de un objeto.cacion. procedemos a su clasi.

los siguientes atributos basicos del contorno: 1. En realidad. el numero de vertices (esquinas) de un contorno es una caracterstica basica del mismo. Para ello. Numero de puntos caractersticos: Naturalmente. la importancia de esto esta en la distribucion de signos entre los vertices hallados. Distancia entre vertices: Calculada como distancia relativa a la distancia total. segun lo visto anteriormente. Signo del valor de la curvatura en cada vertice: Esto nos permite.cacion. tenemos en cuenta. ver si el contorno sigue una trayectoria concava o convexa. nos permite distinguir entre . 3. como se ha dicho anteriormente. 2.

A cada punto se le asocia una etiqueta lingustica para facilitar la clasi. Por ejemplo. Si en un contexto particular eso fuera interesante. tendramos que utilizar para ello otra caracterstica que indicara el tama~no global del contorno. Grado de curvatura de cada punto: Esto es calculado usando el valor absoluto de la curvatura en cada vertice y nos permite distinguir entre vertices muy puntiagudos y vertices poco puntiagudos.guras distintas pero que tengan igual numero de vertices e igual distribucion de signos en su curvatura. 4. Estas distancias nos impiden distinguir entre objetos identicos pero con distinto tama~no o distinta distancia a la camara. entre un cuadrado y un rectangulo.

como hemos dicho. sino con respecto al resto de valores. ya que. En determinados ambientes.cacion. Esta clasi. no nos interesa el valor exacto en s. el modelo puede ser ampliado para considerar otras carac- tersticas de los objetos (crisp o difusas). como por ejemplo el color o el tama~no (que podra ser obtenido a partir del contorno del objeto).

segun el tipo de .cacion se puede efectuar de dos modos.

guras (o formas) que deseemos clasi.

1.1 Clasi.car.4. aunque el segundo tipo incluye las del primero: 7.

cacion de Figuras Geometricas En muchos entornos podemos encontrar que las .

guras a clasi.

geometricas (mas o menos regulares) o que realmente no sabemos nada sobre las clases posibles.car son. en general. Estudiando las caractersticas anteriores se puede llegar a una conclusion sobre el tipo de .

As.gura que tenemos. por ejemplo. si tenemos un contorno con 3 vertices de igual signo estamos ante una .

el triangulo sera equilatero. Esto es extensible a cualquier tipo de . si un vertice posee mayor grado que los otros dos y ademas esta a mayor distancia de los otros dos que estos entre s. De igual modo. si la distancia entre los vertices y el grado de curvatura en ellos es similar.gura triangular. entonces el triangulo sera tipo isosceles. Las otras dos caractersticas nos informan sobre el tipo concreto de triangulo. Por ejemplo.

gura geometrica. incluidas. por ejemplo las .

Para ello. . podemos usar el lenguaje FSQL.guras estrelladas (cuya caracterstica esencial es que vara el signo de cada vertice alternativamente). Para la comparacion de estos valores es preferible hacerlo de forma exible. en la forma que se indica en el siguiente apartado. ya que son parametros bastante variables.

2 Clasi.1.4.1.  DIFUSA DE IMAGENES 7. CLASIFICACION  DE UNA BASE DE DATOS 249 7.

cacion de Figuras Complejas En este caso queremos clasi.

car .

guras que no tienen una forma geometrica de.

nida. Para ello debemos obtener una relacion de las clases de .

Cada una de las clases debera ser de.guras que el sistema puede encontrar. Esto dependera de cada aplicacion concreta.

nida dando valores a las 4 caractersticas de.

nidas anteriormente. Si consideramos valores concretos para ellas. muy difcil hacer una buena clasi. sera. probablemente.

cacion pues es muy probable que el objeto de entrada no se acople de manera exacta a los parametros de.

en cada una podemos de. Sin embargo. por lo que para ello introducimos el uso de atributos difusos. esto es.nidos para una clase. Todas las caractersticas menos el signo pueden ser tratadas como atributos difusos. este acoplamiento aunque no sea exacto si puede ser aproximado.

As.nir etiquetas lingusticas difusas (ver Figura 5. por ejemplo.2). podemos considerar que una .

gura pertenece a una clase si tiene \aproximadamente 5 vertices". con todos positivos. Si estas caractersticas de nuestras . \aproximadamente 3 vertices grandes" y con los vertices situados \aproximadamente" a la misma distancia.

entonces. esta puede ser consultada usando el lenguaje de consulta difuso FSQL. Con una consulta FSQL podramos obtener todas las .guras las almacenamos en una BDRD (Base de Datos Relacional Difusa).

con FSQL podemos obtener tambien un grado (entre 0 y 1) que nos indica en que medida una .guras de la base de datos que pertenecen a una determinada clase. Ademas.

8 AND GradoK3 FEQ $Normal 0. es posible que la . La consulta para seleccionar aquellos objetos que son triangulos isosceles o similares tendra el siguiente formato: SELECT Imagen#.7 AND Signo2 = 'P' AND Dist2 FEQ $Grande 0. La idea es aplicar una consulta del tipo de la dada en el siguiente ejemplo: Ejemplo 7.8 AND GradoK1 FEQ $Grande 0.7 AND Signo3 = 'P' AND Dist3 FEQ $Pequenna 0. tu Dependiendo del contexto en el que nos encontremos.gura pertenece a una clase.2 Supongamos que tenemos una tabla Objetos que contiene las caractersticas de multitud de objetos extraidas de una imagen del objeto. CDEG(*) FROM Objetos WHERE NumVertices = 3 AND Signo1 = 'P' AND Dist1 FEQ $Grande 0.7.8 AND GradoK2 FEQ $Normal 0.

Para contemplar esta posibilidad habra que efectuar mas comparaciones.gura pueda estar girada cierto grado. entre cada dos vertices (o puntos signi.

cativos) correlativamente. manteniendo el orden. el esquema de la base de datos debera ser diferente: Una tabla para las caractersticas generales de cada objeto. Por otra parte. sin indicar las caractersticas de sus vertices y otra tabla para almacenar las caractersticas de los vertices de todas las . si el numero de vertices es variable.

Otra posibilidad es almacenar en una tabla de la base de datos las caractersticas de todas las clases posibles.guras. Entonces. clasi.

car una .

gura concreta sera consultar dicha tabla usando las caractersticas de esta .

Uno de los puntos mas importantes del metodo es de.gura en la condicion de la consulta.

es posible ense~nar al sistema la de. En este sentido.nir las clases apropiadamente.

nicion de cada clase o que el mismo deduzca .

35] presentamos un metodo para insertar el uso del lenguaje de consulta difuso FSQL como una tecnica mas de Data Mining.2 Data Mining con FSQL en un Entorno Financiero En [34.250 CAPITULO 7. 7. incluyendo como ejemplo un sistema de clasi. Entre estas tecnicas podemos destacar el algoritmo de clustering difuso C-means [16]. ALGUNAS APLICACIONES DEL LENGUAJE FSQL tanto el numero de clases como sus caractersticas haciendo uso de tecnicas de Data Mining extrayendo la informacion de una base de datos que contenga ejemplos de imagenes concretas para la aplicacion.

cacion y clustering difuso aplicado a los clientes de una entidad .

usamos FSQL para efectuar consultas que obtengan determinados objetos (tuplas) con caractersticas similares.nanciera3. Las caractersticas sobre las que se actuaran y los valores de estas son obtenidos previamente por un proceso de segmentacion. El uso de FSQL nos evita tener que usar algoritmos de clasi. esto es. El uso de FSQL hace que el proceso de extraccion de informacion (Data Mining) pueda ser evaluado a nivel practico y no solo teorico. desarrollado por Carrasco [33. Concretamente. objetos de un determinado grupo o conjunto. 35]. aplicando el prototipo DAPHNE.

la clasi.cacion y ademas.

cacion es efectuada en tiempo real. En este apartado daremos primero una vision global del Data Mining como un conjunto de tecnicas orientadas a obtener conocimiento implcito (no explcito) que sea de interes a partir de los datos existentes en la base de datos. De esta forma podemos tambien tratar como difusos los clusters obtenidos a traves de algoritmos no difusos. Se incluye una clasi.

en el que se aplican tecnicas de otros campos.cacion de las tecnicas de Data Mining segun el tipo de conocimiento a descubrir. Posteriormente. se quiere hacer notar las caractersticas que hacen del Data Mining un campo de investigacion autonomo y de interes por s mismo.2. Ademas. 7.1 Data Mining como A rea Independiente Se puede de. resumimos las caractersticas y utilidad de DAPHNE. explicamos el uso de FSQL para clustering difuso y exponemos algunos resultados experimentales obtenidos.

si el sistema descubre \si un cliente es culpable de un accidente entonces es probable que sea hombre". Segun [68]. y por la \Caja General de Ahorros de Granada". Los sistemas de bases de 3 Este trabajo esta parcialmente subvencionado por el Gobierno Espa~nol.  U til: El conocimiento es util cuando puede ayudar a conseguir un objetivo del sistema o del usuario. Para el sistema puede ser una informacion nueva pero para un usuario que este analizando reclamaciones de seguros es algo obvio. si un sistema descubre \si un cliente es culpable de un accidente entonces tiene una edad mayor de 17 a~nos". As. el Data Mining persigue descubrir conocimiento que sea nuevo. potencialmente util y de un calculo no trivial:  Nuevo: Esta caracterstica del conocimiento depende del marco de referencia que se tome.  No trivial: Un sistema se considera no trivial si posee algun grado de autonoma en el procesamiento de los datos y evaluacion de los resultados. .nir Data Mining como el proceso de extraccion de informacion de interes a partir de los datos. esta informacion es potencialmente util a ese usuario y/o al sistema. bajo el proyecto TIC97-0931. Retomando el ejemplo anterior.

151] en la de. DATA MINING CON FSQL EN UN ENTORNO FINANCIERO 251 datos convencionales son capaces de obtener informacion desconocida (no explcita) y de gran utilidad como. por tanto. Existe. por ejemplo.2.7. pero que su obtencion no puede ser considerado como un proceso de Data Mining ya que su calculo se puede considerar trivial. un cierto consenso entre diversos autores [39. el total de saldo en cuentas de clientes en el a~no 1997. 68.

que lo rea. Si bien es cierto que Data Mining se aprovecha de dichas tecnicas. restricciones y regularidades) a partir de los datos de una base de datos. previa- mente desconocida y potencialmente util (por ejemplo. reglas de conocimiento. Estadstica o Sistemas de Gestion de Bases de Datos (SGBD). existen una serie de caractersticas de Data Mining. que esta integrado en otros como el de Sistemas de Aprendizaje (Machine Learning ). a parte de las ya enumeradas. Se podra pensar que este campo de Data Mining no tiene personalidad propia. esto es. no trivial.nicion de Data Mining como el proceso de extraccion de informacion implcita.

aunque no tiene porque ser lenguaje natural. En este sentido. s debe ser comprensible por usuarios no expertos. cada vez son mas tpicos los entornos de usuario gra. 151]:  Lenguaje de alto nivel: El conocimiento descubierto debe ser representado en un lenguaje de alto nivel que.rman como un area independiente [68.

Ademas. esta caracterstica de representacion ultimamente se ha ampliando no solo al conocimiento descubierto (resultado) sino tambien a las pe- ticiones del mismo (entradas del usuario). que pueden ser expresadas como \consultas". expresadas en un lenguaje de alto nivel o a traves de entornos gra.cos y/o la posibilidad de representacion del conocimiento de multiples formas o vistas.

 Precision: El conocimiento descubierto debera retratar de forma precisa los conteni- dos de la base de datos. el uso de estas medidas im- plica la necesidad de un estudio sistematico de las medidas de calidad del conocimiento descubierto. Por otro lado. Las \imperfecciones" (ruido. datos excepcionales) deberan ser expresadas con medidas de incertidumbre.cos.  E.

ciencia: El proceso de extraccion de conocimiento debe ser e.

en de.ciente y los tiempos de ejecucion sobre grandes cantidades de datos deben ser predecibles y aceptables cuando se traten grandes cantidades de datos. los algoritmos que use el sistema deben ser escalables a la gran cantidad de datos que. Como consecuencia de esto.

objetos. incluyendo los tipos difusos (apartado 5.. Sin embargo. hipertexto.1.  Extraccion interactiva de conocimiento en multiples niveles de abstraccion: El descubrimiento interactivo de conocimiento puede permitir al usuario re.2.) sera dese- able que un sistema Data Mining realizara su trabajo de una forma efectiva sobre esta diversidad de datos. van a manejar..1).  Manejo de diferentes tipos de datos: Al existir diferentes tipos de datos y bases de datos en diversas aplicaciones (datos relacionales. parece difcil construir un sistema que gestione todos los tipos de datos.nitiva.

nar on-line la extraccion de conocimiento. . debera ser posible ver los datos y resultados de Data Mining en diferentes niveles de abstraccion o desde diferentes angulos. el enfoque y la profundidad del mismo. Ademas.

y pueden tener diversas semanticas. ALGUNAS APLICACIONES DEL LENGUAJE FSQL  Extraccion de informacion desde diferentes fuentes de datos: Actualmente es un gran reto la extraccion de conocimiento desde diferentes fuentes de datos. de medidas de seguridad para prevenir descubrimiento de informacion \sensible". Esta caracterstica esta alentada por las cada vez mas amplias y accesibles redes de ordenadores (inclu- yendo Internet y las Intranets).252 CAPITULO 7. Como consecuencia surge la necesidad de algoritmos distribuidos y paralelos en Data Mining. negros y jovenes. ya que la empresa haba distinguido este per.UU. una campa~na publicitaria de tabaco que era dirigida a hombres. interesan- te de estudio. Estos datos pueden estar formateados o no. Sirva de ejemplo [68] la controversia que provoco en EE.  Proteccion y privacidad de datos: Ver los datos desde diferentes angulos y niveles de abstraccion puede ir en contra de la privacidad por lo que surge el tema.

algunos autores [90] remarcan la falta de identidad de Data Mining.l como el mas susceptible de consumir su producto. puede ser opuesta a algunas de las descritas y debera ser tenida muy en cuenta. de tal forma que cali. Sin embargo. Esta caracterstica. como es obvio.

caracterizados por el uso e.can los sistemas actuales como de primera generacion.

Rastreo de In- formacion (Data Dredging ). El termino Data Mining (DM) o. hay una necesidad creciente de alcanzar la segunda generacion de sistemas Data Mining para bases de datos. ha sido usado [39. 151] como equivalente a otros como Descubrimiento de Informacion y Conocimiento (Kno- wledge and Data Discovery. en las proximas decadas habra una evolucion hacia esta clase de sistemas. Arqueologa de la Informacion (Data Archaeology ). Segun esto. en [27] los autores reducen el signi. llegando a ser lo que se ha llamado como Sistema de Gestion de Conocimiento y Descubrimiento de Informacion (Knowledge and Data Discovery Management System.. numerosos autores posteriores distinguen entre Data Mining y Knowledge Discovery. Analisis de Datos (Data Analysis ). en la que el descubrimiento de informacion este totalmente integrado y optimizado en el sistema.. Extraccion del Conocimiento (Knowledge Extraction ). Probablemente. KDDMS). Minera del Conocimiento en Bases de datos (Knowledge Mining from Databases ). KDD). traduciendo literalmente Minera de Datos. Sin embargo. As.ciente de algoritmos de Machine Learning en grandes bases de datos bajo SGBD tradicionales.

cado de Data Mining a la aplicacion de procedimientos o algoritmos para revelar patrones de conocimien- to novedoso o para veri.

. el Data Mining debera integrarse dentro del campo de Knowledge Discovery. la limpieza de datos.car hipotesis desarrolladas en etapas previas. desarrollo de hipotesis. que sera mucho mas amplio y consistira en etapas de procesamiento previas y posteriores al Data Mining. Segun esto. su integracion y chequeo. Como etapas posteriores al Data Mining podran estar el chequeo y la veri. Como etapas previas estaran la obtencion de datos..

los nombres de Data Mining y Knowledge Discovery son normalmente usados como sinonimos y nosotros los usaremos indistintamente en este estudio.. 7. la interpretacion y uso de este conocimiento.2.cacion del conocimiento descubierto.2 Tecnicas de Data Mining Existen diversas formas de clasi. Sin embargo..

) .car las tecnicas de Data Mining.). extraccion basada en patrones en generalizacion.. por el tipo de tecnicas utilizadas (estadsticas.. orientada a objetos.. como son por el tipo de base de datos sobre la que trabajan (relacional.. transaccional.

) implique la presencia de otro valor que pertenezca a otro conjunto. Estos procesos de extraccion de reglas pueden suponer el estudio repetitivo de grandes bases de datos con el objeto de encontrar diferentes patrones de asociacion por lo que son necesarios algoritmos muy e. las tecnicas de Data Mining se dividen principalmente en [39. si la base de datos es de ventas de artculos de camping. Segun este ultimo criterio. en las transacciones.. de tal manera que la presencia de cualquier valor de algun conjunto en un elemento de la base de datos (registro. se puede descubrir en una base de datos transaccional que determinado valor de un atributo implica otro valor de un segundo atributo. Por ejemplo. DATA MINING CON FSQL EN UN ENTORNO FINANCIERO 253 y por el tipo de conocimiento que va a ser extrado.. tupla. 68.2. 151]: Extraccion de Reglas de Asociacion: Se trata de descubrir asociaciones importantes entre los valores de conjuntos de atributos.7. De esta manera. un sistema puede llegar a descubrir que las personas que compran un saco de dormir suelen adquirir tambien una tienda de campa~na. que es el mas usual.

cientes. Como ejemplos de algoritmos tenemos los populares Apriori. existen muchos productos comerciales que las soportan. Existen tambien algoritmos sobre bases de datos distribuidas como DMA [40]. esto es. resumen y caracterizacion: Estas he- rramientas de analisis y extraccion de datos son las mas extendidas. DHP y PARTITION. La generacion y resumen de datos muestra las ca- ractersticas generales o una vista resumida de alto nivel sobre un conjunto de datos (de bajo nivel) especi. Generalizacion de datos a nivel multiple.

especialmente aquellos que implican funciones de agregacion (su- mas. Frecuentemente es deseable presentar vistas generalizadas de los datos en multiples niveles de abstraccion. descubrir conocimiento. El enfoque orientado a la induccion de atributos: Se puede considerar a este enfoque como una generalizacion del anterior donde la consulta usada es mas general que una simple clausula de agrupamiento. \vistas materializadas" y OLAP (On-Line Analytical Processing ). 2. Estas vistas pueden servir para soporte de decision.. o cualquier otra aplicacion. Las fun- ciones de agregacion pueden ser precalculadas agrupandolas por diferentes conjuntos de atributos. El nucleo de esta tecnica es el uso de una . desviacion tpica.cados por el usuario dentro una base de datos.) y almacenar estas vistas materializadas en una base de datos \multidimensional" que se denomina cubo de datos.. Existen dos enfoques principales de generalizacion: 1. as como algunas variantes como pueden ser \bases de datos multidimensionales". El enfoque del cubo: La idea general es materializar ciertos calculos costosos que se piden con frecuencia. medias. Este enfoque tiene algunos nombres alternativos.

Se obtiene una relacion generalizada o cubo (de.losofa on-line en la que la generalizacion de datos se realiza conforme a las distribuciones de valores de atributos en un conjunto concreto de datos relevantes.

Segmentacion. Agrupamiento o Clustering: La segmentacion es la tecnica de identi.nitivo o temporal) que puede usarse para obtener mas conocimiento interesante en un proceso de Data Mining interactivo.

De forma breve. consiste en agrupar registros u objetos en clases que re ejen patrones inherentes .- cacion de patrones de interes dentro de los llamados \algoritmos de descubrimiento" [68].

254 CAPITULO 7. La idea basica consiste en de. ALGUNAS APLICACIONES DEL LENGUAJE FSQL a los datos. Son metodos muy tradicionales que provienen de la Taxonoma Matematica.

La Segmentacion Conceptual [109] intenta evitar tales problemas. el cual caracteriza cada grupo con los valores centrales de cada una de las caractersticas (atributos) usadas en el proceso. Recientemente se han investigado algoritmos aplicables a grandes cantidades de informacion especialmente en el ambito concerniente a las bases de datos. la cual combina la habilidad del usuario humano con el poder de calculo del ordenador. Estos metodos trabajan con datos estructu- rados (como bases de datos espaciales) y determinan los grupos no solo por la similitud entre atributos sino que tambien por la coherencia conceptual. Las distancias usadas frecuentemente no son Eucldeas e incluso no son distancias en el sentido matematico sino que son medidas de \semejanza". Clasi. Ejemplos de estos algoritmos son el algoritmo CLARANS (Clustering Large Applications based upon Randomized) basado en dos algoritmos de segmentacion estadsticos (PAM y CLARA) y el algoritmo BIRCH (Balanced Interative Reducing and Clustering).nir algun tipo de \distancia" entre los elementos de la base de datos usando algunos de sus atributos y obtener grupos (clusters) de elementos maximizan- do la distancia entre los distintos grupos y minimizandola entre los elementos de un mismo grupo. Uno de los algoritmos de segmentacion mas populares es el llamado C-means (C-medias) o su variante difusa Fuzzy C-means [16]. Estos metodos de segmentacion clasicos tienen el inconveniente de no poder usar alguna informacion adicional que se pueda tener tal y como la forma de los grupos. Tambien se han desarrollado mecanismos para la segmentacion interactiva.

cacion: La clasi.

cacion es la segunda parte dentro de los \algoritmos de descubri- miento" [68]. ya que no es su.

el verdadero objetivo es obtener un proceso de clasi.ciente obtener un conjunto de grupos (segmentacion) sino que tambien es necesario \describirlos" por medio de las variables usadas. Es mas.

cacion que nos permita incluir cada nuevo elemento en el correspondiente grupo conforme a los valores de sus atributos. La clasi.

cacion ha sido ampliamente estudiada en el contexto de sistemas de aprendizaje. as una de las tecnicas de clasi.

estadsticos y basados en los conjuntos rough.2. 122]. hemos usado el prototipo DAPHNE [33. desarrollado por Ca- rrasco en 1998. 35]. 7. introducidos por Pawlak en 1982 [121.cacion que mas exito han tenido en Data Mining en la llamada \sistema de aprendizaje ID-3".3 DAPHNE: Un Prototipo para Clustering Financiero Para nuestros propositos. Tambien se han intentado otros enfoques como los basados en redes neuronales. Este prototipo es parte de un proyecto de investigacion conjuntamente con la entidad .

nanciera \Caja General de Ahorros de Granada". por ejemplo). El objetivo es la segmentacion o clustering de una base de datos de clientes que permita efectuar un tratamiento diferenciado a los clientes (como marketing directo. DAPHNE es una herramienta generica para clustering enfocada a entornos .

aprendizaje no supervisado basado en herramientas de conjuntos difusos. tecnicas de SGBD y tecnicas estadsticas.nancieros o bancarios. El prototipo usa tecnicas de distintas areas: Clustering jerarquico. Ademas de los requisitos espec.

ya mencionadas ante- riormente: . el prototipo ha sido dise~nado considerando las funcionalidades deseables para sistemas Data Mining.cos del problema.

DATA MINING CON FSQL EN UN ENTORNO FINANCIERO 255  Manejo de diferentes tipos de datos: En el problema en particular. binario y escalar.2. se consideran tres tipos de datos para el clustering: Numerico. El binario puede tomar dos unicos valores extremos (como verdadero y falso por ejemplo). Los escalares permiten tomar un valor de entre un conjunto .7.

 E.  Extraccion de informacion desde diferentes fuentes de datos: DAPHNE es exible para manejar datos de distintos SGBD (a traves de ODBC).nito de valores y ademas entre cada dos valores posibles existe una relacion que mide la distancia entre ellos. La combi- nacion de estos tres tipos de datos para procesos de clustering es novedosa entre las implementaciones de este tipo de sistemas.

 Precision: El uso del metodo clasico de Benzecri para obtener la jerarqua de clases garantiza la bondad de la particion.ciencia y extraccion interactiva de conocimiento: DAPHNE ha sido dise~nado para ser interactivo con el usuario y dar la respuesta. El procedimiento para obtener una buena particion. tambien ha obtenido excelentes resultados en las pruebas efectuadas. basado en conjuntos difusos. con la particion de la poblacion. en tiempo real.  Interfaz amigable: El inferfaz de DAPHNE es gra.

Asimismo.3. el prototipo gestiona una meta-base de datos de tal modo que para el usuario sea facil y rapida la gestion de un proyecto de segmentacion. Esto es efectuado por un ingeniero del conocimiento experto en sistemas .co y dise~nado para su facil utili- zacion. 7.1 Funcionamiento de DAPHNE Como primer paso para el sistema de clustering de DAPHNE se deben escoger los atributos de los clientes relevantes para el clustering.2.

nancieros. Para esta seleccion el usuario puede utilizar un metodo que ha sido desarrollado para seleccion automatica de atributos importantes. especi. el usuario inserta un nuevo proyecto para clustering en la meta-base de datos del prototipo. As pues. basado en algoritmos geneticos [100].

cando la tabla o vista que contiene los datos (datos de ejemplo) y los atributos que DAPHNE utilizara para el clustering. El usuario no necesita especi.

especi. Si surgen atributos escalares. el usuario debera incluirlos en la meta-base de datos.car nada para atributos con dominios numericos o binarios.

teniendo en cuenta la siguiente de.cando la lista de valores posibles y dando una medida de distancia (inversa a una relacion de similitud) entre cada dos de ellos.

nicion: De.

xj )  0 8xi. xj ) = d(xj . xj 2 U 2. d(xi . xj )  d(xi . d(xi . se dice que es una medida de distancia si cumple lo siguiente: 1. xj ) = 0 si y solo si xi = xj 3. xj ) que mide la \distancia" (en algun sentido) entre dos elementos de un determinado dominio U .nicion 7.1 Una funcion d(xi . xj ) (Desigualdad triangular) . xk ) + d(xk . xi ) 4. d(xi . d(xi .

ALGUNAS APLICACIONES DEL LENGUAJE FSQL donde xi . las etapas de su funcionamiento son las siguientes: 1. xk 2 U . xj . tu Una vez introducidos los datos necesarios para el funcionamiento de DAPHNE.256 CAPITULO 7. Normalizacion: El principal objetivo de esta etapa es hacer posible la comparacion entre atributos para simpli.

2. Zadeh y Bezdek. Calculo de la matriz de distancias ultrametrica de la poblacion: Desde los resultados de Dunn.1]. los binarios son convertidos al conjunto f0. representados en [55. relacion difusa transitiva max-min y distancias ultrametricas. Por tanto. Los atributos numericos son escalados al intervalo [0. 148]. en la matriz ultrametrica se especi.car los procesos posteriores. se sabe que existe una equivalencia entre clustering jerarquico.1g y los valores de atributos escalares son cambiados por un codigo que esta almacenado en la meta-base de datos.

{ La distancia entre atributos escalares se obtiene como la media de todas las distancias calculadas a partir de la relacion de distancias especi. Este proceso contiene los siguientes tratamientos:  Calcular la matriz de distancias de la poblacion: Para cada par de individuos de la poblacion la distancia que separa a ambos es obtenida por la media de las distancias obtenidas entre los distintos tipos de atributos (numericos. binarios y escalares): { La distancia entre atributos numericos se obtiene como la media entre las distancias Eucldeas de los valores normalizados. { La distancia entre atributos binarios se obtiene a traves de la medida de simi- litud de Sokal y Michener sobre los atributos binarios normalizados [65]. El dendrograma o diagrama de arbol puede ser visto como un diagrama para la representacion de los resultados del clustering jerarquico que es efectuado en terminos de matriz de distancias.can todas las posibles segmentaciones que pueden efectuarse sobre la poblacion.

cada por el usuario y contenida en la meta-base de datos de DAPHNE. la matriz de distancias resultante sera una matriz cuadrada simetrica de n  n. En esta matriz de distancias cada tres elementos xi . en la que los elementos de la diagonal principal son todos ceros. xj y xk veri. si en el universo U hay n elementos. As.

. 87]. d(xk . tambien llamada condicion de Bourbaki (del nombre de su autor): d(xi.  Calcular la matriz de distancias ultrametrica: La matriz obtenida en el paso ante- rior es transformada de tal forma que para cualesquiera tres elementos. la distancia entre ellos cumpla tambien la desigualdad ultrametrica [65]. aunque existen otros metodos.can la desigualdad triangular. xj )  maxfd(xi . Para obtener la matriz de distancias ultrametrica a partir de la matriz de distancias DAPHNE usa el metodo de Benzecri [15. xk ). xj )g Puede observarse que la desigualdad ultrametrica es una propiedad mas fuerte que la desigualdad triangular.

7. Calcular los posibles -cortes4 : Como la matriz ultrametrica es . DATA MINING CON FSQL EN UN ENTORNO FINANCIERO 257 3.2.

nita. contiene solo un conjunto .

G3 =f3g. con la matriz de distancias D de la que se obtiene.3.6g. La particion puede ser obtenida de distinta forma. As.2.5. cada -corte implica una particion o clustering diferente sobre la poblacion.4.5.3 Supongamos un universo U con 6 elementos f1.2. Este procedimiento de.5.6g.6g.  =2 =) G1 =f1g. G5 =f5g y G6 =f6g. Ejemplo 7. tu 4.4.  =6 =) G1 =f1.4g y G3 =f3.  =1. Por tanto. Clustering: Este proceso asigna cada individuo de la poblacion a un cluster o grupo determinado.  Una buena particion: Para esto se usa un procedimiento de aprendizaje no su- pervisado basado en herramientas de conjuntos difusos. segun la opcion que elija el usuario:  Particion optima absoluta: Esta particion es determinada al nivel de similitud 0. G2 =f2. G3 =f3g.4.3.nito de valores diferentes.5. G4 =f4g y G5 =f5. G3 =f4g y G4 =f3. en caso de que no se tenga ningun tipo de conocimiento sobre la estructura de los datos. esto es. G4 =f4g. En otras palabras. para el clustering jerarquico o la matriz ultrametrica podemos determinar inequivocamente el conjunto de todos los posibles -cortes diferentes.  =1 =) G1 =f1g. Para esto es necesario obtener una particion determinada de la matriz ultrametrica.6g.5 =) G1 =f1g.  =5 =) G1 =f1g y G2 =f2. el conjunto de todas las posibles relaciones de equivalen- cia asociadas con la matriz. el problema consiste en elegir un -corte entre los posibles -cortes.6g.6g. obtenidos de acuerdo a la hipotesis de que no se tiene ninguna informacion previa sobre la estructura de los datos. G2 =f2g. la matriz de distancias ultrametrica D0 : 00 7 6 7 6 7 1 00 6 6 6 6 6 1 BB 0 5 2 5 6 C C B B 0 5 2 5 5 C C D=B B 0 6 1:5 2 C C B =) D = B 0 0 5 1:5 1:5 C C BB 0 7 5 C C B B 0 5 5 C C @ 0 1 A @ 0 1 A 0 0 Con esos datos podemos obtener los siguientes -cortes.5. G2 =f2g. G2 =f2g.5 [148] (en matrices normalizadas). usando el metodo de Benzecri.3. donde los Gi son los distintos grupos obtenidos de cada -corte:  =0 =) G1 =f1g.

ne una buena particion como el valor mnimo de la medida de.

. 4 En el apartado 1.2 se explico el concepto general de -corte.3.nida sobre el conjunto de todos los posibles -cortes [55].

258 CAPITULO 7. obtenemos el - corte que implica n grupos o el que implica el numero de grupos mas cercano a n. Con esto se pueden especi. ALGUNAS APLICACIONES DEL LENGUAJE FSQL  Particion determinada por un determinado numero de grupos n: Mediante un algoritmo de busqueda binaria sobre todos los posibles -cortes.

car condiciones como \menos (o mas) de n grupos". 5. Calcular los centroides de cada grupo: Esta etapa obtiene una tupla que identi.

O sea. los valores de esa tupla identi.ca a cada grupo.

central o centroide de cada grupo.can un valor \tpico".  Atributos Escalares: Cada valor posible es identi. El valor de cada atributo en esta tupla depende del tipo de este:  Atributos Numericos: El centroide es obtenido como la media de los valores de este atributo para todas los objetos (tuplas) que pertenecen a el cluster en cuestion.

en s. 7. que es obtenida como una especie de media de la distribucion de probabilidad. mezclando estos valores de los objetos del cluster obtenemos una distribucion de posibilidad. Normalmente.2.  Atributos Binarios: Son considerados como un caso particular de los atributos escalares pero unicamente con dos posibles valores. As. no son directamente manipulables por un usuario sino que son datos intermedios dentro del proceso analtico del sistema. Estos resultados. a partir de un conjunto de ejemplos (hacerlo con toda la base de datos sera demasiado lento). El objetivo es asignar cada elemento de la base de datos a un cluster. as como cada elemento que insertemos en dicha base de datos. como resultado de DAPHNE obtenemos un numero de grupos caracterizados por unos valores centrales para cada atributo. para este objetivo se usa un algoritmo de clasi. usando una combinacion convexa de las etiquetas lingusticas [54].4 Uso de FSQL para Clustering Difuso Como hemos visto anteriormente.cado por una etiqueta lingustica.

cacion con el que se obtienen reglas (como arboles de decision) que describen cada grupo y con las que es facil clasi.

Cn ) para n atributos (A1 . : : : . usando la funcion CDEG de FSQL podemos obtener en que grado cada elemento pertenece a cada grupo. a partir de los centros (C1 . las descripciones de cada grupo pueden ser usadas por el usuario de forma amigable. presumiblemente con distinto grado de pertenencia a cada uno. En otras palabras. As. An ) de un deter- minado grupo elaboramos una consulta FSQL con el siguiente formato: . posteriormente. CDEG calcula un grado que indica en que medida cada elemento es \tpico" del grupo. De esta forma un mismo elemento puede pertenecer a varios grupos. As pues. de forma que los grupos obtenidos pueden ser vistos como grupos o conjuntos difusos. Nuestra propuesta original es el uso de DAPHNE para obtener los centroides de cada grupo y. Estos algoritmos pueden ser bastante lentos y no indican si un elemento esta claramente en un grupo o pertenece al grupo pero no es muy \tpico" del mismo. : : : . usarlos en una consulta FSQL.car cualquier elemento en un grupo adecuado. Ademas. a traves de un lenguaje de alto nivel y los resultados son obtenidos en tiempo real.

La principal ventaja del metodo que proponemos es.12. Los #Ci representan el valor \aproximadamente Ci " representados por distribuciones de posibilidad triangulares (Figura 5.*. Ci + ]. principalmente NFEQ para obtener resultados m as precisos. su utilizacion puede ser efectuada de forma trasparente a traves de programas Clientes FSQL (Captulo 6). Ci + . que el algoritmo de clasi. de forma que estos oculten el uso de FSQL a un usuario no adiestrado en el uso de SQL o FSQL.CDEG(*) FROM tabla WHERE A C 1 FEQ # 1 THOLD AND A C 2 FEQ # 2 THOLD AND ::: An FEQ #Cn THOLD . quizas.4). tales que sean positivos y con  > . En vez de esos valores aproximados podemos tambien utilizar trapecios (Figura 5. Aunque FSQL es un lenguaje de alto nivel.7. Para evitar los valores Unknown (desconocidos) que pudiera haber en atributos difusos podemos a~nadir el siguiente tipo de condicion para el atributo Ai que lo precise: Ai IS NOT UNKNOWN Tanto en atributos difusos como \crisp" puede interesarnos tambien evitar los valores nulos. DATA MINING CON FSQL EN UN ENTORNO FINANCIERO 259 SELECT tabla. Ci .2) del tipo: $[Ci . eligiendo unos valores apropiados para  y . La sentencia FSQL anterior resuelve la siguiente consulta a la base de datos: \Dame los objetos que pertenecen al grupo C y su grado de pertenencia al mismo de aquellos que pertenecen a dicho grupo con un grado de pertenencia mnimo de ". podemos usar otro comparador difuso de los de la Tabla 5. Por supuesto. Con este tipo de consulta obtenemos los elementos que pertenecen al grupo en cuestion con un grado de pertenencia mayor o igual que el umbral elegido. lo cual es posible a~nadiendo el siguiente tipo de condicion para el atributo Ai en cuestion: Ai IS NOT NULL Es facil ver que de esta forma usamos los grupos obtenidos como si fueran grupos difusos.2. incluso si ellos se han obtenido a traves de algoritmos \crisp".

ya que esta clasi.ca- cion que debe aplicarse tras el clustering. no es necesario.

cacion es efectuada por FSQL en tiempo real. de esta forma.5 Resultados Experimentales La segmentacion de clientes de una determinada empresa tiene su origen en el campo del marketing e investigacion de mercados. los usuarios no expertos podran utilizar los datos producidos por DAPHNE. Proporciona una division analtica de todos los po- tenciales clientes en un mercado de ventas segun diferentes criterios. ademas de que. 7. donde se propone un proyecto de segmentacion difusa de clientes para una entidad . Ejemplo de esto es [152]. lo cual permite orientar el marketing adecuado a cada uno de los grupos (marketing directo).2.

Usando tecnicas de segmentacion difusa construye grupos de clientes homogeneos en lo refe- rente a las caractersticas de los clientes pertenecientes al mismo grupo y heterogeneos entre los de distintos grupos. .nanciera.

ALGUNAS APLICACIONES DEL LENGUAJE FSQL Cluster# Nomina Uso Tarjeta Saldo 1 N Medio {307.488 6 N Medio 3.556 5 S Alto {3.550 Tabla 7.328 3 S Medio 1.857. El sistema explicado en el apartado anterior ha sido aplicado al problema de segmentacion de clientes de una entidad .1: Ejemplo de clustering: DAPHNE obtiene 6 clusters.751 4 N Bajo 125.260 CAPITULO 7.667 2 S Bajo 265.

Los atributos relevantes identi- .nanciera en una situacion real.

obtenidas. es posible dar mas (o menos) importancia al atributo Saldo aumentando (o disminuyendo) su correspon- diente umbral. Un ejemplo de los resultados de esta consulta se muestra en la Tabla 7. A traves de una muestra de 1000 tuplas. Esto puede ser muy util para enfocar mejor la seleccion de clientes de acuerdo a objetivos concretos dependientes de cada aplicacion particular. Clusters. DAPHNE obtuvo 6 clusters como el numero optimo de grupos en la poblacion. Nivel de uso de la tarjeta de credito (Uso Tarjeta) y Saldo medio (Saldo).1. El primer atributo tiene dominio binario e indica si el cliente recibe su nomina a traves de la entidad (valor `S') o no (valor `N'). junto con su relacion de similitud. por ejemplo.1 son almacenados en una relacion de la base de datos llamada. El nivel de uso de la tarjeta de credito es tratado como un escalar usando las etiquetas \Bajo". CDEG(*) FROM Clientes WHERE Nomina = 'N' AND Uso Tarjeta FEQ $Medio THOLD 0.2. donde Cliente# es un atributo de la relacion Clientes con el codigo de cada cliente. Por ejemplo. \Medio" y \Alto". tras un estudio analtico en el sistema de \data warehouse" de la compa~na. entonces. la consulta anterior puede ser efectuada tambien de forma mas general como: . por ejemplo.7 AND Saldo FEQ #-307667 THOLD 0.7 ORDER BY 2 DESC. El atributo Nomina no ha sido considerado como difuso para mostrar que los atributos con tratamiento difuso y \crisp" pueden convivir sin problemas. los clientes (en toda la base de datos) que per- tenecen a el cluster 1 con un grado mnimo de 0. para recuperar. Tras esto. Observe que el usuario puede facilmente ponderar la importancia de cada atributo a traves del umbral de cumplimiento y del comparador difuso empleado.cados por los expertos de la entidad fueron: Nomina (Nomina).7. Los valores centrales de cada grupo son los que se muestran en la Tabla 7. podramos efectuar la siguiente consulta FSQL: SELECT Cliente#. Si los resultados de DAPHNE de la Tabla 7.

71 C8 0.91 C4 0.70 Tabla 7. CDEG(*) FROM Clientes.  DE UNA INMOBILIARIA DIFUSA 7.00 C2 0.Uso Tarjeta THOLD 0.95 C3 0.Nomina AND Clientes.Cluster# = 1 ORDER BY 2 DESC.80 C5 0. donde para modi. Clusters WHERE Clientes. GESTION 261 Cliente# CDEG(*) C1 1.80 C6 0.Nomina = Clusters.3. SELECT Cliente#.7 AND Clientes.Saldo FEQ Clusters.Uso Tarjeta FEQ Clusters.2: Resultados de una consulta FSQL para Data Mining.7 AND Clusters.Saldo THOLD 0.75 C7 0.

3 Gestion de una Inmobiliaria Difusa Las aplicaciones de los SGBD y de la teora de bases de datos a problemas de \gestion" son inmensas. Por ejemplo. en un hospital podramos efectuar consultas del tipo \Dame los enfermos jovenes que padecen hepatitis y que llevan ingresados aproximadamente mas de 5 semanas". En . usando adecuadamente el poder deductivo de FSQL se pueden obtener conclusiones muy utiles. por el contrario. las aumentan para poder almacenar y tratar informacion que usando bases de datos clasicas sera imposible. universidades o. independientemente de su tama~no o dedicacion.car la consulta para otro grupo basta con cambiar la ultima condicion de igualdad con el atributo Cluster#. que van desde la gestion de un video-club hasta la gestion de un garaje. hoteles. como lo demuestra la enorme cantidad de aplicaciones de este tipo que se venden en el mercado. aplicaciones para la gestion de cualquier empresa. En todas ellas tienen aplicacion las bases de datos difusas pues estas no reducen en nada las posibilidades de las bases de datos clasicas. 7. Ademas. hospitales. sino que. pasando por supermercados. En un supermercado sera util conocer las respuestas a preguntas como \Dame los productos que se han vendido mucho gastando poco en su publicidad ". colegios. en general. En un colegio se podra consultar informacion como \Dame los alumnos que han superado Matematicas con buena nota y han superado fsica con nota regular ".

El programa se esta desarrollando en la actualidad.n. en calidad de proyecto . la lista de aplicaciones de gestion y de consultas utiles sobre estas sera intermina- ble. En este apartado vamos a explicar brevemente como se podra efectuar la gestion de una inmobiliaria a traves de una BDRD y del lenguaje FSQL.

siendo el Director de dicho proyecto el autor de esta memoria.n de carrera de la Ingeniera Superior en Informatica de la Universidad de Malaga. Palomo. . por el alumno P.

los objetivos mas importantes del proyecto son:  Conseguir un programa para la gestion de una inmobiliaria. con todas las funcionalida- des que esto requiera: Gestion de la oferta y demanda para la venta. a los que queremos agradecer desde estas lneas su colaboracion. alquiler o traspaso de cualquier . 7. As. conocidos previamente.I.).3. ALGUNAS APLICACIONES DEL LENGUAJE FSQL Durante el desarrollo del proyecto se mantendran contactos con diversos Agentes de la Propiedad Inmobiliaria (A. los objetivos de este proyecto no tienen que cen- trarse en la resolucion de las consultas exibles.262 CAPITULO 7. sin mas ambicion que pretender dar una idea de las posibilidades que abre el uso de FSQL. las caractersticas que se pretenden dar al proyecto seran validadas por estos agentes. As pues.1 Objetivos Principales Gracias a la existencia del Servidor FSQL. A continuacion incluimos una descripcion de este proyecto.P.

. trastero. nave industrial.nca o inmueble posible (piso.).  Los atributos de la base de datos que sean susceptibles de tratamiento difuso seran considerados como tales y clasi. chalet. local. solar. cochera..

de manera que se con.  Facilidad para efectuar consultas tradicionales o exibles a la base de datos.cados en los 3 tipos difusos que consideramos (apartado 5.1): Atributos difusos Tipo 1.  Facilidad en el aprendizaje y en la utilizacion del programa: El programa incorporara un sistema de ayuda on-line y tendra un dise~no que permita facilidad de acceso a las operaciones mas frecuentes.1.3. 2 o 3. as como un interfaz intuitivo y de facil aprendizaje.

guren las consultas de forma visual o directamente a traves de SQL o FSQL.  Facilidad para modi.

insertar o borrar valores u objetos de la base de datos.car.  Facilidad para consultar y modi. inclu- yendo valores difusos.

car la FMB: Esto implica consultar y/o modi.

car las etiquetas de.

a~nadir nuevas etiquetas.  Posibilidad de contrastar de forma exible las ofertas con las demandas... atributos Tipo 3 compatibles. dando un listado con los inmuebles que pueden interesar a cada demanda junto con un grado de \interes" o emparejamiento para cada inmueble.nidas. el margen para valores aproximados.  Mantenimiento de .

cheros historicos: En esos .

Esto nos permitira hacer consultas sobre situaciones anteriores.  Opcion para exportar la base de datos: Esto nos permite instalarla en otro equipo o simplemente hacer una copia de seguridad de la misma.cheros se almacenaran las ofertas y demandas que ya han sido objeto de una operacion o que han sido dadas de baja por cualquier motivo. .

numero de ascensores. si es Vivienda de Proteccion O. sino mas bien una idea de los atributos que son susceptibles de tratamiento difuso. Por supuesto. GESTION 263 7.3.3. si el piso tiene calefaccion. su DNI. como pueden ser: Los nombres de clientes. agua caliente central.2 Atributos Difusos En esta memoria no pretendemos dar una lista exhaustiva de todos los atributos difusos declarados en el proyecto. el esquema de la base de datos tambien incluye atributos clasicos. fechas. su numero de telefono. cochera. las direcciones de los inmuebles.  DE UNA INMOBILIARIA DIFUSA 7. atributo para observaciones en general.

cial (V. Tambien hay que tener en cuenta que los atributos difusos Tipo 2 requieren en general de mayor cantidad de espacio para ser almacenados y mayor tiempo para ser procesados.. En general. ya que estos permiten la consulta exible pero no permiten el almacenamiento de valores difusos.). As.. hay que llegar a un compromiso entre exibilidad (en la representacion y el tratamiento difuso) y e. restringiendo la posibilidad de almacenar imprecision en su dominio. As pues. algunos atributos difusos Tipo 2 podran haberse considerado como de Tipo 1.P.O. para dar una mayor versatilidad al programa. se han utilizado pocos atributos difusos Tipo 1.

. la altura del piso (numero de planta). el precio establecido a un inmueble no es .. el precio de la comunidad. Entre estos.ciencia (en espacio de almacenamiento y tiempo de CPU). el numero de servicios. destacan los siguientes:  Precio: En gran parte de los casos. Los atributos difusos Tipo 2 son los mas numerosos. ya que hemos querido dar mucha exibilidad a la base de datos. Ejemplos de atributos difusos considerados como de Tipo 1 son: El numero de habi- taciones. los valores de los atributos anteriores suelen ser bien conocidos y sin ambiguedad. en general. Puede observarse que.

e incluso.  Super. sino que el vendedor establece un precio aproximado. Esta informacion puede almacenarse en la base de datos en forma de trapecio posibilstico. el mismo vendedor le indica a la agencia que estara dispuesto a bajar cierta cantidad del precio estable- cido. se tenga en cuenta esa posibilidad. a veces.jo. de forma que cuando ejecutemos un emparejamiento con las demandas de inmuebles.

es difcil acceder de forma rapida a la escritura del inmueble o hacer una medicion exacta de la super.cie (en m2): A veces.

Los atributos difusos Tipo 3 considerados son los siguientes. Malo. como Pesimo. la posibilidad de alma- cenar valores aproximados fue muy valorada por los agentes inmobiliarios consultados. . seminuevo.cie del mismo. viejo o que tiene aproximadamente 8 a~nos. es difcil y en general innecesario saber la edad exacta del inmueble. del trastero. Ruido. Calidad de los muebles (en caso de pisos amueblados) y Estado general del inmueble: Se consideran diversos valores  (etiquetas) posibles. Normal. Bueno. aunque s es tremendamente util saber su edad aproximada. De esta forma podemos almacenar que un piso es nuevo. Por eso. Fatal. Excelente y Optimo. Vistas.  Edad: Igualmente. del jardn o del terreno disponible (si procede). teniendo cada uno su co- rrespondiente relacion de semejanza entre los valores posibles:  Atributos para las condiciones de Luz. por ejemplo.  Tama~no de la cochera.

De esta forma se ahorra espacio de almacenamiento.264 CAPITULO 7. Aunque se reduce el comparador difuso que se puede emplear con estos atributos a FEQ exclusivamente. cuyas vistas sean mejores que Buenas". como ese tipo de condiciones no son muy usuales en los atributos considerados. pudiendo efectuar consultas con condiciones del tipo \.. ALGUNAS APLICACIONES DEL LENGUAJE FSQL Muchos de estos atributos podran ser considerados como de Tipo 2 para permitir una mayor exibilidad. pues contamos con la exibilidad que aporta el umbral de cumplimiento y con que la relacion de similitud entre las etiquetas este bien de. Sin embargo. sobre todo en el tipo de consultas.. se ha optado por considerarlos como de Tipo 3 con longitud 1 (atributo LEN de FUZZY_COL_LIST). esto no resta demasiada exibilidad.

. alquilar. As.7/Capuchinosg indica que el inmueble en cuestion esta situado en el barrio del Molinillo. un piso grande. Posteriormente. Por ejemplo. la relacion de demandas se empareja con la relacion de ofertas utilizando comparadores difusos (Tabla 5. con mas de 5 habitaciones aproximadamente.nida. Por ejemplo. Trasteros. se puede establecer que un chalet se parece a una casa adosada en grado 0.12) de necesidad y umbrales estrictamente mayores que cero. Estudios.3. Naves industriales. por lo que deberan ser tenidas en cuenta a la hora de ofertarle material. Solares. mas cerca del barrio de Capuchinos que del Centro de la ciudad5. Otros datos.  Zona (barrio): Este atributo se ha implementado con longitud 3. pidiendo al sistema que ordene la salida decrecientemente por el grado de compatibilidad 5 Esos tres barrios pertenecen a la ciudad de Malaga. En general. poco ruido. La relacion de similitud entre las distintas zonas o barrios dependera de la distancia existente entre ellas y de su extension. con distinto grado.5/Centro. En la primera relacion se almacenan los inmuebles con los que se desea operar (vender.  Tipo de Inmueble: Este atributo distingue entre Pisos. Chalets. 1/Molinillo. pero entre algunos sera distinta de cero. con cochera grande. de forma que permite indicar que un piso esta situado entre 3 zonas.. Ver Ejemplo 7.. Por ejemplo. 7. Cocheras. en el que tienen cabida cualquier consideracion que quiera efectuarse y que no haya sido considerada explcitamente por atri- butos en la relacion. mucha luz y que sea un piso alto.4. donde se esta elaborando el proyecto. . el valor f0. de forma que un cliente que busque un chalet es un cliente potencial de las casas adosadas.3 Ejemplos de Consultas Flexibles El tipo de consultas que pueden efectuarse son inmensas y de entre ellas destaca la compara- cion entre la relacion de inmuebles ofertados y la relacion de demandas de inmuebles. como la existencia de chimenea o piscina (individual o colectiva). Casas Ado- sadas.8.. en la relacion de demandas el cliente indica las caractersticas del inmueble que busca. 0. seran al- macenados en un campo de texto especial de observaciones.) y en la relacion de demandas se almacenan las caractersticas generales de los inmuebles que estan siendo demandados o buscados por determinados clientes. la relacion de similitud sera cero entre la mayora de ellos.

n +10.70] .5 AND Habitaciones FGEQ #7 .40.5 con respecto a los chalets. ya que 1 es el umbral por defecto.5 ORDER BY 1 DESC.5 ORDER BY 1 DESC.* FROM Inmuebles_Venta WHERE Tipo FEQ $Piso . que pueden ser efectuados on-line. las inmobiliarias no contabilizan la cocina y los aseos en el numero de habitaciones. En la consulta anterior. tambien seran consideradas las casas adosadas. suponga que entra un cliente en la inmobiliaria e indica: \Estoy buscando un chalet grande con unos 6 dormitorios que tenga un terrenillo. Como el salon es considerado como una habitacion.5 Otro cliente podra indicarnos: \Me gustara comprar un piso que sea peque~no con unos 50 m2 mas o menos. la siguiente consulta FSQL devuelve los inmuebles que cumplen esas condiciones.5 AND Ruido FEQ $Bueno . En este caso la consulta FSQL que obtiene la informacion buscada sera: SELECT CDEG(*). en vez de los de necesidad. Si se obtienen demasiados inmuebles se puede optar por subir el umbral de cumplimiento y si se obtienen demasiados pocos inmuebles.5 AND Zona FEQ $Capuchinos . En general. n +20].60.* FROM Inmuebles_Venta WHERE Tipo FEQ $Chalet . Algunos ejemplos. pueden ser los siguientes: Ejemplo 7. donde n es el tama~no indicado por el cliente. la consulta se ha hecho considerando 7 habitaciones (6 dormitorios mas el salon).5 AND Terreno FGEQ $Normal . aunque no hace falta que sea muy grande".3. para conseguir as seleccionar una mayor cantidad de inmuebles. se ha optado por utilizar comparadores de posibilidad. de unos 8 millo- nes maximo.5 AND Precio FLEQ #9 .5 AND Superficie FGEQ $[30. Si buscamos exclusivamente chalets debemos establecer el umbral a 1.5 AND Superficie FGEQ $Grande . entonces se efectuara la misma consulta utilizando comparadores de posibilidad. tu Ejemplo 7. . o no poner umbral. Entonces.5 AND Luz FEQ $Bueno . sin necesidad de incluir la busqueda en la tabla de demandas. pero que tenga mucha luz y poco ruido. ordenando de mayor a menor por el primer atributo mostrado.4 Ejemplo. Inmuebles_Venta. El trapecio posibilstico del atributo Superficie podra ser calculado automaticamente de la siguiente forma: [n 20. que es el grado de compatibilidad: SELECT CDEG(*). si este Tipo de inmueble tiene un grado de similitud superior a 0.  DE UNA INMOBILIARIA DIFUSA 7. Inmuebles_Venta. que son mas restrictivos. n 10. por la zona de Capuchinos". GESTION 265 alcanzado por cada inmueble. Debido a que se incluyen bastantes condiciones elementales.

aunque el cliente especi. ALGUNAS APLICACIONES DEL LENGUAJE FSQL Si el cliente esta muy seguro de la extension del piso que busca se puede utilizar #n (en este caso #50).266 CAPITULO 7. La condicion sobre el Precio establece que este sea menor que aproximadamente 9 millones.

25 ORDER BY 1 DESC.* FROM Inmuebles_Venta WHERE Tipo FEQ $Piso .5 OR Ruido FEQ $Bueno .5 con respecto a los pisos.co 8. Ejemplo 7. As. podemos eliminar las con- diciones mas super uas (como la de Luz y Ruido). En la consulta anterior. tambien seran considerados los inmuebles de Tipo Estudio. cambiando las constantes difusas de la derecha de las comparaciones simples.25 AND (Luz FEQ $Bueno . reducir los umbrales o poner como valida otra Zona que este cercana o tenga similares caractersticas (con OR). puede exibilizarse aun mas la consulta reduciendo los umbrales (hasta llegar a 0). En caso de no encontrar lo que busca. seguimos sin obtener pisos que interesen al cliente.25 AND Superficie FGEQ $[20. pero s que asegura que mostramos a cada cliente los pisos mas acordes a sus necesidades y gustos.6 Supongamos que en la consulta del ejemplo anterior no obtenemos ningun inmueble que sea de interes para el cliente.70.80] . si este Tipo de inmueble tiene un grado de similitud superior a 0. cambiando comparadores difusos. tu Naturalmente.30. ya que. Entonces. eliminando condiciones no muy vinculantes o cambiando algun comparador logico AND por OR utilizando los par entesis para establecer la precedencia.5) AND Precio FLEQ #10 . al comprar un piso es frecuente gastar mas dinero del pensado inicialmente. el sistema de consulta exible no asegura la realizacion de operaciones. Inmuebles_Venta. a cada cliente se empezara por ense~narle el inmueble que tenga un mayor grado de compatibilidad con respecto a lo que busca. tu Puede observarse que el numero de consultas posibles y la utilidad de sus respuestas es tremenda.25 AND Zona FEQ $Capuchinos . Si aun as. teniendo en cuenta que cuando uno busca cualquier tipo de inmueble rara vez busca algo . podemos proceder a exibilizar la consulta de la siguiente forma: SELECT CDEG(*). segun los agentes consultados.

sino que busca algo con unas caractersticas basicas iniciales que puede ir modi.jo.

cando y que es frecuente que lo que el cliente adquiera .

nalmente no se parezca mucho a lo que buscaba inicialmente. Ademas. . sin tener que recordar de memoria las caractersticas difusas de estos. este sistema permite a la inmobiliaria mantener una gran base de datos. algo bastante usual hoy da en las inmobiliarias y que imposibilita manejar muchos inmuebles de forma efectiva.

entre los que cabe destacar los siguientes como los mas signi.Conclusiones y Lneas Futuras En este trabajo se han aportado distintos resultados.

Nuestra propues- ta de division tambien permite la relajacion del cuanti.cativos:  Sistema de Division Relacional Difusa para el modelo GEFRED: Este modelo de BDRD es el mas general y completo de los aparecidos en la bibliografa. Ademas. cada tupla del resultado se obtiene con un grado de cumplimiento que indica el grado con el que cada tupla cumple con las condiciones de la division. Las principales innovaciones de nuestra propuesta de division difusa con respecto a otros sistemas son que permite que en los atributos sean almacenados todos los tipos de datos del modelo GEFRED (principalmente distribuciones de posibilidad) y que permite la existencia de varios atributos comunes entre las relaciones sobre las que se va a efectuar la division.

cador universal. permitiendo cualquier tipo de cuanti.

 Calculo Relacional Difuso de Dominios para el modelo GEFRED: Se demuestra que este calculo es totalmente equivalente al algebra relacional difuso de este modelo. Ademas. Con esto conseguimos tener los dos nive- les de lenguajes de consulta que dise~no Codd [42] para bases de datos relacionales pero extendidos a bases de datos relacionales difusas: El A lgebra Relacional Difuso (de.cador. se provee de un metodo para calcular el grado de cumplimiento de la condicion impuesta en la expresion del calculo relacional.

El Calculo Relacional Difuso presentado permite emplear cualquier tipo de cuanti.nido junto con el modelo GEFRED) y el Calculo Relacional Difuso.

 Lenguaje FSQL (Fuzzy SQL): Se ha de.cador crisp (existencial y universal) o difuso (absolutos y relativos).

nido formalmente un lenguaje de manejo (DML) y de.

umbrales de cumplimiento. Este lenguaje permite utilizar condiciones difusas con hasta 14 tipos distintos de comparadores difusos (Tabla 5.12). cuanti. muy potente y muy similar al lengua- je SQL.nicion (DDL) de datos para BDRD. etiquetas lingusticas.

Este Servidor ha sido programado en PL/SQL para Oracle y permite utilizar FSQL desde cualquier programa Cliente FSQL. 267 . Se incluye la funcion CDEG para calcular el grado de compatibilidad o cumplimiento de la condicion por parte de un atributo concreto o de toda la tupla.cadores (con y sin argumentos)...  Servidor FSQL: Se ha implementado un prototipo de Servidor FSQL multiusuario que permite efectuar consultas difusas con el lenguaje FSQL. expresio- nes difusas. atributos difusos. Por tanto. constantes difusas. el Servidor FSQL es independiente de la plataforma y Sistema Operativo y para instalarlo basta con que exista el SGBD Oracle para un determinado sistema.

que permite efectuar consultas en FSQL de forma que el uso del Servidor FSQL sea transparente al usuario.  Aplicaciones de las BDRD y del Servidor FSQL: Se proveen en esta memoria una serie de ejemplos de aplicaciones estudiadas y que utilizan el Servidor FSQL: { Sistema de clasi. El Servidor y el Cliente FSQL suponen un sistema para la evaluacion y validacion de las BDRD. Ademas.268 CONCLUSIONES Y LINEAS FUTURAS  Cliente FSQL: Se ha programado tambien un programa Cliente FSQL. llamado FQ. permite la realizacion de consultas difusas incluso en bases de datos tradicionales. as como un sistema implantable en bases de datos Oracle a nivel de produccion. sin atributos difusos.

donde las carac- tersticas de cada objeto son tratadas como difusas y obtenidas automaticamente a partir de su imagen. tambien permite la consulta difusa de la base de datos de objetos. { Sistema de clasi.cacion de imagenes de objetos de una BDRD. Por supuesto.

cacion general aplicando las tecnicas de Data Mining implemen- tadas en el prototipo DAPHNE de R. El metodo aqu planteado se ha utilizado como sistema de clustering y clasi. Carrasco.

aplicado a los clientes de una entidad .cacion difusa en un entorno de Data Mining Financiero.

podemos a. Sin embargo.nanciera. el metodo es extensible a otros entornos. donde los inmuebles buscados por los clientes pueden ser cotejados difusamente con la base de datos de la que disponga la inmobiliaria. Ademas. { Sistema de BDRD aplicado a la gestion a una inmobiliaria. las caractersticas de cada inmueble estan representadas por atributos difusos y se permite efectuar consultas difusas sobre ellos. Por todo lo anterior.

rmar que hemos a.

al menos escasa. hemos notado que la demanda de bases de datos difusas por parte de la sociedad en general y de las empresas en particular es. en particular. si no nula. en lo concerniente a las consultas difusas sobre ellas o sobre bases de datos crisp. al igual que lo hicieron algunos sistemas de inteligencia arti. Sin embargo. Esto hace que la implantacion general de BDRD se efectue lentamente.anzado un poco mas el desarrollo de las BDRD y.

al principio. Hoy da. las aplicaciones con inteligencia arti.cial que. eran vistos como aplicables solo a simples juegos y se planteaba la cuestion de si eran realmente escalables a asuntos mas \serios".

En la implantacion de una BDRD puede ser muy util el hecho de que nuestro Servidor FSQL puede ser utilizado para consultas difusas en bases de datos clasicas. las cuales estan muy extendidas. ya que Oracle 8 incorpora para esto un asistente facil de usar. Un inconveniente de las BDRD es la in uencia que pueda tener la \subjetividad" en la de.cial son bastante comunes y aceptadas por la sociedad. Ademas la migracion de cualquier base de datos a Oracle es muy facil. incluyendo en estas aquellas aplicaciones que utilizan un control basado en logica difusa (control difuso).

Esto. ademas de ser inherente a esta .nicion y uso de los conceptos difusos.

losofa de bases de datos es tambien un problema con el que nos topamos los humanos en nuestras comunicaciones habituales. Ejemplo de esto es la diferencia de opiniones que surgen al intentar de.

nir el concepto de persona \joven". o al intentar de. que depende de la edad que tenga al que se le pregunte.

. depende de la ciudad en la que viva. en nuestro modelo de BDRD creemos que esto puede ser facilmente subsanable a traves del uso de los umbrales de cumplimiento y. No obstante. entre otros factores.nir el concepto de distancia urbana \cercana" que.

prestando especial cuidado en la de.CONCLUSIONES Y LINEAS FUTURAS 269 por supuesto.

las mejoras al lenguaje FSQL y al Servidor FSQL (apartado 5.nicion de las etiquetas lingusticas.3). As pues. al Calculo Relacional Difuso (apartado 4. los usuarios del sistema de BDRD de gestion inmobiliaria notaron que las BDRD pueden satisfacer sus necesidades y se plantearon su implantacion como sistema de produccion en cuanto el programa estuviera terminado. hemos notado que el uso de los conceptos de la logica difusa por parte de usuarios normales entrenados en otras areas.8). requiere un ligero entrenamiento especial.4 y 7. Creemos que las bases de datos orientadas a objetos [83] pueden colaborar a esto. pero este no es difcil y los usuarios lo ven con cierta naturalidad. Poco a poco. Tambien puede ayudar en la implantacion de BDRD el uso que puedan efectuar las empre- sas utilizando FSQL como una herramienta mas de Data Mining. Por supuesto. como es logico. Otras lneas susceptibles de investigacion son ahondar aun mas en posibles sistemas para la eliminacion de la redundancia en BDRD y el uso de cuanti. Las lneas de investigacion y desarrollo abiertas por el presente trabajo son muchsimas. por parte de las empresas dedicadas a este sector. una implantacion muy gradual y teniendo en cuenta las cuestiones que hemos planteado a lo largo de esta memoria. el cual esta siendo mejorado en estos momentos. En usuarios conocedores de SQL.7). Entre ellas destacan las concernientes a la Division Relacional Difusa (apartado 3. creemos. tambien resulta muy util en este sentido mostrar el grado de cumplimiento (con la funcion CDEG) de los objetos seleccionados.3). tipos difusos. la implantacion de las BDRD en el mercado en general sera. Con el programa de gestion inmobiliaria difusa (apartado 7. El futuro creemos que pasa por la introduccion de nuevos tipos de datos. estas ultimas actualmente en fase de desarrollo en dos vertientes distintas (apartados 6.6) y las mejoras al Cliente FQ (apartado G. la adaptacion a FSQL y los conceptos de logica difusa y teora de la posibilidad es aun mas rapida pues basta con aprender las nuevas funcionalidades de FSQL. la calidad del interfaz programado.6). A esto contribuye notablemente. en el entorno de las bases de datos comerciales.

cadores difusos y modi.

4). actualmente en desarrollo. so- bretodo la red Internet. abre la puerta a la investigacion sobre implantacion de sistemas de BDRD en redes. el futuro de las BDRD aparece prometedor aunque. de creacion de un Cliente FSQL Visual en Java. Asimismo. Por todo esto. seguro que tienen mas aplicaciones en este campo que las aqu mostradas. Ejemplo de esto es el proyecto. creemos que FSQL y las BDRD pueden ser vistas como potentes herramientas para Data Mining y. Como ya hemos dicho. la posibilidad de utilizar bases de datos distribuidas o a traves de redes. creemos que su implantacion sera efectuada lentamente y en funcion de los avances que sobre este tema aporte la comunidad cient. consultas difusas y Data Mining pueden obtenerse muy buenos resultados con los que acelerar la implantacion de BDRD en determinadas empresas. Tambien creemos que de la union de BDRD. incorporable como applet en una pagina web (apartado 6.cadores lingusticos. como ya hemos dicho.

.ca.

270 CONCLUSIONES Y LINEAS FUTURAS .

Apendice A Palabras Reservadas de FSQL A continuacion se expone la lista de palabras reservadas del lenguaje FSQL Esta lista esta almacenada en la tabla RESERVADAS del Servidor FSQL. ABS ADD_MONTHS ALL AND ASC ASCII AVG BETWEEN BY CDEG CEIL CHARTOROWID CHR CONCAT CONNECT CONVERT COS COSH COUNT CURRVAL DECODE DESC DISTINCT DUMP EXIT EXP FAVG FEQ FGT FGEQ FLT FLEQ MGT MLT NFEQ NFGT NFGEQ NFLT NFLEQ NMGT NMLT LIKE FLOOR FMAX FMIN FROM FSUM GLB GREATEST GREATEST_LB GROUP HAVING HEXTORAW IN INITCAP INSTR INSTRB IS LAST_DAY LEAST LEAST_UB LENGTH LENGTHB LEVEL LN LOG LOWER LPAD LTRIM LUB MAX MIN MOD MONTHS_BETWEEN NEW_TIME NEXT_DAY NEXTVAL NLS_INITCAP NLS_LOWER NLS_UPPER NLSSORT NOT NULL NVL OR ORDER POWER PRIOR RAWTOHEX REPLACE ROUND ROWID ROWIDTOCHAR ROWNUM RPAD RTRIM SELECT SIGN SIN SINH SOUNDEX SQRT START STDDEV SUBSTR SUBSTRB SUM SYSDATE TAN TANH THOLD TO_CHAR TO_DATE TO_LABEL TO_MULTI_BYTE TO_NUMBER TO_SINGLE_BYTE TRASLATE TRUNC UID UNDEFINED UNKNOWN UPPER USER 271 .

272 APE NDICE A. PALABRAS RESERVADAS DE FSQL USERENV VARIANCE VSIZE WHERE WITH ADD ALLOCATE ALTER ANY AS CASCADE CLUSTER CHECK CONSTRAINT CONSTRAINTS CREATE CRISP DEFAULT DELETE DISABLE DOMAIN DROP ENABLE ESCAPE EXCEPTIONS EXISTS EXTENT FOREING FREELIST FREELISTS GROUPS INDEX INITIAL INSTANCE INTO INITRANS K KEY LABEL M MAXTRANS MINEXTENTS MAXEXTENTS NEARNESS NEXT ON OPTIMAL PCTFREE PCTUSED PCTINCREASE POSIBILISTIC PRIMARY NULO REFERENCES ROWLABEL SIZE SOME STORAGE TABLE TABLESPACE TRIGGERS UNIQUE USING VALUES DATAFILE MODIFY SCALAR NUMBER DEC DECIMAL DOUBLE PRECISION FLOAT INT INTEGER NUMERIC REAL SMALLINT CHAR CHARACTER STRING VARCHAR VARCHAR2 LONG RAW LONGRAW BOOLEAN DATE MLSLABEL UNION INTERSECT MINUS .

Los smbolos no terminales aparecen totalmente con letras en minuscula. tambien posible en Yacc) para ir explicando la utilidad de las producciones mas importantes. se han puesto completamente con letras mayusculas. incluyendo las palabras reservadas. En la gramatica se han incluido comentarios (como en el lenguaje C. El smbolo inicial para cada sentencia aparece especi. Los smbolos termi- nales.Apendice B Gramatica de FSQL A continuacion exponemos formalmente la gramatica en formato Yacc para los comandos mas importantes de FSQL.

4 (pagina 202).2.cado tras la palabra %start. En la seccion 5.1 Gramatica del SELECT Difuso de FSQL Esta es la gramatica del comando SELECT del DML de FSQL.. /******************************************************************************/ /* Gramatica para una consulta en FSQL (Fuzzy Structured Query Language). que ha sido utilizada en el Servidor FSQL explicado en la seccion 5. como */ /* comentario. B.S mbolos NO Terminales : En Minuscula */ /* .1 (pagina 160) se explican las novedades incorporadas con respecto al comando SELECT del SQL de Oracle. */ /* S mbolos NO Terminales importantes: */ /* consulta --> S mbolo Inicial: Consulta/SELECT difuso/clasico */ /* condition --> Condiciones difusas/clasicas */ /* umbral --> Umbral para las condiciones difusas */ /* fcomparador --> Comparadores difusos */ /* expr --> Expresion (incluye constantes.S mbolo Inicial : consulta */ /* .Antes de cada producci on/es aparece. condiciones. para consultas flexibles */ /* y difusas con comparadores difusos y la funci on CDEG.S mbolos Terminales : En May uscula */ /* .) */ /* fexpr --> Expresion difusa (incluye las cl asicas) */ /************************************************************************Pp'98*/ /* Formato YACC ***************************** Ver 3..1 */ /* Observaciones: */ /* . */ /* Es una extension del comando SELECT de SQL. el n umero/s de esa/s produccion/es */ /******************************************************/ %start consulta %token <palabra> SELECT FROM %token <palabra> WHERE GROUP 273 .

/*2/3*/ fin_consulta: '. GRAMATICA  DE FSQL %token <palabra> HAVING ORDER %token <palabra> ASC DESC %token <palabra> EXIT EXISTS %token <palabra> UNION INTERSECT MINUS %token <palabra> ALL DISTINCT %token <palabra> CONNECT BY %token <palabra> START WITH %token <palabra> ID NUMERO %token <palabra> CADENA /* Con comillas "dobles" */ %token <palabra> TEXTO /* Con comillas 'simples' */ %token <palabra> PRIOR %token <palabra> THOLD CDEG /* Comparadores difusos de Posibilidad */ %token <palabra> FEQ FGT FLT FGEQ FLEQ MGT MLT /* Comparadores difusos de Necesidad */ %token <palabra> NFEQ NFGT NFLT NFGEQ NFLEQ NMGT NMLT %token <palabra> NULL UNKNOWN UNDEFINED %token <palabra> ROWNUM LEVEL ROWID %token <palabra> NEXTVAL CURRVAL %token <palabra> IN BETWEEN AS %token <palabra> ABS CEIL FLOOR /* Funciones */ %token <palabra> SIGN SQRT POWER %token <palabra> CHR MOD %token <palabra> ROUND INITCAP LOWER %token <palabra> LPAD LTRIM %token <palabra> REPLACE RPAD %token <palabra> RTRIM SOUNDEX %token <palabra> SUBSTR TRANSLATE %token <palabra> UPPER ASCII %token <palabra> INSTR LENGTH NLSSORT %token <palabra> AVG COUNT MAX %token <palabra> MIN STDDEV SUM %token <palabra> VARIANCE CHARTOROWID CONVERT %token <palabra> HEXTORAW RAWTOHEX ROWIDTOCHAR %token <palabra> TO_CHAR TO_DATE TO_NUMBER %token <palabra> ADD_MONTHS LAST_DAY MONTHS_BETWEEN %token <palabra> NEW_TIME NEXT_DAY SYSDATE %token <palabra> TRUNC DECODE %token <palabra> DUMP GREATEST LEAST %token <palabra> NVL VSIZE %token <palabra> UID USER USERENV %token <palabra> OR AND IS %nonassoc <palabra> NEQ LEQ GEQ LT GT EQ LIKE %left <palabra> '+' '-' CONCAT %left <palabra> '*' '/' %right <palabra> NOT '$' '#' '[' ']' %token '{' '}' '(' ')' '.' '.274 APE NDICE B.' '.' | .' '%' %% /* Consulta en FSQL: Puede terminar (o no) en '.' */ /*1*/ consulta : select_command fin_consulta .

/*28/29*/ cadid : CADENA | ID .  B.1. GRAMATICA DEL SELECT DIFUSO DE FSQL 275 . /*****> Definici on de las operaciones de conjuntos <*****/ /*****> (Asociatividad por la izquierda) <*****/ /*10/11*/ resto_select: set_command resto_select | . /*****> Definici on de la lista de datos a consultar <*****/ /*****> (datos justo despu es de la palabra SELECT) <*****/ /*17/19*/ select_list : lista_datos | ALL lista_datos | DISTINCT lista_datos . /* Un comando SELECT s olo puede tener una cl ausula ORDER BY. */ /*25/27*/ c_alias : cadid | AS cadid | .' expr c_alias mas_datos | . aunque puede tener varias sub-consultas: Despu es de FROM y enlazadas por UNION. /*12/14*/ set_command : UNION all_ono select_element | INTERSECT select_element | MINUS select_element . /*20/22*/ lista_datos : '*' | '%' | expr c_alias mas_datos . INTERSECT y/o MINUS */ /*4*/ select_command: select_element resto_select clausula_orden . /*23/24*/ mas_datos : '. /*15/16*/ all_ono : ALL | . /* Un alias de una tabla puede ser una "cadena" o un identificador y puede ir (o no) precedido de la palabra reservada AS. /*****> Definici on de lo que es una expresi on <*****/ . /*5/6*/ select_element: '(' select_command ')' | SELECT select_list FROM tablas clausula_where clausula_variante .

/*31/35*/ expr_element: '(' condition ')' | '{' condition '}' | ctes | columna | funcion . <*****/ /*30*/ expr : expr_maxprior resto_expr . /*65/68*/ resto_col1 : ID resto_col2 | '*' | '%' | pseudo_col . /* Esta gram atica expresa una asociatividad por la derecha y */ /* no expresa la mayor prioridad de * y / respecto a + y .276 APE NDICE B. /*****> Definici on de una columna de una tabla <*****/ /*60/62*/ columna : ID resto_col | ROWID | ROWNUM .' resto_col3 | . /*63/64*/ resto_col : '. /*45/48*/ expr_maxprior: '+' expr_element | '-' expr_element | PRIOR expr_maxprior | expr_element . /*69/70*/ resto_col2 : '. */ /*51/55*/ operacion : CONCAT expr_maxprior | '*' expr_maxprior | '/' expr_maxprior | '+' expr_maxprior | '-' expr_maxprior . /*49/50*/ resto_expr : operacion resto_expr | .' resto_col1 | . GRAMATICA  DE FSQL /*****> Usa la Asociatividad por la Izquierda <*****/ /*****> Una condici on es tambien una expresi on <*****/ /*****> pero con menor prioridad. /*36/44*/ ctes : NUMERO | SYSDATE | UID | USER | TEXTO | LEVEL | NULL | UNDEFINED | UNKNOWN .

GRAMATICA DEL SELECT DIFUSO DE FSQL 277 .1. /*75/79*/ pseudo_col : CURRVAL | NEXTVAL | LEVEL | ROWID | ROWNUM . /*****> Definici on de las funciones de SQL <*****/ /*90/142*/ funcion : ABS arg1 | CDEG '(' arg_dif ')'/* Compatibility DEGree */ | CEIL arg1 | FLOOR arg1 | SIGN arg1 | SQRT arg1 | CHR arg1 | MOD arg2 | POWER arg2 | INITCAP arg1 | LOWER arg1 | LPAD arg2_3 | LTRIM arg1_2 | REPLACE arg2_3 | RPAD arg2_3 | RTRIM arg1_2 | SOUNDEX arg1 | SUBSTR arg2_3 | TRANSLATE arg3 | UPPER arg1 | ASCII arg1 | INSTR arg2_3_4 | LENGTH arg1 | NLSSORT arg1 | AVG arg1u | COUNT arg2u | MAX arg1u | MIN arg1u | STDDEV arg1u | SUM arg1u | VARIANCE arg1u | CHARTOROWID arg1 | CONVERT arg1_2_3 | HEXTORAW arg1 | RAWTOHEX arg1 | ROWIDTOCHAR arg1 | TO_CHAR arg1_2 | TO_DATE arg1_2 | TO_NUMBER arg1 | ADD_MONTHS arg2 | LAST_DAY arg1 | MONTHS_BETWEEN arg2 | NEW_TIME arg3 | NEXT_DAY arg2 | ROUND arg1_2 | TRUNC arg1_2 | DUMP arg1_2_3_4 . /*71/74*/ resto_col3 : ID | '*' | '%' | pseudo_col .  B.

' expr '. arg1_2_3 : '(' expr list_op2 ')' .' expr | . /*155*/ arg2_3 : '(' expr '. mas_expres : '.' expr list_op1 ')' .' expr ')' . con 1  o 2 expresiones */ . /*149*/ arg_dif : '*' /* Arg. /*168/170*/ dupli : DISTINCT | ALL . GRAMATICA  DE FSQL | GREATEST arg_list | LEAST arg_list | NVL arg2 | USERENV arg1 | VSIZE arg1 | DECODE argu_deco .' expr mas_expres /* M as expresiones: Para hacer una lista */ | /* de expresiones separadas por comas. /*159/160*/ arg1_2_3_4 : '(' expr list_op3 ')' . list_op3 : '. /*161/162*/ list_op1 : '. arg2 : '(' expr '. arg3 : '(' expr '. */ .' expr ')' . arg1 : '(' expr ')' . arg1_2 : '(' expr list_op1 ')' /* Arg.278 APE NDICE B. arg2_3_4 : '(' expr '.' expr list_op2 | . list_op2 : '. /*165*/ arg_list : '(' expr mas_expres ')' .' expr list_op2 ')' . de CDEG: Debe ser * o una columna difusa */ | columna .' expr list_op1 | .

AND y OR. <*****/ /*190/191*/ clausula_where: WHERE condition | . /*196/197*/ cond_NOT : NOT cond_NOT /* Condici on con o sin NOT: Precedencia m axima */ | cond_elemental . cond_AND : cond_NOT resto_AND /* Condiciones AND: Prececencia media */ .' ID | .' tablas | . arg2u : '(' resto_arg2u ')' . /*186/187*/ t_alias : ID /* Un alias de una tabla no puede ser una "CADENA" */ | . /*****> Definici on de la lista de tablas del FROM <*****/ /*180/181*/ tablas : ID resto_tab t_alias lista_tab | '(' select_command ')' t_alias lista_tab . /*175*/ argu_deco : '(' expr '. resto_tab : '. GRAMATICA DEL SELECT DIFUSO DE FSQL 279 | .  B. resto_arg2u : dupli expr | '*' .1. /*194/195*/ resto_cond : OR condition | .' expr '. lista_tab : '. condition : cond_AND resto_cond /* Condiciones OR: Precedencia m nima */ . /*****> Definici on de la cl ausula WHERE: condiciones <*****/ /*****> Para las condiciones se tiene en cuenta el <*****/ /*****> orden de prioridad: NOT. /*198/199*/ resto_AND : AND cond_AND . /*171*/ arg1u : '(' dupli expr ')' .' expr mas_expres ')' .

280 APE NDICE B. pero esto. /* A su vez. /*250/254*/ resto_nofcond: comparador expr . lo cual se debe mirar en un analisis semantico. conseguimos poder poner condiciones entre par entesis y que la gramatica se mantenga LL(1). No se admiten ctes antes de la palabra reservada IS. difusas posibles tras IS */ .' NUMERO '. expr puede ser una condicion (como en C). As . fexpr : '$' resto_fexpr | '#' NUMERO | '[' NUMERO '.' NUMERO ']' | expr . /*218*/ resto_fcond : fcomparador fexpr umbral .' NUMERO ']' . /*240/242*/ fuzzy_ctes_is: NULL | UNDEFINED | UNKNOWN /* Ctes.' NUMERO '. /*220/223*/ umbral : THOLD NUMERO | NUMERO | comparador NUMERO | . no es legal en SQL por incompatibilidad de tipos. /*230/231*/ resto_fexpr : ID | '[' NUMERO '. negacion : NOT | . /* Comparadores difusos */ /*232/238*/ fcomparador : FEQ | FGT | FLT | FGEQ | FLEQ | MGT | MLT /*501/507*/ | NFEQ | NFGT | NFLT | NFGEQ | NFLEQ | NMGT | NMLT . /*214/217*/ resto_cond_elemental: resto_nofcond | resto_fcond | IS negacion fuzzy_ctes_is | .' NUMERO ']' resto_fcond | EXISTS '(' select_command ')' /* Producci on n umero 500 */ . GRAMATICA  DE FSQL | . */ /*210/213 y 500*/ cond_elemental: expr resto_cond_elemental | '$' resto_fexpr resto_fcond | '#' NUMERO resto_fcond | '[' NUMERO '.

declaramos la sintaxis de estos comandos a traves de sus respectivas gramaticas. %% Los comandos INSERT.' expr ordenacion resto_l_orden | . resto_l_orden: '. queremos destacar la enorme similitud entre la sintaxis de estos comandos de FSQL y la de sus homonimos en SQL. /*260/265*/ comparador : EQ | NEQ | LEQ | GEQ | LT | GT . A continuacion. GRAMATICA DEL SELECT DIFUSO DE FSQL 281 | cond_entre | cond_in | NOT cond_entrein | LIKE TEXTO . /*255*/ cond_entre : BETWEEN expr AND expr . cond_in : IN arg_list . teniendo simplemente que modi. /*****> Definici on de otras de cl ausulas del SELECT <*****/ /*270/272*/ clausula_variante: GROUP BY expr mas_expres clausula_having clausula_variante | clausula_start CONNECT BY condition clausula_variante | . clausula_start: START WITH condition | . /*284/286*/ ordenacion : ASC | DESC | . cond_entrein: cond_entre | cond_in | LIKE TEXTO . DELETE y UPDATE tambien pertenecen. Antes. con el comando SELECT al DML o Lenguaje de Manipulacion de Datos (igual que COMMIT y ROLLBACK).1. /*280/281*/ clausula_orden: ORDER BY expr ordenacion resto_l_orden clausula_orden | . clausula_having: HAVING condition | .  B.

.car algunos elementos. como son las expresiones (con smbolo no terminal fexpr). las condiciones difusas (condition) y las subconsultas difusas (consulta).

si se intenta insertar una expresion difusa en un atributo no difuso. /***** ***** Valores a insertar: lista de expresiones o subconsulta ***** *****/ valores_insert: VALUES '(' fuzzy_expresions ')' | consulta . */ /**************************************************************************Pp'98*/ /* Formato YACC */ /****************/ %start sentencia_insert %% /* Las Sentencias insert pueden acabar o no en '. se generara un error por incompatibilidad de tipos. /***** ***** Lugar donde insertar: Una tabla/vista o una subconsulta ***** *****/ lugar : tabla | consulta .' columnas | . .282 APE NDICE B.2 Gramatica del INSERT Difuso de FSQL Esta sentencia de FSQL permite insertar expresiones difusas como valor de algun atributo difuso. resto_tabla : '.' (para simplificar) */ sentencia_insert: insert_command fin . insert_command : INSERT INTO lugar lista_columnas valores_insert . fuzzy_expresions: fexpr mas_fexpr .' ID | . /***** ***** Sentencia lista de columnas donde se inserta (opcional) ***** *****/ lista_columnas: '(' columnas ')' | . Por supuesto. Naturalmente. las subconsultas que pueden emplearse en esta sentencia son como las consultas de FSQL y pueden incorporar todas sus extensiones. Por tanto. columnas : ID mas_columnas . GRAMATICA  DE FSQL B. mas_columnas: '. */ /* (se basa en la gram atica definida para las consultas). tabla : ID resto_tabla . la gramatica para esta sentencia quedara as: /********************************************************************************/ /* Gram atica para el comando INSERT Difuso del DML de FSQL.

3. */ /**************************************************************************Pp'98*/ /* Formato YACC */ /****************/ %start sentencia_delete %% /* Las Sentencias delete pueden acabar o no en '. 1 Esta gramatica se ha expresado as para simpli. el smbolo \=" y posteriormente se indica una subconsulta que con- tendra los nuevos valores a actualizar.' (para simplificar) */ sentencia_delete: delete_command fin . Se puede establecer una condicion para que sean borradas solo las tuplas que satisfagan dicha condicion.' fexpr | . Esta actualizacion puede ser simple o multiple.4 Gramatica del UPDATE Difuso de FSQL Esta sentencia de FSQL permite actualizar valores para las columnas de determinadas tuplas en una tabla. En la actualizacion multiple es posible indicar varios nombres de columnas (entre parentesis y separados por comas). La actualizacion simple consiste en actualizar los valores de una unica columna y se debe indicar dicha columna. puede utilizarse una subconsulta que recupere un unico valor1 . En vez de una expresion. from_ono : FROM | . se emplea la misma clausula WHERE que en la sentencia SELECT (con condiciones difusas). %% B. */ /* (se basa en la gram atica definida para las consultas e inserciones). Se puede establecer una condicion para que sean actualizadas solo las tuplas que satisfagan dicha condicion. la gramatica para esta sentencia quedara as: /********************************************************************************/ /* Gram atica para el comando DELETE Difuso del DML de FSQL. Por tanto. se emplea la misma clausula WHERE que en la sentencia SELECT (con condiciones difusas). GRAMATICA DEL DELETE DIFUSO DE FSQL 283 mas_fexpr : '. Para esta condicion. %% B. el smbolo \=" y posteriormente la expresion con la que se actualizaran los valores que hubiera.3 Gramatica del DELETE Difuso de FSQL Esta sentencia de FSQL permite borrar tuplas en alguna tabla. delete_command : DELETE from_ono lugar t_alias clausula_where . Para esta condicion.  B.

igual que su segunda produccion. . aunque no es LL(1): En la primera produccion del smbolo un valor se tiene que fexpr es una expresion difusa que puede empezar por el smbolo '('.car.

update_command : UPDATE lugar t_alias SET actualizaciones clausula_where .' (para simplificar) */ sentencia_update: update_command fin . mas_actualizaciones: '. /***** ***** Columna/s a actualizar con la/s Expresi on/es indicadas ***** *****/ actualizaciones: actualizacion mas_actualizaciones . la gramatica para esta sentencia quedara as: /********************************************************************************/ /* Gram atica para el comando UPDATE Difuso del DML de FSQL. varias_columnas: una_columna mas_columnas . resto_una_columna: '.' una_columna mas_columnas . un_valor : fexpr | '(' consulta ')' . %% . */ /* (se basa en la gram atica definida para las consultas e inserciones). una_columna : ID resto_una_columna .284 APE NDICE B. act_simple : una_columna '=' un_valor . mas_columnas: '. resto_una_columna2: ID | . act_multiple: '(' varias_columnas ')' '=' consulta . GRAMATICA  DE FSQL Por tanto. */ /**************************************************************************Pp'98*/ /* Formato YACC */ /****************/ %start sentencia_update %% /* Las Sentencias insert pueden acabar o no en '.' actualizaci on mas_actualizaciones . actualizacion: act_simple | act_multiple .' ID resto_una_columna2 | .

 B. GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 285 B.5.5 Gramatica de las Sentencias del DDL de FSQL A continuacion exponemos una gramatica en formato Yacc de los comandos modi.

para formalizar su de.cados por el DDL de FSQL.

*/ /* CREATE TABLE Crear Tablas con/sin atributos difusos */ /* (A~nade: Tipos de datos difusos (fuzzy_datatypes). VIEW. consulta */ /* y condition.Smbolo Inicial : sentencia_DDL */ /* . */ /* Consultas difusas (consulta). */ /* (se basa en las gramaticas definidas antes: Consultas. En el apartado 5.1 */ /* Observaciones: */ /* .Smbolos NO Terminales : En Minuscula */ /* . La gramatica para estas sentencias quedara as: /********************************************************************************/ /* Gram atica de un DDL Difuso o Fuzzy DDL (Data Definition Language). */ /* El Lenguaje de Definici on de Datos incluye las siguientes ordenes: */ /* Sentencia Utilidad (Modificaciones basicas al SQL de Oracle) */ /* ------------------------------------------------------------------------..' (para simplificar) */ sentencia_DDL: DDL_command fin_DDL .Smbolos Terminales : En May uscula */ /* . LABEL y NEARNESS.nicion: CREATE. Inserciones. . */ /******************************************************/ %start sentencia_DDL %% /* Las Sentencias DDL pueden acabar o no en '. */ /* definidos en la consulta FSQL: fexpr. */ /* Expresiones difusas (fexpr) */ /* Condiciones difusas (condition) */ /* Restricciones de columna (restricciones_col)) */ /* CREATE VIEW Crear vistas con consultas difusas */ /* (A~nade Consultas difusas (consulta)) */ /* CREATE LABEL Crear Etiquetas de atributos difusos 1 y 2 */ /* Copiar etiquetas de un atributo difuso tipos 1/2 a otro */ /* (Sentencia exclusiva de FSQL) */ /* CREATE NEARNESS Crear Etiquetas de atributos difusos 3 */ /* (Sentencia exclusiva de FSQL) */ /* ALTER TABLE Modificar Tablas con/sin atributos difusos */ /* (A~nade los tipos de datos y las restricciones difusas) */ /* ALTER VIEW Recompilar una vista (Igual que SQL) */ /* ALTER LABEL Modificar Etiquetas de atributos difusos tipos 1 y 2 */ /* (Sentencia exclusiva de FSQL) */ /* ALTER NEARNESS Modificar Etiquetas de atributos difusos 3 */ /* (Sentencia exclusiva de FSQL) */ /* DROP TABLE Borrar Tablas (Igual que SQL) */ /* DROP VIEW Borrar Vistas (Igual que SQL) */ /* DROP LABEL Borrar Etiquetas de atributos difusos 1 y 2 */ /* (Sentencia exclusiva de FSQL) */ /* DROP NEARNESS Borrar Etiquetas de atributos difusos 3 */ /* (Sentencia exclusiva de FSQL) */ /**************************************************************************Pp'98*/ /* Formato YACC ***************************** Ver 1.. ALTER y DROP.2 estos comandos fueron explicados referentes a los objetos en los que FSQL tiene relevancia: TABLE.Utiliza los siguientes s mbolos NO Terminales.2.

otro_id : '.' ID | . GRAMATICA  DE FSQL fin_DDL : '. DDL_command : create_command | alter_command | drop_command . resto_colyres: '. column_element: ID datatype default_clause column_constraints . /* El valor por defecto puede ser una expresi on difusa */ default_clause: DEFAULT fexpr | . /***** ***** Sentencia CREATE: TABLE.' colyres | .286 APE NDICE B. VIEW. create1 : create_table | create_view | create_label | create_nearness . /* Definici on de los TIPOS de DATOS: */ datatype : VARCHAR2 '(' NUMERO ')' | VARCHAR '(' NUMERO ')' | CHAR opcion_numero | CHARACTER opcion_numero | NUMBER opciones_number | NUMERIC opciones_number | DECIMAL opciones_number | DEC opciones_2onada | FLOAT opcion_numero | REAL | DOUBLE PRECISION | INTEGER .' | . /* Definici on de las columnas y las restricciones */ colyres : column_element resto_colyres | table_constraint resto_colyres . LABEL y NEARNESS ***** *****/ create_command: CREATE create1 . /***** ***** Sentencia CREATE TABLE */ create_table: TABLE ID otro_id '(' colyres ')' tab1 tab2 tab3 tab4 tab5 .

5. /* TIPOS de DATOS DIFUSOS: fuzzy_datatypes (Tienen distintas formas de escribirse para dar mayor flexibilidad) 1.much): Indican el margen y el much para ese atributo. Por defecto se tomara NUMBER. opciones_2onada: '(' NUMERO '. raw_ono : RAW | .atributo: Es un atributo que es compatible con este y. Atributos Difusos Tipo 2: POSSIBILISTIC (margen.(margen.' NUMERO | .  B.much) [tipo_base] 3.much) [tipo_base] FTYPE1 (margen. much: Es el valor usado en los comparadores MGT y MLT. GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 287 | INT | SMALLINT | LONG raw_ono | DATE | RAW '(' NUMERO ')' | ROWID | MLSLABEL | fuzzy_datatypes . Suponemos que no hay mas de 10 datos (y 1 como m nimo y por defecto). son comparables. Pueden producirse errores sem anticos.' NUMERO ')' | . opciones_number: '(' NUMERO otro_num ')' | .La presencia de un atributo difuso en un CREATE TABLE implica insertar tupla en tabla FUZZY_COL_LIST y si es tipo 1 o 2 tambi en en FUZZY_APPROX_MUCH. Atributos Difusos Tipo 3: SCALAR [(long)] [DOMAIN atributo] FTYPE3 [(long)] [DOMAIN atributo] NOTAS: . Esto hace insertar valores en la tabla FUZZY_APPROX_MUCH de la FMB. .long (opcion_numero): Es opcional e indica el numero de datos m aximo en atributos tipo 3 (n umero de items en las distr. por ejemplo si se define el tipo_base como un tipo difuso. */ . . . margen: Es el valor usado para los valores APPROX: #n = n +. sobre el que tomaran valores las distribuciones de posibilidad o los valores crisp que tenga la relaci on.much) [tipo_base] FTYPE2 (margen. . opcion_numero: '(' NUMERO ')' | . por tanto. de pos.much) [tipo_base] 2.margen. otro_num : '.tipo_base: Es el dominio subyacente. sobre escalares). Atributos Difusos Tipo 1: CRISP (margen.

GRAMATICA  DE FSQL fuzzy_datatypes: fuzzy_type1 | fuzzy_type2 | fuzzy_type3 . */ restricciones_col: NULL | NOT prohibidos | UNIQUE | PRIMARY KEY | REFERENCES ID otro_id opcion_colum on_delete | CHECK (condition) . (* La restricci on difusa ONLY LABEL indica que el atributo difuso al que se aplica s olo puede tomar valores del tipo Etiqueta (Label). .' NUMERO ')' tipo_base . por tanto. .288 APE NDICE B. Inserta valor en tabla FUZZY_COMPATIBLE_COL.DOMAIN sirve para definir que el atributo que estamos definiendo en la tabla que queremos crear ser a compatible con el atributo que se indica a continuaci on (que puede ser de la misma tabla) y podr a. /* Restricciones para una columna al crear una tabla */ column_constraints: column_constraint column_constraints | . fuzzy_type2 : POSSIBILISTIC '(' NUMERO '. /* .' NUMERO ')' tipo_base | FTYPE1 '(' NUMERO '. entonces indica que a un no estan definidas las etiquetas para este atributo y debemos definirlas a continuaci on con la sentencia CREATE NEARNESS. definida en la FMB. fuzzy_type3 : SCALAR opcion_numero dominio | FTYPE3 opcion_numero dominio . /* Restricci on para una columna */ column_constraint: nombre_constraint restricciones_col indexing | . tomar sus valores sin tener que definirlos de nuevo para este atributo. tipo_base : datatype | . */ dominio : DOMAIN ID otro_id otro_id | .' NUMERO ')' tipo_base | FTYPE2 '(' NUMERO '. fuzzy_type1 : CRISP '(' NUMERO '.' NUMERO ')' tipo_base . nombre_constraint: CONSTRAINT ID | .Esta cl ausula implica introducir datos en la tabla FUZZY_COMPATIBLE_COL de la FMB.Si esta cl ausula no aparece (est a vac a).

/* Restricci on para una tabla (NO admite NOT NULL.  B.5. UNDEFINED y/o UNKNOWN) o determinados Tipos de valores (LABEL..m] */ | APPROX /* Prohibe valores del tipo aproximado : #n */ . /* Estas restricciones prohiben que determinados valores (NULL.d] */ | INTERVAL /* Prohibe valores del tipo intervalo : $[n. /* Las opciones SET NULL y RESTRICT no est an implementadas en Oracle 7 (s  en DB2)..c. */ prohibidos : NULL /* Prohibe el valor NULL ( unico aplicable a atributos crisp) */ | UNDEFINED /* Prohibe el valor UNDEFINED (aplicable a tipos difusos 2 y 3) */ | UNKNOWN /* Prohibe el valor UNKNOWN (aplicable a tipos difusos 2 y 3) */ | LABEL /* Prohibe valores del tipo etiqueta : $label */ | CRISP /* Prohibe valores del tipo crisp : n */ | TRAPEZOID /* Prohibe valores del tipo trapecio : $[a. TRAPEZOID. INTERVAL y/o APPROX) sean almacenados en la columna (atributo) en la que se aplican. GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 289 | ONLY LABEL permite_UNK . En Oracle 7 la opci on RESTRICT es la opci on por defecto. index_caract: PCTFREE NUMERO | NOSORT | INITRANS NUMERO | RECOVERABLE | MAXTRANS NUMERO | UNRECOVERABLE | TABLESPACE ID | STORAGE '(' storage_clause ')' | . Tenga en cuenta que a una columna pueden aplicarsele varias restricciones. .) */ table_constraint: nombre_constraint restricciones_tab indexing | . indexing : USING INDEX index_caracts | DISABLE | . on_delete : ON DELETE op_on_delete | . */ op_on_delete: CASCADE /* Al borrar un padre se borran todos los hijos */ | SET NULL /* Al borrar un padre se pone NULL en los hijos */ | RESTRICT /* Impide borrar un padre si tiene hijos */ . permite_UNK : OR UNKNOWN | . opcion_colum: '(' ID ')' /* Nombre de la columna opcional (si la tabla tiene PRIMARY KEY) */ | . CRISP.b. index_caracts: index_caract index_caracts | .

290 APE NDICE B. num_o_unlim : NUMERO | UNLIMITED . extent_specs: PCTFREE NUMERO | INITRANS NUMERO | PCTUSED NUMERO | MAXTRANS NUMERO | RECOVERABLE | UNRECOVERABLE | TABLESPACE ID | STORAGE '(' storage_clause ')' . /***** Cl ausulas finales de la Sentencia CREATE TABLE */ tab1 : CLUSTER ID '(' columnas ')' | tab11 | . tab111 : tab11 | . grado_inst : DEGREE num_def grado_inst . storage_clause_ono: storage_clause | . storage_clause: INITIAL NUMERO unidad_tama storage_clause_ono | NEXT NUMERO unidad_tama storage_clause_ono | MINEXTENTS NUMERO storage_clause_ono | MAXEXTENTS num_o_unlim storage_clause_ono | PCTINCREASE NUMERO storage_clause_ono | FREELISTS NUMERO storage_clause_ono | FREELIST GROUPS NUMERO storage_clause_ono | OPTIMAL null_o_tama storage_clause_ono . tab2 : PARALLEL '(' grado_inst ')' | . tab11 : extent_specs tab111 . null_o_tama : NULL | NUMERO unidad_tama . GRAMATICA  DE FSQL restricciones_tab: UNIQUE '(' columnas ')' | PRIMARY KEY '(' columnas ')' | FOREING KEY '(' columnas ')' REFERENCES ID otro_id '(' columnas ')' on_delete | CHECK (condition) . unidad_tama : K | M | .

5.  B. indexacion : USING INDEX extent_specs2 | . extent_specs2: PCTFREE NUMERO | INITRANS NUMERO | MAXTRANS NUMERO | TABLESPACE ID | STORAGE '(' storage_clause ')' . /***** ***** Sentencia CREATE VIEW: Lo novedoso de FSQL es que . excepcion : EXCEPTIONS INTO ID otro_id | . tab5 : CACHE | NOCACHE | . integrity : UNIQUE '(' columnas ')' | PRIMARY KEY | CONSTRAINT ID . tab4 : AS consulta | . tab3 : ENABLE enable_clause tab3 | DISABLE disable_clause tab3 | . enable_clause: ALL TRIGGERS | integrity_constraint . num_def : NUMERO | DEFAULT . resto_disable: CASCADE | . GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 291 | INSTANCES num_def . integrity_constraint: integrity indexacion excepcion . disable_clause: ALL TRIGGERS | integrity resto_disable .

Para atributos difusos tipo 3 usar CREATE NEARNESS. Formato 2: Copia todas las etiquetas definidas para atributo2 en atributo1 que tienen distinto nombre de las ya definidas en atributo1 (ambos atributos deben ser difusos tipo 1 o 2.' NUMERO '.beta.atributo1 FROM [schema.' ID otro_id . Formato 1: Crea una etiqueta y le asigna su trapecio asociado (El nombre de la etiqueta no puede estar ya definido para ese atributo) CREATE LABEL nombre_label ON [schema. force_ono : FORCE | NO FORCE | .delta. GRAMATICA  DE FSQL esta puede incorporar consultas difusas (con atributos difusos. .]table.' NUMERO | '*' ON ID '.' ID otro_id FROM ID '...' NUMERO '. Inserta valores en las tablas FUZZY_OBJECT_LIST y FUZZY_LABEL_DEF de la FMB. alias_ono : '(' columnas ')' | . condiciones difusas. resto_view : WITH resto_with | .292 APE NDICE B. resto_with : READ ONLY | CHECK OPTION resto_check | . /***** ***** Sentencia CREATE NEARNESS: Usada para insertar etiquetas para atributos difusos tipo 3 (SCALAR).atributo2 Se debe cumplir la condicion: alfa <= beta <= gamma <= delta. /***** ***** Sentencia CREATE LABEL: Usada para atributos difusos tipos 1 (CRISP) o 2 (POSSIBILISTIC).) */ create_view : replace_ono force_ono VIEW ID otro_id alias_ono AS consulta resto_view .]table.gamma.]table. resto_check : CONSTRAINT ID | .atributo VALUES alfa. replace_ono : OR REPLACE | . indistintamente) CREATE LABEL * ON [schema. */ create_label: LABEL create_copy . create_copy : ID ON ID '.' ID otro_id VALUES NUMERO '.

 B.1].a LABEL e1. 3#4. 1#4. /***** ***** Sentencia ALTER TABLE */ alter_table : TABLE ID otro_id alter_tab1 alter_tab2 . 1#n.5. e2.' ID resto_lista_labels VALUES NUMERO resto_lista_valores .]table. . 2#3. e4. Se supone que el orden de las similitudes es dado de la siguiente forma. resto_lista_labels: '..n/2 n umeros (donde / es la division entera que trunca). 3#n.' ID resto_lista_labels | . Inserta valores en FUZZY_OBJECT_LIST y FUZZY_NEARNESS_DEF de la FMB. al igual que si alguno de los valores no pertenece al intervalo [0. GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 293 Para atributos difusos tipo 1 y 2 usar CREATE LABEL.. As . VIEW.]t... Esta orden tambi en inserta los grados de similitud entre las etiquetas. Formato: CREATE NEARNESS ON [schema.' NUMERO resto_lista_valores | . e3. /***** ***** Sentencia ALTER: TABLE. */ create_nearness: NEARNESS ON ID '. . . El orden de las etiquetas influye en el orden de las similitudes. si se dan n etiquetas. . tras la palabra VALUES debe haber una lista con (n*n)/2 .. (n-1)#n. 1#3..atributo LABEL lista_de_etiquetas (con un mnimo de 2 etiquetas) VALUES lista_de_similitudes (con un m nimo de 1 valor). 2#n.' ID otro_id LABELS ID '. en VALUES 1#2... 2#4. /* Alterar un LABEL es como borrarlo y crearlo de nuevo */ alter1 : alter_table | alter_view | create_label | alter_nearness ... resto_lista_valores: '. donde f(2) = 1 f(n) = f(n-1) + n-1 con n>2 Si eso no se cumple se deber a producir un error semantico. Ejemplos: 5 etiquetas --> 12-2 = 10 valores 4 etiquetas --> 8-2 = 6 valores 9 etiquetas --> 40-4 = 36 valores 8 etiquetas --> 32-4 = 28 valores Otra posible definici on: N umero_valores = f (N umero_etiquetas). donde i#j expresa el valor de la similitud entre la etiqueta i- esima y la j- esima: CREATE NEARNESS ON [s. LABEL y NEARNESS ***** *****/ alter_command: ALTER alter1 . .

.' column_element resto_coldef | . GRAMATICA  DE FSQL . et : SIZE NUMERO unidad_tama et | DATAFILE TEXTO et | INSTANCE NUMERO et | . extension_table: '(' et ')' | . disable_op : disable_clause | TABLE LOCK . /***** ***** Sentencia ALTER VIEW: Igual que SQL */ alter_view : VIEW ID otro_id COMPILE . resto_coldef: '. alter_tab2 : enable_disable | tab2 tab5 | . enable_disable: ENABLE enable_op enable_disable | DISABLE disable_op enable_disable | . enable_op : enable_clause | TABLE LOCK . alteraciones: ADD '(' colyres ')' | MODIFY '(' column_element resto_coldef ')' | PCTFREE NUMERO | PCTUSED NUMERO | INITRANS NUMERO | MAXTRANS NUMERO | STORAGE '(' storage_clause ')' | DROP drop_clause | ALLOCATE EXTENT extension_table | DEALLOCATE UNUSED keep_clause . keep_clause : KEEP NUMERO unidad_tama | . alter_tab1 : alteraciones alter_tab1 .294 APE NDICE B.

drop1 : drop_table | drop_view | drop_label | drop_nearness . LABEL y NEARNESS ***** *****/ drop_command: DROP drop1 .atributo --> Borra la etiqueta label (s olo 1) DROP LABEL * ON table. GRAMATICA DE LAS SENTENCIAS DEL DDL DE FSQL 295 /***** ***** Sentencia ALTER NEARNESS: Puede ser igual que con CREATE NEARNESS o tambi en nos permite modificar s olo el grado de similitud o compatibilidad entre dos etiquetas.' ID otro_id resto_alter_n . resto_alter_n: LABELS ID '. El formato para esto  ultimo es: ALTER NEARNESS ON atributo_difuso CDEG(label1.' ID resto_lista_labels VALUES NUMERO resto_lista_valores | CDEG '(' ID '. Formatos: DROP LABEL label ON table. una_o_todo : ID ON ID '. */ alter_nearness: NEARNESS ON ID '. /***** ***** Sentencia DROP LABEL: Usada para borrar etiquetas de atributos difusos tipos 1 o 2. Para atributos difusos tipo 3 usar DROP NEARNESS.5.atributo --> Borra TODAS las etiquetas */ drop_label : LABEL una_o_todo . /***** ***** Sentencia DROP NEARNESS: Usada para borrar las etiquetas de atributos difusos tipo 3. Formatos: DROP NEARNESS ON atributo --> Borra TODAS las etiquetas del atributo DROP NEARNESS label ON atributo --> Borra s olo la etiqueta label */ drop_nearness: NEARNESS todo_o_1 . /***** ***** Sentencia DROP TABLE (igual que en SQL) */ drop_table : TABLE ID otro_id cascade_const . /***** ***** Sentencia DROP TABLE (igual que en SQL) */ drop_view : VIEW ID otro_id .  B. VIEW.label2)=nueva_similitud_a_cambiar.' ID otro_id . cascade_const: CASCADE CONSTRAINTS | .' ID otro_id | '*' ON ID '. /***** ***** Sentencia DROP: TABLE.' ID ')' '=' NUMERO . Para atributos difusos tipo 1 y 2 usar DROP LABEL.

' ID otro_id | ID ON ID '. todo_o_1 : ON ID '.296 APE NDICE B. %% La de.' ID otro_id . GRAMATICA  DE FSQL .

no la hemos incluido aqu. como son sinonimos (SYNONYM) e instantaneas (SNAPSHOT).nicion de otras clausulas para otros objetos. pues su de.

nicion es igual a la de SQL o muy similar a ella y a las clausulas ya de.

.nidas.

su signi.Apendice C Errores Generados por el Servidor FSQL A continuacion damos una lista de los posibles errores que puede generar el Servidor FSQL.

297 .  Posibles causas: La sentencia que se desea procesar esta vaca. Denotamos por <scheme. en los mensajes de error se incluye la posicion en la que se ha encontrado el error. <NNN> sera el numero de objeto que el SGBD asigna al objeto que genero el error y <CCC> el numero de columna que el SGBD asigna a la columna concreta que genero el error dentro de la tabla/vista a la que pertenece. no contiene ningun caracter. Tambien.  Consejos: Terminar el comparador de desigualdad o eliminar los caracteres erroneos. Por supuesto. denotada por <XX>. sera un numero que indica la posicion del ultimo caracter del token o palabra que genero el error empezando a contar desde el principio de la sentencia. ERROR L EXICO en posici on <XX>: Comparador de desigualdad (!=. por lo que se sospecha que el comparador de desigualdad no esta terminado correctamente. ERROR: Consulta vac a. Esta posicion.table. En general. el Servidor FSQL no controla todos los posibles errores que pueden produ- cirse.^=) no terminado.  Posibles causas: Se ha encontrado el caracter ! o ^ seguido de un caracter distinto de =. por lo que el SGBD podra tambien generar errores que deberan tambien ser tenidos en cuenta.column> el nombre de una columna con su esquema (pro- pietario) y su tabla/vista.cado y algunas ideas para solucionar el error.  Consejos: Incluir la sentencia a procesar en la llamada al Servidor FSQL.

 Consejos: Cerrar las comillas (dobles o simples) con otro caracter igual o eliminar el caracter de comillas que genero el error.298 APE NDICE C.  Posibles causas: Un numero en notacion cient.  Posibles causas: Se detectaron unas comillas dobles (") o simples (') sin que estas fueran cerradas. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR L EXICO en posici on <XX>: Cadena o texto no terminado correctamente (faltan comillas). ERROR L EXICO en posici on <XX>: N umero en notaci on exponencial mal terminado.

 Consejos: Terminar el operador de concatenacion a~nadiendo otro caracter | o eliminar el caracter que genero el error. El lmite esta en 2000 caracteres.5E.5E-10 sera correcto.  Posibles causas: Se detecto el principio de un operador de concatenacion (caracter |) sin que este fuera terminado correctamente. ERROR L EXICO en posici on <XX>: Operador de concatenaci on || mal terminado.  Posibles causas: Se detecto un texto entre comillas dobles (") o simples (') de una longitud excesivamente larga.ca o exponencial no esta terminado correctamente. ERROR L EXICO en posici on <XX>: Identificador tiene m as de 30 caracteres.  Posibles causas: Se detecto un identi.  Consejos: Reducir la longitud de la cadena o texto que genero el error o cerrar correc- tamente las comillas. El numero 3.  Consejos: Escribir correctamente el numero. ERROR L EXICO en posici on <XX>: Cadena o texto demasiado larga. si se omite el exponente se genera este error: 3. Por ejemplo.

cador con mas de 30 caracteres. que es el lmite maximo que Oracle establece para los identi.

 Consejos: Reducir el tama~no del identi.cadores.

Quizas se olvido incluir un espacio o un punto entre 2 identi.cador.

cadores. .

 Posibles causas: Se ha encontrado una llamada a la funcion CDEG fuera de la lista de seleccion de la sentencia SELECT. ERRORES GENERADOS POR EL SERVIDOR FSQL 299 ERROR L EXICO en posici on <XX>: S mbolo <CC> (ASCII <NN>) no reconocido por la gram atica y es ignorado. debe poner las comillas.  Posibles causas: Se ha encontrado el smbolo <smbolo> cuando esperaba uno de los smbolos que aparecen en <lista_de_smbolos>.  Consejos: No usar la funcion CDEG fuera de la lista de seleccion de la sentencia SELECT. Quizas. no es aceptado por el lenguaje. Los smbolos que pueden aparecer en ambas partes son tales como: <fin> (para el .  Consejos: Eliminar dicho caracter. ERROR SINT ACTICO en posici on <XX>: Encontrado <s mbolo> cuando esperaba <lista_de_s mbolos>. En esta version no se admite una llamada a esta funcion fuera de ese lugar. dicho caracter deba ir dentro de un texto entre comillas.APE NDICE C.  Posibles causas: El caracter <CC>. En futuras versiones esta previsto que esta funcion pueda usarse en las condiciones como parte de la clausula del WHERE. En ese caso. ERROR SINT ACTICO en posici on <XX>: Llamada a funci on CDEG mal situada. Debe aparecer en la SELECT_LIST. con codigo ASCII numero <NN>.

||. ERROR SINT ACTICO en posici on <XX>: Esperaba el FIN cuando encontr e: <token>. <cadena> (con comillas dobles). >. o <funcion> (para cualquier tipo de funcion empleada). >=. <n umero>. =.  Posibles causas: Se esperaba el . <identificador>. <. <texto> (con comillas simples).nal de la entrada). <=.  Consejos: Revisar la sentencia eliminando el <smbolo> que genera el error y poniendo uno de la <lista_de_smbolos> o alterar la estructura de la sentencia. <>.

nal de la sentencia pero sin embargo se ha encontrado el smbolo terminal indicado por <token>. .  Consejos: Eliminar el smbolo <token> y todo lo que haya detras de el o revisar la estructura de la sentencia.

COL#)=(<NNN>.300 APE NDICE C.table. MLT.column>.<CCC>) no tiene definido el MARGEN y el MUCH en la tabla FUZZY_APPROX_MUCH. (OBJ#. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR en FIRST en posici on <XX>: Atributo <scheme. NMGT y NMLT. Estos son necesarios para usar los comparadores MGT.  Posibles causas: El atributo indicado no tiene de.

table.  Posibles causas: A la columna indicada se le esta dando un tratamiendo difuso pero no ha sido declarada como de un Tipo difuso en la tabla FUZZY COL LIST. ERROR en FIRST en posici on <XX>: Columna difusa <scheme.nidos los valores que les corres- ponden en la tabla FUZZY APPROX MUCH. (OBJ#.  Consejos: Insertar una .<CCC>).COL#)=(<NNN>.  Consejos: Insertar ambos valores en dicha tabla de la FMB. NMGT y NMLT.column> no existe en FUZZY_COL_LIST. para poder utilizar todo tipo de sentencias. Esos valores son imprescindibles para utilizar valores aproximados (del tipo #n) y para utilizar los comparadores difusos MGT.'). MLT.

COL#)=(<NNN>.table.column>. ERROR en FIRST en posici on <XX>: Etiqueta <label> definida en FUZZY_OBJECT_LIST para el atributo Tipo 1 <scheme. y no definida en FUZZY_LABEL_DEF.  Posibles causas: La etiqueta especi. (OBJ#.la en la tabla FUZZY COL LIST declarando el Tipo difuso de esta columna (1. En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en la tabla. 2 o 3).<CCC>).

cada en la consulta esta de.

pero no existe su de.nida como objeto en la tabla FUZZY OBJECT LIST.

nicion en FUZZY LABEL DEF.  Consejos: Insertar una .

la en la tabla FUZZY LABEL DEF con la de.

.nicion de dicha etiqueta lingustica tapezoidal. indicando sus valores para .

y . Al ser la columna difusa de Tipo 1. En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en la tabla. la de..

nicion de esta etiqueta debe ir en la tabla indicada. .

y no definida en FUZZY_LABEL_DEF.column>. (OBJ#.table.  Posibles causas: La etiqueta especi.<CCC>).COL#)=(<NNN>.APE NDICE C. ERRORES GENERADOS POR EL SERVIDOR FSQL 301 ERROR en FIRST en posici on <XX>: Etiqueta <label> definida en FUZZY_OBJECT_LIST para el atributo Tipo 2 <scheme.

cada en la consulta esta de.

pero no existe su de.nida como objeto en la tabla FUZZY OBJECT LIST.

 Consejos: Insertar una .nicion en FUZZY LABEL DEF.

la en la tabla FUZZY LABEL DEF con la de.

indicando sus valores para . .nicion de dicha etiqueta lingustica tapezoidal.

la de. y . En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en la tabla. Al ser la columna difusa de Tipo 2..

ERROR SEM ANTICO: Tabla.table>). vista o alias mal situado (<scheme.  Posibles causas: Se ha encontrado un identi.nicion de esta etiqueta debe ir en la tabla indicada.

cador de tabla.table.  Posibles causas: La tabla/vista especi. ERROR SEM ANTICO en posicion <XX>: Tabla o vista <scheme. vista o alias.column> no consta en la cl ausula FROM. vista o alias mal situado.  Consejos: Posiblemente no exista dicha tabla.

 Consejos: Si deseamos utilizar dicha tabla/vista es necesario nombrarla despues de la palabra reservada FROM (separada por comas de otras tablas/vistas empleadas).cada es usada en la sentencia pero no aparece en la clausula FROM. . ERROR SEM ANTICO en posici on <XX>: Nombre de columna <scheme.column> no v alido.table.  Posibles causas: Se esta utilizando una columna que no existe ni como crisp ni como difusa.  Consejos: Revise que dicha columna esta bien escrita y existe en la tabla/vista deseada.

column>.  Posibles causas: El atributo indicado no tiene de.<CCC>). ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR SEM ANTICO en posici on <XX>: Columna difusa <scheme. no tiene el margen establecido para poder usar valores aproximados #n: Introducir uno en la tabla FUZZY_APPROX_MUCH. (OBJ#.table.302 APE NDICE C.COL#)=(<NNN>.

 Consejos: Los atributos difusos Tipo 3 solo pueden ser comparados con otros atributos difusos Tipo 3 que sean compatibles con el y con las etiquetas lingusticas que tenga de. MLT.  Consejos: Insertar ambos valores en dicha tabla. Esos valores son imprescindibles para utilizar valores aproximados (del tipo #n) y para utilizar los comparadores difusos MGT.nidos los valores que les corres- ponden en la tabla FUZZY APPROX MUCH.  Posibles causas: Se esta comparando el atributo difuso Tipo 3 indicado con un valor difuso aproximado (distribucion de posibilidad triangular. NMGT y NMLT.table. ERROR SEM ANTICO en posici on <XX>: Columna difusa <scheme.column> es Tipo 3 y no se puede comparar con un valor aproximado #n. Figura 5. para poder utilizar todo tipo de sentencias.4).

 Posibles causas: Se esta comparando el atributo difuso Tipo 3 indicado con un valor intervalo (Figura 5.column> es Tipo 3 y no se puede comparar con un intervalo [n.m].nidas.  Consejos: Los atributos difusos Tipo 3 solo pueden ser comparados con otros atributos difusos Tipo 3 que sean compatibles con el y con las etiquetas lingusticas que tenga de.table. ERROR SEM ANTICO en posici on <XX>: Columna difusa <scheme.5).

ERROR SEM ANTICO en posici on <XX>: Columna difusa <scheme.  Posibles causas: Se esta comparando el atributo difuso Tipo 3 indicado con una distribucion de posibilidad trapezoidal (Figura 5.c.  Consejos: Los atributos difusos Tipo 3 solo pueden ser comparados con otros atributos difusos Tipo 3 que sean compatibles con el y con las etiquetas lingusticas que tenga de.table.b.2).d].nidas.column> es Tipo 3 y no se puede comparar con un trapecio $[a.

.nidas.

b.d] tal que a<=b<=c<=d. ERRORES GENERADOS POR EL SERVIDOR FSQL 303 ERROR SEM ANTICO en posici on <XX>: Trapecio posibil stico mal definido: $[a.c.BETA. Valores actuales: $[ALFA.DELTA].APE NDICE C.GAMMA.  Posibles causas: Se esta usando un trapecio posibilstico mal de.

Actualmente definida como $[ALFA.GAMMA.nido.  Posibles causas: Se esta usando una etiqueta que tiene asociado trapecio posibilstico mal de. En el texto del mensaje se muestran los valores incorrectos que se han usado.d] tal que a<=b<=c<=d.DELTA].c.b.  Consejos: Cambiar los valores actuales del trapecio para que cumplan la condicion indicada en el mensaje. ERROR SEM ANTICO en posici on <XX>: Trapecio posibil stico de la etiqueta mal definido: $[a.BETA.

Este error no debe ocurrir. ya que la tabla FUZZY LABEL DEF tiene de.nido.

Estos valores deben ser cambiados en FUZZY LABEL DEF.  Posibles causas: Se esta empleando una etiqueta no de.table.  Consejos: Cambiar los valores actuales del trapecio para que cumplan la condicion indicada en el mensaje. el Servidor FSQL se asegura de que esto no ocurra. ERROR SEM ANTICO en posici on <XX>: No est a definida la etiqueta <label> para la columna difusa Tipo 1 <scheme. (OBJ#.COL#)=(<NNN>.<CCC>): Definirla en FUZZY_OBJECT_LIST y FUZZY_LABEL_DEF.nida una restriccion que imposibilita este tipo de errores (restriccion llamada MUST BE ORDERED). No obstante.column>.

nida para el atributo difuso Tipo 1 indicado.  Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error. El error se produce si la etiqueta no esta de.

nida en la tabla FUZZY OBJECT LIST por lo que puede de.

En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en estas tablas.<CCC>): Definirla en FUZZY_OBJECT_LIST y FUZZY_LABEL_DEF.column>. ERROR SEM ANTICO en posici on <XX>: No est a definida la etiqueta <label> para la columna difusa Tipo 2 <scheme.nirse all.  Posibles causas: Se esta empleando una etiqueta no de.COL#)=(<NNN>. y tambien en FUZZY LABEL DEF si no lo esta. (OBJ#.table.

El error se produce si la etiqueta no esta de.  Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error.nida para el atributo difuso Tipo 2 indicado.

nida en la tabla FUZZY OBJECT LIST por lo que puede de.

nirse all. y tambien en FUZZY LABEL DEF si no lo esta. En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en estas tablas. .

(OBJ#.<CCC>).  Posibles causas: Se esta empleando una etiqueta no de.<CCC2>)]: Definirla en FUZZY_OBJECT_LIST y en FUZZY_NEARNESS_DEF.table.304 APE NDICE C.COL#)=(<NNN>. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR SEM ANTICO en posici on <XX>: No est a definida la etiqueta <label> para la columna difusa Tipo 3 <scheme.column>. [compatible con (<NNN2>.

 Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error. El error se produce si la etiqueta no esta de.nida para el atributo difuso Tipo 3 indicado ni para el atributo al cual es compatible (si lo es a alguno).

nida en la tabla FUZZY OBJECT LIST por lo que puede de.

nirse all. y tambien tiene que de.

 Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error. (OBJ#.table. ERROR SEM ANTICO en posici on <XX>: La etiqueta <label> est a definida m ultiples veces en FUZZY_OBJECT_LIST para la columna difusa Tipo 1 <scheme.COL#)=(<NNN>.<CCC>).column>. En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en estas tablas.  Posibles causas: El nombre de la etiqueta ha sido incluido en FUZZY OBJECT LIST varias veces para el mismo atributo. Tambien puede borrarse la . Si el atributo es compatible con otro atributo difuso Tipo 3 aparecera en el mensaje el numero de objeto y columna tambien de este otro.nirse la relacion de similitud en FUZZY NEARNESS DEF si no lo esta.

todas las etiquetas deben estar de. Por supuesto.la de la etiqueta duplicada en FUZZY OBJECT LIST o cambiar el nombre de la etiqueta duplicada en esta tabla.

 Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error.<CCC>).nidas tambien en FUZZY LABEL DEF. Tambien puede borrarse la .table. En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en estas tablas.  Posibles causas: El nombre de la etiqueta ha sido incluido en FUZZY OBJECT LIST varias veces para el mismo atributo. (OBJ#.COL#)=(<NNN>. ERROR SEM ANTICO en posici on <XX>: La etiqueta <label> est a definida m ultiples veces en FUZZY_OBJECT_LIST para la columna difusa Tipo 2 <scheme.column>.

la de la etiqueta duplicada en FUZZY OBJECT LIST o cambiar el nombre de la etiqueta duplicada en esta tabla. todas las etiquetas deben estar de. Por supuesto.

En el texto del error se indica el numero de objeto y columna para facilitar la insercion de los datos en estas tablas. .nidas tambien en FUZZY LABEL DEF.

<CCC>). Tambien puede borrarse la .COL#)=(<NNN>.  Consejos: Probablemente haya que cambiar el nombre del atributo donde se usa la etiqueta que genero el error.column>. ERRORES GENERADOS POR EL SERVIDOR FSQL 305 ERROR SEM ANTICO en posici on <XX>: La etiqueta <label> est a definida m ultiples veces en FUZZY_OBJECT_LIST para la columna difusa Tipo 3 <scheme. [compatible con (<NNN2>.table.  Posibles causas: El nombre de la etiqueta ha sido incluido en FUZZY OBJECT LIST varias veces para el mismo atributo.APE NDICE C.<CCC2>)]. (OBJ#.

todas las etiquetas deben tener de. Por supuesto.la de la etiqueta duplica- da en FUZZY OBJECT LIST o cambiar el nombre de la etiqueta duplicada en esta ta- bla.

NFLEQ. NFGT. Si el atributo es compatible con otro atributo difuso Tipo 3 aparecera en el mensaje el numero de objeto y columna tambien de este otro. FLT.2).column>): Usar FEQ o IS [NOT]. FGEQ. NFGEQ. NMLT) generar a este error. NMGT. ERROR SEM ANTICO en posici on <XX>: No puede usarse el comparador difuso <comparador_difuso> para comparar un atributo (<scheme. FLEQ.2).nida su relacion de similitud en FUZZY NEARNESS DEF. Esta constante esta entre las siguientes: UNKNOWN. .  Consejos: Los atributos difusos Tipo 3. al carecer de relacion de orden solo pueden ser comparados con el comparador difuso FEQ o con la condicion con IS (apartado 5. MLT.table.table.  Posibles causas: Hemos utilizado un comparador difuso no valido sobre un atributo difuso Tipo 3. MGT.  Consejos: Con esas constantes solo puede usarse el comparador difuso FEQ o las con- diciones con IS (apartado 5.column>) con la constante <cte_difusa>: Usar FEQ o IS [NOT].  Posibles causas: Se esta usando un comparador difuso distinto de FEQ para comparar el atributo indicado con una constante difusa. ERROR SEM ANTICO en posici on <XX>: No est a definido el comparador difuso <comparador_difuso> sobre atributos Tipo 3 (<scheme. El uso de cualquier otro comparador (FGT. En el texto del error se indica el n umero de objeto y columna para facilitar la insercion de los datos en estas tablas. UNDEFINED o NULL. NFLT. NFEQ.

1.column>) y Tipo 3 (<scheme2.306 APE NDICE C.  Posibles causas: Se esta comparando un atributo difuso Tipo 1 con otro atributo difuso Tipo 3 y ambos tipos son incompatibles. ERROR SEM ANTICO en posici on <XX>: No se pueden comparar atributos Tipo 3 incompatibles (<scheme.table2.3. entendiendo  esta en el sentido que le da el SGBD.  Consejos: Un atributo difuso Tipo 1 es tipo crisp.column2>): Se debe indicar su compatibilidad en la tabla FUZZY_COMPATIBLE_COL.table2.2).  Consejos: Cambiar los atributos difusos empleados o declararlos como compatibles en la tabla FUZZY COMPATIBLE COL (apartado 5.table.column> y <scheme2. por lo que no puede compararse con este tipo de constantes con un comparador difuso.column> es Tipo 1.  Consejos: Revisar y modi. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR SEM ANTICO en posici on <XX>: Columna <scheme.  Posibles causas: Estamos comparando una columna difusa Tipo 1 con una constante difusa del tipo de UNKNOWN.  Posibles causas: Se estan comparando (con FEQ) dos atributos difusos de Tipo 3 que no estan declarados como compatibles en la tabla FUZZY COMPATIBLE COL.column2>).table. ERROR SEM ANTICO en posici on <XX>: No se pueden comparar atributos Tipo 1 (<scheme. UNDEFINED o NULL.table. y no puede compararse con la constante difusa <cte_difusa>. Puede usarse la condicion con IS para compararlo con la constante NULL.

column>) es Tipo <f_tipo> y <scheme2.table2.car la comparacion indicada. Uno es Tipo 3 y el otro es Tipo 1 o 2.table.  Posibles causas: Se estan comparando dos atributos difusos de Tipos incompatibles. ERROR SEM ANTICO en posici on <XX>: Comparaci on difusa <comparador_difuso> con columnas de distintos tipos (<scheme.column2> es Tipo <f_tipo2>).  Consejos: Revisar y modi.

.car la comparacion indicada.

siendo estos tipos incompatibles. ERRORES GENERADOS POR EL SERVIDOR FSQL 307 ERROR SEM ANTICO en posici on <XX>: No se puede comparar un atributo Tipo 3 (<scheme.APE NDICE C.column>) con una expresi on crisp.  Posibles causas: Se esta intentando comparar un atributo difuso Tipo 3 con una expresion crisp.  Consejos: Los atributos difusos Tipo 3 solo pueden ser comparados con otros atributos difusos Tipo 3 que sean compatibles con el y con las etiquetas lingusticas que tenga de.table.

 Consejos: Cambiar la comparacion.table. En proximas versiones se anulara este error para que pueda aparecer a la izquierda cualquier expresion. Un atributo difuso Tipo 1 puede compararse mediante IS con la constante NULL.  Consejos: Cambiar la comparacion. ERROR SEM ANTICO en posici on <XX>: Comparador difuso <comparador_difuso> debe tener una columna difusa justo a su izquierda (Tipo 1.column> no puede compararse mediante IS NOT con la constante difusa <cte_difusa>. Formato: <fuzzy_column> <comparador_difuso> <expr>. A la derecha puede ponerse cualquier expresion. si procede.  Posibles causas: Un atributo difuso Tipo 1 no puede compararse mediante IS con una constante difusa como UNKNOWN o UNDEFINED.column> no puede compararse mediante IS con la constante difusa <cte_difusa>. ERROR SEM ANTICO en posici on <XX>: Atributo Tipo 1 <scheme. un comparador difuso debe tener a su izquierda una columna o atributo difuso.table. entendiendo esta en el sentido que le da el SGBD.nidas. 2 o  3).  Posibles causas: Un atributo difuso Tipo 1 no puede compararse mediante IS NOT con una constante difusa como UNKNOWN o UNDEFINED.  Posibles causas: En la actual version del Servidor FSQL.  Consejos: Si a la derecha del <comparador_difuso> hay un atributo difuso se debe intercambiar el orden de la comparacion y el comparador difuso. Un atributo difuso Tipo 1 puede compararse mediante IS NOT con la constante NULL. ERROR SEM ANTICO en posici on <XX>: Atributo Tipo 1 <scheme. . entendiendo esta en el sentido que le da el SGBD.

Un comodn no puede tener alias. ERROR SEM ANTICO en posici on <XX>: Comod n [[<scheme>.]<table>.]<table>. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR SEM ANTICO en posici on <XX>: Comod n [[<scheme>.308 APE NDICE C.  Posibles causas: Se esta utilizando un comodn tanto por ciento % (con esquema y tabla o sin ellos) y se le ha puesto un alias.]% no debe tener alias. ya que un comodn puede representar a varias columnas o atributos. ya que un comodn puede representar a varias columnas o atributos.]* no debe tener alias.  Consejos: Eliminar el alias que hay tras el comodn. El signi.  Consejos: Eliminar el alias que hay tras el comodn. Un comodn no puede tener alias.  Posibles causas: Se esta utilizando un comodn astersco * (con esquema y tabla o sin ellos) y se le ha puesto un alias.

*) en la cl ausula FROM correspondiente.  Posibles causas: Se esta utilizando un comodn tanto por ciento % con esquema y tabla y dicha tabla no aparece en la clausula FROM.table>.  Posibles causas: Se esta utilizando un comodn astersco * con esquema y tabla y dicha tabla no aparece en la clausula FROM.table>. ERROR SEM ANTICO en posici on <XX>: No existe la tabla del comod n (<scheme. El signi.2.cado de este tipo de comodn en FSQL puede verse en el apartado 5.%) en la cl ausula FROM correspondiente.  Consejos: Si deseamos utilizar dicha tabla/vista es necesario nombrarla despues de la palabra reservada FROM (separada por comas de otras tablas/vistas empleadas). ERROR SEM ANTICO en posici on <XX>: No existe la tabla del comod n (<scheme.  Consejos: Si deseamos utilizar dicha tabla/vista es necesario nombrarla despues de la palabra reservada FROM (separada por comas de otras tablas/vistas empleadas).

2.cado de este tipo de comodn en FSQL puede verse en el apartado 5. .

 Consejos: Revise la sentencia y sustituya el comodn por una expresion valida. Recuerde que un comodn puede representar a varias columnas y solo deben usarse en la lista de seleccion entre las palabras reservadas SELECT y FROM. ERRORES GENERADOS POR EL SERVIDOR FSQL 309 ERROR SEM ANTICO en posici on <XX>: En esta posici on no se admiten comodines como <scheme.  Posibles causas: Se ha utilizado un comodn astersco * en un lugar incorrecto como si fuera una columna.APE NDICE C.table>.  Consejos: Revise la sentencia y sustituya el comodn por una expresion valida.%. Recuerde que un comodn puede representar a varias columnas y solo deben usarse en la lista de seleccion entre las palabras reservadas SELECT y FROM. El signi.table>.*. ERROR SEM ANTICO en posici on <XX>: En esta posici on no se admiten comodines como <scheme.  Posibles causas: Se ha utilizado un comodn tanto por ciento % en un lugar incorrecto como si fuera una columna.

 Posibles causas: Se esta empleando una tabla o vista que no existe o no es accesible por el usuario.cado de este tipo de comodn en FSQL puede verse en el apartado 5.2. ERROR SEM ANTICO en posici on <XX>: Tabla o vista <table> no existe. de que dicha tabla existe y de que es accesible (tiene los permisos necesarios) por el usuario que esta ejecutando la sentencia. ERROR SEM ANTICO en posici on <XX>: Tabla o vista <table> ambigua (no completamente especificada).  Posibles causas: Existe un nombre de tabla/vista que resulta ambigua y no es posible determinar la tabla/vista a la que se re.  Consejos: Asegurese de que el nombre de la tabla esta bien escrito.

 Consejos: Utilice los cuali.ere.

principalmente si existen dos tablas con el mismo nombre y distinto esquema. .]<table>. para referirse a las tablas.cadores del tipo [<scheme>.

. entre las palabras reservadas SELECT y FROM.2 para una explicacion de la utilidad de la funcion CDEG.2).  Consejos: Elimine una negacion o utilice parentesis: NOT (NOT . Use par entesis. 2 o 3) o un comodn asterisco *.  Consejos: Revise el comando. 2 o  3). Vease apartado 5.310 APE NDICE C.  Consejos: Utilice la funcion CDEG con un argumento correcto y en la lista de seleccion. ERRORES GENERADOS POR EL SERVIDOR FSQL ERROR SEM ANTICO en posici on <XX>: No se pueden poner dos negaciones (NOT) juntas.  Posibles causas: No es posible que aparezca una negacion logica NOT justo antes de otra.. ERROR SEM ANTICO en posici on <XX>: Constante difusa <cte_difusa> est a mal situada. teniendo en cuenta que en general dichas constantes aparecen justo despues comparadores difusos y sobre todo usando la condicion con IS (apartado 5.  Posibles causas: La funcion CDEG solo puede emplearse con un unico argumento que puede ser un atributo difuso (Tipos 1.  Posibles causas: Se ha empleado una constante difusa como UNKNOWN o UNDEFINED en un lugar en el que no tiene sentido. ERROR SEM ANTICO en posici on <XX>: CDEG (Compatibility Degree) s olo es aplicable a atributos con tratamiento difuso (Tipos 1..).

Se debe ejecutar cuando no se vayan a efectuar mas sentencias FSQL en la sesion actual.  Objetivo: Procedimiento para terminar una sesion usando FSQL. 311 .  Objetivo: Esta funcion es utilizada para convertir una sentencia en lenguaje FSQL a una equivalente en lenguaje SQL. semanticos y de inconsistencias en la FMB (Apendice C).Apendice D Funciones U tiles del Paquete FSQL PKG El paquete FSQL PKG incorpora varios subprogramas que pueden ser utilizados por el usuario o por el programa Cliente FSQL para diversas acciones. Las demas pueden ser utiles para facilitar algunas tareas.  Valor devuelto: Devuelve el numero de errores que han podido ser encontrados. inclu- yendo errores lexicos. principalmente al Cliente FSQL. FUNCTION FSQL2SQL (sentencia IN LONG) RETURN INTEGER. PROCEDURE FSQL_FIN. sintacticos. No es necesario usarlo en cada nueva sentencia FSQL.  Argumentos: sentencia es un texto con la sentencia en lenguaje FSQL que se desea traducir a SQL. Las mas importantes para el uso del Servidor FSQL son las llamadas FSQL2SQL y FSQL FIN. La sentencia SQL se formara concatenando los campos atributo de la vista FSQL QUERY ordenados por el campo indice (si no hay errores). borrando los datos temporales de las vistas FSQL QUERY y FSQL ERRORS.

 Objetivo: Simpli. FUNCIONES UTILES  DEL PAQUETE FSQL PKG FUNCTION FSQL_concat RETURN VARCHAR2.312 APE NDICE D.

 Valor devuelto: Numero de objeto asignado por el SGBD a la tabla/vista que se pasa por argumentos.car la formacion de la sentencia SQL resultante tras la llamada a la funcion FSQL2SQL.  Argumentos: tab es el nombre de la tabla/vista y sch es el esquema (propietario) de la misma.  Valor devuelto: Devuelve una cadena de caracteres con la sentencia SQL generada por la funcion FSQL2SQL en la tabla FSQL QUERY. tab IN VARCHAR2) RETURN ACCESSIBLE_TABLES.. por lo que esta limitada a la longitud maxima que le asigna Oracle (32767 caracteres) y si supera esa long